Commit | Line | Data |
---|---|---|
6b8bd380 TO |
1 | (function(angular, $, _) { |
2 | ||
3 | var lastEmailTokenAlert = null; | |
4 | angular.module('crmMailing').controller('EmailBodyCtrl', function EmailBodyCtrl($scope, crmMailingMgr, crmUiAlert, $timeout) { | |
5 | var ts = CRM.ts(null); | |
6 | ||
7 | // ex: if (!hasAllTokens(myMailing, 'body_text)) alert('Oh noes!'); | |
8 | $scope.hasAllTokens = function hasAllTokens(mailing, field) { | |
9 | return _.isEmpty(crmMailingMgr.findMissingTokens(mailing, field)); | |
10 | }; | |
11 | ||
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(); | |
17 | } | |
18 | var missing, insertable; | |
19 | if (field == '*') { | |
20 | insertable = false; | |
21 | missing = angular.extend({}, | |
22 | crmMailingMgr.findMissingTokens(mailing, 'body_html'), | |
23 | crmMailingMgr.findMissingTokens(mailing, 'body_text') | |
24 | ); | |
25 | } | |
26 | else { | |
27 | insertable = !_.isEmpty(insertEvent); | |
28 | missing = crmMailingMgr.findMissingTokens(mailing, field); | |
29 | } | |
30 | if (!_.isEmpty(missing)) { | |
31 | lastEmailTokenAlert = crmUiAlert({ | |
32 | type: 'error', | |
33 | title: ts('Required tokens'), | |
fd9c35ce | 34 | templateUrl: '~/crmMailing/EmailBodyCtrl/tokenAlert.html', |
6b8bd380 TO |
35 | scope: angular.extend($scope.$new(), { |
36 | insertable: insertable, | |
37 | insertToken: function(token) { | |
38 | $timeout(function() { | |
39 | $scope.$broadcast(insertEvent, '{' + token + '}'); | |
40 | $timeout(function() { | |
41 | checkTokens(mailing, field, insertEvent); | |
42 | }); | |
43 | }); | |
44 | }, | |
45 | missing: missing | |
46 | }) | |
47 | }); | |
48 | } | |
49 | }; | |
50 | }); | |
51 | ||
52 | })(angular, CRM.$, CRM._); |