danielebarchiesi@4: FALSE); danielebarchiesi@4: // Field element_type and classes cannot be defined in the options danielebarchiesi@4: // definition because the field handlers are not attached when the option danielebarchiesi@4: // defaults are set up in the object's init() method. danielebarchiesi@4: $options['semantic_html'] = array('default' => array()); danielebarchiesi@4: return $options; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Provide a form for setting options. danielebarchiesi@4: */ danielebarchiesi@4: function options_form(&$form, &$form_state) { danielebarchiesi@4: parent::options_form($form, $form_state); danielebarchiesi@4: $form['semantic_html'] = array( danielebarchiesi@4: '#tree' => TRUE, danielebarchiesi@4: ); danielebarchiesi@4: foreach ($this->display->handler->get_handlers('field') as $field => $handler) { danielebarchiesi@4: if (!$handler->options['exclude']) { danielebarchiesi@4: $default_value = (isset($this->options['semantic_html'][$field]) && is_array($this->options['semantic_html'][$field])) ? $this->options['semantic_html'][$field] : array( danielebarchiesi@4: 'element_type' => 'div', danielebarchiesi@4: 'class' => '', danielebarchiesi@4: 'label_element_type' => 'label', danielebarchiesi@4: 'label_class' => '' danielebarchiesi@4: ); danielebarchiesi@4: $form['semantic_html'][$field] = array( danielebarchiesi@4: '#title' => $handler->label() ? $handler->label() : $handler->ui_name(), danielebarchiesi@4: '#type' => 'fieldset', danielebarchiesi@4: '#attributes' => array( danielebarchiesi@4: 'class' => 'clear-block', danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: $form['semantic_html'][$field]['element_type'] = array( danielebarchiesi@4: '#prefix' => '
', danielebarchiesi@4: '#suffix' => '
', danielebarchiesi@4: '#title' => 'Element', danielebarchiesi@4: '#type' => 'textfield', danielebarchiesi@4: '#size' => '10', danielebarchiesi@4: '#default_value' => $default_value['element_type'], danielebarchiesi@4: ); danielebarchiesi@4: $form['semantic_html'][$field]['class'] = array( danielebarchiesi@4: '#prefix' => '
', danielebarchiesi@4: '#suffix' => '
', danielebarchiesi@4: '#title' => 'Class attribute', danielebarchiesi@4: '#type' => 'textfield', danielebarchiesi@4: '#size' => '30', danielebarchiesi@4: '#default_value' => $default_value['class'], danielebarchiesi@4: ); danielebarchiesi@4: if ($handler->label()) { danielebarchiesi@4: $form['semantic_html'][$field]['label_element_type'] = array( danielebarchiesi@4: '#prefix' => '
', danielebarchiesi@4: '#suffix' => '
', danielebarchiesi@4: '#title' => 'Label element', danielebarchiesi@4: '#type' => 'textfield', danielebarchiesi@4: '#size' => '10', danielebarchiesi@4: '#default_value' => $default_value['label_element_type'], danielebarchiesi@4: ); danielebarchiesi@4: $form['semantic_html'][$field]['label_class'] = array( danielebarchiesi@4: '#prefix' => '
', danielebarchiesi@4: '#suffix' => '
', danielebarchiesi@4: '#title' => 'Label class attribute', danielebarchiesi@4: '#type' => 'textfield', danielebarchiesi@4: '#size' => '30', danielebarchiesi@4: '#default_value' => $default_value['label_class'], danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: $form['skip_blank'] = array( danielebarchiesi@4: '#type' => 'checkbox', danielebarchiesi@4: '#default_value' => $this->options['skip_blank'], danielebarchiesi@4: '#title' => t('Skip empty fields'), danielebarchiesi@4: '#description' => t('Do not output anything when a field has no content. This has the same outcome as enabling the Hide if empty option for every field in this display.'), danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Validate the options form. danielebarchiesi@4: */ danielebarchiesi@4: function options_validate(&$form, &$form_state) { danielebarchiesi@4: parent::options_validate($form, $form_state); danielebarchiesi@4: // TODO: validate that the elements and classes are valid HTML. This is not danielebarchiesi@4: // a substitute for output filtering. danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Validate the view. danielebarchiesi@4: */ danielebarchiesi@4: function validate() { danielebarchiesi@4: $errors = parent::validate(); danielebarchiesi@4: danielebarchiesi@4: $display_handler = $this->display->handler; danielebarchiesi@4: danielebarchiesi@4: if (!$display_handler->is_defaulted('fields') && $display_handler->is_defaulted('row_plugin')) { danielebarchiesi@4: $errors[] = t('Display "@display" overrides fields and must also override the row style plugin.', array('@display' => $this->display->display_title)); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: return $errors; danielebarchiesi@4: } danielebarchiesi@4: }