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);
}
}
