ept_slideshow-1.4.2/src/Plugin/Field/FieldWidget/EptSettingsSlideshowWidget.php
src/Plugin/Field/FieldWidget/EptSettingsSlideshowWidget.php
<?php
namespace Drupal\ept_slideshow\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\ept_core\Plugin\Field\FieldWidget\EptSettingsDefaultWidget;
/**
* Plugin implementation of the 'ept_settings_slideshow' widget.
*
* @FieldWidget(
* id = "ept_settings_slideshow",
* label = @Translation("EPT Slideshow settings"),
* field_types = {
* "ept_settings"
* }
* )
*/
class EptSettingsSlideshowWidget extends EptSettingsDefaultWidget {
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$element['ept_settings']['pass_options_to_javascript'] = [
'#type' => 'hidden',
'#value' => TRUE,
];
$element['ept_settings']['animation'] = [
'#title' => $this->t('Animation'),
'#type' => 'radios',
'#options' => [
'fade' => $this->t('Fade'),
'slide' => $this->t('Slide'),
],
'#default_value' => $items[$delta]->ept_settings['animation'] ?? 'fade',
'#description' => $this->t('Select your animation type. Carousel displaying require "Slide" option is selected.'),
];
$element['ept_settings']['direction'] = [
'#title' => $this->t('Direction'),
'#type' => 'radios',
'#options' => [
'horizontal' => $this->t('Horizontal'),
'vertical' => $this->t('Vertical'),
],
'#default_value' => $items[$delta]->ept_settings['direction'] ?? 'horizontal',
'#description' => $this->t('Select your animation type.'),
];
$element['ept_settings']['reverse'] = [
'#title' => $this->t('Reverse'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['reverse'] ?? NULL,
'#description' => $this->t('Reverse the animation direction.'),
];
$element['ept_settings']['animationLoop'] = [
'#title' => $this->t('Animation loop'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['animationLoop'] ?? 1,
'#description' => $this->t('Should the animation loop? If false, directionNav will received "disable" classes at either end.'),
];
$element['ept_settings']['smoothHeight'] = [
'#title' => $this->t('Smooth height'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['smoothHeight'] ?? NULL,
'#description' => $this->t('Allow height of the slider to animate smoothly in horizontal mode.'),
];
$element['ept_settings']['startAt'] = [
'#title' => $this->t('Start at'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['startAt'] ?? 0,
'#description' => $this->t('Integer: The slide that the slider should start on. Array notation (0 = first slide)'),
];
$element['ept_settings']['slideshow'] = [
'#title' => $this->t('Slideshow'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['slideshow'] ?? NULL,
'#description' => $this->t('Animate slider automatically.'),
];
$element['ept_settings']['animationSpeed'] = [
'#title' => $this->t('Animation speed'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['animationSpeed'] ?? 600,
'#description' => $this->t('Integer: Set the speed of animations, in milliseconds'),
];
$element['ept_settings']['slideshowSpeed'] = [
'#title' => $this->t('Slideshow speed'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['slideshowSpeed'] ?? 7000,
'#description' => $this->t('Integer: Set the speed of the slideshow cycling, in milliseconds'),
];
$element['ept_settings']['initDelay'] = [
'#title' => $this->t('Init delay'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['initDelay'] ?? 0,
'#description' => $this->t('Integer: Set an initialization delay, in milliseconds'),
];
$element['ept_settings']['randomize'] = [
'#title' => $this->t('Randomize'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['randomize'] ?? NULL,
'#description' => $this->t('Randomize slide order.'),
];
$element['ept_settings']['fadeFirstSlide'] = [
'#title' => $this->t('Fade first slide'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['fadeFirstSlide'] ?? 1,
'#description' => $this->t('Fade in the first slide when animation type is "fade".'),
];
$element['ept_settings']['thumbCaptions'] = [
'#title' => $this->t('Thumb captions'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['thumbCaptions'] ?? NULL,
'#description' => $this->t('Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.'),
];
$element['ept_settings']['usability'] = [
'#type' => 'details',
'#title' => $this->t('Navigation settings'),
'#open' => FALSE,
];
$element['ept_settings']['usability']['pauseOnHover'] = [
'#title' => $this->t('Pause on hover'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['usability']['pauseOnHover'] ?? NULL,
'#description' => $this->t('Pause the slideshow when hovering over slider, then resume when no longer hovering.'),
];
$element['ept_settings']['usability']['controlNav'] = [
'#title' => $this->t('Control navigation'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['usability']['controlNav'] ?? 1,
'#description' => $this->t('Create navigation for paging control of each slide? Note: Leave true for manualControls usage.'),
];
$element['ept_settings']['usability']['directionNav'] = [
'#title' => $this->t('Direction navigation'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['usability']['directionNav'] ?? 1,
'#description' => $this->t('Create navigation for previous/next navigation?.'),
];
$element['ept_settings']['usability']['prevText'] = [
'#title' => $this->t('Previous text'),
'#type' => 'textfield',
'#default_value' => $items[$delta]->ept_settings['usability']['prevText'] ?? 'Previous',
'#description' => $this->t('Set the text for the "previous" directionNav item'),
];
$element['ept_settings']['usability']['nextText'] = [
'#title' => $this->t('Next text'),
'#type' => 'textfield',
'#default_value' => $items[$delta]->ept_settings['usability']['nextText'] ?? 'Next',
'#description' => $this->t('Set the text for the "next" directionNav item'),
];
$element['ept_settings']['usability']['pausePlay'] = [
'#title' => $this->t('Pause play'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['usability']['pausePlay'] ?? NULL,
'#description' => $this->t('Create pause/play dynamic element'),
];
$element['ept_settings']['usability']['pauseText'] = [
'#title' => $this->t('Pause'),
'#type' => 'textfield',
'#default_value' => $items[$delta]->ept_settings['usability']['pauseText'] ?? 'Pause',
'#description' => $this->t('Set the text for the "pause" pausePlay item'),
];
$element['ept_settings']['usability']['playText'] = [
'#title' => $this->t('Play text'),
'#type' => 'textfield',
'#default_value' => $items[$delta]->ept_settings['usability']['playText'] ?? 'Play',
'#description' => $this->t('Set the text for the "play" pausePlay item'),
];
$element['ept_settings']['carousel'] = [
'#type' => 'details',
'#title' => $this->t('Carousel settings'),
'#open' => FALSE,
];
$element['ept_settings']['carousel']['itemWidth'] = [
'#title' => $this->t('Item width'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['carousel']['itemWidth'] ?? 0,
'#description' => $this->t('Integer: Box-model width of individual carousel items, including horizontal borders and padding.'),
];
$element['ept_settings']['carousel']['itemMargin'] = [
'#title' => $this->t('Item margin'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['carousel']['itemMargin'] ?? 0,
'#description' => $this->t('Integer: Margin between carousel items.'),
];
$element['ept_settings']['carousel']['minItems'] = [
'#title' => $this->t('Min items'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['carousel']['minItems'] ?? 1,
'#description' => $this->t('Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.'),
];
$element['ept_settings']['carousel']['maxItems'] = [
'#title' => $this->t('Max items'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['carousel']['maxItems'] ?? 0,
'#description' => $this->t('Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.'),
];
$element['ept_settings']['carousel']['move'] = [
'#title' => $this->t('Move'),
'#type' => 'number',
'#default_value' => $items[$delta]->ept_settings['carousel']['move'] ?? 0,
'#description' => $this->t('Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.'),
];
$element['ept_settings']['carousel']['allowOneSlide'] = [
'#title' => $this->t('Allow one slide'),
'#type' => 'checkbox',
'#default_value' => $items[$delta]->ept_settings['carousel']['allowOneSlide'] ?? 1,
'#description' => $this->t('Whether or not to allow a slider comprised of a single slide'),
];
return $element;
}
/**
* {@inheritdoc}
*/
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
foreach ($values as &$value) {
$value += ['ept_settings' => []];
}
return $values;
}
}
