• Main Page
  • Related Pages
  • Modules
  • Classes
  • Files
  • File List
  • File Members

handlers/views_handler_field_prerender_list.inc

00001 <?php
00002 
00013 class views_handler_field_prerender_list extends views_handler_field {
00022   var $items = array();
00023 
00024   function option_definition() {
00025     $options = parent::option_definition();
00026 
00027     $options['type'] = array('default' => 'separator');
00028     $options['separator'] = array('default' => ', ');
00029 
00030     return $options;
00031   }
00032 
00033   function options_form(&$form, &$form_state) {
00034     $form['type'] = array(
00035       '#type' => 'radios',
00036       '#title' => t('Display type'),
00037       '#options' => array(
00038         'ul' => t('Unordered list'),
00039         'ol' => t('Ordered list'),
00040         'separator' => t('Simple separator'),
00041       ),
00042       '#default_value' => $this->options['type'],
00043     );
00044 
00045     $form['separator'] = array(
00046       '#type' => 'textfield',
00047       '#title' => t('Separator'),
00048       '#default_value' => $this->options['separator'],
00049       '#dependency' => array('radio:options[type]' => array('separator')),
00050     );
00051     parent::options_form($form, $form_state);
00052   }
00053 
00061   function render($values) {
00062     $field = $this->get_value($values);
00063     if (!empty($this->items[$field])) {
00064       if ($this->options['type'] == 'separator') {
00065         return implode($this->sanitize_value($this->options['separator']), $this->items[$field]);
00066       }
00067       else {
00068         return theme('item_list',
00069           array(
00070             'items' => $this->items[$field],
00071             'title' => NULL,
00072             'type' => $this->options['type']
00073           ));
00074       }
00075     }
00076   }
00077 
00084   function render_items($items) {
00085     if (!empty($items)) {
00086       if ($this->options['type'] == 'separator') {
00087         return implode($this->sanitize_value($this->options['separator']), $items);
00088       }
00089       else {
00090         return theme('item_list',
00091           array(
00092             'items' => $items,
00093             'title' => NULL,
00094             'type' => $this->options['type']
00095           ));
00096       }
00097     }
00098   }
00099 
00110   function get_items($values) {
00111     // Only the parent get_value returns a single field.
00112     $field = parent::get_value($values);
00113     if (!empty($this->items[$field])) {
00114       return $this->items[$field];
00115     }
00116 
00117     return array();
00118   }
00119 
00130   function get_value($values, $field = NULL, $raw = FALSE) {
00131     if ($raw) {
00132       return parent::get_value($values, $field);
00133     }
00134     $item = $this->get_items($values);
00135     $item = (array) $item;
00136     if (isset($field) && isset($item[$field])) {
00137       return $item[$field];
00138     }
00139     return $item;
00140   }
00141 
00148   function allow_advanced_render() {
00149     // Note that the advanced render bits also use the presence of
00150     // this method to determine if it needs to render items as a list.
00151     return method_exists($this, 'render_item');
00152   }
00153 }

Generated on Sun Feb 26 2012 12:52:51 for Views by  doxygen 1.7.1