drupal-civicrm/sites/all/modules/civicrm/ang/crmMailing/EmailBodyCtrl.js

53 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2018-01-14 15:10:16 +02:00
(function(angular, $, _) {
var lastEmailTokenAlert = null;
angular.module('crmMailing').controller('EmailBodyCtrl', function EmailBodyCtrl($scope, crmMailingMgr, crmUiAlert, $timeout) {
var ts = CRM.ts(null);
// ex: if (!hasAllTokens(myMailing, 'body_text)) alert('Oh noes!');
$scope.hasAllTokens = function hasAllTokens(mailing, field) {
return _.isEmpty(crmMailingMgr.findMissingTokens(mailing, field));
};
// ex: checkTokens(myMailing, 'body_text', 'insert:body_text')
// ex: checkTokens(myMailing, '*')
$scope.checkTokens = function checkTokens(mailing, field, insertEvent) {
if (lastEmailTokenAlert) {
lastEmailTokenAlert.close();
}
var missing, insertable;
if (field == '*') {
insertable = false;
missing = angular.extend({},
crmMailingMgr.findMissingTokens(mailing, 'body_html'),
crmMailingMgr.findMissingTokens(mailing, 'body_text')
);
}
else {
insertable = !_.isEmpty(insertEvent);
missing = crmMailingMgr.findMissingTokens(mailing, field);
}
if (!_.isEmpty(missing)) {
lastEmailTokenAlert = crmUiAlert({
type: 'error',
title: ts('Required tokens'),
templateUrl: '~/crmMailing/EmailBodyCtrl/tokenAlert.html',
scope: angular.extend($scope.$new(), {
insertable: insertable,
insertToken: function(token) {
$timeout(function() {
$scope.$broadcast(insertEvent, '{' + token + '}');
$timeout(function() {
checkTokens(mailing, field, insertEvent);
});
});
},
missing: missing
})
});
}
};
});
})(angular, CRM.$, CRM._);