annotate sites/all/modules/views/handlers/views_handler_field_boolean.inc @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Definition of views_handler_field_boolean.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * A handler to provide proper displays for booleans.
danielebarchiesi@0 10 *
danielebarchiesi@0 11 * Allows for display of true/false, yes/no, on/off, enabled/disabled.
danielebarchiesi@0 12 *
danielebarchiesi@0 13 * Definition terms:
danielebarchiesi@0 14 * - output formats: An array where the first entry is displayed on boolean true
danielebarchiesi@0 15 * and the second is displayed on boolean false. An example for sticky is:
danielebarchiesi@0 16 * @code
danielebarchiesi@0 17 * 'output formats' => array(
danielebarchiesi@0 18 * 'sticky' => array(t('Sticky'), ''),
danielebarchiesi@0 19 * ),
danielebarchiesi@0 20 * @endcode
danielebarchiesi@0 21 *
danielebarchiesi@0 22 * @ingroup views_field_handlers
danielebarchiesi@0 23 */
danielebarchiesi@0 24 class views_handler_field_boolean extends views_handler_field {
danielebarchiesi@0 25 function option_definition() {
danielebarchiesi@0 26 $options = parent::option_definition();
danielebarchiesi@0 27 $options['type'] = array('default' => 'yes-no');
danielebarchiesi@0 28 $options['type_custom_true'] = array('default' => '', 'translatable' => TRUE);
danielebarchiesi@0 29 $options['type_custom_false'] = array('default' => '', 'translatable' => TRUE);
danielebarchiesi@0 30 $options['not'] = array('definition bool' => 'reverse');
danielebarchiesi@0 31
danielebarchiesi@0 32 return $options;
danielebarchiesi@0 33 }
danielebarchiesi@0 34
danielebarchiesi@0 35 function init(&$view, &$options) {
danielebarchiesi@0 36 parent::init($view, $options);
danielebarchiesi@0 37
danielebarchiesi@0 38 $default_formats = array(
danielebarchiesi@0 39 'yes-no' => array(t('Yes'), t('No')),
danielebarchiesi@0 40 'true-false' => array(t('True'), t('False')),
danielebarchiesi@0 41 'on-off' => array(t('On'), t('Off')),
danielebarchiesi@0 42 'enabled-disabled' => array(t('Enabled'), t('Disabled')),
danielebarchiesi@0 43 'boolean' => array(1, 0),
danielebarchiesi@0 44 'unicode-yes-no' => array('✔', '✖'),
danielebarchiesi@0 45 );
danielebarchiesi@0 46 $output_formats = isset($this->definition['output formats']) ? $this->definition['output formats'] : array();
danielebarchiesi@0 47 $custom_format = array('custom' => array(t('Custom')));
danielebarchiesi@0 48 $this->formats = array_merge($default_formats, $output_formats, $custom_format);
danielebarchiesi@0 49 }
danielebarchiesi@0 50
danielebarchiesi@0 51 function options_form(&$form, &$form_state) {
danielebarchiesi@0 52 foreach ($this->formats as $key => $item) {
danielebarchiesi@0 53 $options[$key] = implode('/', $item);
danielebarchiesi@0 54 }
danielebarchiesi@0 55
danielebarchiesi@0 56 $form['type'] = array(
danielebarchiesi@0 57 '#type' => 'select',
danielebarchiesi@0 58 '#title' => t('Output format'),
danielebarchiesi@0 59 '#options' => $options,
danielebarchiesi@0 60 '#default_value' => $this->options['type'],
danielebarchiesi@0 61 );
danielebarchiesi@0 62
danielebarchiesi@0 63 $form['type_custom_true'] = array(
danielebarchiesi@0 64 '#type' => 'textfield',
danielebarchiesi@0 65 '#title' => t('Custom output for TRUE'),
danielebarchiesi@0 66 '#default_value' => $this->options['type_custom_true'],
danielebarchiesi@0 67 '#states' => array(
danielebarchiesi@0 68 'visible' => array(
danielebarchiesi@0 69 'select[name="options[type]"]' => array('value' => 'custom'),
danielebarchiesi@0 70 ),
danielebarchiesi@0 71 ),
danielebarchiesi@0 72 );
danielebarchiesi@0 73
danielebarchiesi@0 74 $form['type_custom_false'] = array(
danielebarchiesi@0 75 '#type' => 'textfield',
danielebarchiesi@0 76 '#title' => t('Custom output for FALSE'),
danielebarchiesi@0 77 '#default_value' => $this->options['type_custom_false'],
danielebarchiesi@0 78 '#states' => array(
danielebarchiesi@0 79 'visible' => array(
danielebarchiesi@0 80 'select[name="options[type]"]' => array('value' => 'custom'),
danielebarchiesi@0 81 ),
danielebarchiesi@0 82 ),
danielebarchiesi@0 83 );
danielebarchiesi@0 84
danielebarchiesi@0 85 $form['not'] = array(
danielebarchiesi@0 86 '#type' => 'checkbox',
danielebarchiesi@0 87 '#title' => t('Reverse'),
danielebarchiesi@0 88 '#description' => t('If checked, true will be displayed as false.'),
danielebarchiesi@0 89 '#default_value' => $this->options['not'],
danielebarchiesi@0 90 );
danielebarchiesi@0 91 parent::options_form($form, $form_state);
danielebarchiesi@0 92 }
danielebarchiesi@0 93
danielebarchiesi@0 94 function render($values) {
danielebarchiesi@0 95 $value = $this->get_value($values);
danielebarchiesi@0 96 if (!empty($this->options['not'])) {
danielebarchiesi@0 97 $value = !$value;
danielebarchiesi@0 98 }
danielebarchiesi@0 99
danielebarchiesi@0 100 if ($this->options['type'] == 'custom') {
danielebarchiesi@0 101 return $value ? filter_xss_admin($this->options['type_custom_true']) : filter_xss_admin($this->options['type_custom_false']);
danielebarchiesi@0 102 }
danielebarchiesi@0 103 else if (isset($this->formats[$this->options['type']])) {
danielebarchiesi@0 104 return $value ? $this->formats[$this->options['type']][0] : $this->formats[$this->options['type']][1];
danielebarchiesi@0 105 }
danielebarchiesi@0 106 else {
danielebarchiesi@0 107 return $value ? $this->formats['yes-no'][0] : $this->formats['yes-no'][1];
danielebarchiesi@0 108 }
danielebarchiesi@0 109 }
danielebarchiesi@0 110 }