annotate sites/all/modules/semanticviews/semanticviews_plugin_row_fields.inc @ 11:b0ee71395280

deleted .DS_Store files
author danieleb <danielebarchiesi@me.com>
date Mon, 28 Oct 2013 16:12:13 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2 /**
danielebarchiesi@4 3 * @file
danielebarchiesi@4 4 * Contains the semantic row style plugin.
danielebarchiesi@4 5 */
danielebarchiesi@4 6
danielebarchiesi@4 7 /**
danielebarchiesi@4 8 * The semantic 'fields' row plugin
danielebarchiesi@4 9 *
danielebarchiesi@4 10 * This displays fields one after another, giving options for HTML element and
danielebarchiesi@4 11 * class.
danielebarchiesi@4 12 *
danielebarchiesi@4 13 * @ingroup views_row_plugins
danielebarchiesi@4 14 */
danielebarchiesi@4 15 class semanticviews_plugin_row_fields extends views_plugin_row {
danielebarchiesi@4 16 function option_definition() {
danielebarchiesi@4 17 $options = parent::option_definition();
danielebarchiesi@4 18 $options['skip_blank'] = array('default' => FALSE);
danielebarchiesi@4 19 // Field element_type and classes cannot be defined in the options
danielebarchiesi@4 20 // definition because the field handlers are not attached when the option
danielebarchiesi@4 21 // defaults are set up in the object's init() method.
danielebarchiesi@4 22 $options['semantic_html'] = array('default' => array());
danielebarchiesi@4 23 return $options;
danielebarchiesi@4 24 }
danielebarchiesi@4 25
danielebarchiesi@4 26 /**
danielebarchiesi@4 27 * Provide a form for setting options.
danielebarchiesi@4 28 */
danielebarchiesi@4 29 function options_form(&$form, &$form_state) {
danielebarchiesi@4 30 parent::options_form($form, $form_state);
danielebarchiesi@4 31 $form['semantic_html'] = array(
danielebarchiesi@4 32 '#tree' => TRUE,
danielebarchiesi@4 33 );
danielebarchiesi@4 34 foreach ($this->display->handler->get_handlers('field') as $field => $handler) {
danielebarchiesi@4 35 if (!$handler->options['exclude']) {
danielebarchiesi@4 36 $default_value = (isset($this->options['semantic_html'][$field]) && is_array($this->options['semantic_html'][$field])) ? $this->options['semantic_html'][$field] : array(
danielebarchiesi@4 37 'element_type' => 'div',
danielebarchiesi@4 38 'class' => '',
danielebarchiesi@4 39 'label_element_type' => 'label',
danielebarchiesi@4 40 'label_class' => ''
danielebarchiesi@4 41 );
danielebarchiesi@4 42 $form['semantic_html'][$field] = array(
danielebarchiesi@4 43 '#title' => $handler->label() ? $handler->label() : $handler->ui_name(),
danielebarchiesi@4 44 '#type' => 'fieldset',
danielebarchiesi@4 45 '#attributes' => array(
danielebarchiesi@4 46 'class' => 'clear-block',
danielebarchiesi@4 47 ),
danielebarchiesi@4 48 );
danielebarchiesi@4 49 $form['semantic_html'][$field]['element_type'] = array(
danielebarchiesi@4 50 '#prefix' => '<div class="views-left-30">',
danielebarchiesi@4 51 '#suffix' => '</div>',
danielebarchiesi@4 52 '#title' => 'Element',
danielebarchiesi@4 53 '#type' => 'textfield',
danielebarchiesi@4 54 '#size' => '10',
danielebarchiesi@4 55 '#default_value' => $default_value['element_type'],
danielebarchiesi@4 56 );
danielebarchiesi@4 57 $form['semantic_html'][$field]['class'] = array(
danielebarchiesi@4 58 '#prefix' => '<div class="views-right-70">',
danielebarchiesi@4 59 '#suffix' => '</div>',
danielebarchiesi@4 60 '#title' => 'Class attribute',
danielebarchiesi@4 61 '#type' => 'textfield',
danielebarchiesi@4 62 '#size' => '30',
danielebarchiesi@4 63 '#default_value' => $default_value['class'],
danielebarchiesi@4 64 );
danielebarchiesi@4 65 if ($handler->label()) {
danielebarchiesi@4 66 $form['semantic_html'][$field]['label_element_type'] = array(
danielebarchiesi@4 67 '#prefix' => '<div class="views-left-30">',
danielebarchiesi@4 68 '#suffix' => '</div>',
danielebarchiesi@4 69 '#title' => 'Label element',
danielebarchiesi@4 70 '#type' => 'textfield',
danielebarchiesi@4 71 '#size' => '10',
danielebarchiesi@4 72 '#default_value' => $default_value['label_element_type'],
danielebarchiesi@4 73 );
danielebarchiesi@4 74 $form['semantic_html'][$field]['label_class'] = array(
danielebarchiesi@4 75 '#prefix' => '<div class="views-right-70">',
danielebarchiesi@4 76 '#suffix' => '</div>',
danielebarchiesi@4 77 '#title' => 'Label class attribute',
danielebarchiesi@4 78 '#type' => 'textfield',
danielebarchiesi@4 79 '#size' => '30',
danielebarchiesi@4 80 '#default_value' => $default_value['label_class'],
danielebarchiesi@4 81 );
danielebarchiesi@4 82 }
danielebarchiesi@4 83 }
danielebarchiesi@4 84 }
danielebarchiesi@4 85 $form['skip_blank'] = array(
danielebarchiesi@4 86 '#type' => 'checkbox',
danielebarchiesi@4 87 '#default_value' => $this->options['skip_blank'],
danielebarchiesi@4 88 '#title' => t('Skip empty fields'),
danielebarchiesi@4 89 '#description' => t('Do not output anything when a field has no content. This has the same outcome as enabling the <em>Hide if empty</em> option for every field in this display.'),
danielebarchiesi@4 90 );
danielebarchiesi@4 91 }
danielebarchiesi@4 92
danielebarchiesi@4 93 /**
danielebarchiesi@4 94 * Validate the options form.
danielebarchiesi@4 95 */
danielebarchiesi@4 96 function options_validate(&$form, &$form_state) {
danielebarchiesi@4 97 parent::options_validate($form, $form_state);
danielebarchiesi@4 98 // TODO: validate that the elements and classes are valid HTML. This is not
danielebarchiesi@4 99 // a substitute for output filtering.
danielebarchiesi@4 100 }
danielebarchiesi@4 101
danielebarchiesi@4 102 /**
danielebarchiesi@4 103 * Validate the view.
danielebarchiesi@4 104 */
danielebarchiesi@4 105 function validate() {
danielebarchiesi@4 106 $errors = parent::validate();
danielebarchiesi@4 107
danielebarchiesi@4 108 $display_handler = $this->display->handler;
danielebarchiesi@4 109
danielebarchiesi@4 110 if (!$display_handler->is_defaulted('fields') && $display_handler->is_defaulted('row_plugin')) {
danielebarchiesi@4 111 $errors[] = t('Display "@display" overrides fields and must also override the row style plugin.', array('@display' => $this->display->display_title));
danielebarchiesi@4 112 }
danielebarchiesi@4 113
danielebarchiesi@4 114 return $errors;
danielebarchiesi@4 115 }
danielebarchiesi@4 116 }