You are here

function views_plugin_ds_fields_view::options_form in Display Suite 6

Same name and namespace in other branches
  1. 6.3 views/views_plugin_ds_fields_view.inc \views_plugin_ds_fields_view::options_form()
  2. 6.2 views/views_plugin_ds_fields_view.inc \views_plugin_ds_fields_view::options_form()
  3. 7.2 views/views_plugin_ds_fields_view.inc \views_plugin_ds_fields_view::options_form()
  4. 7 views/views_plugin_ds_fields_view.inc \views_plugin_ds_fields_view::options_form()

Provide a form for setting options.

File

views/views_plugin_ds_fields_view.inc, line 18
Contains the ds views fields style plugin.

Class

views_plugin_ds_fields_view
@file Contains the ds views fields style plugin.

Code

function options_form(&$form, &$form_state) {
  if (!module_exists('ds_ui')) {
    $form['no_ui'] = array(
      '#type' => 'markup',
      '#value' => '  ' . t('The Display Suite UI module is not enabled, enable the module if you want to change this layout.'),
    );
    return;
  }
  $fields = array();
  $display_settings = array();
  foreach ($this->display->handler
    ->get_handlers('field') as $field => $handler) {
    $type = $handler->definition['handler'] == 'ds_handler_field_fieldgroup' ? DS_FIELD_TYPE_GROUP : DS_FIELD_TYPE_PREPROCESS;
    $fields[$field] = array(
      'title' => $handler
        ->label() == '' ? $handler
        ->ui_name() : $handler
        ->label(),
      'status' => DS_FIELD_STATUS_STATIC,
      'type' => $type,
    );

    // Build the display settings.
    $display_settings['views']['fields'][$field]['region'] = isset($this->options[$field]['region']) ? $this->options[$field]['region'] : 'disabled';
    $display_settings['views']['fields'][$field]['weight'] = isset($this->options[$field]['weight']) ? $this->options[$field]['weight'] : 0;
    $display_settings['views']['fields'][$field]['css-class'] = isset($this->options[$field]['css-class']) ? $this->options[$field]['css-class'] : '';
    $display_settings['views']['fields'][$field]['labelformat'] = isset($this->options[$field]['labelformat']) ? $this->options[$field]['labelformat'] : 'default';
    $display_settings['views']['fields'][$field]['parent'] = isset($this->options[$field]['parent']) ? $this->options[$field]['parent'] : '';
  }
  $form['#module'] = 'ds';
  $form['#build_mode'] = 'views';
  $form['#type_name'] = 'views_object';
  $form['#extra'] = array();
  $form['#regions'] = ds_regions();

  // Load the drag and drop form.
  module_load_include('inc', 'ds', 'includes/ds.display');
  ds_fields_display_form($form, $display_settings, $fields);

  // Add our javascript and css.
  $path = drupal_get_path('module', 'ds');
  $form['#prefix'] = '<script type="text/javascript" src="' . base_path() . $path . '/js/ds.js?d"></script>' . '<link type="text/css" rel="stylesheet" media="all" href="' . base_path() . $path . '/css/ds.css" />';

  // Special js stuff for drag and drop.
  $form['#js']['tableDrag']['fields']['ds-parent-id'][0] = array(
    'target' => 'ds-parent-id',
    'source' => 'ds-field-id',
    'group' => 'ds-parent-id',
    'subgroup' => 'ds-parent-id',
    'relationship' => 'parent',
    'action' => 'match',
    'hidden' => FALSE,
    'limit' => 1,
  );
  $form['#js']['tableDrag']['fields']['field-weight'][0] = array(
    'target' => 'field-weight',
    'source' => NULL,
    'relationship' => 'sibling',
    'action' => 'order',
    'hidden' => TRUE,
    'limit' => 0,
  );

  // We're using a different theme.
  $form['#theme'] = 'ds_display_overview_views_form';
  views_ui_standard_form_buttons($form, $form_state, 'views_ui_ds_form');
}