153 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Nextend\SmartSlider3\Widget;
 | 
						|
 | 
						|
use Nextend\Framework\Data\Data;
 | 
						|
use Nextend\Framework\Pattern\GetAssetsPathTrait;
 | 
						|
use Nextend\SmartSlider3\Slider\Slider;
 | 
						|
 | 
						|
abstract class AbstractWidgetFrontend {
 | 
						|
 | 
						|
    use GetAssetsPathTrait;
 | 
						|
 | 
						|
    /** @var SliderWidget */
 | 
						|
    protected $sliderWidget;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var Slider
 | 
						|
     */
 | 
						|
    protected $slider;
 | 
						|
 | 
						|
    /** @var AbstractWidget */
 | 
						|
    protected $widget;
 | 
						|
 | 
						|
    protected $key;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var Data
 | 
						|
     */
 | 
						|
    protected $params;
 | 
						|
 | 
						|
    /**
 | 
						|
     * AbstractWidgetFrontend constructor.
 | 
						|
     *
 | 
						|
     * @param SliderWidget   $sliderWidget
 | 
						|
     * @param AbstractWidget $widget
 | 
						|
     */
 | 
						|
    public function __construct($sliderWidget, $widget, $params) {
 | 
						|
        $this->sliderWidget = $sliderWidget;
 | 
						|
        $this->slider       = $sliderWidget->slider;
 | 
						|
        $this->widget       = $widget;
 | 
						|
 | 
						|
        $this->params = $params;
 | 
						|
 | 
						|
        $this->key = $widget->getKey();
 | 
						|
    }
 | 
						|
 | 
						|
    protected function addToPlacement($key, $renderCallback) {
 | 
						|
 | 
						|
        $params = $this->params;
 | 
						|
 | 
						|
        if ($params->get($key . 'mode') == 'simple') {
 | 
						|
 | 
						|
            $area  = intval($params->get($key . 'area'));
 | 
						|
            $stack = intval($params->get($key . 'stack', 1));
 | 
						|
 | 
						|
            $this->sliderWidget->addToSimplePlacement($renderCallback, $this->translateArea($area), $stack, $params->get($key . 'offset', 0));
 | 
						|
        } else {
 | 
						|
            $horizontalSide     = $params->get($key . 'horizontal', 'left');
 | 
						|
            $horizontalPosition = $params->get($key . 'horizontal-position', 0);
 | 
						|
            $horizontalUnit     = $params->get($key . 'horizontal-unit', 'px');
 | 
						|
 | 
						|
            $verticalSide     = $params->get($key . 'vertical', 'top');
 | 
						|
            $verticalPosition = $params->get($key . 'vertical-position', 0);
 | 
						|
            $verticalUnit     = $params->get($key . 'vertical-unit', 'px');
 | 
						|
 | 
						|
            $this->sliderWidget->addToAdvancedPlacement($renderCallback, $horizontalSide, $horizontalPosition, $horizontalUnit, $verticalSide, $verticalPosition, $verticalUnit);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    protected function translateArea($area) {
 | 
						|
        static $areas = array(
 | 
						|
            1  => 'above',
 | 
						|
            2  => 'absolute-left-top',
 | 
						|
            3  => 'absolute-center-top',
 | 
						|
            4  => 'absolute-right-top',
 | 
						|
            5  => 'absolute-left',
 | 
						|
            6  => 'absolute-left-center',
 | 
						|
            7  => 'absolute-right-center',
 | 
						|
            8  => 'absolute-right',
 | 
						|
            9  => 'absolute-left-bottom',
 | 
						|
            10 => 'absolute-center-bottom',
 | 
						|
            11 => 'absolute-right-bottom',
 | 
						|
            12 => 'below',
 | 
						|
        );
 | 
						|
 | 
						|
        return $areas[$area];
 | 
						|
    }
 | 
						|
 | 
						|
    public function getDefaults() {
 | 
						|
        return $this->widget->getDefaults();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param Data    $params
 | 
						|
     * @param string  $key
 | 
						|
     * @param integer $showOnMobileDefault
 | 
						|
     *
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    protected function getDisplayAttributes($params, $key, $showOnMobileDefault = 0) {
 | 
						|
 | 
						|
        $attributes = array(
 | 
						|
            'class' => 'n2-ss-widget'
 | 
						|
        );
 | 
						|
 | 
						|
        if (!$params->get($key . 'display-desktopportrait', 1)) {
 | 
						|
            $attributes['data-hide-desktopportrait'] = 1;
 | 
						|
        }
 | 
						|
 | 
						|
        if (!$params->get($key . 'display-tabletportrait', 1)) {
 | 
						|
            $attributes['data-hide-tabletportrait'] = 1;
 | 
						|
        }
 | 
						|
 | 
						|
        if (!$params->get($key . 'display-mobileportrait', $showOnMobileDefault)) {
 | 
						|
            $attributes['data-hide-mobileportrait'] = 1;
 | 
						|
        }
 | 
						|
 | 
						|
        if ($params->get($key . 'display-hover', 0)) {
 | 
						|
            $attributes['class'] .= ' n2-ss-widget-display-hover';
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        $excludeSlides = $params->get($key . 'exclude-slides', '');
 | 
						|
        if (!empty($excludeSlides)) {
 | 
						|
            $attributes['data-exclude-slides'] = $excludeSlides;
 | 
						|
        }
 | 
						|
 | 
						|
        return $attributes;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function getOrientationByPosition($mode, $area, $set = 'auto', $default = 'horizontal') {
 | 
						|
        if ($mode == 'advanced') {
 | 
						|
            if ($set == 'auto') {
 | 
						|
                return $default;
 | 
						|
            }
 | 
						|
 | 
						|
            return $set;
 | 
						|
        }
 | 
						|
        if ($set != 'auto') {
 | 
						|
            return $set;
 | 
						|
        }
 | 
						|
        switch ($area) {
 | 
						|
            case '5':
 | 
						|
            case '6':
 | 
						|
            case '7':
 | 
						|
            case '8':
 | 
						|
                return 'vertical';
 | 
						|
                break;
 | 
						|
        }
 | 
						|
 | 
						|
        return 'horizontal';
 | 
						|
    }
 | 
						|
} |