From 8ffa3b7c9ed15eb1b57aab5a01b67670812496d5 Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Mon, 23 May 2016 16:52:54 +0530 Subject: [PATCH] CRM-17606 - Create multiple documents from Find Cases search result --- CRM/Case/Form/Task.php | 4 +- CRM/Case/Form/Task/ExportDocument.php | 91 +++++++++++++++++++ CRM/Case/Task.php | 5 + CRM/Contact/Form/Task/PDFLetterCommon.php | 9 +- .../CRM/Case/Form/Task/ExportDocument.tpl | 30 ++++++ 5 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 CRM/Case/Form/Task/ExportDocument.php create mode 100644 templates/CRM/Case/Form/Task/ExportDocument.tpl diff --git a/CRM/Case/Form/Task.php b/CRM/Case/Form/Task.php index 6deaed3f38..69ba68394e 100644 --- a/CRM/Case/Form/Task.php +++ b/CRM/Case/Form/Task.php @@ -62,7 +62,7 @@ class CRM_Case_Form_Task extends CRM_Core_Form { * * @var array */ - protected $_caseIds; + public $_caseIds; /** * Build all the data structures needed to build the form. @@ -137,7 +137,7 @@ class CRM_Case_Form_Task extends CRM_Core_Form { */ public function setContactIDs() { $this->_contactIds = &CRM_Core_DAO::getContactIDsFromComponent($this->_caseIds, - 'civicrm_case' + 'civicrm_case_contact' ); } diff --git a/CRM/Case/Form/Task/ExportDocument.php b/CRM/Case/Form/Task/ExportDocument.php new file mode 100644 index 0000000000..db4b862639 --- /dev/null +++ b/CRM/Case/Form/Task/ExportDocument.php @@ -0,0 +1,91 @@ +skipOnHold = $this->skipDeceased = FALSE; + parent::preProcess(); + $this->setContactIDs(); + CRM_Contact_Form_Task_PDFLetterCommon::preProcess($this); + } + + public function setDefaultValues() { + return CRM_Contact_Form_Task_PDFLetterCommon::setDefaultValues(); + } + + /** + * Build the form object. + */ + public function buildQuickForm() { + CRM_Contact_Form_Task_PDFLetterCommon::buildQuickForm($this); + } + + /** + * Process the form after the input has been submitted and validated. + */ + public function postProcess() { + CRM_Contact_Form_Task_PDFLetterCommon::postProcess($this); + } + + /** + * List available tokens for this form. + * + * @return array + */ + public function listTokens() { + $tokens = CRM_Core_SelectValues::contactTokens(); + foreach ($this->_caseIds as $key => $caseId) { + $caseTypeId = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $caseId, 'case_type_id'); + $tokens += CRM_Core_SelectValues::caseTokens($caseTypeId); + } + return $tokens; + } + +} diff --git a/CRM/Case/Task.php b/CRM/Case/Task.php index 789b4fd2be..a6fea66ef3 100644 --- a/CRM/Case/Task.php +++ b/CRM/Case/Task.php @@ -86,6 +86,11 @@ class CRM_Case_Task { 'class' => 'CRM_Case_Form_Task_Restore', 'result' => FALSE, ), + 5 => array( + 'title' => ts('Export Document'), + 'class' => 'CRM_Case_Form_Task_ExportDocument', + 'result' => FALSE, + ), ); //CRM-4418, check for delete if (!CRM_Core_Permission::check('delete in CiviCase')) { diff --git a/CRM/Contact/Form/Task/PDFLetterCommon.php b/CRM/Contact/Form/Task/PDFLetterCommon.php index 9f45d26ae7..4a4677f2d6 100644 --- a/CRM/Contact/Form/Task/PDFLetterCommon.php +++ b/CRM/Contact/Form/Task/PDFLetterCommon.php @@ -350,6 +350,7 @@ class CRM_Contact_Form_Task_PDFLetterCommon { } foreach ($form->_contactIds as $item => $contactId) { + $caseId = NULL; $params = array('contact_id' => $contactId); list($contact) = CRM_Utils_Token::getTokenDetails($params, @@ -368,7 +369,13 @@ class CRM_Contact_Form_Task_PDFLetterCommon { $tokenHtml = CRM_Utils_Token::replaceContactTokens($html_message, $contact[$contactId], TRUE, $messageToken); if (!empty($form->_caseId)) { - $tokenHtml = CRM_Utils_Token::replaceCaseTokens($form->_caseId, $html_message, $messageToken); + $caseId = $form->_caseId; + } + if (empty($caseId) && !empty($form->_caseIds[$item])) { + $caseId = $form->_caseIds[$item]; + } + if ($caseId) { + $tokenHtml = CRM_Utils_Token::replaceCaseTokens($caseId, $tokenHtml, $messageToken); } $tokenHtml = CRM_Utils_Token::replaceHookTokens($tokenHtml, $contact[$contactId], $categories, TRUE); diff --git a/templates/CRM/Case/Form/Task/ExportDocument.tpl b/templates/CRM/Case/Form/Task/ExportDocument.tpl new file mode 100644 index 0000000000..6e6ea5af72 --- /dev/null +++ b/templates/CRM/Case/Form/Task/ExportDocument.tpl @@ -0,0 +1,30 @@ +{* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2016 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ +*} +
+
{include file="CRM/Case/Form/Task.tpl"}
+{include file="CRM/Contact/Form/Task/PDFLetterCommon.tpl"} +
{include file="CRM/common/formButtons.tpl" location="bottom"}
+
-- 2.25.1