From 497f4b9eab367480f45aa4ab8b9cc197aa0e0c3f Mon Sep 17 00:00:00 2001 From: bdone Date: Sat, 25 Feb 2012 15:09:15 -0500 Subject: [PATCH] Issue #1110444 by bdone: Adds boolean status field and views integration, including custom field/filter handlers. --- views/webform.views.inc | 39 +++++++++++++++++++++++ views/webform_handler_field_webform_status.inc | 38 ++++++++++++++++++++++ views/webform_handler_filter_webform_status.inc | 15 +++++++++ 3 files changed, 92 insertions(+), 0 deletions(-) create mode 100644 views/webform_handler_field_webform_status.inc create mode 100644 views/webform_handler_filter_webform_status.inc diff --git a/views/webform.views.inc b/views/webform.views.inc index eebcb8d..b2bb1af 100644 --- a/views/webform.views.inc +++ b/views/webform.views.inc @@ -6,6 +6,37 @@ */ function webform_views_data() { + + /** + * Webform table definitions. + */ + $data['webform']['table']['group'] = t('Webform'); + $data['webform']['table']['join'] = array( + 'node' => array( + 'left_field' => 'nid', + 'field' => 'nid', + 'type' => 'INNER', + ), + ); + + // status + $data['webform']['status'] = array( + 'title' => t('Status'), + 'help' => t('The open or closed status of a webform.'), + 'field' => array( + 'handler' => 'webform_handler_field_webform_status', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'label' => t('Status'), + 'handler' => 'webform_handler_filter_webform_status', + 'type' => 'open-closed', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + ); + /** * Submissions table definitions. */ @@ -260,6 +291,14 @@ function webform_views_handlers() { 'parent' => 'views_handler_filter_in_operator', 'file' => 'webform_handler_filter_is_draft.inc', ), + 'webform_handler_field_webform_status' => array( + 'parent' => 'views_handler_field_boolean', + 'file' => 'webform_handler_field_webform_status.inc', + ), + 'webform_handler_filter_webform_status' => array( + 'parent' => 'views_handler_filter_boolean_operator', + 'file' => 'webform_handler_filter_webform_status.inc', + ), ), ); } \ No newline at end of file diff --git a/views/webform_handler_field_webform_status.inc b/views/webform_handler_field_webform_status.inc new file mode 100644 index 0000000..16255cb --- /dev/null +++ b/views/webform_handler_field_webform_status.inc @@ -0,0 +1,38 @@ +{$this->field_alias}; + if (!empty($this->options['not'])) { + $value = !$value; + } + switch ($this->options['type']) { + case 'yes-no': + default: + return $value ? t('Yes') : t('No'); + case 'true-false': + return $value ? t('True') : t('False'); + case 'on-off': + return $value ? t('On') : t('Off'); + case 'open-closed': + return $value ? t('Open') : t('Closed'); + } + } +} + diff --git a/views/webform_handler_filter_webform_status.inc b/views/webform_handler_filter_webform_status.inc new file mode 100644 index 0000000..429fc24 --- /dev/null +++ b/views/webform_handler_filter_webform_status.inc @@ -0,0 +1,15 @@ +value_options)) { + $this->value_title = t('Status'); + $options = array('1' => t('Open'), '0' => t('Closed')); + $this->value_options = $options; + } + } +} -- 1.7.5.4