CRM-15578 - Add crmMailingMgr.mergeInto()
authorTim Otten <totten@civicrm.org>
Fri, 12 Dec 2014 02:47:23 +0000 (18:47 -0800)
committerTim Otten <totten@civicrm.org>
Fri, 12 Dec 2014 04:21:25 +0000 (20:21 -0800)
This should be useful for creating different variations on a mailings in A/B
testing.

js/angular-crmMailing2-services.js

index 95ba835b5820fe1568cc1ea2422610cff50b15e3..b02b6539f056ca1998216e7373a5fd6a8ce5309c 100644 (file)
         }
       },
 
+      // Copy all data fields in (mailingFrom) to (mailingTgt) -- except for (excludes)
+      // ex: crmMailingMgr.mergeInto(newMailing, mailingTemplate, ['subject']);
+      mergeInto: function mergeInto(mailingTgt, mailingFrom, excludes) {
+        var MAILING_FIELDS = [
+          'name',
+          'campaign_id',
+          'from_name',
+          'from_email',
+          'replyto_email',
+          'subject',
+          'dedupe_email',
+          'groups',
+          'mailings',
+          'body_html',
+          'body_text',
+          'footer_id',
+          'header_id',
+          'visibility',
+          'url_tracking',
+          'dedupe_email',
+          'forward_replies',
+          'auto_responder',
+          'open_tracking',
+          'override_verp',
+          'optout_id',
+          'reply_id',
+          'resubscribe_id',
+          'unsubscribe_id'
+        ];
+        if (!excludes) {
+          excludes = [];
+        }
+        _.each(MAILING_FIELDS, function (field) {
+          if (!_.contains(excludes, field)) {
+            mailingTgt[field] = mailingFrom[field];
+          }
+        })
+      },
+
       // @param mailing Object (per APIv3)
       // @return Promise an object with "subject", "body_text", "body_html"
       preview: function preview(mailing) {