Paul Pound
2 months ago
1 changed files with 52 additions and 0 deletions
@ -0,0 +1,52 @@
|
||||
<?php |
||||
|
||||
namespace Drupal\doi_field_formatter\Plugin\Field\FieldFormatter; |
||||
|
||||
use Drupal\Core\Field\FormatterBase; |
||||
use Drupal\Core\Field\FieldItemListInterface; |
||||
use Drupal\Core\Url; |
||||
use Drupal\Core\Link; |
||||
|
||||
|
||||
/** |
||||
* Plugin implementation of the 'Facet_Field_Formatter' formatter. |
||||
* |
||||
* @FieldFormatter( |
||||
* id = "orcid_text_field_formatter", |
||||
* module = "doi_field_formatter", |
||||
* label = @Translation("Orcid Field Formatter"), |
||||
* description = @Translation("Create links to ORCID resources"), |
||||
* field_types = { |
||||
* "text", |
||||
* "string" |
||||
* } |
||||
* ) |
||||
*/ |
||||
class OrcidFieldFormatter extends FormatterBase { |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function settingsSummary() { |
||||
$summary = []; |
||||
$summary[] = $this->t('Format string or text fields as as ORCID links.'); |
||||
return $summary; |
||||
} |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function viewElements(FieldItemListInterface $items, $langcode) { |
||||
$element = []; |
||||
foreach ($items as $delta => $item) { |
||||
$prefix = 'https://orcid.org/'; |
||||
// Assumes all field values are just plain text or strings values and not full orcid URLS. |
||||
$orcidUrl = $prefix . $item->value; |
||||
$imgSrc = '<img class="orcid-id " src="https://orcid.org/sites/default/files/images/orcid_24x24.png">'; |
||||
$link = Link::fromTextAndUrl($orcidUrl, Url::fromUri($orcidUrl)); |
||||
$element[$delta] = [$link->toRenderable()]; |
||||
$element[$delta][0]['#prefix'] = $imgSrc; |
||||
} |
||||
return $element; |
||||
} |
||||
} |
Loading…
Reference in new issue