From bcdd7f499c905e5deb654bacf9f88609e6c98227 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Sun, 14 Dec 2014 00:21:28 -0800 Subject: [PATCH] CRM-15578 - crmMailingAB2 - Support for attachments --- js/angular-crmMailingAB2-services.js | 27 +++++++++++++++++++++++---- js/angular-crmMailingAB2.js | 8 +++++--- partials/crmMailingAB2/edit.html | 7 +++---- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/js/angular-crmMailingAB2-services.js b/js/angular-crmMailingAB2-services.js index 398a7d6293..a26897100d 100644 --- a/js/angular-crmMailingAB2-services.js +++ b/js/angular-crmMailingAB2-services.js @@ -19,10 +19,11 @@ }); // CrmMailingAB is a data-model which combines an AB test (APIv3 "MailingAB") and three mailings (APIv3 "Mailing"). - angular.module('crmMailingAB2').factory('CrmMailingAB', function (crmApi, crmMailingMgr, $q) { + angular.module('crmMailingAB2').factory('CrmMailingAB', function (crmApi, crmMailingMgr, $q, CrmAttachments) { function CrmMailingAB(id) { this.id = id; this.mailings = {}; + this.attachments = {}; } angular.extend(CrmMailingAB.prototype, { @@ -45,6 +46,15 @@ crmMailingAB.mailings.a = crmMailingMgr.create(); crmMailingAB.mailings.b = crmMailingMgr.create(); crmMailingAB.mailings.c = crmMailingMgr.create(); + crmMailingAB.attachments.a = new CrmAttachments(function () { + return {entity_table: 'civicrm_mailing', entity_id: crmMailingAB.ab['mailing_id_a']}; + }); + crmMailingAB.attachments.b = new CrmAttachments(function () { + return {entity_table: 'civicrm_mailing', entity_id: crmMailingAB.ab['mailing_id_b']}; + }); + crmMailingAB.attachments.c = new CrmAttachments(function () { + return {entity_table: 'civicrm_mailing', entity_id: crmMailingAB.ab['mailing_id_c']}; + }); var dfr = $q.defer(); dfr.resolve(crmMailingAB); @@ -83,10 +93,17 @@ todos[mkey] = crmMailingMgr.get(crmMailingAB.ab['mailing_id_' + mkey]) .then(function (mailing) { crmMailingAB.mailings[mkey] = mailing; + crmMailingAB.attachments[mkey] = new CrmAttachments(function () { + return {entity_table: 'civicrm_mailing', entity_id: crmMailingAB.ab['mailing_id_' + mkey]}; + }); + return crmMailingAB.attachments[mkey].load(); }); } else { crmMailingAB.mailings[mkey] = crmMailingMgr.create(); + crmMailingAB.attachments[mkey] = new CrmAttachments(function () { + return {entity_table: 'civicrm_mailing', entity_id: crmMailingAB.ab['mailing_id_' + mkey]}; + }); } }); return $q.all(todos).then(function () { @@ -106,9 +123,11 @@ // paranoia: in case caller forgot to manage id on mailing crmMailingAB.mailings[mkey].id = crmMailingAB.ab['mailing_id_' + mkey]; } - todos[mkey] = crmMailingMgr.save(crmMailingAB.mailings[mkey]).then(function(){ - crmMailingAB.ab['mailing_id_' + mkey] = crmMailingAB.mailings[mkey].id; - }); + todos[mkey] = crmMailingMgr.save(crmMailingAB.mailings[mkey]) + .then(function () { + crmMailingAB.ab['mailing_id_' + mkey] = crmMailingAB.mailings[mkey].id; + return crmMailingAB.attachments[mkey].save(); + }); }); return $q.all(todos).then(function () { return crmMailingAB; diff --git a/js/angular-crmMailingAB2.js b/js/angular-crmMailingAB2.js index 22c2709f9d..e6d12ed968 100644 --- a/js/angular-crmMailingAB2.js +++ b/js/angular-crmMailingAB2.js @@ -7,7 +7,7 @@ return CRM.resourceUrls['civicrm'] + '/partials/' + module + '/' + relPath; }; - angular.module('crmMailingAB2', ['ngRoute', 'ui.utils', 'ngSanitize', 'crmUi', 'crmMailing2']); + angular.module('crmMailingAB2', ['ngRoute', 'ui.utils', 'ngSanitize', 'crmUi', 'crmAttachment', 'crmMailing2']); angular.module('crmMailingAB2').config([ '$routeProvider', function ($routeProvider) { @@ -40,10 +40,11 @@ angular.module('crmMailingAB2').controller('CrmMailingAB2EditCtrl', function ($scope, abtest, crmMailingABCriteria, crmMailingMgr) { + window.ab = abtest; $scope.abtest = abtest; $scope.ts = CRM.ts('CiviMail'); $scope.crmMailingABCriteria = crmMailingABCriteria; - $scope.crmMailingConst = CRM.crmMailing;; + $scope.crmMailingConst = CRM.crmMailing; $scope.partialUrl = partialUrl; $scope.sync = function sync() { @@ -88,7 +89,8 @@ }; function updateCriteriaName() { - $scope.criteriaName = crmMailingABCriteria.get($scope.abtest.ab.testing_criteria_id).name; + var criteria = crmMailingABCriteria.get($scope.abtest.ab.testing_criteria_id) + $scope.criteriaName = criteria ? criteria.name : null; } // initialize diff --git a/partials/crmMailingAB2/edit.html b/partials/crmMailingAB2/edit.html index a1704eadb5..d9eaab3c1f 100644 --- a/partials/crmMailingAB2/edit.html +++ b/partials/crmMailingAB2/edit.html @@ -1,5 +1,6 @@
-
{{abtest|json}}
+
{{abtest.ab|json}}
+
{{abtest.mailings|json}}
-- 2.25.1