carouselCollection = $carouselFactory->create(); $this->httpContext = $httpContext; $this->json = $json; parent::__construct($context, $data); } /** * @param array $newval * @return array * @throws NoSuchEntityException */ public function getCacheKeyInfo($newval = []) { return array_merge([ 'OLEGNAX_CAROUSEL_WIDGET', $this->_storeManager->getStore()->getId(), $this->_design->getDesignTheme()->getId(), $this->httpContext->getValue(Context::CONTEXT_GROUP), $this->json->serialize($this->getData()), ], parent::getCacheKeyInfo(), $newval); } /** * @return string */ public function getCarouselId() { return 'ox_carousel_' . substr(md5(microtime()), -5); } public function getSlide($store_id = null) { $carousel = $this->getCarousel(); if ($carousel) { return $this->getCarousel()->getSlide($store_id); } return []; } /** * @return \Olegnax\Carousel\Model\Carousel */ public function getCarousel() { $carousel = $this->getData('current_carousel'); if (empty($carousel)) { $carousels = $this->carouselCollection ->addFieldToSelect('*') ->addFieldToFilter('identifier', $this->getData('carousel')); if ($carousels->getSize()) { foreach ($carousels as $carousel) { $this->setData('current_carousel', $carousel); break; } } } return $carousel; } protected function _construct() { $this->addData([ 'cache_lifetime' => 86400, ]); if (!$this->hasData('template') && !$this->getTemplate()) { $this->setTemplate('Olegnax_Carousel::widget/carousel.phtml'); } parent::_construct(); } public function getAutoScroll() { $auto_scroll = $this->getData( 'autoplay' ); if ( empty( $auto_scroll ) ) { $auto_scroll = 0; } return $auto_scroll; } public function getResponsive( $to_string = true ) { $responsive = [ '0' => [ 'items' => max(1, (int)$this->getColumnsMobile()), ], '768' => [ 'items' => max(1, (int)$this->getColumnsTablet()), ], '1025' => [ 'items' => max(1, (int)$this->getColumnsDesktopSmall()), ], '1160' => [ 'items' => max(1, (int)$this->getColumnsDesktop()), ], ]; if ( $to_string ) { return json_encode( $responsive ); } return $responsive; } public function prepareStyle( array $style, string $separatorValue = ': ', string $separatorAttribute = ';' ) { $style = array_filter( $style ); if ( empty( $style ) ) { return ''; } foreach ( $style as $key => &$value ) { $value = $key . $separatorValue . $value; } $style = implode( $separatorAttribute, $style ); return $style; } public function customStyles( $slider_id, $slide ) { $styles = array(); if(!empty($slide)) { if (!empty($slide->getData('subtitle_color'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id').' .subtitle{ color:' .$slide->getData('subtitle_color') . '}'; } if (!empty($slide->getData('title_color'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id').' .title{ color:' .$slide->getData('title_color') . '}'; } if (!empty($slide->getData('title_bg'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' .title{ background-color:' . $slide->getData('title_bg') . '}'; } if (!empty($slide->getData('button_color'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button{ color:' . $slide->getData('button_color') . '}'; } if (!empty($slide->getData('button_color_hover'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id').' a.ox-slide__button:hover{ color:' .$slide->getData('button_color_hover') . '}'; } if (!empty($slide->getData('button_bg_hover'))) { if($slide->getData('button_style') == 'underline'){ $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button.underline:hover{ border-color:' . $slide->getData('button_bg_hover') . '}'; } elseif($slide->getData('button_style') == 'outline'){ $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button.outline:hover{ border-color:' . $slide->getData('button_bg_hover') . '}'; $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button:after{ background-color:' . $slide->getData('button_bg_hover') . '}'; } else { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button:after{ background-color:' . $slide->getData('button_bg_hover') . '}'; } } if (!empty($slide->getData('button_bg'))) { if($slide->getData('button_style') == 'underline'){ $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button.underline{ border-color:' . $slide->getData('button_bg') . '}'; } elseif($slide->getData('button_style') == 'outline'){ $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button.outline{ border-color:' . $slide->getData('button_bg') . '}'; $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button{ background-color:' . $slide->getData('button_bg') . '}'; } else { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' a.ox-slide__button{ background-color:' . $slide->getData('button_bg') . '}'; } } if (!empty($slide->getData('content_width'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id').'.slide-content-2-col .ox-carousel__col:first-child{' . 'max-width:' .$slide->getData('content_width') . 'px;' . '}' . '#' . $slider_id. ' .slide' . $slide->getData('slide_id').' .ox-carousel__inner{ max-width:' .$slide->getData('content_width') . 'px }'; } if (!empty($slide->getData('text_color'))) { $styles[] = '#' . $slider_id. ' .slide' . $slide->getData('slide_id') .' .ox-carousel__content{ color:' . $slide->getData('text_color') . '}'; } } if ( !empty($styles) ){ return implode(' ', $styles); } return ''; } public function getBaseUrl() { $this->_storeManager->getStore()->getBaseUrl( UrlInterface::URL_TYPE_WEB); } }