119 lines
2.9 KiB
PHP
119 lines
2.9 KiB
PHP
<?php
|
|
|
|
|
|
namespace Nextend\SmartSlider3\Renderable\Item;
|
|
|
|
|
|
use Nextend\Framework\Data\Data;
|
|
use Nextend\Framework\Parser\Link;
|
|
use Nextend\Framework\Pattern\GetAssetsPathTrait;
|
|
use Nextend\Framework\View\Html;
|
|
use Nextend\SmartSlider3\Renderable\Component\ComponentLayer;
|
|
|
|
abstract class AbstractItemFrontend {
|
|
|
|
use GetAssetsPathTrait;
|
|
|
|
/** @var AbstractItem */
|
|
protected $item;
|
|
|
|
protected $id;
|
|
|
|
/** @var ComponentLayer */
|
|
protected $layer;
|
|
|
|
/** @var Data */
|
|
public $data;
|
|
|
|
protected $isEditor = false;
|
|
|
|
/**
|
|
*
|
|
* @param AbstractItem $item
|
|
* @param string $id
|
|
* @param array $itemData
|
|
* @param ComponentLayer $layer
|
|
*/
|
|
public function __construct($item, $id, $itemData, $layer) {
|
|
$this->item = $item;
|
|
$this->id = $id;
|
|
$this->data = new Data($itemData);
|
|
$this->layer = $layer;
|
|
|
|
$this->fillDefault($item->getValues());
|
|
}
|
|
|
|
private function fillDefault($defaults) {
|
|
|
|
$this->item->upgradeData($this->data);
|
|
|
|
$this->data->fillDefault($defaults);
|
|
}
|
|
|
|
public abstract function render();
|
|
|
|
public function renderAdmin() {
|
|
$this->isEditor = true;
|
|
|
|
/**
|
|
* Fix linked fonts/styles for the editor
|
|
*/
|
|
$this->item->adminNormalizeFontsStyles($this->data);
|
|
|
|
$rendered = $this->renderAdminTemplate();
|
|
|
|
$json = $this->data->toJson();
|
|
|
|
return Html::tag("div", array(
|
|
"class" => "n2-ss-item n2-ss-item-" . $this->item->getType(),
|
|
"data-item" => $this->item->getType(),
|
|
"data-itemvalues" => $json
|
|
), $rendered);
|
|
}
|
|
|
|
protected abstract function renderAdminTemplate();
|
|
|
|
public function needHeight() {
|
|
return false;
|
|
}
|
|
|
|
public function isAuto() {
|
|
return false;
|
|
}
|
|
|
|
protected function hasLink() {
|
|
$link = $this->data->get('href', '#');
|
|
if (($link != '#' && !empty($link))) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
protected function getLink($content, $attributes = array(), $renderEmpty = false) {
|
|
|
|
$link = $this->data->get('href', '#');
|
|
$target = $this->data->get('href-target', '#');
|
|
$rel = $this->data->get('href-rel', '#');
|
|
$class = $this->data->get('href-class', '');
|
|
|
|
if (($link != '#' && !empty($link)) || $renderEmpty === true) {
|
|
|
|
$link = Link::parse($this->layer->getOwner()
|
|
->fill($link), $attributes, $this->isEditor);
|
|
if (!empty($target) && $target != '_self') {
|
|
$attributes['target'] = $target;
|
|
}
|
|
if (!empty($rel)) {
|
|
$attributes['rel'] = $rel;
|
|
}
|
|
if (!empty($class)) {
|
|
$attributes['class'] = $class;
|
|
}
|
|
|
|
return Html::link($content, $link, $attributes);
|
|
}
|
|
|
|
return $content;
|
|
}
|
|
} |