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: }