diff --git a/atrium_casetracker/atrium_casetracker.module b/atrium_casetracker/atrium_casetracker.module index e8731da..ef861fa 100644 --- a/atrium_casetracker/atrium_casetracker.module +++ b/atrium_casetracker/atrium_casetracker.module @@ -276,6 +276,7 @@ function atrium_casetracker_get_inactive_states() { if (!isset($inactive_states)) { $inactive_states = array(); $search = array('closed', 'defer', 'duplicate', 'postponed', 'fixed', 'resolved'); + drupal_alter('atrium_casetracker_inactive_states', $search); $states = casetracker_case_state_load(NULL, 'status'); foreach ($states as $status_id => $state) { $state = strtolower($state); diff --git a/atrium_casetracker/atrium_casetracker.views.inc b/atrium_casetracker/atrium_casetracker.views.inc index b1f7e7c..73e35b1 100644 --- a/atrium_casetracker/atrium_casetracker.views.inc +++ b/atrium_casetracker/atrium_casetracker.views.inc @@ -15,6 +15,9 @@ function atrium_casetracker_views_handlers() { 'atrium_casetracker_handler_filter_status_closed' => array( 'parent' => 'views_handler_filter_boolean_operator', ), + 'atrium_casetracker_handler_sort_status_closed' => array( + 'parent' => 'views_handler_sort', + ), ), ); } @@ -34,6 +37,17 @@ function atrium_casetracker_views_data_alter(&$data) { ), ); } + if (isset($data['casetracker_case_states'])) { + $data['casetracker_case_states']['case_status_closed'] = array( + 'title' => t('Closed Case Status'), + 'real field' => 'csid', + 'sort' => array( + 'field' => 'csid', + 'handler' => 'atrium_casetracker_handler_sort_status_closed', + 'help' => t('Sort by Case Active/Inactive status.'), + ), + ); + } if (isset($data['casetracker_case']['case_priority_id']['field']['handler'])) { $data['casetracker_case']['case_priority_id']['field']['handler'] = 'atrium_casetracker_handler_field_priority_name'; } diff --git a/atrium_casetracker/includes/atrium_casetracker_handler_sort_case_status_closed.inc b/atrium_casetracker/includes/atrium_casetracker_handler_sort_case_status_closed.inc new file mode 100644 index 0000000..7813ce5 --- /dev/null +++ b/atrium_casetracker/includes/atrium_casetracker_handler_sort_case_status_closed.inc @@ -0,0 +1,25 @@ +table}.{$this->real_field} REGEXP '$pattern'"; + break; + } + if (!empty($formula)) { + $this->ensure_my_table(); + $this->query->add_orderby(NULL, $formula, $this->options['order'], $this->query->base_field . '_' . $this->field); + } + } +}