1 (function(angular
, $, _
) {
3 var lastEmailTokenAlert
= null;
4 angular
.module('crmMailing').controller('EmailBodyCtrl', function EmailBodyCtrl($scope
, crmMailingMgr
, crmUiAlert
, $timeout
) {
7 // ex: if (!hasAllTokens(myMailing, 'body_text)) alert('Oh noes!');
8 $scope
.hasAllTokens
= function hasAllTokens(mailing
, field
) {
9 return _
.isEmpty(crmMailingMgr
.findMissingTokens(mailing
, field
));
12 // ex: checkTokens(myMailing, 'body_text', 'insert:body_text')
13 // ex: checkTokens(myMailing, '*')
14 $scope
.checkTokens
= function checkTokens(mailing
, field
, insertEvent
) {
15 if (lastEmailTokenAlert
) {
16 lastEmailTokenAlert
.close();
18 var missing
, insertable
;
21 missing
= angular
.extend({},
22 crmMailingMgr
.findMissingTokens(mailing
, 'body_html'),
23 crmMailingMgr
.findMissingTokens(mailing
, 'body_text')
27 insertable
= !_
.isEmpty(insertEvent
);
28 missing
= crmMailingMgr
.findMissingTokens(mailing
, field
);
30 if (!_
.isEmpty(missing
)) {
31 lastEmailTokenAlert
= crmUiAlert({
33 title
: ts('Required tokens'),
34 templateUrl
: '~/crmMailing/EmailBodyCtrl/tokenAlert.html',
35 scope
: angular
.extend($scope
.$new(), {
36 insertable
: insertable
,
37 insertToken: function(token
) {
39 $scope
.$broadcast(insertEvent
, '{' + token
+ '}');
41 checkTokens(mailing
, field
, insertEvent
);
52 })(angular
, CRM
.$, CRM
._
);