CRM-15578 - crmMailing(AB) - Refine pageflow:
authorTim Otten <totten@civicrm.org>
Fri, 19 Dec 2014 08:27:59 +0000 (00:27 -0800)
committerTim Otten <totten@civicrm.org>
Fri, 19 Dec 2014 08:51:47 +0000 (00:51 -0800)
 * "Submit" => leave('scheduled')
 * "Delete" => leave('unscheduled')
 * "Save" => updateUrl()
 * "Send Test" => updateUrl()

This commit also switches back to managing pageflow from the controller
(rather than calling .then(leave) in the .html).  At the moment, it seems
more useful to have all the different composition screens follow the same
pageflow (rather than allowing them to have different pageflows).

js/angular-crmMailing.js
js/angular-crmMailingAB.js
partials/crmMailing/edit-unified.html
partials/crmMailing/edit-unified2.html
partials/crmMailing/edit-wizard.html
partials/crmMailing/edit.html
partials/crmMailingAB/edit.html

index a43fea1b64d674a37964990de0e533f0d6d352c9..b383acb5717544fa050b6326133ef90409163a8b 100644 (file)
             return crmMailingMgr.submit($scope.mailing);
           })
           .then(function () {
-            updateUrl();
-            return $scope.mailing;
+            leave('scheduled');
           })
         ;
       return crmStatus({start: ts('Submitting...'), success: ts('Submitted')}, promise);
             // pre-condition: the mailing exists *before* saving attachments to it
             return $scope.attachments.save();
           })
-          .then(function () {
-            updateUrl();
-            return $scope.mailing;
-          })
+          .then(updateUrl)
       );
     };
 
     $scope.delete = function cancel() {
       return crmStatus({start: ts('Deleting...'), success: ts('Deleted')},
         crmMailingMgr.delete($scope.mailing)
+          .then(function () {
+            leave('unscheduled')
+          })
       );
     };
 
-    $scope.leave = function leave() {
-      window.location = CRM.url('civicrm/mailing/browse/unscheduled', {
-        reset: 1,
-        scheduled: 'false'
-      });
+    // @param string listingScreen 'archive', 'scheduled', 'unscheduled'
+    function leave(listingScreen) {
+      switch (listingScreen) {
+        case 'archive':
+          window.location = CRM.url('civicrm/mailing/browse/archived', {
+            reset: 1
+          });
+          break;
+        case 'scheduled':
+          window.location = CRM.url('civicrm/mailing/browse/scheduled', {
+            reset: 1,
+            scheduled: 'true'
+          });
+          break;
+        case 'unscheduled':
+        default:
+          window.location = CRM.url('civicrm/mailing/browse/unscheduled', {
+            reset: 1,
+            scheduled: 'false'
+          });
+      }
     };
 
     // Transition URL "/mailing/new" => "/mailing/123"
index 9ca3f2d6031f50943b72bdb270d2f8136045990d..2000cf7b0d988644649a6140ab24a368a677316c 100644 (file)
 
     // @return Promise
     $scope.delete = function () {
-      return crmStatus({start: ts('Deleting...'), success: ts('Deleted')}, abtest.delete());
+      return crmStatus({start: ts('Deleting...'), success: ts('Deleted')}, abtest.delete().then(leave));
     };
 
     // @return Promise
     $scope.submit = function submit() {
-      return crmStatus({start: ts('Saving...'), success: ''}, abtest.save().then(updateUrl))
+      return crmStatus({start: ts('Saving...'), success: ''}, abtest.save())
         .then(function () {
           return crmStatus({start: ts('Submitting...'), success: ts('Submitted')}, $q.all([
             crmMailingMgr.submit(abtest.mailings.a),
             crmMailingMgr.submit(abtest.mailings.b)
           ]));
-        });
+        })
+        .then(leave);
     };
 
+    function leave() {
+      console.log('leave from', $location.path(), ' to abtest');
+      $location.path('abtest');
+      $location.replace();
+    }
+
     function updateCriteriaName() {
       var criteria = crmMailingABCriteria.get($scope.abtest.ab.testing_criteria_id)
       $scope.criteriaName = criteria ? criteria.name : null;
index 5aaad4c4b5c581fdfff78e8a8e0669f1e0690f36..eed1b3011f68cbdeb24064ea553072a6b193c3c0 100644 (file)
@@ -44,8 +44,8 @@
       <div crm-mailing-block-preview crm-mailing="mailing" on-preview="previewMailing(mailing, preview.mode)" on-send="sendTest(mailing, attachments, preview.recipient)" />
     </div>
 
-    <button ng-click="submit().then(leave)">{{ts('Submit Mailing')}}</button>
+    <button ng-click="submit()">{{ts('Submit Mailing')}}</button>
     <button ng-click="save()">{{ts('Save Draft')}}</button>
-    <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete().then(leave)">{{ts('Delete Draft')}}</button>
+    <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete()">{{ts('Delete Draft')}}</button>
   </div>
 </form>
index 00725dc93f0285cf7745031117a76403494e757b..1b74085e0ecad8db6c0efde9ecb34c48b32b5c1b 100644 (file)
@@ -42,6 +42,6 @@
 
     <button ng-click="submit()">{{ts('Submit Mailing')}}</button>
     <button ng-click="save()">{{ts('Save Draft')}}</button>
-    <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete().then(leave)">{{ts('Delete Draft')}}</button>
+    <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete()">{{ts('Delete Draft')}}</button>
   </div>
 </form>
index 31b9104b4f719f115452e6d156a6a111311c5bed..a79e0ad02fb5ba0a7db7f907548ca9e2194ced85 100644 (file)
           <div crm-mailing-block-review crm-mailing="mailing"/>
         </div>
         <center>
-          <a class="crmMailing-submit-button" ng-click="submit().then(leave)">
+          <a class="crmMailing-submit-button" ng-click="submit()">
             <div>{{ts('Submit Mailing')}}</div>
           </a>
         </center>
       </div>
 
       <span crm-ui-wizard-buttons style="float:right;">
-        <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete().then(leave)">{{ts('Delete Draft')}}</button>
+        <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete()">{{ts('Delete Draft')}}</button>
         <button ng-click="save()">{{ts('Save Draft')}}</button>
       </span>
     </div>
index 0b914e760e449c768161cde54f44e35043627f40..8216162400638eef9efc91d4ed9e7ec9f02882ef 100644 (file)
@@ -58,7 +58,7 @@
       </div>
 
       <span crm-ui-wizard-buttons style="float:right;">
-        <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete().then(leave)">{{ts('Delete Draft')}}</button>
+        <button crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}" on-yes="delete()">{{ts('Delete Draft')}}</button>
         <button ng-click="save()">{{ts('Save Draft')}}</button>
       </span>
     </div>
index 9211e23435626fb697a1fa051525594270044846..f68d87a6c6923364afa314dccb545eb6ba82ff64 100644 (file)
           }"
           crm-abtest="abtest"></div>
         <center>
-          <a class="crmMailing-submit-button" ng-click="submit().then(leave)">
+          <a class="crmMailing-submit-button" ng-click="submit()">
             <div>{{ts('Submit Mailing')}}</div>
           </a>
         </center>
       <span crm-ui-wizard-buttons style="float:right;">
         <button
           crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}"
-          on-yes="delete().then(leave)">{{ts('Delete Draft')}}
+          on-yes="delete()">{{ts('Delete Draft')}}
         </button>
         <button ng-click="save()">{{ts('Save Draft')}}</button>
       </span>