CRM-18021 Add in report viewing option for ab tests
authorSeamus Lee <seamuslee001@gmail.com>
Thu, 11 Feb 2016 10:15:58 +0000 (10:15 +0000)
committerSeamus Lee <seamuslee001@gmail.com>
Thu, 11 Feb 2016 20:51:05 +0000 (20:51 +0000)
CRM/Mailing/Info.php
ang/crmMailing/services.js
ang/crmMailingAB/EditCtrl/report.html

index 6702e275447a6dff5db0af6eb3286e05aa9c6efd..a4dd73c6d0226829ef0ed4a3954f347858ce1cd3 100644 (file)
@@ -72,6 +72,14 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
       return array();
     }
 
+    $reportIds = array();
+    $reportTypes = array('detail', 'opened', 'bounce', 'clicks');
+    foreach ($reportTypes as $report) {
+      $result = civicrm_api3('ReportInstance', 'get', array(
+        'sequential' => 1,
+        'report_id' => 'mailing/' . $report));
+      $reportIds[$report] = $result['values'][0]['id'];
+    }
     $result = array();
     $result['crmMailing'] = array(
       'ext' => 'civicrm',
@@ -174,6 +182,7 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
             )),
           'visibility' => CRM_Utils_Array::makeNonAssociative(CRM_Core_SelectValues::groupVisibility()),
           'workflowEnabled' => CRM_Mailing_Info::workflowEnabled(),
+          'reportIds' => $reportIds,
         ),
       ))
       ->addPermissions(array(
index c76da9238f53be8cc50aac5d9539848c4e2cabce..42013571826505e666288d6d54a2f45813dbb3cb 100644 (file)
 
   angular.module('crmMailing').factory('crmMailingStats', function (crmApi, crmLegacy) {
     var statTypes = [
-      // {name: 'Recipients', title: ts('Intended Recipients'),   searchFilter: '',                           eventsFilter: '&event=queue'},
-      {name: 'Delivered',     title: ts('Successful Deliveries'), searchFilter: '&mailing_delivery_status=Y', eventsFilter: '&event=delivered'},
-      {name: 'Opened',        title: ts('Tracked Opens'),         searchFilter: '&mailing_open_status=Y',     eventsFilter: '&event=opened'},
-      {name: 'Unique Clicks', title: ts('Click-throughs'),        searchFilter: '&mailing_click_status=Y',    eventsFilter: '&event=click&distinct=1'},
-      // {name: 'Forward',    title: ts('Forwards'),              searchFilter: '&mailing_forward=1',         eventsFilter: '&event=forward'},
-      // {name: 'Replies',    title: ts('Replies'),               searchFilter: '&mailing_reply_status=Y',    eventsFilter: '&event=reply'},
-      {name: 'Bounces',       title: ts('Bounces'),               searchFilter: '&mailing_delivery_status=N', eventsFilter: '&event=bounce'},
-      {name: 'Unsubscribers', title: ts('Unsubscribes'),          searchFilter: '&mailing_unsubscribe=1',     eventsFilter: '&event=unsubscribe'}
-      // {name: 'OptOuts',    title: ts('Opt-Outs'),              searchFilter: '&mailing_optout=1',          eventsFilter: '&event=optout'}
+      // {name: 'Recipients', title: ts('Intended Recipients'),   searchFilter: '',                           eventsFilter: '&event=queue', reportType: 'detail', reportFilter: ''},
+      {name: 'Delivered',     title: ts('Successful Deliveries'), searchFilter: '&mailing_delivery_status=Y', eventsFilter: '&event=delivered', reportType: 'detail', reportFilter: '&delivery_status_value=successful'},
+      {name: 'Opened',        title: ts('Tracked Opens'),         searchFilter: '&mailing_open_status=Y',     eventsFilter: '&event=opened', reportType: 'opened', reportFilter: ''},
+      {name: 'Unique Clicks', title: ts('Click-throughs'),        searchFilter: '&mailing_click_status=Y',    eventsFilter: '&event=click&distinct=1', reportType: 'clicks', reportFilter: ''},
+      // {name: 'Forward',    title: ts('Forwards'),              searchFilter: '&mailing_forward=1',         eventsFilter: '&event=forward', reportType: 'detail', reportFilter: '&is_forwarded_value=1'},
+      // {name: 'Replies',    title: ts('Replies'),               searchFilter: '&mailing_reply_status=Y',    eventsFilter: '&event=reply', reportType: 'detail', reportFilter: '&is_replied_value=1'},
+      {name: 'Bounces',       title: ts('Bounces'),               searchFilter: '&mailing_delivery_status=N', eventsFilter: '&event=bounce', reportType: 'bounce', reportFilter: ''},
+      {name: 'Unsubscribers', title: ts('Unsubscribes'),          searchFilter: '&mailing_unsubscribe=1',     eventsFilter: '&event=unsubscribe', reportType: 'detail', reportFilter: '&is_unsubscribed_value=1'},
+      // {name: 'OptOuts',    title: ts('Opt-Outs'),              searchFilter: '&mailing_optout=1',          eventsFilter: '&event=optout', reportType: 'detail', reportFilter: ''}
     ];
 
     return {
             var retParams = returnPath ? '&context=angPage&angPage=' + returnPath : '';
             return crmLegacy.url('civicrm/mailing/report/event',
               'reset=1&mid=' + mailing.id + statType.eventsFilter + retParams);
-
           case 'search':
             return crmLegacy.url('civicrm/contact/search/advanced',
               'force=1&mailing_id=' + mailing.id + statType.searchFilter);
-
-          // TODO: case 'report':
+          case 'report':
+            var reportIds = CRM.crmMailing.reportIds; 
+            return crmLegacy.url('civicrm/report/instance/' + reportIds[statType.reportType],
+                'reset=1&mailing_id_value=' + mailing.id + statType.reportFilter);
           default:
             return null;
         }
index 4c4b8291ae40e332bd8b9ba95c27f14ef656436c..73d7988b8a5848118ec3fd48ac34e169ce7d7419 100644 (file)
           ng-href="{{statUrl(am.mailing, statType, 'events')}}"
           title="{{ts('Browse events of type \'%1\'', {1: statType.title})}}"
           >{{stats[am.name][statType.name] || ts('n/a')}}</a>
+        <a
+          class="crm-hover-button action-item"
+          ng-href="{{statUrl(am.mailing, statType, 'report')}}"
+          title="{{ts('Reports for  \'%1\'', {1: statType.title})}}"
+          crm-icon="clipboard"
+          ></a>
       </td>
       <td ng-show="abtest.ab.status == 'Testing'"></td>
     </tr>