181 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			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);
 | 
						|
    }
 | 
						|
} |