53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
(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._);
|