views_handler_area_text.inc

Definition of views_handler_area_text.

File

handlers/views_handler_area_text.inc

View source
<?php


/**
 * @file
 * Definition of views_handler_area_text.
 */

/**
 * Views area text handler.
 *
 * @ingroup views_area_handlers
 */
class views_handler_area_text extends views_handler_area {
    
    /**
     * {@inheritdoc}
     */
    public function option_definition() {
        $options = parent::option_definition();
        $options['content'] = array(
            'default' => '',
            'translatable' => TRUE,
            'format_key' => 'format',
        );
        $options['format'] = array(
            'default' => NULL,
        );
        $options['tokenize'] = array(
            'default' => FALSE,
            'bool' => TRUE,
        );
        return $options;
    }
    
    /**
     * {@inheritdoc}
     */
    public function options_form(&$form, &$form_state) {
        parent::options_form($form, $form_state);
        $form['content'] = array(
            '#type' => 'text_format',
            '#default_value' => $this->options['content'],
            '#rows' => 6,
            '#format' => isset($this->options['format']) ? $this->options['format'] : filter_default_format(),
            '#wysiwyg' => FALSE,
        );
        // @todo Refactor token handling into a base class.
        $form['tokenize'] = array(
            '#type' => 'checkbox',
            '#title' => t('Use replacement tokens from the first row'),
            '#default_value' => $this->options['tokenize'],
        );
        // Get a list of the available fields and arguments for token replacement.
        $options = array();
        foreach ($this->view->display_handler
            ->get_handlers('field') as $field => $handler) {
            $options[t('Fields')]["[{$field}]"] = $handler->ui_name();
        }
        $count = 0;
        // This lets us prepare the key as we want it printed.
        foreach ($this->view->display_handler
            ->get_handlers('argument') as $handler) {
            $options[t('Arguments')]['%' . ++$count] = t('@argument title', array(
                '@argument' => $handler->ui_name(),
            ));
            $options[t('Arguments')]['!' . $count] = t('@argument input', array(
                '@argument' => $handler->ui_name(),
            ));
        }
        if (!empty($options)) {
            $output = '<p>' . t("The following tokens are available. If you would like to have the characters '[' and ']' please use the html entity codes '%5B' or '%5D' or they will get replaced with empty space.") . '</p>';
            foreach (array_keys($options) as $type) {
                if (!empty($options[$type])) {
                    $items = array();
                    foreach ($options[$type] as $key => $value) {
                        $items[] = $key . ' == ' . check_plain($value);
                    }
                    $output .= theme('item_list', array(
                        'items' => $items,
                        'type' => $type,
                    ));
                }
            }
            $form['token_help'] = array(
                '#type' => 'fieldset',
                '#title' => t('Replacement patterns'),
                '#collapsible' => TRUE,
                '#collapsed' => TRUE,
                '#value' => $output,
                '#id' => 'edit-options-token-help',
                '#dependency' => array(
                    'edit-options-tokenize' => array(
                        1,
                    ),
                ),
                '#prefix' => '<div>',
                '#suffix' => '</div>',
            );
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function options_submit(&$form, &$form_state) {
        $form_state['values']['options']['format'] = $form_state['values']['options']['content']['format'];
        $form_state['values']['options']['content'] = $form_state['values']['options']['content']['value'];
        parent::options_submit($form, $form_state);
    }
    
    /**
     * {@inheritdoc}
     */
    public function render($empty = FALSE) {
        $format = isset($this->options['format']) ? $this->options['format'] : filter_default_format();
        if (!$empty || !empty($this->options['empty'])) {
            return $this->render_textarea($this->options['content'], $format);
        }
        return '';
    }
    
    /**
     * Render a text area, using the proper format.
     */
    public function render_textarea($value, $format) {
        if ($value) {
            if ($this->options['tokenize']) {
                $value = $this->view->style_plugin
                    ->tokenize_value($value, 0);
            }
            return check_markup($value, $format, '', FALSE);
        }
    }

}

Classes

Title Deprecated Summary
views_handler_area_text Views area text handler.