--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockApprove', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockApprove', '~/crmMailing/BlockApprove.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockHeaderFooter', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockHeaderFooter', '~/crmMailing/BlockHeaderFooter.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockMailing', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockMailing', '~/crmMailing/BlockMailing.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockPublication', function (crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockPublication', '~/crmMailing/BlockPublication.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockRecipients', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockRecipients', '~/crmMailing/BlockRecipients.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockResponses', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockResponses', '~/crmMailing/BlockResponses.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockSchedule', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockSchedule', '~/crmMailing/BlockSchedule.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockSummary', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockSummary', '~/crmMailing/BlockSummary.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBlockTracking', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBlockTracking', '~/crmMailing/BlockTracking.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBodyHtml', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBodyHtml', '~/crmMailing/BodyHtml.html');
+ });
+})(angular, CRM.$, CRM._);
--- /dev/null
+(function(angular, $, _) {
+ angular.module('crmMailing').directive('crmMailingBodyText', function(crmMailingSimpleDirective) {
+ return crmMailingSimpleDirective('crmMailingBodyText', '~/crmMailing/BodyText.html');
+ });
+})(angular, CRM.$, CRM._);
(function (angular, $, _) {
- // The following directives have the same simple implementation -- load
- // a template and export a "mailing" object into scope.
- var simpleBlocks = {
- crmMailingBlockApprove: '~/crmMailing/approve.html',
- crmMailingBlockHeaderFooter: '~/crmMailing/headerFooter.html',
- crmMailingBlockMailing: '~/crmMailing/mailing.html',
- crmMailingBlockPublication: '~/crmMailing/publication.html',
- crmMailingBlockResponses: '~/crmMailing/responses.html',
- crmMailingBlockRecipients: '~/crmMailing/recipients.html',
- crmMailingBlockSchedule: '~/crmMailing/schedule.html',
- crmMailingBlockSummary: '~/crmMailing/summary.html',
- crmMailingBlockTracking: '~/crmMailing/tracking.html',
- crmMailingBodyHtml: '~/crmMailing/body_html.html',
- crmMailingBodyText: '~/crmMailing/body_text.html'
- };
- _.each(simpleBlocks, function(templateUrl, directiveName){
- angular.module('crmMailing').directive(directiveName, function ($q, crmMetadata, crmUiHelp) {
- return {
- scope: {
- crmMailing: '@'
- },
- templateUrl: templateUrl,
- link: function (scope, elm, attr) {
- scope.$parent.$watch(attr.crmMailing, function(newValue){
- scope.mailing = newValue;
- });
- scope.crmMailingConst = CRM.crmMailing;
- scope.ts = CRM.ts(null);
- scope.hs = crmUiHelp({file: 'CRM/Mailing/MailingUI'});
- scope[directiveName] = attr[directiveName] ? scope.$parent.$eval(attr[directiveName]) : {};
- $q.when(crmMetadata.getFields('Mailing'), function(fields) {
- scope.mailingFields = fields;
- });
- }
- };
- });
- });
-
// example: <div crm-mailing-block-preview crm-mailing="myMailing" on-preview="openPreview(myMailing, preview.mode)" on-send="sendEmail(myMailing,preview.recipient)">
// note: the directive defines a variable called "preview" with any inputs supplied by the user (e.g. the target recipient for an example mailing)
angular.module('crmMailing').directive('crmMailingBlockPreview', function (crmUiHelp) {
};
});
+ // crmMailingSimpleDirective is a template/factory-function for constructing very basic
+ // directives that accept a "mailing" argument. Please don't overload it. If one continues building
+ // this, it risks becoming a second system that violates Angular architecture (and prevents one
+ // from using standard Angular docs+plugins). So this really shouldn't do much -- it is really
+ // only for simple directives. For something complex, suck it up and write 10 lines of boilerplate.
+ angular.module('crmMailing').factory('crmMailingSimpleDirective', function ($q, crmMetadata, crmUiHelp) {
+ return function crmMailingSimpleDirective(directiveName, templateUrl) {
+ return {
+ scope: {
+ crmMailing: '@'
+ },
+ templateUrl: templateUrl,
+ link: function (scope, elm, attr) {
+ scope.$parent.$watch(attr.crmMailing, function(newValue){
+ scope.mailing = newValue;
+ });
+ scope.crmMailingConst = CRM.crmMailing;
+ scope.ts = CRM.ts(null);
+ scope.hs = crmUiHelp({file: 'CRM/Mailing/MailingUI'});
+ scope[directiveName] = attr[directiveName] ? scope.$parent.$eval(attr[directiveName]) : {};
+ $q.when(crmMetadata.getFields('Mailing'), function(fields) {
+ scope.mailingFields = fields;
+ });
+ }
+ };
+ };
+ });
+
})(angular, CRM.$, CRM._);