CRM-13382 : exposing of 'Canceled', 'All Status' status option of mailing status...
authorPratik Joshi <pratik.joshi@webaccess.co.in>
Fri, 13 Sep 2013 16:49:20 +0000 (22:19 +0530)
committerPratik Joshi <pratik.joshi@webaccess.co.in>
Fri, 13 Sep 2013 16:49:20 +0000 (22:19 +0530)
----------------------------------------
* CRM-13382: Make 'Mailings' searches more comprehensive
  http://issues.civicrm.org/jira/browse/CRM-13382
* CRM-13380: 'Mailings' pages: search doesn't work correctly.
  http://issues.civicrm.org/jira/browse/CRM-13380

CRM/Mailing/Form/Search.php
CRM/Mailing/Selector/Browse.php
templates/CRM/Mailing/Form/Search.tpl

index c0f59e117506ca151aa5454276fbd42937bd509c..4a812219f4785e1574dacabd6b6d14600acd0c97 100644 (file)
@@ -54,11 +54,14 @@ class CRM_Mailing_Form_Search extends CRM_Core_Form {
 
     CRM_Campaign_BAO_Campaign::addCampaignInComponentSearch($this);
 
-    foreach (array(
-      'Scheduled', 'Complete', 'Running') as $status) {
-      $this->addElement('checkbox', "mailing_status[$status]", NULL, $status);
+    if (!$parent->get('unscheduled')) {
+      $statusVals = array('Scheduled', 'Complete', 'Running', 'Canceled');
+      $parent->set('allStatuses', $statusVals);
+      foreach ($statusVals as $status) {
+        $this->addElement('checkbox', "mailing_status[$status]", NULL, $status);
+      }
+      $this->addElement('checkbox', 'all_status', NULL, 'All Statuses');
     }
-
     if ($parent->_sms) {
       $this->addElement('hidden', 'sms', $parent->_sms);
     }
@@ -74,12 +77,13 @@ class CRM_Mailing_Form_Search extends CRM_Core_Form {
 
   function setDefaultValues() {
     $defaults = array();
-    foreach (array(
-      'Scheduled', 'Complete', 'Running') as $status) {
+    $parent = $this->controller->getParent();
+
+    $statusVals = array('Scheduled', 'Complete', 'Running', 'Canceled');
+    foreach ($statusVals as $status) {
       $defaults['mailing_status'][$status] = 1;
     }
 
-    $parent = $this->controller->getParent();
     if ($parent->_sms) {
       $defaults['sms'] = 1;
     }
@@ -93,7 +97,7 @@ class CRM_Mailing_Form_Search extends CRM_Core_Form {
 
     $parent = $this->controller->getParent();
     if (!empty($params)) {
-      $fields = array('mailing_name', 'mailing_from', 'mailing_to', 'sort_name', 'campaign_id', 'mailing_status', 'sms');
+      $fields = array('mailing_name', 'mailing_from', 'mailing_to', 'sort_name', 'campaign_id', 'mailing_status', 'sms', 'all_status');
       foreach ($fields as $field) {
         if (isset($params[$field]) &&
           !CRM_Utils_System::isNull($params[$field])
index 1a197cf48ca64f4bf9afb08eab7014895c9a8c53..458d3f316e46b3f0a4ab2e0a5559384a262b3ebe 100644 (file)
@@ -517,9 +517,19 @@ LEFT JOIN  civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul
       $clauses[] = "( civicrm_mailing.is_archived IS NULL OR civicrm_mailing.is_archived = 0 )";
     }
     if (!$this->_parent->get('unscheduled')) {
-      $status    = $this->_parent->get('mailing_status');
+
+      // all status filter implementation
+      if ($status = $this->_parent->get('mailing_status')) {
+        $status = array_keys($status);
+      }
+      if ($this->_parent->get('all_status')) {
+        $status = $this->_parent->get('allStatuses');
+      }
+      if ($this->_parent->get('all_status') && $this->_parent->get('scheduled')) {
+        $status = array('Scheduled', 'Complete', 'Running');
+      }
+
       if (!empty($status)) {
-        $status    = array_keys($status);
         $status    = implode("','", $status);
         $clauses[] = "civicrm_mailing_job.status IN ('$status')";
       }
@@ -527,7 +537,6 @@ LEFT JOIN  civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul
         $clauses[] = "civicrm_mailing_job.status IN ('Scheduled', 'Complete', 'Running')";
       }
     }
-
     if ($this->_parent->get('archived')) {
       // CRM-6446: archived view should also show cancelled mailings
       $clauses[] = "(civicrm_mailing.is_archived = 1 OR civicrm_mailing_job.status = 'Canceled')";
index 652442431473557533596d6911e2dccdcb062560..550f9d59956d787e4e3b88dbe259d6bb4d78ce35 100644 (file)
         <td colspan="1">{$form.sort_name.label}<br />
             {$form.sort_name.html|crmAddClass:big} {help id="id-create_sort_name"}
         </td>
-        <td width="100%"><label>{if $sms eq 1}{ts}SMS Status{/ts}{else}{ts}Mailing Status{/ts}{/if}</label><br />
-        <div class="listing-box" style="width: auto; height: 60px">
-            {foreach from=$form.mailing_status item="mailing_status_val"}
-            <div class="{cycle values="odd-row,even-row"}">
-                {$mailing_status_val.html}
-            </div>
+        {if $form.mailing_status}
+           <td width="100%"><label>{if $sms eq 1}{ts}SMS Status{/ts}{else}{ts}Mailing Status{/ts}{/if}</label><br />
+           <div class="listing-box" style="width: auto; height: 100px">
+             {foreach from=$form.mailing_status item="mailing_status_val"}
+             <div class="{cycle values="odd-row,even-row"}">
+               {$mailing_status_val.html}
+             </div>
             {/foreach}
-        </div><br />
-        </td>
+            <div class='odd-row'>
+              {$form.all_status.html}
+            </div>
+           </div><br />
+           </td>
+        {/if}
     </tr>
 
     {* campaign in mailing search *}