Repository URL to install this package:
|
Version:
1.3.12 ▾
|
<?php
namespace Drupal\dds_content\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\link\Plugin\Field\FieldWidget\LinkWidget;
/**
* Plugin implementation of the 'link' widget.
*
* @FieldWidget(
* id = "dds_link_with_target",
* label = @Translation("DDS Link with target"),
* field_types = {
* "dds_link_with_target"
* }
* )
*/
class DDSLinkWithTargetWidget extends LinkWidget {
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
$settings = parent::defaultSettings();
$settings['target_blank'] = 0;
return $settings;
}
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$widget = parent::formElement($items, $delta, $element, $form, $form_state);
$value = $items[$delta]->getValue();
$widget['uri']['#type'] = 'dds_content_entity_autocomplete';
$widget['uri']['#target_type'] = 'multiple';
$widget['uri']['#target_types'] = ['node', 'media'];
$uri = isset($value['uri']) ? $value['uri'] : NULL;
if($uri) {
$uri = str_replace('internal:', '', $uri);
}
$widget['uri']['#default_value'] = $uri;
$widget['target_blank'] = [
'#type' => 'checkbox',
'#default_value' => !empty($value['target_blank']) ? $value['target_blank'] : 0,
'#title' => $this->t('Open in new window'),
];
return $widget;
}
}