wp_back/wp-content/plugins/smart-slider-3/Nextend/SmartSlider3/Slider/FeatureManager.php
2024-05-20 15:37:46 +03:00

181 lines
5.1 KiB
PHP

<?php
namespace Nextend\SmartSlider3\Slider;
use Nextend\Framework\Asset\Predefined;
use Nextend\SmartSlider3\Renderable\AbstractRenderable;
use Nextend\SmartSlider3\Slider\Feature\Align;
use Nextend\SmartSlider3\Slider\Feature\Autoplay;
use Nextend\SmartSlider3\Slider\Feature\BlockRightClick;
use Nextend\SmartSlider3\Slider\Feature\Controls;
use Nextend\SmartSlider3\Slider\Feature\Focus;
use Nextend\SmartSlider3\Slider\Feature\LayerMode;
use Nextend\SmartSlider3\Slider\Feature\LazyLoad;
use Nextend\SmartSlider3\Slider\Feature\MaintainSession;
use Nextend\SmartSlider3\Slider\Feature\Margin;
use Nextend\SmartSlider3\Slider\Feature\Optimize;
use Nextend\SmartSlider3\Slider\Feature\PostBackgroundAnimation;
use Nextend\SmartSlider3\Slider\Feature\Responsive;
use Nextend\SmartSlider3\Slider\Feature\SlideBackground;
use Nextend\SmartSlider3\Slider\Feature\TranslateUrl;
class FeatureManager {
/**
* @var AbstractRenderable
*/
private $slider;
/**
* @var Responsive
*/
public $responsive;
/**
* @var Controls
*/
public $controls;
/**
* @var LazyLoad
*/
public $lazyLoad;
/**
* @var Align
*/
public $align;
/**
* @var BlockRightClick
*/
public $blockRightClick;
/**
* @var Autoplay
*/
public $autoplay;
/**
* @var TranslateUrl
*/
public $translateUrl;
/**
* @var LayerMode
*/
public $layerMode;
/**
* @var SlideBackground
*/
public $slideBackground;
/**
* @var PostBackgroundAnimation
*/
public $postBackgroundAnimation;
/**
* @var Focus
*/
public $focus;
/**
* @var MaintainSession
*/
public $maintainSession;
/**
* @var Margin
*/
public $margin;
public $optimize;
/**
* FeatureManager constructor.
*
* @param $slider AbstractRenderable
*/
public function __construct($slider) {
$this->slider = $slider;
$this->optimize = new Optimize($slider);
$this->align = new Align($slider);
$this->responsive = new Responsive($slider, $this);
$this->controls = new Controls($slider);
$this->lazyLoad = new LazyLoad($slider);
$this->margin = new Margin($slider);
$this->blockRightClick = new BlockRightClick($slider);
$this->maintainSession = new MaintainSession($slider);
$this->autoplay = new Autoplay($slider);
$this->translateUrl = new TranslateUrl($slider);
$this->layerMode = new LayerMode($slider);
$this->slideBackground = new SlideBackground($slider);
$this->focus = new Focus($slider);
}
public function generateJSProperties() {
$return = array(
'admin' => $this->slider->isAdmin,
'background.video.mobile' => intval($this->slider->params->get('slides-background-video-mobile', 1)),
'loadingTime' => intval($this->slider->params->get('loading-time', 2000))
);
$randomizeCache = $this->slider->params->get('randomize-cache', 0);
if (!$this->slider->isAdmin && $randomizeCache) {
$return['randomize'] = array(
'randomize' => intval($this->slider->params->get('randomize', 0)),
'randomizeFirst' => intval($this->slider->params->get('randomizeFirst', 0))
);
}
$return['alias'] = array(
'id' => intval($this->slider->params->get('alias-id', 0)),
'smoothScroll' => intval($this->slider->params->get('alias-smoothscroll', 0)),
'slideSwitch' => intval($this->slider->params->get('alias-slideswitch', 0)),
'scroll' => intval($this->slider->params->get('alias-slideswitch-scroll', 1))
);
$this->makeJavaScriptProperties($return);
return $return;
}
protected function makeJavaScriptProperties(&$properties) {
$this->align->makeJavaScriptProperties($properties);
$this->responsive->makeJavaScriptProperties($properties);
$this->controls->makeJavaScriptProperties($properties);
$this->optimize->makeJavaScriptProperties($properties);
$this->lazyLoad->makeJavaScriptProperties($properties);
$this->blockRightClick->makeJavaScriptProperties($properties);
$this->maintainSession->makeJavaScriptProperties($properties);
$this->autoplay->makeJavaScriptProperties($properties);
$this->layerMode->makeJavaScriptProperties($properties);
$this->slideBackground->makeJavaScriptProperties($properties);
$this->focus->makeJavaScriptProperties($properties);
$properties['initCallbacks'] = &$this->slider->initCallbacks;
}
/**
* @param $slide Slide
*/
public function makeSlide($slide) {
}
/**
* @param $slide Slide
*
* @return string
*/
public function makeBackground($slide) {
return $this->slideBackground->make($slide);
}
public function addInitCallback($callback, $name = false) {
$this->slider->addScript($callback, $name);
}
}