diff options
Diffstat (limited to 'www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/EmailBodyCtrl.js')
-rw-r--r-- | www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/EmailBodyCtrl.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/EmailBodyCtrl.js b/www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/EmailBodyCtrl.js new file mode 100644 index 00000000..7db0b7ec --- /dev/null +++ b/www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/EmailBodyCtrl.js @@ -0,0 +1,52 @@ +(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._); |