CRM-16145 - crmMailing - Split simple directives into separate files
authorTim Otten <totten@civicrm.org>
Wed, 8 Apr 2015 06:12:56 +0000 (23:12 -0700)
committerTim Otten <totten@civicrm.org>
Wed, 8 Apr 2015 06:12:56 +0000 (23:12 -0700)
24 files changed:
ang/crmMailing/BlockApprove.html [moved from ang/crmMailing/approve.html with 100% similarity]
ang/crmMailing/BlockApprove.js [new file with mode: 0644]
ang/crmMailing/BlockHeaderFooter.html [moved from ang/crmMailing/headerFooter.html with 100% similarity]
ang/crmMailing/BlockHeaderFooter.js [new file with mode: 0644]
ang/crmMailing/BlockMailing.html [moved from ang/crmMailing/mailing.html with 100% similarity]
ang/crmMailing/BlockMailing.js [new file with mode: 0644]
ang/crmMailing/BlockPublication.html [moved from ang/crmMailing/publication.html with 100% similarity]
ang/crmMailing/BlockPublication.js [new file with mode: 0644]
ang/crmMailing/BlockRecipients.html [moved from ang/crmMailing/recipients.html with 100% similarity]
ang/crmMailing/BlockRecipients.js [new file with mode: 0644]
ang/crmMailing/BlockResponses.html [moved from ang/crmMailing/responses.html with 100% similarity]
ang/crmMailing/BlockResponses.js [new file with mode: 0644]
ang/crmMailing/BlockSchedule.html [moved from ang/crmMailing/schedule.html with 100% similarity]
ang/crmMailing/BlockSchedule.js [new file with mode: 0644]
ang/crmMailing/BlockSummary.html [moved from ang/crmMailing/summary.html with 100% similarity]
ang/crmMailing/BlockSummary.js [new file with mode: 0644]
ang/crmMailing/BlockTracking.html [moved from ang/crmMailing/tracking.html with 100% similarity]
ang/crmMailing/BlockTracking.js [new file with mode: 0644]
ang/crmMailing/BodyHtml.html [moved from ang/crmMailing/body_html.html with 100% similarity]
ang/crmMailing/BodyHtml.js [new file with mode: 0644]
ang/crmMailing/BodyText.html [moved from ang/crmMailing/body_text.html with 100% similarity]
ang/crmMailing/BodyText.js [new file with mode: 0644]
ang/crmMailing/directives.js
ang/crmMailing/services.js

diff --git a/ang/crmMailing/BlockApprove.js b/ang/crmMailing/BlockApprove.js
new file mode 100644 (file)
index 0000000..8f0cd59
--- /dev/null
@@ -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/BlockHeaderFooter.js b/ang/crmMailing/BlockHeaderFooter.js
new file mode 100644 (file)
index 0000000..babba17
--- /dev/null
@@ -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/BlockMailing.js b/ang/crmMailing/BlockMailing.js
new file mode 100644 (file)
index 0000000..a2297d0
--- /dev/null
@@ -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/BlockPublication.js b/ang/crmMailing/BlockPublication.js
new file mode 100644 (file)
index 0000000..8bb0257
--- /dev/null
@@ -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/BlockRecipients.js b/ang/crmMailing/BlockRecipients.js
new file mode 100644 (file)
index 0000000..fdb4531
--- /dev/null
@@ -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/BlockResponses.js b/ang/crmMailing/BlockResponses.js
new file mode 100644 (file)
index 0000000..ba7d789
--- /dev/null
@@ -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/BlockSchedule.js b/ang/crmMailing/BlockSchedule.js
new file mode 100644 (file)
index 0000000..251449d
--- /dev/null
@@ -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/BlockSummary.js b/ang/crmMailing/BlockSummary.js
new file mode 100644 (file)
index 0000000..d16d9fc
--- /dev/null
@@ -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/BlockTracking.js b/ang/crmMailing/BlockTracking.js
new file mode 100644 (file)
index 0000000..b8502b2
--- /dev/null
@@ -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/BodyHtml.js b/ang/crmMailing/BodyHtml.js
new file mode 100644 (file)
index 0000000..242f530
--- /dev/null
@@ -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/BodyText.js b/ang/crmMailing/BodyText.js
new file mode 100644 (file)
index 0000000..0f04491
--- /dev/null
@@ -0,0 +1,5 @@
+(function(angular, $, _) {
+  angular.module('crmMailing').directive('crmMailingBodyText', function(crmMailingSimpleDirective) {
+    return crmMailingSimpleDirective('crmMailingBodyText', '~/crmMailing/BodyText.html');
+  });
+})(angular, CRM.$, CRM._);
index f8420f62ebd307fa34e0d12814f6e6dd2896d16d..e82c8b59fa760dc0f8978c7623f4943663873884 100644 (file)
@@ -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: <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) {
index f6ea4f707a346c5143d35af6709880e646aa0121..379f3b094441a344d559ab0cf9649bb28b00db7a 100644 (file)
     };
   });
 
+  // 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._);