// Scope members:
// - [input] mailing: object
// - [output] recipients: array of recipient records
- angular.module('crmMailing').controller('EditRecipCtrl', function EditRecipCtrl($scope, dialogService, crmApi, crmMailingMgr) {
+ angular.module('crmMailing').controller('EditRecipCtrl', function EditRecipCtrl($scope, dialogService, crmApi, crmMailingMgr, $q, crmMetadata) {
var ts = $scope.ts = CRM.ts(null);
$scope.recipients = null;
$scope.getRecipientsEstimate = function () {
var model = {
recipients: $scope.recipients
};
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Preview (%1)', {
1: $scope.getRecipientsEstimate()
})
- };
+ });
dialogService.open('recipDialog', '~/crmMailing/dialog/recipients.html', model, options);
};
+
+ // Open a dialog for editing the advanced recipient options.
+ $scope.editOptions = function editOptions(mailing) {
+ var options = CRM.utils.adjustDialogDefaults({
+ autoOpen: false,
+ title: ts('Edit Options')
+ });
+ $q.when(crmMetadata.getFields('Mailing')).then(function(fields) {
+ var model = {
+ fields: fields,
+ mailing: mailing
+ };
+ dialogService.open('previewComponentDialog', '~/crmMailing/dialog/recipientOptions.html', model, options);
+ });
+ };
});
// Controller for the "Preview Recipients" dialog
$scope.ts = CRM.ts(null);
});
+ // Controller for the "Recipients: Edit Options" dialog
+ // Note: Expects $scope.model to be an object with properties:
+ // - "mailing" (APIv3 mailing object)
+ // - "fields" (list of fields)
+ angular.module('crmMailing').controller('EditRecipOptionsDialogCtrl', function EditRecipOptionsDialogCtrl($scope) {
+ $scope.ts = CRM.ts(null);
+ });
+
// Controller for the "Preview Mailing Component" segment
// which displays header/footer/auto-responder
angular.module('crmMailing').controller('PreviewComponentCtrl', function PreviewComponentCtrl($scope, dialogService) {
}));
return;
}
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: title // component[0].name
- };
+ });
dialogService.open('previewComponentDialog', '~/crmMailing/dialog/previewComponent.html', component[0], options);
};
});
msg_html: mailing.body_html
}
};
- var options = {
+ var options = CRM.utils.adjustDialogDefaults({
autoOpen: false,
- modal: true,
title: ts('Save Template')
- };
+ });
return dialogService.open('saveTemplateDialog', '~/crmMailing/dialog/saveTemplate.html', model, options)
.then(function (item) {
mailing.msg_template_id = item.id;
}
};
});
+
+ angular.module('crmMailing').controller('EditUnsubGroupCtrl', function EditUnsubGroupCtrl($scope) {
+ // CRM.crmMailing.groupNames is a global constant - since it doesn't change, we can digest & cache.
+ var mandatoryIds = [];
+ _.each(CRM.crmMailing.groupNames, function(grp){
+ if (grp.is_hidden == "1") {
+ mandatoryIds.push(parseInt(grp.id));
+ }
+ });
+
+ $scope.isUnsubGroupRequired = function isUnsubGroupRequired(mailing) {
+ return _.intersection(mandatoryIds, mailing.recipients.groups.include).length > 0;
+ };
+ });
})(angular, CRM.$, CRM._);