230 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			230 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace Nextend\SmartSlider3\Renderable\Item;
 | 
						|
 | 
						|
 | 
						|
use Nextend\Framework\Data\Data;
 | 
						|
use Nextend\Framework\Font\FontParser;
 | 
						|
use Nextend\Framework\Form\ContainerInterface;
 | 
						|
use Nextend\Framework\Model\Section;
 | 
						|
use Nextend\Framework\Pattern\GetAssetsPathTrait;
 | 
						|
use Nextend\Framework\Pattern\OrderableTrait;
 | 
						|
use Nextend\Framework\ResourceTranslator\ResourceTranslator;
 | 
						|
use Nextend\Framework\Style\StyleParser;
 | 
						|
use Nextend\SmartSlider3\BackupSlider\ExportSlider;
 | 
						|
use Nextend\SmartSlider3\BackupSlider\ImportSlider;
 | 
						|
use Nextend\SmartSlider3\Renderable\AbstractRenderableOwner;
 | 
						|
use Nextend\SmartSlider3\Slider\Admin\AdminSlider;
 | 
						|
 | 
						|
abstract class AbstractItem {
 | 
						|
 | 
						|
    use GetAssetsPathTrait, OrderableTrait;
 | 
						|
 | 
						|
    protected $layerProperties = array();
 | 
						|
 | 
						|
    protected $fonts = array();
 | 
						|
 | 
						|
    protected $styles = array();
 | 
						|
 | 
						|
    /**
 | 
						|
     * AbstractItem constructor.
 | 
						|
     *
 | 
						|
     * @param ItemFactory $factory
 | 
						|
     */
 | 
						|
    public function __construct($factory) {
 | 
						|
 | 
						|
        $this->initDefault();
 | 
						|
 | 
						|
        $factory->addItem($this);
 | 
						|
    }
 | 
						|
 | 
						|
    private function initDefault() {
 | 
						|
 | 
						|
        foreach ($this->fonts as &$fontData) {
 | 
						|
            $this->loadDefaultFont($fontData['defaultName'], $fontData['value']);
 | 
						|
        }
 | 
						|
 | 
						|
        foreach ($this->styles as &$styleData) {
 | 
						|
            $this->loadDefaultStyle($styleData['defaultName'], $styleData['value']);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    protected function loadDefaultFont($name, &$value) {
 | 
						|
 | 
						|
        $res = Section::get('smartslider', 'default', $name);
 | 
						|
        if (is_array($res)) {
 | 
						|
            $value = $res['value'];
 | 
						|
        }
 | 
						|
 | 
						|
        $value = FontParser::parse($value);
 | 
						|
    }
 | 
						|
 | 
						|
    protected function loadDefaultStyle($name, &$value) {
 | 
						|
 | 
						|
        $res = Section::get('smartslider', 'default', $name);
 | 
						|
        if (is_array($res)) {
 | 
						|
            $value = $res['value'];
 | 
						|
        }
 | 
						|
 | 
						|
        $value = StyleParser::parse($value);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param $id
 | 
						|
     * @param $itemData
 | 
						|
     * @param $layer
 | 
						|
     *
 | 
						|
     * @return AbstractItemFrontend
 | 
						|
     */
 | 
						|
    public abstract function createFrontend($id, $itemData, $layer);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public abstract function getTitle();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public abstract function getIcon();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function getGroup() {
 | 
						|
        return n2_x('Basic', 'Layer group');
 | 
						|
    }
 | 
						|
 | 
						|
    public function getLayerProperties() {
 | 
						|
        return $this->layerProperties;
 | 
						|
    }
 | 
						|
 | 
						|
    public function isLegacy() {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getValues() {
 | 
						|
        $values = array();
 | 
						|
 | 
						|
        foreach ($this->fonts as $name => $fontData) {
 | 
						|
            $values[$name] = $fontData['value'];
 | 
						|
        }
 | 
						|
 | 
						|
        foreach ($this->styles as $name => $styleData) {
 | 
						|
            $values[$name] = $styleData['value'];
 | 
						|
        }
 | 
						|
 | 
						|
        return $values;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param $slide AbstractRenderableOwner
 | 
						|
     * @param $data  Data
 | 
						|
     *
 | 
						|
     * @return Data
 | 
						|
     */
 | 
						|
    public function getFilled($slide, $data) {
 | 
						|
        $this->upgradeData($data);
 | 
						|
 | 
						|
        return $data;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param Data $data
 | 
						|
     */
 | 
						|
    public function upgradeData($data) {
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Fix linked fonts/styles for the editor
 | 
						|
     *
 | 
						|
     * @param Data $data
 | 
						|
     */
 | 
						|
    public function adminNormalizeFontsStyles($data) {
 | 
						|
 | 
						|
        foreach ($this->fonts as $name => $fontData) {
 | 
						|
            $data->set($name, FontParser::parse($data->get($name)));
 | 
						|
        }
 | 
						|
 | 
						|
        foreach ($this->styles as $name => $styleData) {
 | 
						|
            $data->set($name, StyleParser::parse($data->get($name)));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param ExportSlider $export
 | 
						|
     * @param Data         $data
 | 
						|
     */
 | 
						|
    public function prepareExport($export, $data) {
 | 
						|
        $this->upgradeData($data);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param ImportSlider $import
 | 
						|
     * @param Data         $data
 | 
						|
     *
 | 
						|
     * @return Data
 | 
						|
     */
 | 
						|
    public function prepareImport($import, $data) {
 | 
						|
        $this->upgradeData($data);
 | 
						|
 | 
						|
        return $data;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param Data $data
 | 
						|
     *
 | 
						|
     * @return Data
 | 
						|
     */
 | 
						|
    public function prepareSample($data) {
 | 
						|
        $this->upgradeData($data);
 | 
						|
 | 
						|
        return $data;
 | 
						|
    }
 | 
						|
 | 
						|
    public function fixImage($image) {
 | 
						|
        return ResourceTranslator::toUrl($image);
 | 
						|
    }
 | 
						|
 | 
						|
    public function fixLightbox($url) {
 | 
						|
        preg_match('/^([a-zA-Z]+)\[(.*)](.*)/', $url, $matches);
 | 
						|
        if (!empty($matches) && $matches[1] == 'lightbox') {
 | 
						|
            $images    = explode(',', $matches[2]);
 | 
						|
            $newImages = array();
 | 
						|
            foreach ($images as $image) {
 | 
						|
                $newImages[] = ResourceTranslator::toUrl($image);
 | 
						|
            }
 | 
						|
            $url = 'lightbox[' . implode(',', $newImages) . ']' . $matches[3];
 | 
						|
        }
 | 
						|
 | 
						|
        return $url;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param AdminSlider $renderable
 | 
						|
     */
 | 
						|
    public function loadResources($renderable) {
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public abstract function getType();
 | 
						|
 | 
						|
    protected function isBuiltIn() {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param ContainerInterface $container
 | 
						|
     */
 | 
						|
    public abstract function renderFields($container);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param ContainerInterface $container
 | 
						|
     */
 | 
						|
    public function globalDefaultItemFontAndStyle($container) {
 | 
						|
    }
 | 
						|
} |