CRM-12872 - Centralize search task menu code
authorColeman Watts <coleman@civicrm.org>
Sat, 31 May 2014 17:44:37 +0000 (18:44 +0100)
committerColeman Watts <coleman@civicrm.org>
Tue, 3 Jun 2014 12:30:56 +0000 (13:30 +0100)
CRM/Activity/Form/Search.php
CRM/Case/Form/Search.php
CRM/Contact/Form/Search.php
CRM/Contribute/Form/Search.php
CRM/Core/Form/Search.php
CRM/Event/Form/Search.php
CRM/Grant/Form/Search.php
CRM/Member/Form/Search.php
CRM/Pledge/Form/Search.php
js/crm.searchForm.js

index 9126675ad883e06fed27730e70c34c3f8068e4fb..5899cfa2b2a4eec851b3466fe13a41f87a9b87f3 100644 (file)
@@ -249,16 +249,7 @@ class CRM_Activity_Form_Search extends CRM_Core_Form_Search {
 
       $permission = CRM_Core_Permission::getPermission();
 
-      $tasks = array('' => ts('- actions -')) + CRM_Activity_Task::permissionedTaskTitles($permission);
-
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $this->addTaskMenu(CRM_Activity_Task::permissionedTaskTitles($permission));
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
index 73332948e5d584fb24695dc19502e79cfbcb8e47..67d971810177185e534b3823e1c9ae1beaf7a736 100644 (file)
@@ -262,7 +262,7 @@ class CRM_Case_Form_Search extends CRM_Core_Form_Search {
 
       $permission = CRM_Core_Permission::getPermission();
 
-      $tasks = array('' => ts('- actions -')) + CRM_Case_Task::permissionedTaskTitles($permission);
+      $tasks = CRM_Case_Task::permissionedTaskTitles($permission);
 
       if (!empty($this->_formValues['case_deleted'])) {
         unset($tasks[1]);
@@ -271,18 +271,11 @@ class CRM_Case_Form_Search extends CRM_Core_Form_Search {
         unset($tasks[4]);
       }
 
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $this->addTaskMenu($tasks);
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
-      $this->addElement('radio', 'radio_ts', NULL, '', 'ts_all', array('class' => 'select-rows', 'onclick' => $this->getName() . ".toggleSelect.checked = false; toggleTaskAction( true );"));
+      $this->addElement('radio', 'radio_ts', NULL, '', 'ts_all', array('class' => 'select-rows'));
     }
 
   }
index 2fb29196fcb4a79daf141c91cfa97f4b269660f5..64a90c92222e4415697c4ca1c52bfcc5ac3a96a9 100644 (file)
@@ -391,7 +391,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search {
       ->addStyleFile('civicrm', 'packages/jquery/plugins/jstree/themes/default/style.css', 0, 'html-header');
     $permission = CRM_Core_Permission::getPermission();
     // some tasks.. what do we want to do with the selected contacts ?
-    $tasks = array('' => ts('- actions -'));
+    $tasks = array();
     if ($this->_componentMode == 1 || $this->_componentMode == 7) {
       $tasks += CRM_Contact_Task::permissionedTaskTitles($permission,
         CRM_Utils_Array::value('deleted_contacts', $this->_formValues)
@@ -504,14 +504,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search {
       $this->add('hidden', 'task', CRM_Contact_Task::GROUP_CONTACTS);
     }
     else {
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0, 1);",
-        )
-      );
+      $this->addTaskMenu($tasks);
     }
 
     // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
index 43ed084a79e65b1040f879a21048c2cc4a3a77e9..f0f7621e9174530dcef46df6e628f48993fb4ba9 100644 (file)
@@ -290,15 +290,8 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search {
       if (!empty($queryParams)) {
         $softCreditFiltering = CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled($queryParams);
       }
-      $tasks = array('' => ts('- actions -')) + CRM_Contribute_Task::permissionedTaskTitles($permission, $softCreditFiltering);
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $tasks = CRM_Contribute_Task::permissionedTaskTitles($permission, $softCreditFiltering);
+      $this->addTaskMenu($tasks);
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
index c584a0451f1ce847aaa3bc651549798082d29634..1e9d14e9669e04f9fb3cfec30511c968519939ce 100644 (file)
@@ -29,6 +29,9 @@
  */
 class CRM_Core_Form_Search extends CRM_Core_Form {
 
+  /**
+   * Common buildform tasks required by all searches
+   */
   function buildQuickform() {
     $resources = CRM_Core_Resources::singleton();
 
@@ -48,4 +51,16 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
       ),
     ));
   }
+
+  /**
+   * Add actions menu to search results form
+   * @param $tasks
+   */
+  function addTaskMenu($tasks) {
+    if (is_array($tasks) && !empty($tasks)) {
+      $tasks = array('' => ts('Actions')) + $tasks;
+      $this->add('select', 'task', NULL, $tasks, FALSE, array('class' => 'crm-select2 crm-action-menu huge crm-search-result-actions'));
+      $this->add('submit', $this->_actionButtonName, ts('Go'), array('class' => 'hiddenElement crm-search-go-button'));
+    }
+  }
 }
index 6c66f3673b7b2f9f0499813e94116827b21b4965..aeaaad7a293c6054a093b91ab50a3bf759a2a0e8 100644 (file)
@@ -289,7 +289,7 @@ class CRM_Event_Form_Search extends CRM_Core_Form_Search {
 
       $permission = CRM_Core_Permission::getPermission();
 
-      $tasks = array('' => ts('- actions -')) + CRM_Event_Task::permissionedTaskTitles($permission);
+      $tasks = CRM_Event_Task::permissionedTaskTitles($permission);
       if (isset($this->_ssID)) {
         if ($permission == CRM_Core_Permission::EDIT) {
           $tasks = $tasks + CRM_Event_Task::optionalTaskTitle();
@@ -303,14 +303,7 @@ class CRM_Event_Form_Search extends CRM_Core_Form_Search {
         $this->assign('ssID', $this->_ssID);
       }
 
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $this->addTaskMenu($tasks);
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel',
index 9cd8cc2ecc2aa5bebc5167b41c5a1de72e5ba79b..bda769908b82c075832013dd11e4c4528e9f6cd3 100644 (file)
@@ -244,19 +244,7 @@ class CRM_Grant_Form_Search extends CRM_Core_Form_Search {
 
       $permission = CRM_Core_Permission::getPermission();
 
-      $tasks = array('' => ts('- actions -'));
-      $permissionedTask = CRM_Grant_Task::permissionedTaskTitles($permission);
-      if (is_array($permissionedTask) && !CRM_Utils_System::isNull($permissionedTask)) {
-        $tasks += $permissionedTask;
-      }
-
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $this->addTaskMenu(CRM_Grant_Task::permissionedTaskTitles($permission));
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
index 248ced281c7754eba8f36f8ee3e7c5086f048297..8ddb224036167a573f3a8374913d0f7666f58df5 100644 (file)
@@ -239,15 +239,7 @@ class CRM_Member_Form_Search extends CRM_Core_Form_Search {
 
       $permission = CRM_Core_Permission::getPermission();
 
-      $tasks = array('' => ts('- actions -')) + CRM_Member_Task::permissionedTaskTitles($permission);
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $this->addTaskMenu(CRM_Member_Task::permissionedTaskTitles($permission));
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
index ac202912cf0ec78f72ea35b747331b5c5ba947ba..4400064d470681e63edfa23733ebde666f76bdba 100644 (file)
@@ -238,16 +238,7 @@ class CRM_Pledge_Form_Search extends CRM_Core_Form_Search {
 
       $permission = CRM_Core_Permission::getPermission();
 
-      $tasks = array('' => ts('- actions -')) + CRM_Pledge_Task::permissionedTaskTitles($permission);
-
-      $this->add('select', 'task', ts('Actions:') . ' ', $tasks);
-      $this->add('submit', $this->_actionButtonName, ts('Go'),
-        array(
-          'class' => 'form-submit',
-          'id' => 'Go',
-          'onclick' => "return checkPerformAction('mark_x', '" . $this->getName() . "', 0);",
-        )
-      );
+      $this->addTaskMenu(CRM_Pledge_Task::permissionedTaskTitles($permission));
 
       // need to perform tasks on all or selected items ? using radio_ts(task selection) for it
       $this->addElement('radio', 'radio_ts', NULL, '', 'ts_sel', array('checked' => 'checked'));
index 7e3a53b22bddf5addca734236ebec2bababb3fb2..7f8fc3c310b7c1146a7bf1dd124056e7418cdbc9 100644 (file)
@@ -11,59 +11,6 @@ function countSelectedCheckboxes(fldPrefix, form) {
   return fieldCount;
 }
 
-/**
- * This function is used to check if any action is selected and also to check if any contacts are checked.
- *
- * @access public
- * @param fldPrefix - common string which precedes unique checkbox ID and identifies field as
- *                    belonging to the resultset's checkbox collection
- * @param form - name of form that checkboxes are part of
- * Sample usage: onClick="javascript:checkPerformAction('chk_', myForm );"
- *
- */
-function checkPerformAction(fldPrefix, form, taskButton, selection) {
-  var cnt;
-  var gotTask = 0;
-
-  // taskButton TRUE means we don't need to check the 'task' field - it's a button-driven task
-  if (taskButton == 1) {
-    gotTask = 1;
-  }
-  else {
-    if (document.forms[form].task.selectedIndex) {
-      //force user to select all search contacts, CRM-3711
-      if (document.forms[form].task.value == 13 || document.forms[form].task.value == 14) {
-        var toggleSelect = document.getElementsByName('toggleSelect');
-        if (toggleSelect[0].checked || document.forms[form].radio_ts[0].checked) {
-          return true;
-        }
-        else {
-          alert("Please select all contacts for this action.\n\nTo use the entire set of search results, click the 'all records' radio button.");
-          return false;
-        }
-      }
-      gotTask = 1;
-    }
-  }
-
-  if (gotTask == 1) {
-    // If user wants to perform action on ALL records and we have a task, return (no need to check further)
-    if (document.forms[form].radio_ts[0].checked) {
-      return true;
-    }
-
-    cnt = (selection == 1) ? countSelections() : countSelectedCheckboxes(fldPrefix, document.forms[form]);
-    if (!cnt) {
-      alert("Please select one or more contacts for this action.\n\nTo use the entire set of search results, click the 'all records' radio button.");
-      return false;
-    }
-  }
-  else {
-    alert("Please select an action from the drop-down menu.");
-    return false;
-  }
-}
-
 /**
  * Function to enable task action select
  */