You are here

function views_plugin_argument_default_field::options_form in Views Arguments Extras 7

Provide the default form for setting options.

Overrides views_plugin_argument_default::options_form

File

./views_plugin_argument_default_field.inc, line 14

Class

views_plugin_argument_default_field

Code

function options_form(&$form, &$form_state) {
  $default_options = $this->argument->options;
  $fields = field_info_fields();
  $options = array();
  $plugins = array();
  $type_selector = array();

  // find all types that are useed and which fields use them
  $types = array();
  foreach ($fields as $key => $field) {
    $types[$field['type']][$key] = $key;
  }
  foreach ($plugins as $id => $plugin) {
    if (array_intersect($plugin['types'], array_keys($types))) {

      //build info for type select box
      foreach ($plugin['types'] as $type_name) {
        foreach ($types[$type_name] as $fid => $fname) {
          $options[$plugin['title']]["{$id}::{$fid}"] = $fname;
        }
      }
    }
  }
  module_load_include("inc", "views_arguments_extras", "views_arguments_extras.field_plugins");
  $options = views_arguments_extras_get_plugin_options();
  $form['field'] = array(
    '#title' => 'Field',
    '#type' => 'select',
    '#options' => $options,
    '#default_value' => $this->options['field'],
    '#ajax' => array(
      'callback' => 'views_plugin_argument_default_field_field_callback',
      'wrapper' => 'field-settings-wrapper',
      'method' => 'replace',
      'effect' => 'fade',
    ),
  );
  $form['settings'] = array(
    '#title' => "Settings",
    '#type' => 'fieldset',
    '#prefix' => '<div class="field-settings-wrapper">',
    '#suffix' => '</div>',
  );
  $plugins = views_plugin_argument_default_field();
  if ($this->options['field']) {
    list($p_id, $field) = explode("::", $this->options['field']);
    $plugin = $plugins[$p_id];
    $form['settings']['#title'] = "Settings for {$plugin['name']}";
    if ($form_fun = ctools_plugin_get_function($plugin, "form callback")) {
      $plugin_form = $form_fun();
      foreach ($plugin_form as $id => $form_element) {
        $form['settings'][$id] = $form_element;
        $form['settings'][$id]['#default_value'] = $this->options['settings'][$id];
      }
    }
  }
}