You are here

public function GoogleNewsFields::buildOptionsForm in Views Google News 8

Provide a form for setting options.

Overrides RowPluginBase::buildOptionsForm

File

src/Plugin/views/row/GoogleNewsFields.php, line 48

Class

GoogleNewsFields
Renders an GoogleNews item based on fields.

Namespace

Drupal\views_googlenews\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);
  $form['loc_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Location'),
    '#description' => $this
      ->t('The URL to the news (<loc>).'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['loc_field'],
    '#required' => TRUE,
  ];
  $form['news_publication_name_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Name'),
    '#description' => $this
      ->t('The name of the publication (<news:name>), defaults to the site name.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_publication_name_field'],
  ];
  $form['news_publication_language_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Language code'),
    '#description' => $this
      ->t('The language code (<news:language>). Must be a language code, will use the default language if not provided.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_publication_language_field'],
  ];
  $form['news_access_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Access'),
    '#description' => $this
      ->t('Access information (<news:access>), must be Subscription, Registration or an empty string if access is not restricted.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_access_field'],
  ];
  $form['news_genres_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Genres'),
    '#description' => $this
      ->t('The field that is going to be used as the Google News <news:genres> attribute for each row.'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_genres_field'],
  ];
  $form['news_publication_date_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Publication date'),
    '#description' => $this
      ->t('The publication date of the news (<news:publication_date>).'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_publication_date_field'],
    '#required' => TRUE,
  ];
  $form['news_title_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Title'),
    '#description' => $this
      ->t('The news title (<news:title>).'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_title_field'],
    '#required' => TRUE,
  ];
  $form['news_keywords_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Keywords'),
    '#description' => $this
      ->t('Keywords or tags for this news (Google News <news:keywords>).'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_keywords_field'],
  ];
  $form['news_stock_tickers_field'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Stock tickers'),
    '#description' => $this
      ->t('Stock ticker references (<news:stock_tickers>)'),
    '#options' => $view_fields_labels,
    '#default_value' => $this->options['news_stock_tickers_field'],
  ];
  $form['documentation'] = [
    '#type' => 'item',
    '#title' => $this
      ->t('Documentation'),
    '#markup' => $this
      ->t('See <a href="@url">the Google News Sitemap reference</a> for more information', [
      '@url' => 'https://support.google.com/news/publisher/answer/74288?hl=en#tagdefinitions',
    ]),
  ];
}