danielebarchiesi@0: array( danielebarchiesi@0: * 'sticky' => array(t('Sticky'), ''), danielebarchiesi@0: * ), danielebarchiesi@0: * @endcode danielebarchiesi@0: * danielebarchiesi@0: * @ingroup views_field_handlers danielebarchiesi@0: */ danielebarchiesi@0: class views_handler_field_boolean extends views_handler_field { danielebarchiesi@0: function option_definition() { danielebarchiesi@0: $options = parent::option_definition(); danielebarchiesi@0: $options['type'] = array('default' => 'yes-no'); danielebarchiesi@0: $options['type_custom_true'] = array('default' => '', 'translatable' => TRUE); danielebarchiesi@0: $options['type_custom_false'] = array('default' => '', 'translatable' => TRUE); danielebarchiesi@0: $options['not'] = array('definition bool' => 'reverse'); danielebarchiesi@0: danielebarchiesi@0: return $options; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: function init(&$view, &$options) { danielebarchiesi@0: parent::init($view, $options); danielebarchiesi@0: danielebarchiesi@0: $default_formats = array( danielebarchiesi@0: 'yes-no' => array(t('Yes'), t('No')), danielebarchiesi@0: 'true-false' => array(t('True'), t('False')), danielebarchiesi@0: 'on-off' => array(t('On'), t('Off')), danielebarchiesi@0: 'enabled-disabled' => array(t('Enabled'), t('Disabled')), danielebarchiesi@0: 'boolean' => array(1, 0), danielebarchiesi@0: 'unicode-yes-no' => array('✔', '✖'), danielebarchiesi@0: ); danielebarchiesi@0: $output_formats = isset($this->definition['output formats']) ? $this->definition['output formats'] : array(); danielebarchiesi@0: $custom_format = array('custom' => array(t('Custom'))); danielebarchiesi@0: $this->formats = array_merge($default_formats, $output_formats, $custom_format); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: function options_form(&$form, &$form_state) { danielebarchiesi@0: foreach ($this->formats as $key => $item) { danielebarchiesi@0: $options[$key] = implode('/', $item); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $form['type'] = array( danielebarchiesi@0: '#type' => 'select', danielebarchiesi@0: '#title' => t('Output format'), danielebarchiesi@0: '#options' => $options, danielebarchiesi@0: '#default_value' => $this->options['type'], danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: $form['type_custom_true'] = array( danielebarchiesi@0: '#type' => 'textfield', danielebarchiesi@0: '#title' => t('Custom output for TRUE'), danielebarchiesi@0: '#default_value' => $this->options['type_custom_true'], danielebarchiesi@0: '#states' => array( danielebarchiesi@0: 'visible' => array( danielebarchiesi@0: 'select[name="options[type]"]' => array('value' => 'custom'), danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: $form['type_custom_false'] = array( danielebarchiesi@0: '#type' => 'textfield', danielebarchiesi@0: '#title' => t('Custom output for FALSE'), danielebarchiesi@0: '#default_value' => $this->options['type_custom_false'], danielebarchiesi@0: '#states' => array( danielebarchiesi@0: 'visible' => array( danielebarchiesi@0: 'select[name="options[type]"]' => array('value' => 'custom'), danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: $form['not'] = array( danielebarchiesi@0: '#type' => 'checkbox', danielebarchiesi@0: '#title' => t('Reverse'), danielebarchiesi@0: '#description' => t('If checked, true will be displayed as false.'), danielebarchiesi@0: '#default_value' => $this->options['not'], danielebarchiesi@0: ); danielebarchiesi@0: parent::options_form($form, $form_state); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: function render($values) { danielebarchiesi@0: $value = $this->get_value($values); danielebarchiesi@0: if (!empty($this->options['not'])) { danielebarchiesi@0: $value = !$value; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: if ($this->options['type'] == 'custom') { danielebarchiesi@0: return $value ? filter_xss_admin($this->options['type_custom_true']) : filter_xss_admin($this->options['type_custom_false']); danielebarchiesi@0: } danielebarchiesi@0: else if (isset($this->formats[$this->options['type']])) { danielebarchiesi@0: return $value ? $this->formats[$this->options['type']][0] : $this->formats[$this->options['type']][1]; danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: return $value ? $this->formats['yes-no'][0] : $this->formats['yes-no'][1]; danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: }