function field_extractor_handler_field::options_form in Field Extractor 7
Default options form provides the label widget that all fields should have.
Overrides views_handler_field_prerender_list::options_form
File
- views/
field_extractor_handler_field.inc, line 58
Class
- field_extractor_handler_field
- Field extractor views field.
Code
function options_form(&$form, &$form_state) {
// Build a list of available fields.
$fields = array();
foreach (field_info_instances($this->settings['entity_type']) as $bundle => $instances) {
foreach ($instances as $field_name => $field_instance) {
$fields[$field_name] = $field_name;
}
}
// If no field has been selected yet, or the current one is no longer
// available, default to the first one.
if (empty($this->options['field_name']) || !isset($fields[$this->options['field_name']])) {
$field_names = array_keys($fields);
$this->options['field_name'] = reset($field_names);
}
$form['field_name'] = array(
'#type' => 'select',
'#title' => t('Field'),
'#options' => $fields,
'#default_value' => $this->options['field_name'],
'#ajax' => array(
'path' => views_ui_build_form_url($form_state),
),
'#submit' => array(
'views_ui_config_item_form_submit_temporary',
),
'#executes_submit_callback' => TRUE,
);
$selected_field = field_info_field($this->options['field_name']);
$formatters = _field_extractor_formatters($selected_field['type']);
// No recursion.
unset($formatters['field_extractor']);
// If no formatter has been selected yet, or doesn't fit the current field,
// default to the first one.
if (empty($this->options['formatter']) || !isset($formatters[$this->options['formatter']])) {
$formatter_names = array_keys($formatters);
$this->options['formatter'] = reset($formatter_names);
}
$form['formatter'] = array(
'#type' => 'select',
'#title' => t('Formatter'),
'#options' => $formatters,
'#default_value' => $this->options['formatter'],
'#ajax' => array(
'path' => views_ui_build_form_url($form_state),
),
'#submit' => array(
'views_ui_config_item_form_submit_temporary',
),
'#executes_submit_callback' => TRUE,
);
$formatter = field_info_formatter_types($this->options['formatter']);
$formatter_settings = $this->options['settings'] + field_info_formatter_settings($this->options['formatter']);
// Provide an instance array for hook_field_formatter_settings_form().
ctools_include('fields');
$instance = ctools_fields_fake_field_instance($this->options['field_name'], '_dummy', $formatter, $formatter_settings);
// Store the settings in a '_dummy' view mode.
$instance['display']['_dummy'] = array(
'type' => $this->options['formatter'],
'settings' => $formatter_settings,
);
// Get the settings form.
$settings_form = array(
'#value' => array(),
);
$function = $formatter['module'] . '_field_formatter_settings_form';
if (function_exists($function)) {
$settings_form = $function($selected_field, $instance, '_dummy', $element, $form_state);
}
$form['settings'] = $settings_form;
parent::options_form($form, $form_state);
}