From 507e57764373e11c0306ff9869be99ac3551e264 Mon Sep 17 00:00:00 2001 From: soufiane Date: Fri, 21 Nov 2025 17:21:41 +0100 Subject: [PATCH] wait #7831 @7:30 --- framework/application/views/helpers/Logos.php | 9 +++++--- .../library/CubeIT/View/Helper/HeadScript.php | 20 +++++++++++++++++ js/106-logos.js | 22 +++++++++++++++++++ less/106-logos.less | 19 +++------------- 4 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 js/106-logos.js diff --git a/framework/application/views/helpers/Logos.php b/framework/application/views/helpers/Logos.php index 3c4b16a..a3489dd 100644 --- a/framework/application/views/helpers/Logos.php +++ b/framework/application/views/helpers/Logos.php @@ -5,6 +5,8 @@ class Fluidbook_View_Helper_Logos extends CubeIT_View_Helper_Abstract { * @return string */ public function logos($logos, $wrapper_element = 'section') { + $this->headScript()->addSplideCarousel(); + $images = CubeIT_Util_Cms::extractFiles($logos); if (!count($images)) { return; @@ -15,10 +17,11 @@ class Fluidbook_View_Helper_Logos extends CubeIT_View_Helper_Abstract { $res = ''; foreach ($images as $image) { $img = $this->imageCms($image, '', null, null, ['class' => 'logos-image']); - $res .= $this->htmlElement($img, 'div', ['class' => 'logos-item']); + $res .= $this->htmlElement($img, 'div', ['class' => 'logos-item splide__slide']); } - $res = $this->htmlElement($res, 'div', ['class' => 'logos-grid']); - return $this->htmlElement($res, $wrapper_element, ['class' => 'logos-wrapper grid']); + $res = $this->htmlElement($res, 'div', ['class' => 'logos-grid splide__list']); + $res = $this->htmlElement($res, 'div', ['class' => 'splide__track']); + return $this->htmlElement($res, $wrapper_element, ['class' => 'logos-wrapper splide']); } } diff --git a/framework/library/CubeIT/View/Helper/HeadScript.php b/framework/library/CubeIT/View/Helper/HeadScript.php index 68faed8..b4fd0e0 100644 --- a/framework/library/CubeIT/View/Helper/HeadScript.php +++ b/framework/library/CubeIT/View/Helper/HeadScript.php @@ -46,6 +46,11 @@ class CubeIT_View_Helper_HeadScript extends Zend_View_Helper_HeadScript */ const SLICKCAROUSEL_VERSION = '1.9.0'; + /** + * @link https://cdnjs.com/libraries/splidejs + */ + const SPLIDECAROUSEL_VERSION = '4.1.4'; + /** * @link http://cdnjs.com/libraries/jquery.nanoscroller/ */ @@ -1055,6 +1060,21 @@ class CubeIT_View_Helper_HeadScript extends Zend_View_Helper_HeadScript return $this; } + public function addSplideCarousel() + { + if (!$this->_add('splidejs')) { + return $this; + } + $this->view->headLink()->addDNSPrefetch('//cdnjs.cloudflare.com/'); + $this->appendFile('//cdnjs.cloudflare.com/ajax/libs/splidejs/' . static::SPLIDECAROUSEL_VERSION . '/js/splide.min.js'); + $this->view->headLink()->appendStylesheet('//cdnjs.cloudflare.com/ajax/libs/splidejs/' . static::SPLIDECAROUSEL_VERSION . '/css/splide.min.css'); + + $this->view->headLink()->addDNSPrefetch('//cdnjs.jsdelivr.net/'); + $this->appendFile('//cdn.jsdelivr.net/npm/@splidejs/splide-extension-auto-scroll@0.5.3/dist/js/splide-extension-auto-scroll.min.js'); + + return $this; + } + public function addDotDotDot() { if (!$this->_add('dotdotdot')) { diff --git a/js/106-logos.js b/js/106-logos.js new file mode 100644 index 0000000..d329aa3 --- /dev/null +++ b/js/106-logos.js @@ -0,0 +1,22 @@ +registerLoader(load_logo, true); + +function load_logo() { + console.log(window.splide.Extensions) + new Splide( '.splide', { + drag: false, + autoWidth: true, + type: 'loop', + gap: 40, + pagination: false, + arrows: false, + autoScroll: { + speed: .5, + }, + mediaQuery: 'min', + breakpoints: { + 768: { + gap: 90, + }, + } + } ).mount(window.splide.Extensions); +} \ No newline at end of file diff --git a/less/106-logos.less b/less/106-logos.less index 25889b9..883968f 100644 --- a/less/106-logos.less +++ b/less/106-logos.less @@ -2,17 +2,14 @@ .logos { &-wrapper { - background-color: @color-light-grey; + background-color: #e8eefa; padding-top: 3%; padding-bottom: 3%; } &-grid { - display: flex; + display: flex !important; align-items: center; - justify-content: center; - width: 100%; - margin: -1em 0; // Offset vertical padding on .logos-item so we only have spacing between multiple rows padding: 0 70px; @media (max-width: 1299px) { @@ -20,24 +17,14 @@ } @media @m640 { - flex-wrap: wrap; - .logos-item { flex-basis: 33%; // Switch to 3 cols instead of 5 } } } - &-item { - flex: 1 1 auto; // Equal width columns covering available total width - display: flex; // Enable flex here to allow easier centering of images - justify-content: center; - align-items: center; - padding: 1em; // Controls minimum space between items - } - &-image { - width: 100%; + width: 120px; height: 100%; max-width: 120px; max-height: 45px; -- 2.39.5