first
This commit is contained in:
@ -0,0 +1,354 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\SmartSlider3\Application\Admin\Slides;
|
||||
|
||||
|
||||
use Nextend\Framework\Controller\Admin\AdminAjaxController;
|
||||
use Nextend\Framework\Filesystem\Filesystem;
|
||||
use Nextend\Framework\Misc\Base64;
|
||||
use Nextend\Framework\Notification\Notification;
|
||||
use Nextend\Framework\Request\Request;
|
||||
use Nextend\SmartSlider3\Application\Admin\TraitAdminUrl;
|
||||
use Nextend\SmartSlider3\Application\Model\ModelSliders;
|
||||
use Nextend\SmartSlider3\Application\Model\ModelSlides;
|
||||
use Nextend\SmartSlider3\Settings;
|
||||
use Nextend\SmartSlider3\Slider\Feature\Optimize;
|
||||
use Nextend\SmartSlider3\Slider\Slide;
|
||||
use Nextend\SmartSlider3\Slider\Slider;
|
||||
|
||||
class ControllerAjaxSlides extends AdminAjaxController {
|
||||
|
||||
use TraitAdminUrl;
|
||||
|
||||
public function actionEdit() {
|
||||
$this->validateToken();
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$groupID = Request::$REQUEST->getInt('groupID', 0);
|
||||
$this->validateVariable($groupID >= 0, 'groupID');
|
||||
|
||||
$slidersModel = new ModelSliders($this);
|
||||
$sliderId = Request::$REQUEST->getInt('sliderid');
|
||||
$slider = $slidersModel->get($sliderId);
|
||||
|
||||
$this->validateDatabase($slider);
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$this->validateDatabase($slidesModel->get(Request::$REQUEST->getInt('slideid')));
|
||||
|
||||
$response = array();
|
||||
|
||||
$file = Request::$FILES->getVar('slide');
|
||||
if (Settings::get('slide-as-file', 0) && $file !== null) {
|
||||
$slide = Filesystem::readFile($file['tmp_name']);
|
||||
} else {
|
||||
$slide = Request::$REQUEST->getVar('slide');
|
||||
}
|
||||
|
||||
$guides = Request::$REQUEST->getVar('guides');
|
||||
|
||||
if ($slidesModel->save(Request::$REQUEST->getInt('slideid'), $slide, $guides)) {
|
||||
Notification::success(n2_('Slide saved.'));
|
||||
|
||||
if (Request::$REQUEST->getInt('generatorStatic') == 1) {
|
||||
$slideCount = $slidesModel->convertDynamicSlideToSlides(Request::$REQUEST->getInt('slideid'));
|
||||
if ($slideCount) {
|
||||
Notification::success(sprintf(n2_('%d static slides generated.'), $slideCount));
|
||||
|
||||
$this->response->redirect($this->getUrlSliderEdit($sliderId, $groupID));
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->response->respond($response);
|
||||
}
|
||||
|
||||
public function actionRename() {
|
||||
$this->validateToken();
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$slideID = Request::$REQUEST->getInt('slideid');
|
||||
$this->validateVariable($slideID > 0, 'Slide');
|
||||
|
||||
$title = Request::$REQUEST->getVar('title');
|
||||
|
||||
$slidersModel = new ModelSlides($this);
|
||||
$slidersModel->setTitle($slideID, $title);
|
||||
|
||||
Notification::success(n2_('Slide renamed.'));
|
||||
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionFirst() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$slideId = Request::$REQUEST->getInt('id');
|
||||
$this->validateVariable($slideId > 0, 'Slide id');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$slidesModel->first($slideId);
|
||||
Notification::success(n2_('First slide changed.'));
|
||||
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionConvertToSlide() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$slideId = Request::$REQUEST->getInt('slideid');
|
||||
$this->validateVariable($slideId > 0, 'Slide id');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$slidesModel->convertToSlide($slideId);
|
||||
|
||||
Notification::success(n2_('Static overlay converted to slide.'));
|
||||
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionPublish() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$ids = array_map('intval', array_filter((array)Request::$REQUEST->getVar('slides'), 'is_numeric'));
|
||||
|
||||
$this->validateVariable(count($ids), 'Slides');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
foreach ($ids as $id) {
|
||||
if ($id > 0) {
|
||||
$slidesModel->publish($id);
|
||||
}
|
||||
}
|
||||
Notification::success(n2_('Slide published.'));
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionUnPublish() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$ids = array_map('intval', array_filter((array)Request::$REQUEST->getVar('slides'), 'is_numeric'));
|
||||
$this->validateVariable(count($ids), 'Slides');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
foreach ($ids as $id) {
|
||||
if ($id > 0) {
|
||||
$slidesModel->unPublish($id);
|
||||
}
|
||||
}
|
||||
Notification::success(n2_('Slide unpublished.'));
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionOrder() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$sliderid = Request::$REQUEST->getInt('sliderid');
|
||||
$this->validateVariable($sliderid > 0, 'Slider');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
|
||||
$result = $slidesModel->order($sliderid, Request::$REQUEST->getVar('slideorder'));
|
||||
$this->validateDatabase($result);
|
||||
|
||||
Notification::success(n2_('Slide order saved.'));
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionCopy() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$groupID = Request::$REQUEST->getInt('targetGroupID', 0);
|
||||
$this->validateVariable($groupID >= 0, 'targetGroupID');
|
||||
|
||||
$slideId = Request::$REQUEST->getInt('slideid');
|
||||
$this->validateVariable($slideId > 0, 'Slide');
|
||||
|
||||
$sliderID = Request::$REQUEST->getInt('targetSliderID');
|
||||
$this->validateVariable($sliderID > 0, 'Slider ID');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$newSlideId = $slidesModel->copyTo($slideId, false, $sliderID);
|
||||
$slide = $slidesModel->get($newSlideId);
|
||||
|
||||
$this->validateDatabase($slide);
|
||||
|
||||
Notification::success(n2_('Slide(s) copied.'));
|
||||
|
||||
|
||||
$this->response->redirect($this->getUrlSliderEdit($sliderID, $groupID));
|
||||
}
|
||||
|
||||
public function actionCopySlides() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$groupID = Request::$REQUEST->getInt('targetGroupID', 0);
|
||||
$this->validateVariable($groupID >= 0, 'targetGroupID');
|
||||
|
||||
$ids = array_map('intval', array_filter((array)Request::$REQUEST->getVar('slides'), 'is_numeric'));
|
||||
|
||||
$this->validateVariable(count($ids), 'Slides');
|
||||
|
||||
$sliderID = Request::$REQUEST->getInt('targetSliderID');
|
||||
$this->validateVariable($sliderID > 0, 'Slider ID');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
foreach ($ids as $id) {
|
||||
$slidesModel->copyTo($id, false, $sliderID);
|
||||
}
|
||||
Notification::success(n2_('Slide(s) copied.'));
|
||||
|
||||
$this->response->redirect($this->getUrlSliderEdit($sliderID, $groupID));
|
||||
}
|
||||
|
||||
public function actionDuplicate() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$groupID = Request::$REQUEST->getInt('groupID');
|
||||
$this->validateVariable($groupID >= 0, 'groupID');
|
||||
|
||||
$slideId = Request::$REQUEST->getInt('slideid');
|
||||
$this->validateVariable($slideId > 0, 'Slide');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$newSlideId = $slidesModel->copyTo($slideId);
|
||||
$slide = $slidesModel->get($newSlideId);
|
||||
|
||||
$this->validateDatabase($slide);
|
||||
|
||||
Notification::success(n2_('Slide duplicated.'));
|
||||
|
||||
$sliderObj = new Slider($this, $slide['slider'], array(), true);
|
||||
$sliderObj->initSlider();
|
||||
$optimize = new Optimize($sliderObj);
|
||||
|
||||
$slideObj = new Slide($sliderObj, $slide);
|
||||
$slideObj->initGenerator();
|
||||
$slideObj->fillSample();
|
||||
|
||||
$view = new ViewAjaxSlideBox($this);
|
||||
$view->setGroupID($groupID);
|
||||
$view->setSlider($sliderObj);
|
||||
$view->setSlide($slideObj);
|
||||
$view->setOptimize($optimize);
|
||||
|
||||
$this->response->respond($view->display());
|
||||
}
|
||||
|
||||
|
||||
public function actionDelete() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_delete');
|
||||
|
||||
$ids = array_map('intval', array_filter((array)Request::$REQUEST->getVar('slides'), 'is_numeric'));
|
||||
|
||||
$this->validateVariable(count($ids), 'Slide');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
foreach ($ids as $id) {
|
||||
if ($id > 0) {
|
||||
$slidesModel->delete($id);
|
||||
}
|
||||
}
|
||||
Notification::success(n2_('Slide deleted.'));
|
||||
$this->response->respond();
|
||||
}
|
||||
|
||||
public function actionCreate() {
|
||||
$this->validateToken();
|
||||
|
||||
$this->validatePermission('smartslider_edit');
|
||||
|
||||
$type = Request::$REQUEST->getVar('type');
|
||||
|
||||
$groupID = Request::$REQUEST->getInt('groupID');
|
||||
$this->validateVariable($groupID >= 0, 'groupID');
|
||||
|
||||
$sliderId = Request::$REQUEST->getInt('sliderid');
|
||||
$this->validateVariable($sliderId > 0, 'Slider');
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
|
||||
$createdSlidesID = array();
|
||||
switch ($type) {
|
||||
case 'image':
|
||||
$images = json_decode(Base64::decode(Request::$REQUEST->getVar('images')), true);
|
||||
$this->validateVariable(count($images), 'Images');
|
||||
foreach ($images as $image) {
|
||||
$createdSlidesID[] = $slidesModel->createQuickImage($image, $sliderId);
|
||||
}
|
||||
break;
|
||||
case 'empty-slide':
|
||||
$createdSlidesID[] = $slidesModel->createQuickEmptySlide($sliderId);
|
||||
break;
|
||||
case 'video':
|
||||
$video = json_decode(urldecode(Base64::decode(Request::$REQUEST->getVar('video'))), true);
|
||||
$this->validateVariable($video, 'Video');
|
||||
|
||||
$createdSlidesID[] = $slidesModel->createQuickVideo($video, $sliderId);
|
||||
break;
|
||||
case 'post':
|
||||
$post = Request::$REQUEST->getVar('post');
|
||||
$this->validateVariable($post, 'Post');
|
||||
|
||||
$createdSlidesID[] = $slidesModel->createQuickPost($post, $sliderId);
|
||||
break;
|
||||
case 'static-overlay':
|
||||
$createdSlidesID[] = $slidesModel->createQuickStaticOverlay($sliderId);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($createdSlidesID)) {
|
||||
|
||||
$sliderObj = new Slider($this, $sliderId, array());
|
||||
$sliderObj->initSlider();
|
||||
$optimize = new Optimize($sliderObj);
|
||||
|
||||
$responseBody = '';
|
||||
foreach ($createdSlidesID as $slideID) {
|
||||
$slide = $slidesModel->get($slideID);
|
||||
|
||||
$slideObj = new Slide($sliderObj, $slide);
|
||||
$slideObj->initGenerator();
|
||||
$slideObj->fillSample();
|
||||
|
||||
$view = new ViewAjaxSlideBox($this);
|
||||
$view->setGroupID($groupID);
|
||||
$view->setSlider($sliderObj);
|
||||
$view->setSlide($slideObj);
|
||||
$view->setOptimize($optimize);
|
||||
|
||||
$responseBody .= $view->display();
|
||||
}
|
||||
|
||||
if (count($createdSlidesID) > 1) {
|
||||
Notification::success(n2_('Slides created.'));
|
||||
} else {
|
||||
Notification::success(n2_('Slide created.'));
|
||||
}
|
||||
|
||||
$this->response->respond($responseBody);
|
||||
} else {
|
||||
|
||||
Notification::error(n2_('Failed to create slides.'));
|
||||
$this->response->respond();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\SmartSlider3\Application\Admin\Slides;
|
||||
|
||||
|
||||
use Nextend\Framework\Notification\Notification;
|
||||
use Nextend\Framework\Request\Request;
|
||||
use Nextend\SmartSlider3\Application\Admin\AbstractControllerAdmin;
|
||||
use Nextend\SmartSlider3\Application\Model\ModelSliders;
|
||||
use Nextend\SmartSlider3\Application\Model\ModelSlides;
|
||||
use Nextend\SmartSlider3\SmartSlider3Info;
|
||||
|
||||
class ControllerSlides extends AbstractControllerAdmin {
|
||||
|
||||
public function initialize() {
|
||||
parent::initialize();
|
||||
|
||||
SmartSlider3Info::$forceDesktop = true;
|
||||
SmartSlider3Info::$forceAllDevices = true;
|
||||
}
|
||||
|
||||
public function actionEdit() {
|
||||
if ($this->validatePermission('smartslider_edit')) {
|
||||
$slidersModel = new ModelSliders($this);
|
||||
|
||||
$sliderID = Request::$REQUEST->getInt('sliderid');
|
||||
$slider = $slidersModel->get($sliderID);
|
||||
|
||||
if ($this->validateDatabase($slider, false)) {
|
||||
|
||||
$slidesModel = new ModelSlides($this);
|
||||
|
||||
$slideID = Request::$REQUEST->getInt('slideid');
|
||||
$slide = $slidesModel->get($slideID);
|
||||
|
||||
if ($slide) {
|
||||
|
||||
$groupData = $this->getGroupData($sliderID);
|
||||
|
||||
$view = new ViewSlidesEdit($this);
|
||||
$view->setGroupData($groupData['group_id'], $groupData['title']);
|
||||
$view->setSlider($slider);
|
||||
$view->setSlide($slide);
|
||||
$view->display();
|
||||
} else {
|
||||
|
||||
$this->redirect($this->getUrlDashboard());
|
||||
}
|
||||
} else {
|
||||
|
||||
$this->redirect($this->getUrlDashboard());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function actionDelete() {
|
||||
if ($this->validateToken() && $this->validatePermission('smartslider_delete')) {
|
||||
if ($slideId = Request::$REQUEST->getInt('slideid')) {
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$slidesModel->delete($slideId);
|
||||
}
|
||||
|
||||
$sliderId = Request::$REQUEST->getInt("sliderid");
|
||||
if ($sliderId) {
|
||||
$groupData = $this->getGroupData($sliderId);
|
||||
$this->redirect($this->getUrlSliderEdit($sliderId, $groupData['group_id']));
|
||||
}
|
||||
|
||||
$this->redirect($this->getUrlDashboard());
|
||||
}
|
||||
}
|
||||
|
||||
public function actionDuplicate() {
|
||||
if ($this->validateToken() && $this->validatePermission('smartslider_edit')) {
|
||||
if ($slideId = Request::$REQUEST->getInt('slideid')) {
|
||||
$slidesModel = new ModelSlides($this);
|
||||
$newSlideId = $slidesModel->copyTo($slideId);
|
||||
|
||||
Notification::success(n2_('Slide duplicated.'));
|
||||
|
||||
$sliderID = Request::$REQUEST->getInt("sliderid");
|
||||
|
||||
$groupData = $this->getGroupData($sliderID);
|
||||
|
||||
$this->redirect($this->getUrlSlideEdit($newSlideId, $sliderID, $groupData['group_id']));
|
||||
}
|
||||
|
||||
$this->redirect($this->getUrlDashboard());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Nextend\SmartSlider3\Application\Admin\Slides;
|
||||
|
||||
/**
|
||||
* @var $this ViewAjaxSlideBox
|
||||
*/
|
||||
|
||||
|
||||
$this->renderSlideBlock();
|
@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace Nextend\SmartSlider3\Application\Admin\Slides;
|
||||
|
||||
|
||||
use Nextend\Framework\Asset\Js\Js;
|
||||
use Nextend\Framework\Platform\Platform;
|
||||
use Nextend\Framework\Request\Request;
|
||||
use Nextend\Framework\View\Html;
|
||||
use Nextend\SmartSlider3\Application\Model\ModelLicense;
|
||||
use Nextend\SmartSlider3\Settings;
|
||||
use Nextend\SmartSlider3\SmartSlider3Info;
|
||||
use Nextend\SmartSlider3Pro\LayerAnimation\LayerAnimationStorage;
|
||||
|
||||
/**
|
||||
* @var $this ViewSlidesEdit
|
||||
*/
|
||||
|
||||
|
||||
JS::addGlobalInline('document.documentElement.classList.add("n2_html--application-only");');
|
||||
|
||||
$externals = esc_attr(Settings::get('external-css-files'));
|
||||
if (!empty($externals)) {
|
||||
$externals = explode("\n", $externals);
|
||||
foreach ($externals as $external) {
|
||||
echo "<link rel='stylesheet' href='" . esc_url($external) . "' type='text/css' media='all'>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$slider = $this->frontendSlider;
|
||||
|
||||
$renderedSlider = $this->renderedSlider;
|
||||
?>
|
||||
|
||||
<form id="n2-ss-form-slide-edit" action="#" method="post">
|
||||
<?php
|
||||
$this->formManager->render();
|
||||
?>
|
||||
</form>
|
||||
|
||||
<div id='n2-ss-slide-canvas-container' class='n2_slide_editor_slider'>
|
||||
<div class="n2_slide_editor_slider__editor" style="width: <?php esc_attr($slider->features->responsive->sizes['desktopPortrait']['width']); ?>px">
|
||||
<div class="n2_slide_editor_slider__editor_inner">
|
||||
<?php
|
||||
// PHPCS - Content already escaped
|
||||
echo $renderedSlider; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
$fillMode = $slider->params->get('backgroundMode', 'fill');
|
||||
if ($fillMode == 'fixed' || $fillMode == 'tile') {
|
||||
$fillMode = 'fill';
|
||||
}
|
||||
|
||||
$options = array(
|
||||
'isUploadDisabled' => defined('N2_IMAGE_UPLOAD_DISABLE'),
|
||||
'slideBackgroundMode' => $fillMode,
|
||||
'settingsGoProUrl' => SmartSlider3Info::getProUrlPricing(array(
|
||||
'utm_source' => 'go-pro-button-editor-settings',
|
||||
'utm_medium' => 'smartslider-' . Platform::getName() . '-' . SmartSlider3Info::$plan,
|
||||
'utm_campaign' => SmartSlider3Info::$campaign
|
||||
))
|
||||
);
|
||||
if (!defined('N2_IMAGE_UPLOAD_DISABLE')) {
|
||||
$options['uploadUrl'] = $this->createAjaxUrl(array('browse/upload'));
|
||||
$options['uploadDir'] = 'slider' . $slider->sliderId;
|
||||
}
|
||||
$options['sectionLibraryUrl'] = 'https://smartslider3.com/slides/v2/free';
|
||||
$options['sectionLibraryGoProUrl'] = SmartSlider3Info::getProUrlPricing(array(
|
||||
'utm_source' => 'go-pro-button-section-library',
|
||||
'utm_medium' => 'smartslider-' . Platform::getName() . '-' . SmartSlider3Info::$plan,
|
||||
'utm_campaign' => SmartSlider3Info::$campaign
|
||||
));
|
||||
|
||||
|
||||
|
||||
JS::addInline('new _N2.SlideEdit(' . json_encode(array(
|
||||
'ajaxUrl' => $this->getAjaxUrl(),
|
||||
'slideAsFile' => intval(Settings::get('slide-as-file', 0)),
|
||||
'nextendAction' => Request::$GET->getCmd('nextendaction'),
|
||||
'previewInNewWindow' => !!Settings::get('preview-new-window', 0),
|
||||
'previewUrl' => $this->getUrlPreviewSlider($slider->data->get('id'), $this->getSlideID()),
|
||||
'sliderElementID' => $slider->elementId,
|
||||
'slideEditorOptions' => $options
|
||||
)) . ');');
|
@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\SmartSlider3\Application\Admin\Slides;
|
||||
|
||||
|
||||
use Nextend\Framework\View\AbstractViewAjax;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Slide\SlideBox\BlockSlideBox;
|
||||
use Nextend\SmartSlider3\Slider\Feature\Optimize;
|
||||
use Nextend\SmartSlider3\Slider\Slide;
|
||||
use Nextend\SmartSlider3\Slider\Slider;
|
||||
|
||||
class ViewAjaxSlideBox extends AbstractViewAjax {
|
||||
|
||||
protected $groupID = 0;
|
||||
|
||||
/** @var Slider */
|
||||
protected $slider;
|
||||
|
||||
/** @var Slide */
|
||||
protected $slide;
|
||||
|
||||
/** @var Optimize */
|
||||
protected $optimize;
|
||||
|
||||
public function display() {
|
||||
|
||||
return $this->render('AjaxSlideBox');
|
||||
}
|
||||
|
||||
public function renderSlideBlock() {
|
||||
|
||||
$blockSlideBox = new BlockSlideBox($this);
|
||||
|
||||
$blockSlideBox->setGroupID($this->groupID);
|
||||
$blockSlideBox->setSlider($this->slider);
|
||||
$blockSlideBox->setSlide($this->slide);
|
||||
$blockSlideBox->setOptimize($this->optimize);
|
||||
|
||||
$blockSlideBox->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $groupID
|
||||
*/
|
||||
public function setGroupID($groupID) {
|
||||
$this->groupID = $groupID;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Slider
|
||||
*/
|
||||
public function getSlider() {
|
||||
return $this->slider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Slider $slider
|
||||
*/
|
||||
public function setSlider($slider) {
|
||||
$this->slider = $slider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Slide
|
||||
*/
|
||||
public function getSlide() {
|
||||
return $this->slide;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Slide $slide
|
||||
*/
|
||||
public function setSlide($slide) {
|
||||
$this->slide = $slide;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Optimize
|
||||
*/
|
||||
public function getOptimize() {
|
||||
return $this->optimize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Optimize $optimize
|
||||
*/
|
||||
public function setOptimize($optimize) {
|
||||
$this->optimize = $optimize;
|
||||
}
|
||||
}
|
@ -0,0 +1,279 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Nextend\SmartSlider3\Application\Admin\Slides;
|
||||
|
||||
|
||||
use Nextend\Framework\Request\Request;
|
||||
use Nextend\Framework\Sanitize;
|
||||
use Nextend\Framework\View\AbstractView;
|
||||
use Nextend\SmartSlider3\Application\Admin\FormManager\FormManagerSlide;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Core\Header\BlockHeader;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Core\TopBarGroup\BlockTopBarGroup;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Forms\Button\BlockButton;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Forms\Button\BlockButtonBack;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Forms\Button\BlockButtonPlainIcon;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Forms\Button\BlockButtonSave;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Forms\Button\BlockButtonSpacer;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Slide\AddLayer\BlockAddLayer;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Slide\EditorOverlay\BlockEditorOverlay;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Slide\LayerWindow\BlockLayerWindow;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Slide\SlideManager\BlockSlideManager;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Slider\DeviceZoom\BlockDeviceZoom;
|
||||
use Nextend\SmartSlider3\Application\Admin\Layout\LayoutEditor;
|
||||
use Nextend\SmartSlider3\Application\Admin\TraitAdminUrl;
|
||||
use Nextend\SmartSlider3\Application\Model\ModelSlides;
|
||||
use Nextend\SmartSlider3\Slider\Admin\AdminSlider;
|
||||
use Nextend\SmartSlider3\Slider\Slider;
|
||||
|
||||
class ViewSlidesEdit extends AbstractView {
|
||||
|
||||
use TraitAdminUrl;
|
||||
|
||||
/** @var LayoutEditor */
|
||||
protected $layout;
|
||||
|
||||
/**
|
||||
* @var BlockEditorOverlay
|
||||
*/
|
||||
protected $editorOverlay;
|
||||
|
||||
/** @var ModelSlides */
|
||||
protected $model;
|
||||
|
||||
/**
|
||||
* @var Slider
|
||||
*/
|
||||
protected $frontendSlider;
|
||||
|
||||
/**
|
||||
* @var string contains already escaped data
|
||||
*/
|
||||
protected $renderedSlider;
|
||||
|
||||
protected $groupID = 0;
|
||||
|
||||
protected $groupTitle = '';
|
||||
|
||||
protected $slider;
|
||||
|
||||
protected $slide = false;
|
||||
|
||||
/**
|
||||
* @var BlockHeader
|
||||
*/
|
||||
protected $blockHeader;
|
||||
|
||||
/**
|
||||
* @var FormManagerSlide
|
||||
*/
|
||||
protected $formManager;
|
||||
|
||||
public function __construct($controller) {
|
||||
parent::__construct($controller);
|
||||
|
||||
$this->model = new ModelSlides($this);
|
||||
|
||||
}
|
||||
|
||||
public function display() {
|
||||
|
||||
$locale = setlocale(LC_NUMERIC, 0);
|
||||
setlocale(LC_NUMERIC, "C");
|
||||
|
||||
$this->layout = new LayoutEditor($this);
|
||||
|
||||
$this->editorOverlay = new BlockEditorOverlay($this);
|
||||
$this->layout->setEditorOverlay($this->editorOverlay);
|
||||
|
||||
$this->frontendSlider = new AdminSlider($this->MVCHelper, Request::$GET->getInt('sliderid'), array(
|
||||
'disableResponsive' => true
|
||||
));
|
||||
$this->frontendSlider->setEditedSlideID($this->getSlideID());
|
||||
$this->frontendSlider->initSlider();
|
||||
$this->frontendSlider->initSlides();
|
||||
|
||||
/**
|
||||
* Layer window should be rendered before the slider render as layers items might add CSS and JS codes to it.
|
||||
*/
|
||||
$layerWindowBlock = new BlockLayerWindow($this);
|
||||
$layerWindowBlock->setRenderableAdminSlider($this->frontendSlider);
|
||||
$this->editorOverlay->setContentLayerWindow($layerWindowBlock->toHTML());
|
||||
|
||||
$this->frontendSlider->initAll();
|
||||
$this->frontendSlider->addScript('new _N2.DeviceChanger(this);');
|
||||
$this->renderedSlider = $this->frontendSlider->render();
|
||||
|
||||
$this->formManager = new FormManagerSlide($this, $this->groupID, $this->frontendSlider, $this->slide);
|
||||
|
||||
$this->layout->addBreadcrumb(n2_('Dashboard'), 'ssi_16 ssi_16--dashboard', $this->getUrlDashboard());
|
||||
|
||||
if ($this->groupID) {
|
||||
$this->layout->addBreadcrumb(Sanitize::esc_html($this->groupTitle), 'ssi_16 ssi_16--folderclosed', $this->getUrlSliderEdit($this->groupID));
|
||||
}
|
||||
|
||||
$this->layout->addBreadcrumb(Sanitize::esc_html($this->slider['title']), 'ssi_16 ssi_16--image', $this->getUrlSliderEdit($this->slider['id'], $this->groupID));
|
||||
|
||||
$this->addActiveBreadcrumb();
|
||||
|
||||
if (!empty($this->slide['generator_id'])) {
|
||||
$this->layout->addBreadcrumb(n2_('Generator'), 'ssi_16 ssi_16--cog', $this->getUrlGeneratorEdit($this->slide['generator_id'], $this->groupID));
|
||||
}
|
||||
|
||||
|
||||
$slideManager = new BlockSlideManager($this);
|
||||
$slideManager->setGroupID($this->groupID);
|
||||
$slideManager->setSliderID($this->slider['id']);
|
||||
$slideManager->setBreadcrumbOpener(true);
|
||||
|
||||
$this->editorOverlay->setSlideManager($slideManager);
|
||||
|
||||
|
||||
$this->renderTopBar();
|
||||
|
||||
$blockAddLayer = new BlockAddLayer($this);
|
||||
$blockAddLayer->setSliderType($this->frontendSlider->data->get('type'));
|
||||
|
||||
$this->editorOverlay->setBlockAddLayer($blockAddLayer);
|
||||
|
||||
$this->layout->addContent($this->render('Edit'));
|
||||
|
||||
$this->renderLayout();
|
||||
|
||||
setlocale(LC_NUMERIC, $locale);
|
||||
}
|
||||
|
||||
protected function renderLayout() {
|
||||
|
||||
$this->layout->render();
|
||||
}
|
||||
|
||||
protected function addActiveBreadcrumb() {
|
||||
|
||||
$breadCrumb = $this->layout->addBreadcrumb(n2_('Slides') . '<i class="ssi_16 ssi_16--selectarrow"></i>', 'ssi_16 ssi_16--slides', '#');
|
||||
|
||||
$breadCrumb->addClass('n2_nav_bar__breadcrumb_button_slides');
|
||||
$breadCrumb->setIsActive(true);
|
||||
}
|
||||
|
||||
private function renderTopBar() {
|
||||
|
||||
$topBar = $this->editorOverlay->getTopBar();
|
||||
|
||||
$buttonSave = new BlockButtonSave($this);
|
||||
$buttonSave->addClass('n2_button--inactive');
|
||||
$buttonSave->addClass('n2_slide_settings_save');
|
||||
$topBar->addPrimaryBlock($buttonSave);
|
||||
|
||||
$buttonBack = new BlockButtonBack($this);
|
||||
$buttonBack->setUrl($this->getUrlSliderEdit($this->getSliderID(), $this->groupID));
|
||||
$buttonBack->addClass('n2_slide_settings_back');
|
||||
$topBar->addPrimaryBlock($buttonBack);
|
||||
|
||||
if ($this->slide && $this->slide['generator_id'] > 0) {
|
||||
$buttonStaticSave = new BlockButton($this);
|
||||
$buttonStaticSave->setLabel(n2_('Static save'));
|
||||
$buttonStaticSave->addClass('n2_slide_generator_static_save');
|
||||
$topBar->addPrimaryBlock($buttonStaticSave);
|
||||
}
|
||||
|
||||
$narrowGroup = new BlockTopBarGroup($this);
|
||||
$narrowGroup->setNarrow();
|
||||
|
||||
$buttonRedo = new BlockButtonPlainIcon($this);
|
||||
$buttonRedo->addClass('n2_top_bar_button_icon');
|
||||
$buttonRedo->addClass('n2_ss_history_action');
|
||||
$buttonRedo->addClass('n2_ss_history_action--redo');
|
||||
$buttonRedo->setIcon('ssi_24 ssi_24--redo');
|
||||
$buttonRedo->addAttribute('data-n2tip', n2_('Redo'));
|
||||
$buttonRedo->addAttribute('data-n2tipv', -20);
|
||||
$narrowGroup->addBlock($buttonRedo);
|
||||
|
||||
$buttonUndo = new BlockButtonPlainIcon($this);
|
||||
$buttonUndo->addClass('n2_top_bar_button_icon');
|
||||
$buttonUndo->addClass('n2_ss_history_action');
|
||||
$buttonUndo->addClass('n2_ss_history_action--undo');
|
||||
$buttonUndo->setIcon('ssi_24 ssi_24--undo');
|
||||
$buttonUndo->addAttribute('data-n2tip', n2_('Undo'));
|
||||
$buttonUndo->addAttribute('data-n2tipv', -20);
|
||||
$narrowGroup->addBlock($buttonUndo);
|
||||
|
||||
$topBar->addPrimaryBlock($narrowGroup);
|
||||
|
||||
$spacer = new BlockButtonSpacer($this);
|
||||
$spacer->setIsVisible(true);
|
||||
$topBar->addPrimaryBlock($spacer);
|
||||
|
||||
$deviceZoom = new BlockDeviceZoom($this);
|
||||
$topBar->addPrimaryBlock($deviceZoom);
|
||||
|
||||
$buttonPreview = new BlockButtonPlainIcon($this);
|
||||
$buttonPreview->addAttribute('id', 'n2-ss-preview');
|
||||
$buttonPreview->addClass('n2_top_bar_button_icon');
|
||||
$buttonPreview->addClass('n2_top_bar_main__preview');
|
||||
$buttonPreview->setIcon('ssi_24 ssi_24--preview');
|
||||
$buttonPreview->addAttribute('data-n2tip', n2_('Preview'));
|
||||
$buttonPreview->setUrl($this->getUrlPreviewIndex($this->getSliderID()));
|
||||
$topBar->addPrimaryBlock($buttonPreview);
|
||||
|
||||
}
|
||||
|
||||
public function getModel() {
|
||||
|
||||
return $this->model;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $groupID
|
||||
* @param string $groupTitle
|
||||
*/
|
||||
public function setGroupData($groupID, $groupTitle) {
|
||||
$this->groupID = $groupID;
|
||||
$this->groupTitle = $groupTitle;
|
||||
}
|
||||
|
||||
public function getSliderID() {
|
||||
return $this->slider['id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $slider
|
||||
*/
|
||||
public function setSlider($slider) {
|
||||
$this->slider = $slider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $slide
|
||||
*/
|
||||
public function setSlide($slide) {
|
||||
$this->slide = $slide;
|
||||
}
|
||||
|
||||
public function getSlideID() {
|
||||
|
||||
return $this->slide['id'];
|
||||
}
|
||||
|
||||
public function getAjaxUrl() {
|
||||
if ($this->slide) {
|
||||
return $this->createAjaxUrl(array(
|
||||
'slides/edit',
|
||||
array(
|
||||
'groupID' => $this->groupID,
|
||||
'sliderid' => $this->getSliderID(),
|
||||
'slideid' => $this->getSlideID()
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
return $this->createAjaxUrl(array(
|
||||
'slides/create',
|
||||
array(
|
||||
'groupID' => $this->groupID,
|
||||
'sliderid' => $this->getSliderID(),
|
||||
'slideid' => $this->getSlideID()
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user