You are here

function erl_layouts_field_widget_third_party_settings_form in Entity Reference with Layout 8

Implements hook_field_widget_third_party_settings_form().

Provide editable options for managing layout settings.

File

modules/erl_layouts/erl_layouts.module, line 17
Contains entity_reference_layout.module.

Code

function erl_layouts_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $field_definition, $form_mode, $form, FormStateInterface $form_state) {
  $element = [];

  // Add a 'my_setting' checkbox to the settings form for 'foo_widget' field
  // widgets.
  if ($plugin
    ->getPluginId() == 'entity_reference_layout_widget') {
    $field_name = $field_definition
      ->getName();
    $element['layout_class_mode'] = [
      '#type' => 'radios',
      '#title' => t('Method for adding class to layouts'),
      '#options' => _erl_layouts_get_mode_options(),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'layout_class_mode', key(_erl_layouts_get_mode_options())),
      '#description' => t('Select the method you want to use for adding class to layouts.'),
    ];
    $element['layout_class_force'] = [
      '#type' => 'textfield',
      '#title' => t('Layout classes'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'layout_class_force'),
      '#description' => t('Set the classes to add on each layout. Classes must be separated by a space.'),
      '#attributes' => [
        'placeholder' => 'layout layout-default',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][layout_class_mode]"]' => [
            'value' => 'force',
          ],
        ],
      ],
    ];
    $element['layout_class_select'] = [
      '#type' => 'textarea',
      '#title' => t('Define possibles classes'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'layout_class_select'),
      '#description' => _erl_layouts_select_class_description(),
      '#attributes' => [
        'placeholder' => 'layout layout--default|Default layout' . PHP_EOL . 'layout layout-reversed|Reversed layout',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][layout_class_mode]"]' => [
            'value' => 'select',
          ],
        ],
      ],
    ];
    $element['region_class_mode'] = [
      '#type' => 'radios',
      '#title' => t('Method for adding class to regions.'),
      '#options' => _erl_layouts_get_mode_options(),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'region_class_mode', key(_erl_layouts_get_mode_options())),
      '#description' => t('Select the method you want to use for adding class to regions.'),
    ];
    $element['region_class_force'] = [
      '#type' => 'textfield',
      '#title' => t('Region classes'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'region_class_force'),
      '#description' => t('Set the classes to add on each region. Classes must be separated by a space.'),
      '#attributes' => [
        'placeholder' => 'region region-default',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][region_class_mode]"]' => [
            'value' => 'force',
          ],
        ],
      ],
    ];
    $element['region_class_select'] = [
      '#type' => 'textarea',
      '#title' => t('Define possibles classes'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'region_class_select'),
      '#description' => _erl_layouts_select_class_description(),
      '#attributes' => [
        'placeholder' => 'region region--default|Default region' . PHP_EOL . 'region region-reversed|Reversed region',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][region_class_mode]"]' => [
            'value' => 'select',
          ],
        ],
      ],
    ];
    $element['layout_color_mode'] = [
      '#type' => 'radios',
      '#title' => t('Method for adding background color to layouts'),
      '#options' => _erl_layouts_get_mode_options(NULL, 'background color'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'layout_color_mode', key(_erl_layouts_get_mode_options(NULL, 'background color'))),
      '#description' => t('Select the method you want to use for adding background color to layouts.'),
    ];
    $element['layout_color_force'] = [
      '#type' => 'textfield',
      '#title' => t('Layout background color'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'layout_color_force'),
      '#description' => t('Set the background color to add on each layout.'),
      '#attributes' => [
        'placeholder' => '#fff|White',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][layout_color_mode]"]' => [
            'value' => 'force',
          ],
        ],
      ],
    ];
    $element['layout_color_select'] = [
      '#type' => 'textarea',
      '#title' => t('Define possibles background colors'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'layout_color_select'),
      '#description' => _erl_layouts_select_class_description(),
      '#attributes' => [
        'placeholder' => '#fff|White' . PHP_EOL . '#000|Black',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][layout_color_mode]"]' => [
            'value' => 'select',
          ],
        ],
      ],
    ];
    $element['region_color_mode'] = [
      '#type' => 'radios',
      '#title' => t('Method for adding background color to regions'),
      '#options' => _erl_layouts_get_mode_options(NULL, 'background color'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'region_color_mode', key(_erl_layouts_get_mode_options(NULL, 'background color'))),
      '#description' => t('Select the method you want to use for adding background color to regions.'),
    ];
    $element['region_color_force'] = [
      '#type' => 'textfield',
      '#title' => t('Region background color'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'region_color_force'),
      '#description' => t('Set the background color to add on each region.'),
      '#attributes' => [
        'placeholder' => '#fff|White',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][region_color_mode]"]' => [
            'value' => 'force',
          ],
        ],
      ],
    ];
    $element['region_color_select'] = [
      '#type' => 'textarea',
      '#title' => t('Define possibles background colors'),
      '#default_value' => $plugin
        ->getThirdPartySetting('erl_layouts', 'region_color_select'),
      '#description' => _erl_layouts_select_class_description(),
      '#attributes' => [
        'placeholder' => '#fff|White' . PHP_EOL . '#000|Black',
      ],
      '#size' => '30',
      '#states' => [
        'visible' => [
          ':input[name="fields[' . $field_name . '][settings_edit_form][third_party_settings][erl_layouts][region_color_mode]"]' => [
            'value' => 'select',
          ],
        ],
      ],
    ];
  }
  return $element;
}