From c44ef4b38a3dd1c9a9e4d31c71a73e199271f933 Mon Sep 17 00:00:00 2001 From: Grayside Date: Tue, 17 Aug 2010 16:38:38 -0700 Subject: [PATCH 1/5] Added atrium_activity handlers for update path and user. --- ...m_activity_handler_field_activity_path.inc | 41 ++++++++++ ...m_activity_handler_field_activity_user.inc | 76 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100755 atrium_activity/includes/atrium_activity_handler_field_activity_path.inc create mode 100755 atrium_activity/includes/atrium_activity_handler_field_activity_user.inc diff --git a/atrium_activity/includes/atrium_activity_handler_field_activity_path.inc b/atrium_activity/includes/atrium_activity_handler_field_activity_path.inc new file mode 100755 index 0000000..581f143 --- /dev/null +++ b/atrium_activity/includes/atrium_activity_handler_field_activity_path.inc @@ -0,0 +1,41 @@ + FALSE); + return $options; + } + + /** + * Add the time_horizon element. + */ + function options_form(&$form, $form_state) { + parent::options_form($form, $form_state); + unset($form['time_horizon']); + $form['absolute'] = array( + '#type' => 'checkbox', + '#title' => t('Use absolute link (begins with "http://")'), + '#default_value' => $this->options['absolute'], + '#description' => t('If you want to use this as in "output this field as link" in "link path", you must enable this option.'), + ); + } + + /** + * Render this field as a link to group space. + */ + function render($value) { + // Has comments + if (!empty($value->{$this->field_alias})) { + return url("node/{$value->{$this->aliases['nid']}}", array( + 'absolute' => $this->options['absolute'], + 'fragment' => "comment-{$value->{$this->field_alias}}" + )); + } + // No comments + return url("node/{$value->{$this->aliases['nid']}}", array( + 'absolute' => $this->options['absolute'], + )); + } +} \ No newline at end of file diff --git a/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc b/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc new file mode 100755 index 0000000..d3e7913 --- /dev/null +++ b/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc @@ -0,0 +1,76 @@ +options['overwrite_anonymous']) || !empty($this->options['link_to_user'])) { + $this->additional_fields['uid'] = 'uid'; + } + } + + function option_definition() { + $options = parent::option_definition(); + $options['overwrite_anonymous'] = array('default' => FALSE); + $options['anonymous_text'] = array('default' => '', 'translatable' => TRUE); + $options['link_to_user'] = array('default' => TRUE); + return $options; + } + + /** + * Add the time_horizon element. + */ + function options_form(&$form, $form_state) { + parent::options_form($form, $form_state); + unset($form['time_horizon']); + + $form['overwrite_anonymous'] = array( + '#title' => t('Overwrite the value to display for anonymous users'), + '#type' => 'checkbox', + '#default_value' => !empty($this->options['overwrite_anonymous']), + '#description' => t('If selected, you will see a field to enter the text to use for anonymous users.'), + ); + $form['anonymous_text'] = array( + '#title' => t('Text to display for anonymous users'), + '#type' => 'textfield', + '#default_value' => $this->options['anonymous_text'], + '#process' => array('views_process_dependency'), + '#dependency' => array( + 'edit-options-overwrite-anonymous' => array(1), + ), + ); + $form['link_to_user'] = array( + '#title' => t('Link this field to its user'), + '#description' => t('This will override any other link you have set.'), + '#type' => 'checkbox', + '#default_value' => $this->options['link_to_user'], + ); + } + + /** + * Render this field as a link to activity user + */ + function render($value) { + // Has comments + if (!empty($value->{$this->field_alias})) { + $account = user_load($value->{$this->aliases['comment_uid']}); + if (!empty($this->options['link_to_user'])) { + return theme('username', $account); + } + else { + return $account->name; + } + } + // No comments + $account = user_load($value->{$this->aliases['node_uid']}); + if (!empty($this->options['link_to_user'])) { + return theme('username', $account); + } + else { + return $account->name; + } + } +} \ No newline at end of file From 4114cead3e52274eb71ac1a307194cfe53a5f9d6 Mon Sep 17 00:00:00 2001 From: Grayside Date: Tue, 17 Aug 2010 16:39:10 -0700 Subject: [PATCH 2/5] Declare new atrium_activity handlers. --- atrium_activity/atrium_activity.views.inc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) mode change 100644 => 100755 atrium_activity/atrium_activity.views.inc diff --git a/atrium_activity/atrium_activity.views.inc b/atrium_activity/atrium_activity.views.inc old mode 100644 new mode 100755 index 42dd7f9..55a3aa2 --- a/atrium_activity/atrium_activity.views.inc +++ b/atrium_activity/atrium_activity.views.inc @@ -22,6 +22,12 @@ function atrium_activity_views_handlers() { 'atrium_activity_handler_field_activity_upload' => array( 'parent' => 'atrium_activity_handler_field_activity', ), + 'atrium_activity_handler_field_activity_path' => array( + 'parent' => 'atrium_activity_handler_field_activity', + ), + 'atrium_activity_handler_field_activity_user' => array( + 'parent' => 'atrium_activity_handler_field_activity', + ), ), ); } @@ -49,6 +55,18 @@ function atrium_activity_views_data() { 'help' => t("Upload for poor man's activity field."), 'field' => array('handler' => 'atrium_activity_handler_field_activity_upload'), ); + $data['comments']['atrium_activity_path'] = array( + 'real field' => 'cid', + 'title' => t('Activity path'), + 'help' => t("Path for poor man's activity field."), + 'field' => array('handler' => 'atrium_activity_handler_field_activity_path'), + ); + $data['comments']['atrium_activity_user'] = array( + 'real field' => 'cid', + 'title' => t('Activity user'), + 'help' => t("User for poor man's activity field."), + 'field' => array('handler' => 'atrium_activity__handler_field_activity_user'), + ); return $data; } From 722e426f8699fb440265a5ad1ea9050426d9f6d8 Mon Sep 17 00:00:00 2001 From: Grayside Date: Tue, 17 Aug 2010 16:52:31 -0700 Subject: [PATCH 3/5] Sanitize user name. --- .../includes/atrium_activity_handler_field_activity_user.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc b/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc index d3e7913..7a945ae 100755 --- a/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc +++ b/atrium_activity/includes/atrium_activity_handler_field_activity_user.inc @@ -61,7 +61,7 @@ class atrium_activity_handler_field_activity_user extends atrium_activity_handle return theme('username', $account); } else { - return $account->name; + return check_plain($account->name); } } // No comments @@ -70,7 +70,7 @@ class atrium_activity_handler_field_activity_user extends atrium_activity_handle return theme('username', $account); } else { - return $account->name; + return check_plain($account->name); } } } \ No newline at end of file From 32fbada5970e8d542ff44b6ea42e2eddc7b95b1f Mon Sep 17 00:00:00 2001 From: Grayside Date: Wed, 22 Sep 2010 14:49:34 -0700 Subject: [PATCH 4/5] Added hook_atrium_casetracker_inactive_states_alter() --- atrium_casetracker/atrium_casetracker.module | 1 + 1 file changed, 1 insertion(+) 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); From 19e9b87eb485793eb16daf47570bc4435748f332 Mon Sep 17 00:00:00 2001 From: Grayside Date: Tue, 14 Dec 2010 09:36:23 -0800 Subject: [PATCH 5/5] Added inactive case status sort handler. --- .../atrium_casetracker.views.inc | 14 +++++++++++ ...racker_handler_sort_case_status_closed.inc | 25 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 atrium_casetracker/includes/atrium_casetracker_handler_sort_case_status_closed.inc 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); + } + } +}