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
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
00150
00151 return method_exists($this, 'render_item');
00152 }
00153 }