X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FForm%2FCaseView.php;h=619ceff3cb3b00695c335e34cf534f8d4a87ae1c;hb=c087eb82efb6049fe03fbad672aa99dcd59c5b25;hp=4f887b45f89aef8cac983c3d999a093a4e8b32e3;hpb=21d51f5ccf474554a808dee1fcc5c3db74afe589;p=civicrm-core.git diff --git a/CRM/Case/Form/CaseView.php b/CRM/Case/Form/CaseView.php index 4f887b45f8..619ceff3cb 100644 --- a/CRM/Case/Form/CaseView.php +++ b/CRM/Case/Form/CaseView.php @@ -1,9 +1,9 @@ addScriptFile('civicrm', 'templates/CRM/Case/Form/ActivityChangeStatus.js'); - $this->_showRelatedCases = CRM_Utils_Array::value('relatedCases', $_GET); $xmlProcessorProcess = new CRM_Case_XMLProcessor_Process(); @@ -71,6 +68,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { } $this->assign('relatedCases', $relatedCases); $this->assign('showRelatedCases', TRUE); + CRM_Utils_System::setTitle(ts('Related Cases')); return; } @@ -135,19 +133,6 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $this->_caseType = $caseTypeName; $this->assign('caseDetails', $this->_caseDetails); - $newActivityUrl = CRM_Utils_System::url('civicrm/case/activity', - "action=add&reset=1&cid={$this->_contactID}&caseid={$this->_caseID}&atype=", - FALSE, NULL, FALSE - ); - $this->assign('newActivityUrl', $newActivityUrl); - - // Send Email activity requires a different URL format from all other activities - $newActivityEmailUrl = CRM_Utils_System::url('civicrm/activity/email/add', - "action=add&context=standalone&reset=1&caseid={$this->_caseID}&atype=", - FALSE, NULL, FALSE - ); - $this->assign('newActivityEmailUrl', $newActivityEmailUrl); - $reportUrl = CRM_Utils_System::url('civicrm/case/report', "reset=1&cid={$this->_contactID}&caseid={$this->_caseID}&asn=", FALSE, NULL, FALSE @@ -190,7 +175,16 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $relatedCases = empty($relatedCases) ? FALSE : $relatedCases; $this->set('relatedCases', $relatedCases); } - $this->assign('hasRelatedCases', $relatedCases); + $this->assign('hasRelatedCases', (bool) $relatedCases); + if ($relatedCases) { + $this->assign('relatedCaseLabel', ts('%1 Related Case', array('count' => count($relatedCases), 'plural' => '%1 Related Cases'))); + $this->assign('relatedCaseUrl', CRM_Utils_System::url('civicrm/contact/view/case', array( + 'id' => $this->_caseID, + 'cid' => $this->_contactID, + 'relatedCases' => 1, + 'action' => 'view', + ))); + } $entitySubType = !empty($values['case_type_id']) ? $values['case_type_id'][0] : NULL; $this->assign('caseTypeID', $entitySubType); @@ -211,7 +205,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { * * @access public * - * @return None + * @return void */ function setDefaultValues() { $defaults = array(); @@ -221,7 +215,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { /** * Function to build the form * - * @return None + * @return void * @access public */ public function buildQuickForm() { @@ -230,6 +224,10 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { return; } + CRM_Core_Resources::singleton() + ->addScriptFile('civicrm', 'js/crm.livePage.js') + ->addScriptFile('civicrm', 'templates/CRM/Case/Form/CaseView.js'); + $xmlProcessor = new CRM_Case_XMLProcessor_Process(); $caseRoles = $xmlProcessor->get($this->_caseType, 'CaseRoles'); $reports = $xmlProcessor->get($this->_caseType, 'ActivitySets'); @@ -244,19 +242,17 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $allActTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name'); + $emailActivityType = array_search('Email', $allActTypes); + $pdfActivityType = array_search('Print PDF Letter', $allActTypes); + // remove Open Case activity type since we're inside an existing case - if (($openActTypeId = array_search('Open Case', $allActTypes)) && - array_key_exists($openActTypeId, $aTypes) - ) { + if ($openActTypeId = array_search('Open Case', $allActTypes)) { unset($aTypes[$openActTypeId]); } //check for link cases. $unclosedCases = CRM_Case_BAO_Case::getUnclosedCases(NULL, array($this->_caseID)); - if (empty($unclosedCases) && - ($linkActTypeId = array_search('Link Cases', $allActTypes)) && - array_key_exists($linkActTypeId, $aTypes) - ) { + if (empty($unclosedCases) && ($linkActTypeId = array_search('Link Cases', $allActTypes))) { unset($aTypes[$linkActTypeId]); } @@ -264,23 +260,42 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { asort($aTypes); } - $this->add('select', 'activity_type_id', ts('New Activity'), array('' => ts('- select activity type -')) + $aTypes); + $activityLinks = array('' => ts('Add Activity')); + foreach ($aTypes as $type => $label) { + if ($type == $emailActivityType) { + $url = CRM_Utils_System::url('civicrm/activity/email/add', + "action=add&context=standalone&reset=1&caseid={$this->_caseID}&atype=$type", + FALSE, NULL, FALSE + ); + } + else if ($type == $pdfActivityType ) { + $url = CRM_Utils_System::url('civicrm/activity/pdf/add', + "action=add&context=standalone&reset=1&cid={$this->_contactID}&caseid={$this->_caseID}&atype=$type", + FALSE, NULL, FALSE ); + } + else { + $url = CRM_Utils_System::url('civicrm/case/activity', + "action=add&reset=1&cid={$this->_contactID}&caseid={$this->_caseID}&atype=$type", + FALSE, NULL, FALSE + ); + } + $activityLinks[$url] = $label; + } + + $this->add('select', 'add_activity_type_id', '', $activityLinks, FALSE, array('class' => 'crm-select2 crm-action-menu action-icon-plus twenty')); if ($this->_hasAccessToAllCases) { - $this->add('select', 'report_id', ts('Run QA Audit / Redact'), - array( - '' => ts('- select activity set -')) + $reports + $this->add('select', 'report_id', '', + array('' => ts('Run QA Audit / Redact')) + $reports, + FALSE, + array('class' => 'crm-select2 crm-action-menu action-icon-clipboard') ); - $this->add('select', 'timeline_id', ts('Add Timeline'), - array( - '' => ts('- select activity set -')) + $reports + $this->add('select', 'timeline_id', '', + array('' => ts('Add Timeline')) + $reports, + FALSE, + array('class' => 'crm-select2 crm-action-menu action-icon-play') ); } - $this->addElement('submit', $this->getButtonName('next'), ts('Go'), - array( - 'class' => 'form-submit-inline', - 'onclick' => "return checkSelection( this );", - ) - ); + $this->addElement('submit', $this->getButtonName('next'), ' ', array('class' => 'hiddenElement')); if ($this->_mergeCases) { $allCases = CRM_Case_BAO_Case::getContactCases($this->_contactID); @@ -305,40 +320,22 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $this->add('select', 'merge_case_id', ts('Select Case for Merge'), array( - '' => ts('- select case -')) + $otherCases + '' => ts('- select case -')) + $otherCases, + FALSE, + array('class' => 'crm-select2 huge') ); $this->addElement('submit', $this->getButtonName('next', 'merge_case'), ts('Merge'), array( - 'class' => 'form-submit-inline', - 'onclick' => "return checkSelection( this );", + 'class' => 'form-submit-inline hiddenElement', ) ); } } - $this->add('text', 'change_client_id', ts('Assign to another Client')); - $this->add('hidden', 'contact_id', '', array('id' => 'contact_id')); - $this->addElement('submit', - $this->getButtonName('next', 'edit_client'), - ts('Reassign Case'), - array( - 'class' => 'form-submit-inline', - 'onclick' => "return checkSelection( this );", - ) - ); - - $activityStatus = CRM_Core_PseudoConstant::activityStatus(); - $this->add('select', 'status_id', ts('Status'), array("" => ts(' - any status - ')) + $activityStatus); - - // activity dates - $this->addDate('activity_date_low', ts('Activity Dates - From'), FALSE, array('formatType' => 'searchDate')); - $this->addDate('activity_date_high', ts('To'), FALSE, array('formatType' => 'searchDate')); - - if (CRM_Core_Permission::check('administer CiviCRM')) { - $this->add('checkbox', 'activity_deleted', ts('Deleted Activities')); - } + //call activity form + self::activityForm($this); //get case related relationships (Case Role) $caseRelationships = CRM_Case_BAO_Case::getCaseRoles($this->_contactID, $this->_caseID); @@ -346,11 +343,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { //save special label because we unset it in the loop $managerLabel = empty($managerRoleId) ? '' : $caseRoles[$managerRoleId]; - //build reporter select - $reporters = array("" => ts(' - any reporter - ')); foreach ($caseRelationships as $key => & $value) { - $reporters[$value['cid']] = $value['name'] . " ( {$value['relation']} )"; - if (!empty($managerRoleId)) { if ($managerRoleId == $value['relation_type']) { $value['relation'] = $managerLabel; @@ -358,23 +351,11 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { } //calculate roles that don't have relationships - if (CRM_Utils_Array::value($value['relation_type'], $caseRoles)) { + if (!empty($caseRoles[$value['relation_type']])) { unset($caseRoles[$value['relation_type']]); } } - // take all case activity types for search filter, CRM-7187 - $aTypesFilter = array(); - $allCaseActTypes = CRM_Case_PseudoConstant::caseActivityType(); - foreach ($allCaseActTypes as $typeDetails) { - if (!in_array($typeDetails['name'], array( - 'Open Case'))) { - $aTypesFilter[$typeDetails['id']] = CRM_Utils_Array::value('label', $typeDetails); - } - } - asort($aTypesFilter); - $this->add('select', 'activity_type_filter_id', ts('Activity Type'), array('' => ts('- select activity type -')) + $aTypesFilter); - $this->assign('caseRelationships', $caseRelationships); //also add client as role. CRM-4438 @@ -382,8 +363,6 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $this->assign('caseRoles', $caseRoles); - $this->add('select', 'reporter_id', ts('Reporter/Role'), $reporters); - // Retrieve ALL client relationships $relClient = CRM_Contact_BAO_Relationship::getRelationship($this->_contactID, CRM_Contact_BAO_Relationship::CURRENT, @@ -402,8 +381,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { // Now global contact list that appears on all cases. $globalGroupInfo = array(); - $relGlobal = CRM_Case_BAO_Case::getGlobalContacts($globalGroupInfo); - $this->assign('globalRelationships', $relGlobal); + CRM_Case_BAO_Case::getGlobalContacts($globalGroupInfo); $this->assign('globalGroupInfo', $globalGroupInfo); // List of relationship types @@ -413,7 +391,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { foreach ($relType as $k => $v) { $roleTypes[substr($k, 0, strpos($k, '_'))] = $v; } - $this->add('select', 'role_type', ts('Relationship Type'), array('' => ts('- select type -')) + $roleTypes); + $this->add('select', 'role_type', ts('Relationship Type'), array('' => ts('- select type -')) + $roleTypes, FALSE, array('class' => 'crm-select2 twenty')); $hookCaseSummary = CRM_Utils_Hook::caseSummary($this->_caseID); if (is_array($hookCaseSummary)) { @@ -425,7 +403,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { if (!empty($allTags)) { $this->add('select', 'case_tag', ts('Tags'), $allTags, FALSE, - array('id' => 'tags', 'multiple' => 'multiple', 'title' => ts('- select -')) + array('id' => 'tags', 'multiple' => 'multiple', 'class' => 'crm-select2') ); $tags = CRM_Core_BAO_EntityTag::getTag($this->_caseID, 'civicrm_case'); @@ -488,9 +466,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $session = CRM_Core_Session::singleton(); $session->pushUserContext($url); - if (CRM_Utils_Array::value('timeline_id', $params) && - CRM_Utils_Array::value('_qf_CaseView_next', $_POST) - ) { + if (!empty($params['timeline_id']) && !empty($_POST['_qf_CaseView_next'])) { $session = CRM_Core_Session::singleton(); $this->_uid = $session->get('userID'); $xmlProcessor = new CRM_Case_XMLProcessor_Process(); @@ -527,16 +503,41 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $session = CRM_Core_Session::singleton(); $session->pushUserContext($url); } - elseif ($buttonName == '_qf_CaseView_next_edit_client') { - $mainCaseId = CRM_Case_BAO_Case::mergeCases($params['contact_id'], $this->_caseID, $this->_contactID, NULL, TRUE); + } - // user context - $url = CRM_Utils_System::url('civicrm/contact/view/case', - "reset=1&action=view&cid={$params['contact_id']}&id={$mainCaseId[0]}&show=1" - ); - $session = CRM_Core_Session::singleton(); - $session->pushUserContext($url); + /** + * Build the activity selector/datatable + * @param CRM_Core_Form $form + */ + static function activityForm($form) { + $caseRelationships = CRM_Case_BAO_Case::getCaseRoles($form->_contactID, $form->_caseID); + //build reporter select + $reporters = array("" => ts(' - any reporter - ')); + foreach ($caseRelationships as $key => & $value) { + $reporters[$value['cid']] = $value['name'] . " ( {$value['relation']} )"; + } + $form->add('select', 'reporter_id', ts('Reporter/Role'), $reporters, FALSE, array('id' => 'reporter_id_'.$form->_caseID)); + + // take all case activity types for search filter, CRM-7187 + $aTypesFilter = array(); + $allCaseActTypes = CRM_Case_PseudoConstant::caseActivityType(); + foreach ($allCaseActTypes as $typeDetails) { + if (!in_array($typeDetails['name'], array('Open Case'))) { + $aTypesFilter[$typeDetails['id']] = CRM_Utils_Array::value('label', $typeDetails); + } + } + asort($aTypesFilter); + $form->add('select', 'activity_type_filter_id', ts('Activity Type'), array('' => ts('- select activity type -')) + $aTypesFilter, FALSE, array('id' => 'activity_type_filter_id_'.$form->_caseID)); + + $activityStatus = CRM_Core_PseudoConstant::activityStatus(); + $form->add('select', 'status_id', ts('Status'), array("" => ts(' - any status - ')) + $activityStatus, FALSE, array('id' => 'status_id_'.$form->_caseID)); + + // activity dates + $form->addDate('activity_date_low_'.$form->_caseID, ts('Activity Dates - From'), FALSE, array('formatType' => 'searchDate')); + $form->addDate('activity_date_high_'.$form->_caseID, ts('To'), FALSE, array('formatType' => 'searchDate')); + + if (CRM_Core_Permission::check('administer CiviCRM')) { + $form->add('checkbox', 'activity_deleted', ts('Deleted Activities'), '', FALSE, array('id' => 'activity_deleted_'.$form->_caseID)); } } } -