From 74fb6e995aac80161040588a1c5871ac375bb3cf Mon Sep 17 00:00:00 2001 From: Pratik Joshi Date: Thu, 24 Oct 2013 15:44:47 +0530 Subject: [PATCH] HR-201 : core changes for this issue (introduction of new url argument ctype for case type menu items in hrcase extension) --- CRM/Case/Form/Activity/OpenCase.php | 27 +++++++++++++++++++++++---- CRM/Case/Form/Case.php | 5 +++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/CRM/Case/Form/Activity/OpenCase.php b/CRM/Case/Form/Activity/OpenCase.php index fb78d4443a..e1cca64289 100644 --- a/CRM/Case/Form/Activity/OpenCase.php +++ b/CRM/Case/Form/Activity/OpenCase.php @@ -69,6 +69,11 @@ class CRM_Case_Form_Activity_OpenCase { $form->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $form); $form->assign('context', $form->_context); + // check if the case type id passed in url is a valid one + $caseTypeId = CRM_Utils_Request::retrieve('ctype', 'Positive', $form); + $caseTypes = CRM_Case_PseudoConstant::caseType(); + $form->_caseTypeId = array_key_exists($caseTypeId, $caseTypes) ? $caseTypeId : NULL; + // Add attachments CRM_Core_BAO_File::buildAttachment( $form, 'civicrm_activity', $form->_activityId ); } @@ -94,10 +99,20 @@ class CRM_Case_Form_Activity_OpenCase { if (count($caseStatus) == 1) { $defaults['status_id'] = key($caseStatus); } - $caseType = CRM_Core_OptionGroup::values('case_type', FALSE, FALSE, FALSE, 'AND is_default = 1'); - if (count($caseType) == 1) { - $defaults['case_type_id'] = key($caseType); + + // set default case type passed in url + if ($form->_caseTypeId) { + $caseType = $form->_caseTypeId; + } + else { + // set default case type if only one of it exists + $caseType = CRM_Core_OptionGroup::values('case_type', FALSE, FALSE, FALSE, 'AND is_default = 1'); + if (count($caseType) == 1) { + $caseType = key($caseType); + } } + $defaults['case_type_id'] = $caseType; + $medium = CRM_Core_OptionGroup::values('encounter_medium', FALSE, FALSE, FALSE, 'AND is_default = 1'); if (count($medium) == 1) { $defaults['medium_id'] = key($medium); @@ -125,13 +140,17 @@ class CRM_Case_Form_Activity_OpenCase { } $caseType = array('' => '-select-') + CRM_Case_PseudoConstant::caseType(); - $form->add('select', 'case_type_id', ts('Case Type'), + $element = $form->add('select', 'case_type_id', ts('Case Type'), $caseType, TRUE, array( 'onchange' => "CRM.buildCustomData( 'Case', this.value );", ) ); + if ($form->_caseTypeId) { + $element->freeze(); + } + $caseStatus = CRM_Case_PseudoConstant::caseStatus(); $form->add('select', 'status_id', ts('Case Status'), $caseStatus, TRUE diff --git a/CRM/Case/Form/Case.php b/CRM/Case/Form/Case.php index 3a8a4d63c9..8966cb2227 100644 --- a/CRM/Case/Form/Case.php +++ b/CRM/Case/Form/Case.php @@ -81,6 +81,11 @@ class CRM_Case_Form_Case extends CRM_Core_Form { */ public $_action; + /** + * case type id + */ + public $_caseTypeId = NULL; + /** * Function to build the form * -- 2.25.1