You are here

function draggableviews_handler_field_draggable::options_form in DraggableViews 7.2

Default options form provides the label widget that all fields should have.

Overrides views_handler_field::options_form

File

views/draggableviews_handler_field_draggable.inc, line 38
Views field handler. Contains all relevant Draggableviews options and related logic. Implements the Views Form API.

Class

draggableviews_handler_field_draggable
@file Views field handler. Contains all relevant Draggableviews options and related logic. Implements the Views Form API.

Code

function options_form(&$form, &$form_state) {
  parent::options_form($form, $form_state);

  // Remove not needed settings options.
  $form['alter']['#access'] = FALSE;
  $form['style_settings']['#access'] = FALSE;
  $form['empty_field_behavior']['#access'] = FALSE;
  $form['draggableviews'] = array(
    '#type' => 'fieldset',
    '#title' => t('Draggable Views'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
  );
  $handler_options = array();
  $handler_forms = array();
  foreach (draggableviews_get_handlers() as $handler_id => $handler_object) {
    $handler = ctools_get_plugins('draggableviews', 'handler', $handler_id);
    $handler_options[$handler_id] = filter_xss($handler['label']);
    $handler_forms[$handler_id] = $handler_object
      ->options_form($this);
  }
  $form['draggableviews']['handler'] = array(
    '#type' => 'select',
    '#title' => t('Sort handler'),
    '#options' => $handler_options,
    '#default_value' => $this->options['draggableviews']['handler'],
  );

  // Add handler's form element as fieldset that
  // is active only if handler selected.
  foreach ($handler_forms as $handler_id => $handler_form_element) {

    // Skip empty handler's form elements.
    if (empty($handler_form_element)) {
      continue;
    }
    $form['draggableviews'][$handler_id] = array(
      '#type' => 'fieldset',
      '#title' => check_plain($form['draggableviews']['handler']['#options'][$handler_id]),
      '#collapsible' => FALSE,
      '#states' => array(
        'visible' => array(
          'select[name="options[draggableviews][handler]"]' => array(
            'value' => $handler_id,
          ),
        ),
      ),
    );
    foreach ($handler_form_element as $key => $form_element) {
      $form['draggableviews'][$handler_id][$key] = $form_element;
    }
  }
  $hierarchy_handler_options = array(
    '' => t('- None -'),
  );
  $hierarchy_handler_forms = array();
  foreach (draggableviews_get_hierarchy_handlers() as $handler_id => $handler_object) {
    $handler = ctools_get_plugins('draggableviews', 'hierarchy_handler', $handler_id);
    $hierarchy_handler_options[$handler_id] = filter_xss($handler['label']);
    $hierarchy_handler_forms[$handler_id] = $handler_object
      ->options_form($this);
  }
  $form['draggableviews']['hierarchy_handler'] = array(
    '#type' => 'select',
    '#title' => t('Hierarchy handler'),
    '#options' => $hierarchy_handler_options,
    '#default_value' => $this->options['draggableviews']['hierarchy_handler'],
  );

  // Add handler's form element as fieldset that
  // is active only if handler selected.
  foreach ($hierarchy_handler_forms as $handler_id => $hierarchy_handler_form_element) {

    // Skip empty handler's form elements.
    if (empty($hierarchy_handler_form_element)) {
      continue;
    }
    $form['draggableviews'][$handler_id] = array(
      '#type' => 'fieldset',
      '#title' => check_plain($form['draggableviews']['handler']['#options'][$handler_id]),
      '#collapsible' => FALSE,
      '#states' => array(
        'visible' => array(
          'select[name="options[draggableviews][hierarchy_handler]"]' => array(
            'value' => $handler_id,
          ),
        ),
      ),
    );
    foreach ($hierarchy_handler_form_element as $key => $form_element) {
      $form['draggableviews'][$handler_id][$key] = $form_element;
    }
  }
  $form['draggableviews']['save_button_label'] = array(
    '#type' => 'textfield',
    '#title' => t('Custom Save button label'),
    '#size' => 20,
    '#description' => t("Allow to change Save button Label."),
    '#default_value' => $this->options['draggableviews']['save_button_label'],
  );
  $form['draggableviews']['ajax'] = array(
    '#type' => 'checkbox',
    '#title' => t('Ajax'),
    '#description' => t('Use ajax in draggable form.'),
    '#default_value' => $this->options['draggableviews']['ajax'],
  );
}