View source
<?php
namespace Drupal\linkimagefield\Plugin\Field\FieldWidget;
use Drupal\image\Plugin\Field\FieldWidget\ImageWidget;
use Drupal\Core\Field\FieldItemListInterface;
class LinkImageFieldWidget extends ImageWidget {
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, array &$form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$element['#process'][] = array(
get_class($this),
'process',
);
$settings = $this
->getFieldSettings();
$element['#url'] = $settings['url_settings']['url'];
$element['#rel_field'] = $settings['url_settings']['rel_field'];
$element['#class_field'] = $settings['url_settings']['class_field'];
$element['#custom_target'] = $settings['url_settings']['custom_target'];
$element['#target'] = $settings['url_settings']['target'];
$element['#longdesc_field'] = $settings['longdesc_field'];
return $element;
}
public static function process($element, &$form_state, $form) {
$element = parent::process($element, $form_state, $form);
$item = $element['#value'];
$item['fids'] = $element['fids']['#value'];
$element['url'] = array(
'#title' => t('Link URL'),
'#type' => 'textfield',
'#default_value' => isset($item['url']) ? $item['url'] : $element['#url'],
'#description' => t('This URL will be loaded when the image is clicked'),
'#weight' => -4,
'#access' => (bool) $item['fids'],
);
$element['rel'] = array(
'#title' => t('Link Rel'),
'#type' => 'textfield',
'#default_value' => isset($item['rel']) ? $item['rel'] : '',
'#description' => t('Add rel attributes for bots, lightbox galleries, etc...'),
'#maxlength' => \Drupal::config('linkimagefield.basic')
->get('image_longdesc_length'),
'#weight' => -4,
'#access' => (bool) $item['fids'] && $element['#rel_field'],
);
$element['class'] = array(
'#title' => t('Link Class'),
'#type' => 'textfield',
'#default_value' => isset($item['class']) ? $item['class'] : '',
'#description' => t('Add classes for theming, colorboxes, etc...'),
'#maxlength' => \Drupal::config('linkimagefield.basic')
->get('image_longdesc_length'),
'#weight' => -4,
'#access' => (bool) $item['fids'] && $element['#class_field'],
);
$custom_target = $element['#custom_target'];
$options = array(
'default' => t('Use Default') . ' (' . $element['#target'] . ')',
) + _linkimagefield_widget_url_target_options();
$element['target'] = array(
'#title' => t('Link Target'),
'#type' => $custom_target ? 'select' : 'value',
'#options' => $custom_target ? $options : NULL,
'#default_value' => $custom_target && isset($item['target']) ? $item['target'] : $element['#target'],
'#description' => t('Window/Frame Target for the URL'),
'#weight' => -4,
'#access' => (bool) $item['fids'] && $custom_target,
);
$element['longdesc'] = array(
'#title' => t('Image Longdesc'),
'#type' => 'textfield',
'#default_value' => isset($item['longdesc']) ? $item['longdesc'] : '',
'#description' => t('The longdesc is used to provide a link to a long description of the image.'),
'#maxlength' => \Drupal::config('linkimagefield.basic')
->get('image_longdesc_length'),
'#weight' => -1,
'#access' => (bool) $item['fids'] && $element['#longdesc_field'],
);
return $element;
}
}