'groups' => array(
'include' => array($groupId),
'exclude' => array(),
+ 'base' => array(),
),
'mailings' => array(
'include' => array(),
}
};
});
+
+ 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._);
return crmApi('MailingGroup', 'get', {mailing_id: mailing.id})
.then(function (groupResult) {
mailing.recipients = {};
- mailing.recipients.groups = {include: [], exclude: []};
+ mailing.recipients.groups = {include: [], exclude: [], base: []};
mailing.recipients.mailings = {include: [], exclude: []};
_.each(groupResult.values, function (mailingGroup) {
var bucket = (/^civicrm_group/.test(mailingGroup.entity_table)) ? 'groups' : 'mailings';
var defaults = {
jobs: {}, // {jobId: JobRecord}
recipients: {
- groups: {include: [], exclude: []},
- mailings: {include: [], exclude: []},
+ groups: {include: [], exclude: [], base: []},
+ mailings: {include: [], exclude: []}
},
name: "",
campaign_id: null,
<div crm-ui-field="subform.recipients" crm-title="ts('Recipients')">
<div crm-mailing-block-recipients="{name: 'recipients', id: 'subform.recipients'}" crm-mailing="mailing"></div>
</div>
+ <span ng-controller="EditUnsubGroupCtrl">
+ <div crm-ui-field="subform.baseGroup" crm-title="ts('Unsubscribe Group')" ng-if="isUnsubGroupRequired(mailing)">
+ <select
+ crm-ui-id="subform.baseGroup"
+ crm-ui-select
+ name="baseGroup"
+ ng-model="mailing.recipients.groups.base[0]"
+ ng-required="true"
+ >
+ <option ng-repeat="grp in crmMailingConst.groupNames | filter:{visibility:'Public pages'}" value="{{grp.id}}">{{grp.title}}</option>
+ </select>
+ </div>
+ </span>
<div crm-ui-field="subform.subject" crm-title="ts('Subject')">
<div style="float: right;">
<input crm-mailing-token on-select="$broadcast('insert:subject', token.name)" tabindex="-1"/>