Provide a form for selecting the default argument when the default action is set to provide default argument.
function default_argument_form(&$form, &$form_state) {
$plugins = drupal_container()
->get('plugin.manager.views.argument_default')
->getDefinitions();
$options = array();
$form['default_argument_skip_url'] = array(
'#type' => 'checkbox',
'#title' => t('Skip default argument for view URL'),
'#default_value' => $this->options['default_argument_skip_url'],
'#description' => t('Select whether to include this default argument when constructing the URL for this view. Skipping default arguments is useful e.g. in the case of feeds.'),
);
$form['default_argument_type'] = array(
'#prefix' => '<div id="edit-options-default-argument-type-wrapper">',
'#suffix' => '</div>',
'#type' => 'select',
'#id' => 'edit-options-default-argument-type',
'#title' => t('Type'),
'#default_value' => $this->options['default_argument_type'],
'#states' => array(
'visible' => array(
':input[name="options[default_action]"]' => array(
'value' => 'default',
),
),
),
// Views custom key, moves this element to the appropriate container
// under the radio button.
'#argument_option' => 'default',
);
foreach ($plugins as $id => $info) {
if (!empty($info['no_ui'])) {
continue;
}
$plugin = $this
->get_plugin('argument_default', $id);
if ($plugin) {
if ($plugin
->access() || $this->options['default_argument_type'] == $id) {
$form['argument_default']['#argument_option'] = 'default';
$form['argument_default'][$id] = array(
'#prefix' => '<div id="edit-options-argument-default-options-' . $id . '-wrapper">',
'#suffix' => '</div>',
'#id' => 'edit-options-argument-default-options-' . $id,
'#type' => 'item',
// Even if the plugin has no options add the key to the form_state.
'#input' => TRUE,
'#states' => array(
'visible' => array(
':input[name="options[default_action]"]' => array(
'value' => 'default',
),
':input[name="options[default_argument_type]"]' => array(
'value' => $id,
),
),
),
);
$options[$id] = $info['title'];
$plugin
->buildOptionsForm($form['argument_default'][$id], $form_state);
}
}
}
asort($options);
$form['default_argument_type']['#options'] = $options;
}