From cbb4cb7b8e6eeb9d7e3d2d16860f6b634fd7d54f Mon Sep 17 00:00:00 2001 From: Pratik Joshi Date: Fri, 13 Sep 2013 22:19:20 +0530 Subject: [PATCH] CRM-13382 : exposing of 'Canceled', 'All Status' status option of mailing status filter on mailing search pages for easy search ---------------------------------------- * 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 | 20 ++++++++++++-------- CRM/Mailing/Selector/Browse.php | 15 ++++++++++++--- templates/CRM/Mailing/Form/Search.tpl | 21 +++++++++++++-------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/CRM/Mailing/Form/Search.php b/CRM/Mailing/Form/Search.php index c0f59e1175..4a812219f4 100644 --- a/CRM/Mailing/Form/Search.php +++ b/CRM/Mailing/Form/Search.php @@ -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]) diff --git a/CRM/Mailing/Selector/Browse.php b/CRM/Mailing/Selector/Browse.php index 1a197cf48c..458d3f316e 100644 --- a/CRM/Mailing/Selector/Browse.php +++ b/CRM/Mailing/Selector/Browse.php @@ -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')"; diff --git a/templates/CRM/Mailing/Form/Search.tpl b/templates/CRM/Mailing/Form/Search.tpl index 6524424314..550f9d5995 100644 --- a/templates/CRM/Mailing/Form/Search.tpl +++ b/templates/CRM/Mailing/Form/Search.tpl @@ -42,15 +42,20 @@ {$form.sort_name.label}
{$form.sort_name.html|crmAddClass:big} {help id="id-create_sort_name"} -
-
- {foreach from=$form.mailing_status item="mailing_status_val"} -
- {$mailing_status_val.html} -
+ {if $form.mailing_status} +
+
+ {foreach from=$form.mailing_status item="mailing_status_val"} +
+ {$mailing_status_val.html} +
{/foreach} -

- +
+ {$form.all_status.html} +
+

+ + {/if} {* campaign in mailing search *} -- 2.25.1