funder_field-1.1.0-alpha1/src/Plugin/Field/FieldFormatter/FunderFieldExtraFormatter.php

src/Plugin/Field/FieldFormatter/FunderFieldExtraFormatter.php
<?php

namespace Drupal\funder_field\Plugin\Field\FieldFormatter;

use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Plugin implementation of the 'Default' formatter.
 *
 * @FieldFormatter(
 *   id = "funder_field_extra",
 *   module = "funder_field",
 *   label = @Translation("Extra"),
 *   field_types = {
 *     "funder_field"
 *   }
 * )
 */
class FunderFieldExtraFormatter extends FormatterBase
{

  public function viewElements(FieldItemListInterface $items, $langcode)
  {
    $element = [];

    foreach ($items as $delta => $item) {
      $values = $item->getValue();

      $element[$delta] = [
        '#theme' => 'funder_field_extra',
        "#attributes" => [
          'class' => [
            'funder_field'
          ],
        ],
      ];

      $element[$delta]["#funder_name"] = $values['funder_name'];


      if ($this->getSetting('showFunderId')) {
        if (array_key_exists("funder_id", $values) && $values['funder_id']) {
          $element[$delta]['#funder_id'] = $values['funder_id'];
        }
      }
      if ($this->getSetting('showFunderDoi')) {
        if (array_key_exists("funder_doi", $values) && $values['funder_doi']) {
          $element[$delta]['#funder_doi'] = $values['funder_doi'];
        }
      }
      if (array_key_exists("award", $values) && $values['award']) {
        $element[$delta]['#award'] = $values['award'];
      }
      if (array_key_exists("award_url", $values) && $values['award_url']) {
        $element[$delta]['#award_url'] = $values['award_url'];
      }
      if ($this->getSetting('showFunderUrl')) {
        if (array_key_exists("funder_url", $values) && $values['funder_url']) {
          $element[$delta]['#funder_url'] = $values['funder_url'];
        }
      }
      //Get display configs
      $element[$delta]['#showFunderAsLink'] = $this->getSetting('showFunderAsLink');
      $element[$delta]['#showAwardAsLink'] = $this->getSetting('showAwardAsLink');
    }

    return $element;
  }


  /**
   * {@inheritdoc}
   */
  public static function defaultSettings()
  {
    return array_merge(
      [
        'showFunderUrl' => FALSE,
        'showFunderId' => FALSE,
        'showFunderDoi' => FALSE,
        'showAwardAsLink' => FALSE,
        'showFunderAsLink' => FALSE,
      ],
      parent::defaultSettings());
  }

  /**
   * {@inheritdoc}
   */
  public function settingsSummary() {
    $this->sanitizeSettings();

    $summary = [];
    if ($this->getSetting('showFunderAsLink') === FALSE) {
      $summary[] = $this->t('Show Funder as Plain Text');
    }
    else {
      $summary[] = $this->t('Show Funder as Link');
    }
    if ($this->getSetting('showAwardAsLink') === FALSE) {
      $summary[] = $this->t('Show Award as Plain Text');
    }
    else {
      $summary[] = $this->t('Show Award as Link');
    }
    if ($this->getSetting('showFunderUrl') === FALSE) {
      $summary[] = $this->t('Funder URL field: hidden');
    }
    else {
      $summary[] = $this->t('Funder URL field: shown');
    }
    if ($this->getSetting('showFunderId') === FALSE) {
      $summary[] = $this->t('Funder ID field: hidden');
    }
    else {
      $summary[] = $this->t('Funder ID field: shown');
    }
    if ($this->getSetting('showFunderDoi') === FALSE) {
      $summary[] = $this->t('Funder DOI field: hidden');
    }
    else {
      $summary[] = $this->t('Funder DOI field: shown');
    }
    return $summary;
  }

  /**
   * {@inheritdoc}
   */
  public function settingsForm(array $form, FormStateInterface $formState) {
    $this->sanitizeSettings();

    $marker = rand();
    //$elements = [];
    $form['showFunderAsLink'] = [
      '#title'         => $this->t('Show funder as link'),
      '#type'          => 'checkbox',
      '#default_value' => $this->getSetting('showFunderAsLink'),
      '#weight'        => 1,
      ];

    $form['showAwardAsLink'] = [
      '#title'         => $this->t('Show award as link'),
      '#type'          => 'checkbox',
      '#default_value' => $this->getSetting('showAwardAsLink'),
      '#weight'        => 1,
    ];

    $form['showFunderUrl'] = [
      '#title'         => $this->t('Show funder url'),
      '#type'          => 'checkbox',
      '#default_value' => $this->getSetting('showFunderUrl'),
      '#weight'        => 1,
    ];

    $form['showFunderId'] = [
      '#title'         => $this->t('Show funder id'),
      '#type'          => 'checkbox',
      '#default_value' => $this->getSetting('showFunderId'),
      '#weight'        => 1,
    ];

    $form['showFunderDoi'] = [
      '#title'         => $this->t('Show funder doi'),
      '#type'          => 'checkbox',
      '#default_value' => $this->getSetting('showFunderDoi'),
      '#weight'        => 1,
    ];
    return $form;
  }

  protected function sanitizeSettings() {
    $showFunderAsLink       = $this->getSetting('showFunderAsLink');
    $showFunderAsLink       = boolval($showFunderAsLink);
    $this->setSetting('showFunderAsLink', $showFunderAsLink);

    $showAwardAsLink       = $this->getSetting('showAwardAsLink');
    $showAwardAsLink       = boolval($showAwardAsLink);
    $this->setSetting('showAwardAsLink', $showAwardAsLink);

    $showFunderUrl       = $this->getSetting('showFunderUrl');
    $showFunderUrl       = boolval($showFunderUrl);
    $this->setSetting('showFunderUrl', $showFunderUrl);

    $showFunderId       = $this->getSetting('showFunderId');
    $showFunderId      = boolval($showFunderId);
    $this->setSetting('showFunderId', $showFunderId);

    $showFunderDoi       = $this->getSetting('showFunderDoi');
    $showFunderDoi       = boolval($showFunderDoi);
    $this->setSetting('showFunderDoi', $showFunderDoi);
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc