1 views_ui_base_views_wizard.php | protected ViewsUiBaseViewsWizard::alter_display_options(&$display_options, $form, $form_state) |
Alter the full array of display options before they are added to the view.
File
- core/
modules/ views_ui/ wizards/ views_ui_base_views_wizard.php, line 547 - Provides the interface and base class for Views Wizard plugins.
Class
- ViewsUiBaseViewsWizard
- A very generic Views Wizard class - can be constructed for any base table.
Code
protected function alter_display_options(&$display_options, $form, $form_state) {
// If any of the displays use jump menus, we want to add fields to the view
// that store the path that will be used in the jump menu. The fields to
// use for this are defined by the plugin.
if (isset($this->plugin['path_field'])) {
$path_field = $this->plugin['path_field'];
$path_fields_added = FALSE;
foreach ($display_options as $display_type => $options) {
if (!empty($options['style_plugin']) && $options['style_plugin'] == 'jump_menu') {
// Regardless of how many displays have jump menus, we only need to
// add a single set of path fields to the view.
if (!$path_fields_added) {
// The plugin might provide supplemental fields that it needs to
// generate the path (for example, node revisions need the node ID
// as well as the revision ID). We need to add these first so they
// are available as replacement patterns in the main path field.
$path_fields = !empty($this->plugin['path_fields_supplemental']) ? $this->plugin['path_fields_supplemental'] : array();
$path_fields[] = &$path_field;
// Generate a unique ID for each field so we don't overwrite
// existing ones.
foreach ($path_fields as &$field) {
$field['id'] = view::generate_item_id($field['id'], $display_options['default']['fields']);
$display_options['default']['fields'][$field['id']] = $field;
}
$path_fields_added = TRUE;
}
// Configure the style plugin to use the path field to generate the
// jump menu path.
$display_options[$display_type]['style_options']['path'] = $path_field['id'];
}
}
}
// If any of the displays use the table style, take sure that the fields
// always have a labels by unsetting the override.
foreach ($display_options as &$options) {
if ($options['style_plugin'] == 'table') {
foreach ($display_options['default']['fields'] as &$field) {
unset($field['label']);
}
}
}
}