Mercurial > hg > isophonics-drupal-site
diff modules/contrib/views_slideshow/src/Plugin/ViewsSlideshowWidget/PagerFields.php @ 5:c69a71b4f40f
Add slideshow module
author | Chris Cannam |
---|---|
date | Thu, 07 Dec 2017 14:46:23 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/contrib/views_slideshow/src/Plugin/ViewsSlideshowWidget/PagerFields.php Thu Dec 07 14:46:23 2017 +0000 @@ -0,0 +1,90 @@ +<?php + +namespace Drupal\views_slideshow\Plugin\ViewsSlideshowWidget; + +use Drupal\Core\Form\FormStateInterface; +use Drupal\views_slideshow\ViewsSlideshowWidgetBase; + +/** + * Provides a pager using fields. + * + * @ViewsSlideshowWidget( + * id = "views_slideshow_pager_fields", + * type = "views_slideshow_pager", + * label = @Translation("Fields"), + * ) + */ +class PagerFields extends ViewsSlideshowWidgetBase { + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return [ + 'views_slideshow_pager_fields_fields' => ['default' => []], + 'views_slideshow_pager_fields_hover' => ['default' => 0], + ]; + } + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + // Settings for fields pager. + $options = []; + + // Get each field and it's name. + foreach ($this->getConfiguration()['view']->display_handler->getHandlers('field') as $field_name => $field) { + $options[$field_name] = $field->adminLabel(); + } + + // Need to wrap this so it indents correctly. + $form['views_slideshow_pager_fields_wrapper'] = [ + '#markup' => '<div class="vs-dependent">', + ]; + + // Add ability to choose which fields to show in the pager. + $form['views_slideshow_pager_fields_fields'] = [ + '#type' => 'checkboxes', + '#title' => $this->t('Pager fields'), + '#options' => $options, + '#default_value' => $this->getConfiguration()['views_slideshow_pager_fields_fields'], + '#description' => $this->t('Choose the fields that will appear in the pager.'), + '#states' => [ + 'visible' => [ + ':input[name="' . $this->getConfiguration()['dependency'] . '[enable]"]' => ['checked' => TRUE], + ':input[name="' . $this->getConfiguration()['dependency'] . '[type]"]' => ['value' => 'views_slideshow_pager_fields'], + ], + ], + ]; + + // Add field to see if they would like to activate slide and pause on pager + // hover. + $form['views_slideshow_pager_fields_hover'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Activate Slide and Pause on Pager Hover'), + '#default_value' => $this->getConfiguration()['views_slideshow_pager_fields_hover'], + '#description' => $this->t('Should the slide be activated and paused when hovering over a pager item.'), + '#states' => [ + 'visible' => [ + ':input[name="' . $this->getConfiguration()['dependency'] . '[enable]"]' => ['checked' => TRUE], + ':input[name="' . $this->getConfiguration()['dependency'] . '[type]"]' => ['value' => 'views_slideshow_pager_fields'], + ], + ], + ]; + + $form['views_slideshow_pager_fields_wrapper_close'] = [ + '#markup' => '</div>', + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function checkCompatiblity($view) { + return $view->getStyle()->usesFields(); + } + +}