You are here

public function BynderFormatter::settingsForm in Bynder 4.0.x

Same name and namespace in other branches
  1. 8.3 src/Plugin/Field/FieldFormatter/BynderFormatter.php \Drupal\bynder\Plugin\Field\FieldFormatter\BynderFormatter::settingsForm()
  2. 8 src/Plugin/Field/FieldFormatter/BynderFormatter.php \Drupal\bynder\Plugin\Field\FieldFormatter\BynderFormatter::settingsForm()
  3. 8.2 src/Plugin/Field/FieldFormatter/BynderFormatter.php \Drupal\bynder\Plugin\Field\FieldFormatter\BynderFormatter::settingsForm()

Returns a form to configure settings for the formatter.

Invoked from \Drupal\field_ui\Form\EntityDisplayFormBase to allow administrators to configure the formatter. The field_ui module takes care of handling submitted form values.

Parameters

array $form: The form where the settings form is being included in.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form elements for the formatter settings.

Overrides FormatterBase::settingsForm

File

src/Plugin/Field/FieldFormatter/BynderFormatter.php, line 58

Class

BynderFormatter
Plugin implementation of the 'Bynder' formatter.

Namespace

Drupal\bynder\Plugin\Field\FieldFormatter

Code

public function settingsForm(array $form, FormStateInterface $form_state) {
  $elements = parent::settingsForm($form, $form_state);
  try {
    $derivatives = array_merge([
      'mini',
      'webimage',
      'thul',
    ], array_map(function ($item) {
      return $item['prefix'];
    }, $this->bynder
      ->getDerivatives()));
  } catch (ConnectException $e) {
    $derivatives = [];
  }
  $elements['thumbnail'] = [
    '#type' => 'select',
    '#options' => array_combine($derivatives, $derivatives),
    '#title' => $this
      ->t('Derivative'),
    '#description' => $this
      ->t('Select the name of the derivative to be used to display the image. Besides custom derivatives that you created in Bynder there are also default thumbnail sizes available that can be used. Go to @form and reload derivatives.', [
      '@form' => Link::createFromRoute($this
        ->t('Bynder configuration form'), 'bynder.configuration_form')
        ->toString(),
    ]),
    '#default_value' => $this
      ->getSetting('thumbnail'),
    '#attributes' => [
      'class' => [
        'bynder-derivative',
      ],
    ],
  ];
  $field_candidates = $this
    ->getAttributesFieldsCandidates();
  $elements['alt_field'] = [
    '#type' => 'select',
    '#options' => $field_candidates,
    '#title' => $this
      ->t('Alt attribute field'),
    '#description' => $this
      ->t('Select the name of the field that should be used for the "alt" attribute of the image.'),
    '#default_value' => $this
      ->getSetting('alt_field'),
    '#empty_value' => '',
  ];
  $elements['title_field'] = [
    '#type' => 'select',
    '#options' => $field_candidates,
    '#title' => $this
      ->t('Title attribute field'),
    '#description' => $this
      ->t('Select the name of the field that should be used for the "title" attribute of the image.'),
    '#default_value' => $this
      ->getSetting('title_field'),
    '#empty_value' => '',
  ];
  $dat_documentation = 'https://support.bynder.com/hc/en-us/articles/360018559260-Dynamic-Asset-Transformations-DAT-';
  $elements['dat_query'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('DAT query field'),
    '#description' => $this
      ->t('Attributes that should be applied to the images. See  <a href=":dat_help">here</a> for explanation on possible values. Should start right after the "?", e.g. "io=transform:fill,width:100,height:200" If the following Responsive image fields are filled, this field defines the fallback image if the responsive settings are broken.', array(
      ':dat_help' => $dat_documentation,
    )),
    '#default_value' => $this
      ->getSetting('dat_query'),
    '#states' => [
      'visible' => [
        ':input.bynder-derivative' => [
          'value' => 'DAT',
        ],
      ],
      'required' => [
        ':input.bynder-derivative' => [
          'value' => 'DAT',
        ],
      ],
    ],
  ];
  $elements['responsive_sizes'] = [
    '#type' => 'textarea',
    '#title' => $this
      ->t('Sizes for responsive images'),
    '#description' => $this
      ->t('With this and the next field filled, a set of responsive images is generated. String that will be fed in the "sizes" attribute of the img object.'),
    '#default_value' => $this
      ->getSetting('responsive_sizes'),
    '#states' => [
      'visible' => [
        ':input.bynder-derivative' => [
          'value' => 'DAT',
        ],
      ],
    ],
  ];
  $elements['dat_query_responsive'] = [
    '#type' => 'textarea',
    '#title' => $this
      ->t('The set of responsive images (srcset)'),
    '#description' => $this
      ->t('The different images to be used in a responsive setting. It should have the form: "io=transform:fill,width:100,height:200 100w, io=transform:fill,width:200,height:400 200w, ...", with the "io=..." following <a href=":dat_help">these</a> guidelines, and the second argument being the width of the image. Make sure to separate each setting with ", ".', array(
      ':dat_help' => $dat_documentation,
    )),
    '#default_value' => $this
      ->getSetting('dat_query_responsive'),
    '#states' => [
      'visible' => [
        ':input.bynder-derivative' => [
          'value' => 'DAT',
        ],
      ],
    ],
  ];
  return $elements;
}