| 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'), |
| 34 | templateUrl: '~/crmMailing/EmailBodyCtrl/tokenAlert.html', |
| 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._); |