From e908a39303b209135c5b052d66a9ab7d59146f18 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 7 Apr 2015 23:12:56 -0700 Subject: [PATCH] CRM-16145 - crmMailing - Split simple directives into separate files --- .../{approve.html => BlockApprove.html} | 0 ang/crmMailing/BlockApprove.js | 5 +++ ...aderFooter.html => BlockHeaderFooter.html} | 0 ang/crmMailing/BlockHeaderFooter.js | 5 +++ .../{mailing.html => BlockMailing.html} | 0 ang/crmMailing/BlockMailing.js | 5 +++ ...publication.html => BlockPublication.html} | 0 ang/crmMailing/BlockPublication.js | 5 +++ .../{recipients.html => BlockRecipients.html} | 0 ang/crmMailing/BlockRecipients.js | 5 +++ .../{responses.html => BlockResponses.html} | 0 ang/crmMailing/BlockResponses.js | 5 +++ .../{schedule.html => BlockSchedule.html} | 0 ang/crmMailing/BlockSchedule.js | 5 +++ .../{summary.html => BlockSummary.html} | 0 ang/crmMailing/BlockSummary.js | 5 +++ .../{tracking.html => BlockTracking.html} | 0 ang/crmMailing/BlockTracking.js | 5 +++ .../{body_html.html => BodyHtml.html} | 0 ang/crmMailing/BodyHtml.js | 5 +++ .../{body_text.html => BodyText.html} | 0 ang/crmMailing/BodyText.js | 5 +++ ang/crmMailing/directives.js | 38 ------------------- ang/crmMailing/services.js | 28 ++++++++++++++ 24 files changed, 83 insertions(+), 38 deletions(-) rename ang/crmMailing/{approve.html => BlockApprove.html} (100%) create mode 100644 ang/crmMailing/BlockApprove.js rename ang/crmMailing/{headerFooter.html => BlockHeaderFooter.html} (100%) create mode 100644 ang/crmMailing/BlockHeaderFooter.js rename ang/crmMailing/{mailing.html => BlockMailing.html} (100%) create mode 100644 ang/crmMailing/BlockMailing.js rename ang/crmMailing/{publication.html => BlockPublication.html} (100%) create mode 100644 ang/crmMailing/BlockPublication.js rename ang/crmMailing/{recipients.html => BlockRecipients.html} (100%) create mode 100644 ang/crmMailing/BlockRecipients.js rename ang/crmMailing/{responses.html => BlockResponses.html} (100%) create mode 100644 ang/crmMailing/BlockResponses.js rename ang/crmMailing/{schedule.html => BlockSchedule.html} (100%) create mode 100644 ang/crmMailing/BlockSchedule.js rename ang/crmMailing/{summary.html => BlockSummary.html} (100%) create mode 100644 ang/crmMailing/BlockSummary.js rename ang/crmMailing/{tracking.html => BlockTracking.html} (100%) create mode 100644 ang/crmMailing/BlockTracking.js rename ang/crmMailing/{body_html.html => BodyHtml.html} (100%) create mode 100644 ang/crmMailing/BodyHtml.js rename ang/crmMailing/{body_text.html => BodyText.html} (100%) create mode 100644 ang/crmMailing/BodyText.js diff --git a/ang/crmMailing/approve.html b/ang/crmMailing/BlockApprove.html similarity index 100% rename from ang/crmMailing/approve.html rename to ang/crmMailing/BlockApprove.html diff --git a/ang/crmMailing/BlockApprove.js b/ang/crmMailing/BlockApprove.js new file mode 100644 index 0000000000..8f0cd599c6 --- /dev/null +++ b/ang/crmMailing/BlockApprove.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockApprove', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockApprove', '~/crmMailing/BlockApprove.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/headerFooter.html b/ang/crmMailing/BlockHeaderFooter.html similarity index 100% rename from ang/crmMailing/headerFooter.html rename to ang/crmMailing/BlockHeaderFooter.html diff --git a/ang/crmMailing/BlockHeaderFooter.js b/ang/crmMailing/BlockHeaderFooter.js new file mode 100644 index 0000000000..babba177d6 --- /dev/null +++ b/ang/crmMailing/BlockHeaderFooter.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockHeaderFooter', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockHeaderFooter', '~/crmMailing/BlockHeaderFooter.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/mailing.html b/ang/crmMailing/BlockMailing.html similarity index 100% rename from ang/crmMailing/mailing.html rename to ang/crmMailing/BlockMailing.html diff --git a/ang/crmMailing/BlockMailing.js b/ang/crmMailing/BlockMailing.js new file mode 100644 index 0000000000..a2297d0266 --- /dev/null +++ b/ang/crmMailing/BlockMailing.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockMailing', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockMailing', '~/crmMailing/BlockMailing.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/publication.html b/ang/crmMailing/BlockPublication.html similarity index 100% rename from ang/crmMailing/publication.html rename to ang/crmMailing/BlockPublication.html diff --git a/ang/crmMailing/BlockPublication.js b/ang/crmMailing/BlockPublication.js new file mode 100644 index 0000000000..8bb02579a4 --- /dev/null +++ b/ang/crmMailing/BlockPublication.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockPublication', function (crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockPublication', '~/crmMailing/BlockPublication.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/recipients.html b/ang/crmMailing/BlockRecipients.html similarity index 100% rename from ang/crmMailing/recipients.html rename to ang/crmMailing/BlockRecipients.html diff --git a/ang/crmMailing/BlockRecipients.js b/ang/crmMailing/BlockRecipients.js new file mode 100644 index 0000000000..fdb4531363 --- /dev/null +++ b/ang/crmMailing/BlockRecipients.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockRecipients', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockRecipients', '~/crmMailing/BlockRecipients.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/responses.html b/ang/crmMailing/BlockResponses.html similarity index 100% rename from ang/crmMailing/responses.html rename to ang/crmMailing/BlockResponses.html diff --git a/ang/crmMailing/BlockResponses.js b/ang/crmMailing/BlockResponses.js new file mode 100644 index 0000000000..ba7d7897bb --- /dev/null +++ b/ang/crmMailing/BlockResponses.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockResponses', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockResponses', '~/crmMailing/BlockResponses.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/schedule.html b/ang/crmMailing/BlockSchedule.html similarity index 100% rename from ang/crmMailing/schedule.html rename to ang/crmMailing/BlockSchedule.html diff --git a/ang/crmMailing/BlockSchedule.js b/ang/crmMailing/BlockSchedule.js new file mode 100644 index 0000000000..251449d7ef --- /dev/null +++ b/ang/crmMailing/BlockSchedule.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockSchedule', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockSchedule', '~/crmMailing/BlockSchedule.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/summary.html b/ang/crmMailing/BlockSummary.html similarity index 100% rename from ang/crmMailing/summary.html rename to ang/crmMailing/BlockSummary.html diff --git a/ang/crmMailing/BlockSummary.js b/ang/crmMailing/BlockSummary.js new file mode 100644 index 0000000000..d16d9fc344 --- /dev/null +++ b/ang/crmMailing/BlockSummary.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockSummary', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockSummary', '~/crmMailing/BlockSummary.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/tracking.html b/ang/crmMailing/BlockTracking.html similarity index 100% rename from ang/crmMailing/tracking.html rename to ang/crmMailing/BlockTracking.html diff --git a/ang/crmMailing/BlockTracking.js b/ang/crmMailing/BlockTracking.js new file mode 100644 index 0000000000..b8502b23a0 --- /dev/null +++ b/ang/crmMailing/BlockTracking.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockTracking', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockTracking', '~/crmMailing/BlockTracking.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/body_html.html b/ang/crmMailing/BodyHtml.html similarity index 100% rename from ang/crmMailing/body_html.html rename to ang/crmMailing/BodyHtml.html diff --git a/ang/crmMailing/BodyHtml.js b/ang/crmMailing/BodyHtml.js new file mode 100644 index 0000000000..242f530cc5 --- /dev/null +++ b/ang/crmMailing/BodyHtml.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBodyHtml', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBodyHtml', '~/crmMailing/BodyHtml.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/body_text.html b/ang/crmMailing/BodyText.html similarity index 100% rename from ang/crmMailing/body_text.html rename to ang/crmMailing/BodyText.html diff --git a/ang/crmMailing/BodyText.js b/ang/crmMailing/BodyText.js new file mode 100644 index 0000000000..0f04491ca1 --- /dev/null +++ b/ang/crmMailing/BodyText.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBodyText', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBodyText', '~/crmMailing/BodyText.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/ang/crmMailing/directives.js b/ang/crmMailing/directives.js index f8420f62eb..e82c8b59fa 100644 --- a/ang/crmMailing/directives.js +++ b/ang/crmMailing/directives.js @@ -1,43 +1,5 @@ (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:
// 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) { diff --git a/ang/crmMailing/services.js b/ang/crmMailing/services.js index f6ea4f707a..379f3b0944 100644 --- a/ang/crmMailing/services.js +++ b/ang/crmMailing/services.js @@ -502,4 +502,32 @@ }; }); + // 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._); -- 2.25.1