From 4a422412ca920e095e9578716b03bfa80bc20fac Mon Sep 17 00:00:00 2001 From: Konstantinos Platis <konstantinos.platis@cern.ch> Date: Wed, 19 Jun 2019 15:48:07 +0200 Subject: [PATCH] Added functionality for changing title color in Accordion display format --- assets/js/accordion.js | 8 ++++++++ cern_display_formats.libraries.yml | 8 ++++++++ cern_display_formats.module | 3 +++ src/Plugin/views/style/Accordion.php | 9 +++++++++ 4 files changed, 28 insertions(+) create mode 100644 assets/js/accordion.js diff --git a/assets/js/accordion.js b/assets/js/accordion.js new file mode 100644 index 0000000..adce567 --- /dev/null +++ b/assets/js/accordion.js @@ -0,0 +1,8 @@ +(function ($, Drupal, drupalSettings) { + Drupal.behaviors.AccordionBehavior = { + attach: function (context, settings) { + // can access setting from 'drupalSettings'; + $('.accordion-cern .panel-heading a').css('cssText','color: '+ drupalSettings.displayFormats.accordion.titleColor+ '!important;'); + } + }; +})(jQuery, Drupal, drupalSettings); \ No newline at end of file diff --git a/cern_display_formats.libraries.yml b/cern_display_formats.libraries.yml index 5d281eb..148c7c2 100644 --- a/cern_display_formats.libraries.yml +++ b/cern_display_formats.libraries.yml @@ -1,3 +1,11 @@ +accordion-stylesheets: + version: 1.x + js: + assets/js/accordion.js: {} + dependencies: + - core/jquery + - core/drupalSettings + teaser-list-stylesheets: version: 1.x css: diff --git a/cern_display_formats.module b/cern_display_formats.module index 1c8dc92..cc2c0c7 100755 --- a/cern_display_formats.module +++ b/cern_display_formats.module @@ -53,6 +53,9 @@ function cern_display_formats_views_post_render(ViewExecutable $view, &$output, $view->display_handler->setOption('css_class', 'vertical-boxes'); } elseif ($view->display_handler->view->style_plugin->getPluginId() == "accordion") { $view->display_handler->setOption('css_class', 'accordion-cern'); + $output['#attached']['library'][] = 'cern_display_formats/accordion-stylesheets'; //attaches the stylesheet + $title_color = $view->style_plugin->options['title_color']; + $output['#attached']['drupalSettings']['displayFormats']['accordion']['titleColor'] = $title_color; } elseif ($view->display_handler->view->style_plugin->getPluginId() == "card_grid") { $view->display_handler->setOption('css_class', 'cern-view-display-page cern-view-display-resources'); } elseif ($view->display_handler->view->style_plugin->getPluginId() == "event_grid") { diff --git a/src/Plugin/views/style/Accordion.php b/src/Plugin/views/style/Accordion.php index a2ae76c..7be4076 100644 --- a/src/Plugin/views/style/Accordion.php +++ b/src/Plugin/views/style/Accordion.php @@ -40,6 +40,7 @@ class Accordion extends DefaultStyle { protected function defineOptions(){ $options = parent::defineOptions(); $options['row_class'] = array('default'=> 'carousel-cern-item') ; + $options['title_color'] = array('default'=> '#000000') ; return $options; } @@ -58,6 +59,14 @@ class Accordion extends DefaultStyle { '#description' => t('For Accordion, make sure you have set carousel-cern-item as one of the row classes'), '#default_value' => (!empty($this->options['row_class'])) ? $this->options['row_class'] : 'carousel-cern-item', ); + + // Option to set a color for the accordion title + $form['title_color'] = array( + '#type' => 'color', + '#title' => t('Title Color'), + '#description' => t('Choose the color that you want the Accordion title to have'), + '#default_value' => (!empty($this->options['title_color'])) ? $this->options['title_color'] : '#000000', + ); } } \ No newline at end of file -- GitLab