This commit is contained in:
2024-05-20 15:37:46 +03:00
commit 00b7dbd0b7
10404 changed files with 3285853 additions and 0 deletions

View File

@ -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();
}
}
}

View File

@ -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());
}
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace Nextend\SmartSlider3\Application\Admin\Slides;
/**
* @var $this ViewAjaxSlideBox
*/
$this->renderSlideBlock();

View File

@ -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
)) . ');');

View File

@ -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;
}
}

View File

@ -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()
)
));
}
}