funder_field-1.1.0-alpha1/src/Plugin/Field/FieldFormatter/FunderFieldDefaultFormatter.php
src/Plugin/Field/FieldFormatter/FunderFieldDefaultFormatter.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_default",
* module = "funder_field",
* label = @Translation("Default"),
* field_types = {
* "funder_field"
* }
* )
*/
class FunderFieldDefaultFormatter extends FormatterBase
{
public function viewElements(FieldItemListInterface $items, $langcode)
{
$element = [];
foreach ($items as $delta => $item) {
$values = $item->getValue();
$element[$delta] = [
'#theme' => 'funder_field_default',
"#attributes" => [
'class' => [
'funder_field'
],
],
];
$element[$delta]["#funder_name"] = $values['funder_name'];
if (!is_null($values['award'])) {
$element[$delta]['#award'] = $values['award'];
}
if (!is_null($values['award_url'])) {
$element[$delta]['#award_url'] = $values['award_url'];
}
$element[$delta]['#showAwardAsLink'] = $this->getSetting('showAwardAsLink');
}
//ksm($element);
return $element;
}
/**
* {@inheritdoc}
*/
public static function defaultSettings()
{
return array_merge(
[
'showAwardAsLink' => FALSE,
],
parent::defaultSettings());
}
/**
* {@inheritdoc}
*/
public function settingsSummary() {
$this->sanitizeSettings();
$summary = [];
if ($this->getSetting('showAwardAsLink') === FALSE) {
$summary[] = $this->t('Award Shown as Plain Text');
}
else {
$summary[] = $this->t('Award Shown as Link');
}
return $summary;
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $formState)
{
$this->sanitizeSettings();
$marker = rand();
//$elements = [];
$form['showAwardAsLink'] = [
'#title' => $this->t('Show Award as Link'),
'#type' => 'checkbox',
'#default_value' => $this->getSetting('showAwardAsLink'),
'#weight' => 1,
];
return $form;
}
protected function sanitizeSettings() {
$showAwardAsLink = $this->getSetting('showAwardAsLink');
$this->setSetting('showFunderUrl', boolval($showAwardAsLink));
}
}
