From 22bc3e484a10ad0c79e5906c656d13b0d0469cf4 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Sat, 13 Dec 2014 18:36:03 -0800 Subject: [PATCH] CRM-15578 - crmMailingAB2 - Implement joint composition screen (for "Subject" and "From" testing) --- CRM/Mailing/Info.php | 2 +- js/angular-crmMailingAB2-directives.js | 27 ++++ js/angular-crmMailingAB2-services.js | 4 +- js/angular-crmMailingAB2.js | 12 ++ partials/crmMailing2/mailing.html | 2 + partials/crmMailingAB2/edit-split.html | 1 + partials/crmMailingAB2/edit.html | 86 ++++++++++--- partials/crmMailingAB2/joint-mailing.html | 145 ++++++++++++++++++++++ 8 files changed, 261 insertions(+), 18 deletions(-) create mode 100644 js/angular-crmMailingAB2-directives.js create mode 100644 partials/crmMailingAB2/edit-split.html create mode 100644 partials/crmMailingAB2/joint-mailing.html diff --git a/CRM/Mailing/Info.php b/CRM/Mailing/Info.php index 86e9c42f47..b384bed4f6 100644 --- a/CRM/Mailing/Info.php +++ b/CRM/Mailing/Info.php @@ -72,7 +72,7 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info { ); $result['crmMailingAB2'] = array( 'ext' => 'civicrm', - 'js' => array('js/angular-crmMailingAB2.js', 'js/angular-crmMailingAB2-services.js'), + 'js' => array('js/angular-crmMailingAB2.js', 'js/angular-crmMailingAB2-services.js', 'js/angular-crmMailingAB2-directives.js'), 'css' => array('css/angular-crmMailingAB2.css'), ); $result['crmMailingAB'] = array( diff --git a/js/angular-crmMailingAB2-directives.js b/js/angular-crmMailingAB2-directives.js new file mode 100644 index 0000000000..b8f4828f8f --- /dev/null +++ b/js/angular-crmMailingAB2-directives.js @@ -0,0 +1,27 @@ +(function (angular, $, _) { + var partialUrl = function (relPath) { + return CRM.resourceUrls['civicrm'] + '/partials/crmMailingAB2/' + relPath; + }; + + // example: + // scope.myAbtest = new CrmMailingAB(); + // + angular.module('crmMailingAB2').directive('crmMailingAbBlockMailing', function ($parse) { + return { + scope: { + crmMailingAbBlockMailing: '@', + crmAbtest: '@' + }, + templateUrl: partialUrl('joint-mailing.html'), + link: function (scope, elm, attr) { + var model = $parse(attr.crmAbtest); + scope.abtest = model(scope.$parent); + scope.crmMailingConst = CRM.crmMailing; + scope.ts = CRM.ts('CiviMail'); + + var fieldsModel = $parse(attr.crmMailingAbBlockMailing); + scope.fields = fieldsModel(scope.$parent); + } + }; + }) +})(angular, CRM.$, CRM._); diff --git a/js/angular-crmMailingAB2-services.js b/js/angular-crmMailingAB2-services.js index b077d50931..398a7d6293 100644 --- a/js/angular-crmMailingAB2-services.js +++ b/js/angular-crmMailingAB2-services.js @@ -31,12 +31,12 @@ var crmMailingAB = this; if (!crmMailingAB.id) { crmMailingAB.ab = { - name: '', + name: 'Example', // FIXME mailing_id_a: null, mailing_id_b: null, mailing_id_c: null, domain_id: null, - testing_criteria_id: null, + testing_criteria_id: 1, // FIXME winner_criteria_id: null, specific_url: '', declare_winning_time: null, diff --git a/js/angular-crmMailingAB2.js b/js/angular-crmMailingAB2.js index 8805dca3cf..22c2709f9d 100644 --- a/js/angular-crmMailingAB2.js +++ b/js/angular-crmMailingAB2.js @@ -43,6 +43,8 @@ $scope.abtest = abtest; $scope.ts = CRM.ts('CiviMail'); $scope.crmMailingABCriteria = crmMailingABCriteria; + $scope.crmMailingConst = CRM.crmMailing;; + $scope.partialUrl = partialUrl; $scope.sync = function sync() { abtest.mailings.a.name = ts('Test A (%1)', {1: abtest.ab.name}); @@ -81,8 +83,18 @@ $scope.delete = function () { throw "Not implemented: EditCtrl.delete" }; + $scope.submit = function () { + throw "Not implemented: EditCtrl.submit" + }; + + function updateCriteriaName() { + $scope.criteriaName = crmMailingABCriteria.get($scope.abtest.ab.testing_criteria_id).name; + } + // initialize + updateCriteriaName(); $scope.sync(); + $scope.$watch('abtest.ab.testing_criteria_id', updateCriteriaName); }); })(angular, CRM.$, CRM._); diff --git a/partials/crmMailing2/mailing.html b/partials/crmMailing2/mailing.html index 62b4b524ad..7e93c12147 100644 --- a/partials/crmMailing2/mailing.html +++ b/partials/crmMailing2/mailing.html @@ -1,6 +1,8 @@
diff --git a/partials/crmMailingAB2/edit-split.html b/partials/crmMailingAB2/edit-split.html new file mode 100644 index 0000000000..626a15cb69 --- /dev/null +++ b/partials/crmMailingAB2/edit-split.html @@ -0,0 +1 @@ +Split screen! diff --git a/partials/crmMailingAB2/edit.html b/partials/crmMailingAB2/edit.html index 09c6763311..a1704eadb5 100644 --- a/partials/crmMailingAB2/edit.html +++ b/partials/crmMailingAB2/edit.html @@ -2,10 +2,17 @@
{{abtest|json}}
-
+ + +
-
+
@@ -26,21 +33,70 @@
-
-
- Subject A: +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
-
- Subject B: +
+
- - - - +
+ A +
+
+ B +
+ + + +
-
diff --git a/partials/crmMailingAB2/joint-mailing.html b/partials/crmMailingAB2/joint-mailing.html new file mode 100644 index 0000000000..18be406363 --- /dev/null +++ b/partials/crmMailingAB2/joint-mailing.html @@ -0,0 +1,145 @@ + +
+
+
+
+ + +
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
-- 2.25.1