function ds_field_template_settings_form in Display Suite 8.2
Same name and namespace in other branches
- 8.4 ds.module \ds_field_template_settings_form()
- 8.3 ds.module \ds_field_template_settings_form()
Field template settings form.
2 calls to ds_field_template_settings_form()
- ds_field_formatter_third_party_settings_form in ./
ds.module - Implements hook_field_formatter_third_party_settings_form().
- ds_field_settings_form in includes/
field_ui.inc - Creates a form for Display Suite fields.
File
- ./
ds.module, line 723 - Display Suite core functions.
Code
function ds_field_template_settings_form(array &$form, FormStateInterface &$form_state, array $context) {
$functions = Ds::getFieldLayoutOptions();
$default_field_function = \Drupal::config('ds.settings')
->get('ft-default');
if (empty($default_field_function)) {
$default_field_function = 'default';
}
// @todo fix me - and rename 'instance' to field :)
if (is_array($context['instance'])) {
$key = $context['instance']['field_name'];
}
else {
$key = $context['instance']
->getName();
}
// Plugin settings.
$plugin_settings = $form_state
->get('plugin_settings');
$field_settings = isset($plugin_settings[$key]['ft']) ? $plugin_settings[$key]['ft'] : array();
// In case with an ajax refresh we fetch the function from a different place.
$values = $form_state
->getValues();
if (isset($values['fields'][$key]['settings_edit_form']['settings']['ft']['id'])) {
$field_function = $values['fields'][$key]['settings_edit_form']['settings']['ft']['id'];
}
elseif (isset($values['fields'][$key]['settings_edit_form']['third_party_settings']['ds']['ft']['id'])) {
$field_function = $values['fields'][$key]['settings_edit_form']['third_party_settings']['ds']['ft']['id'];
}
else {
$field_function = isset($field_settings['id']) ? $field_settings['id'] : $default_field_function;
}
if (!isset($functions[$field_function])) {
$field_function = $default_field_function;
}
$form['ft'] = array(
'#weight' => 20,
);
$form['ft']['id'] = array(
'#title' => t('Choose a Field Template'),
'#type' => 'select',
'#options' => $functions,
'#default_value' => $field_function,
'#submit' => array(
'ds_field_ui_display_overview_multistep_submit',
),
'#ajax' => array(
'callback' => 'ds_field_ui_display_overview_multistep_js',
'wrapper' => 'field-display-overview-wrapper',
),
);
// Create field layout plugin instance.
$config = isset($field_settings['settings']) ? $field_settings['settings'] : array();
$field_layout_instance = \Drupal::service('plugin.manager.ds.field.layout')
->createInstance($field_function, $config);
// Alter the form to add specific field layout settings.
$form['ft']['settings'] = array(
'#type' => 'container',
'#attributes' => array(
'class' => array(
'ft-settings',
),
),
);
$field_layout_instance
->alterForm($form['ft']['settings']);
}