You are here

public function OpmlFields::buildOptionsForm in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/row/OpmlFields.php \Drupal\views\Plugin\views\row\OpmlFields::buildOptionsForm()
  2. 9 core/modules/views/src/Plugin/views/row/OpmlFields.php \Drupal\views\Plugin\views\row\OpmlFields::buildOptionsForm()

File

core/modules/views/src/Plugin/views/row/OpmlFields.php, line 46

Class

OpmlFields
Renders an OPML item based on fields.

Namespace

Drupal\views\Plugin\views\row

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  parent::buildOptionsForm($form, $form_state);
  $initial_labels = [
    '' => $this
      ->t('- None -'),
  ];
  $view_fields_labels = $this->displayHandler
    ->getFieldLabels();
  $view_fields_labels = array_merge($initial_labels, $view_fields_labels);
  $types = [
    'rss' => $this
      ->t('RSS'),
    'link' => $this
      ->t('Link'),
    'include' => $this
      ->t('Include'),
  ];
  $types = array_merge($initial_labels, $types);
  $form['type_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Type attribute'),
    '#description' => $this
      ->t('The type of this row.'),
    '#options' => $types,
    '#default_value' => $this->options['type_field'],
  ];
  $form['text_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Text attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML text attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['text_field'],
    '#required' => TRUE,
  ];
  $form['created_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Created attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML created attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['created_field'],
  ];
  $form['description_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Description attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML description attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['description_field'],
    '#states' => [
      'visible' => [
        ':input[name="row_options[type_field]"]' => [
          'value' => 'rss',
        ],
      ],
    ],
  ];
  $form['html_url_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('HTML URL attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML htmlUrl attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['html_url_field'],
    '#states' => [
      'visible' => [
        ':input[name="row_options[type_field]"]' => [
          'value' => 'rss',
        ],
      ],
    ],
  ];
  $form['language_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Language attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML language attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['language_field'],
    '#states' => [
      'visible' => [
        ':input[name="row_options[type_field]"]' => [
          'value' => 'rss',
        ],
      ],
    ],
  ];
  $form['xml_url_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('XML URL attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML XML URL attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['xml_url_field'],
    '#states' => [
      'visible' => [
        ':input[name="row_options[type_field]"]' => [
          'value' => 'rss',
        ],
      ],
    ],
  ];
  $form['url_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('URL attribute'),
    '#description' => $this
      ->t('The field that is going to be used as the OPML URL attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['url_field'],
    '#states' => [
      'visible' => [
        ':input[name="row_options[type_field]"]' => [
          [
            'value' => 'link',
          ],
          [
            'value' => 'include',
          ],
        ],
      ],
    ],
  ];
}