public function actionEdit() { if ($this->validatePermission('smartslider_edit')) { $generatorId = N2Request::getInt('generator_id'); $generatorModel = new N2SmartsliderGeneratorModel(); $generator = $generatorModel->get($generatorId); if ($this->validateDatabase($generator)) { $slidesModel = new N2SmartsliderSlidesModel(); $slides = $slidesModel->getAll(-1, 'OR generator_id = ' . $generator['id'] . ''); if (count($slides) > 0) { $slide = $slides[0]; if (N2Request::getInt('save')) { $request = new N2Data(N2Request::getVar('generator')); $slideParams = new N2Data($slide['params'], true); $slideParams->set('record-slides', $request->get('record-slides', 1)); $slidesModel->updateParams($slide['id'], $slideParams->toArray()); $request->un_set('record-slides'); $generatorModel->save($generatorId, $request->toArray()); N2SmartsliderSlidesModel::markChanged($slide['slider']); N2Message::success(n2_('Generator updated and cache cleared.')); $this->redirect(array("generator/edit", array("generator_id" => $generatorId)), 302, true); } N2Request::set('sliderid', $slide['slider']); $this->addView("../../inline/_sliders", array("appObj" => $this), "sidebar"); $this->addView("edit", array("generatorModel" => $generatorModel, "generator" => $generator, "slide" => $slide)); $this->render(); } else { $this->redirect(array("sliders/index"), 302, true); } } else { $this->redirect(array("sliders/index"), 302, true); } } }
public function createGenerator($sliderId, $params) { $data = new N2Data($params); unset($params['type']); unset($params['group']); unset($params['record-slides']); try { $generatorId = $this->_create($data->get('type'), $data->get('group'), json_encode($params)); $info = $this->getGeneratorInfo($data->get('group'), $data->get('type')); $slideData = self::getLayout($info->type); /*if (self::$layouts[$info->type]) { $slideData = json_decode(self::$layouts[$info->type], true); } else { $slideData = array( 'title' => 'title', 'slide' => array(), 'description' => '', 'thumbnail' => '', 'published' => 1 ); }*/ $slideData['published'] = '1'; $slideData['publishdates'] = '|*|'; $slideData['generator_id'] = $generatorId; $slideData['record-slides'] = intval($data->get('record-slides', 1)); $slideData['slide'] = json_encode($slideData['slide']); $slidesModel = new N2SmartsliderSlidesModel(); $slideId = $slidesModel->create($sliderId, $slideData, false); return array('slideId' => $slideId, 'generatorId' => $generatorId); } catch (Exception $e) { throw new Exception($e->getMessage()); } }
public function actionSlide() { if ($this->validateToken() && $this->validatePermission('smartslider_edit')) { $sliderId = N2Request::getInt('sliderId'); $slideId = N2Request::getInt('slideId'); if ($sliderId) { $slidesData = array(); $slidesModel = new N2SmartsliderSlidesModel(); $_slide = N2Request::getVar('slide'); if (is_array($_slide)) { $slide = $slidesModel->getRowFromPost($sliderId, $_slide); if ($slideId) { $slide['id'] = $slideId; $slidesData[$slideId] = $slide; } else { $slide['id'] = '-1000'; $slidesData['add'] = $slide; } } $this->addView("slide", array('slidesData' => $slidesData, 'sliderId' => $sliderId)); $this->render(); } } }
public function actionQuickEdit() { $this->validateToken(); $this->validatePermission('smartslider_edit'); $sliderId = N2Request::getInt('sliderid'); $this->validateVariable($sliderId > 0, 'Slider'); $slidesModel = new N2SmartsliderSlidesModel(); $slides = $slidesModel->getAll($sliderId); $changed = json_decode(base64_decode(N2Request::getVar('changed')), true); if (!$changed || !is_array($changed)) { $changed = array(); } foreach ($slides as $slide) { if (!empty($changed[$slide['id']])) { $slidesModel->quickSlideUpdate($slide, $changed[$slide['id']]['name'], $changed[$slide['id']]['description'], $changed[$slide['id']]['link']); } } $sliderObj = new N2SmartSlider($sliderId, array()); $slides = $slidesModel->getAll($sliderId); $slidesObj = array(); foreach ($slides as $i => $slide) { if (!empty($changed[$slide['id']])) { $slidesObj[$i] = new N2SmartSliderSlide($sliderObj, $slide); $slidesObj[$i]->initGenerator(); } } $updateSlideBox = array(); /** @var N2SmartSliderSlide $slideObj */ foreach ($slidesObj as $slideObj) { $slideObj->fillSample(); $updateSlideBox[$slideObj->id] = array('title' => $slideObj->getTitle() . ($slideObj->hasGenerator() ? ' [' . $slideObj->getSlideStat() . ']' : ''), 'rawTitle' => $slideObj->getRawTitle(), 'rawDescription' => $slideObj->getRawDescription(), 'rawLink' => $slideObj->getRawLink()); } N2Message::success(sprintf(n2_('%d slide(s) modified!'), count($slidesObj))); $this->response->respond($updateSlideBox); }
<?php $slidesModel = new N2SmartsliderSlidesModel(); $slides = $slidesModel->getAll($slider['id']); $sliderObj = new N2SmartSlider($slider['id'], array()); ?> <div id="n2-ss-slides" class="<?php if (count($slides)) { echo "n2-ss-has-slides"; } ?> "> <div class="n2-ss-slides-container"> <?php $parameters = array(); if (N2Platform::$isWordpress) { $parameters['nonce'] = wp_create_nonce('internal-linking'); $parameters['wpAjaxUrl'] = admin_url('admin-ajax.php'); } N2JS::addInline('new NextendSmartSliderAdminSidebarSlides("' . $this->appType->router->createAjaxUrl(array("slides/index", array("sliderid" => $slider['id']))) . '","' . N2Base::getApplication('system')->getApplicationType('backend')->router->createUrl("content/search") . '", ' . json_encode($parameters) . ', ' . (defined('N2_IMAGE_UPLOAD_DISABLE') ? 1 : 0) . ", '" . N2Base::getApplication('system')->router->createAjaxUrl(array('browse/upload')) . "', 'slider" . $slider['id'] . "');"); N2Localization::addJS(array('Add video', 'Video url', 'Examples', 'Add post', 'Keyword', 'No search term specified. Showing recent items.', 'Showing items match for "%s"', 'Select')); $slidesObj = array(); foreach ($slides as $i => $slide) { $slidesObj[$i] = new N2SmartSliderSlide($sliderObj, $slide); $slidesObj[$i]->initGenerator(); } foreach ($slidesObj as $slideObj) { $slideObj->fillSample(); echo N2SmartsliderSlidesModel::box($slideObj, $sliderObj, $this->widget, $this->appType); }
public function create($saveAsFile = false) { $this->backup = new N2SmartSliderBackup(); $slidersModel = new N2SmartsliderSlidersModel(); if ($this->backup->slider = $slidersModel->get($this->sliderId)) { $this->backup->slider['params'] = new N2Data($this->backup->slider['params'], true); $slidesModel = new N2SmartsliderSlidesModel(); $this->backup->slides = $slidesModel->getAll($this->backup->slider['id']); if (empty($this->backup->slider['type'])) { $this->backup->slider['type'] = 'simple'; } $class = 'N2SSPluginType' . $this->backup->slider['type']; N2Loader::importPath(call_user_func(array($class, "getPath")) . NDS . 'backup'); $class = 'N2SmartSliderBackup' . $this->backup->slider['type']; call_user_func_array(array($class, 'export'), array($this, $this->backup->slider)); $enabledWidgets = array(); $plugins = array(); N2Plugin::callPlugin('sswidget', 'onWidgetList', array(&$plugins)); $params = $this->backup->slider['params']; foreach ($plugins as $k => $v) { $widget = $params->get('widget' . $k); if ($widget && $widget != 'disabled') { $enabledWidgets[$k] = $widget; } } foreach ($enabledWidgets as $k => $v) { $class = 'N2SSPluginWidget' . $k . $v; if (class_exists($class, false)) { $params->fillDefault(call_user_func(array($class, 'getDefaults'))); call_user_func_array(array($class, 'prepareExport'), array($this, &$params)); } else { unset($enabledWidgets); } } for ($i = 0; $i < count($this->backup->slides); $i++) { $slide = $this->backup->slides[$i]; self::addImage($slide['thumbnail']); $slide['params'] = new N2Data($slide['params'], true); self::addImage($slide['params']->get('backgroundImage')); self::addLightbox($slide['params']->get('link')); N2SmartSliderLayer::prepareExport($this, $slide['slide']); if (!empty($slide['generator_id'])) { N2Loader::import("models.generator", "smartslider"); $generatorModel = new N2SmartsliderGeneratorModel(); $this->backup->generators[] = $generatorModel->get($slide['generator_id']); } } $zip = new N2ZipFile(); $this->images = array_unique($this->images); $this->visuals = array_unique($this->visuals); foreach ($this->images as $image) { $this->backup->NextendImageManager_ImageData[$image] = N2ImageManager::getImageData($image, true); if ($this->backup->NextendImageManager_ImageData[$image]) { self::addImage($this->backup->NextendImageManager_ImageData[$image]['tablet']['image']); self::addImage($this->backup->NextendImageManager_ImageData[$image]['mobile']['image']); } else { unset($this->backup->NextendImageManager_ImageData[$image]); } } $this->images = array_unique($this->images); $usedNames = array(); foreach ($this->images as $image) { $file = N2ImageHelper::fixed($image, true); if (N2Filesystem::fileexists($file)) { $fileName = strtolower(basename($file)); while (in_array($fileName, $usedNames)) { $fileName = $this->uniqueCounter . $fileName; $this->uniqueCounter++; } $usedNames[] = $fileName; $this->backup->imageTranslation[$image] = $fileName; $zip->addFile(file_get_contents($file), 'images/' . $fileName); } } foreach ($this->visuals as $visual) { $this->backup->visuals[] = N2StorageSectionAdmin::getById($visual); } $zip->addFile(serialize($this->backup), 'data'); if (!$saveAsFile) { ob_end_clean(); header('Content-disposition: attachment; filename=' . preg_replace('/[^a-zA-Z0-9_-]/', '', $this->backup->slider['title']) . '.ss3'); header('Content-type: application/zip'); echo $zip->file(); n2_exit(true); } else { $file = preg_replace('/[^a-zA-Z0-9_-]/', '', $this->backup->slider['title']) . '.ss3'; $folder = N2Platform::getPublicDir(); $folder .= '/export/'; if (!N2Filesystem::existsFolder($folder)) { N2Filesystem::createFolder($folder); } N2Filesystem::createFile($folder . $file, $zip->file()); } } }
<?php /** * @author Roland Soos * @copyright (C) 2015 Nextendweb.com * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **/ defined('_JEXEC') or die('Restricted access'); echo N2SmartsliderSlidesModel::box($slide, $slider, $this->widget, $this->appType);
public function actionUnPublish() { if ($this->validateToken() && $this->validatePermission('smartslider_edit')) { if ($slideId = N2Request::getInt('slideid')) { $slidesModel = new N2SmartsliderSlidesModel(); $slidesModel->unpublish($slideId); $this->redirect(N2Request::getUrlReferrer()); } $this->redirect(array("sliders/index")); } }
public function import($filePathOrData, $imageImportMode = 'clone', $linkedVisuals = 1, $isFilePath = true) { $zip = new N2ZipRead(); $importData = $zip->read_zip($filePathOrData, $isFilePath); if (!isset($importData['data'])) { if (array_key_exists("slider.ss2", $importData)) { N2Message::error(n2_('You can\'t import sliders from Smart Slider 2.')); } return false; } $this->backup = unserialize($importData['data']); $this->sectionTranslation = array(); $this->importVisuals($this->backup->visuals, $linkedVisuals); $sliderModel = new N2SmartsliderSlidersModel(); if ($this->restore) { $this->sliderId = $sliderModel->restore($this->backup->slider); } else { $this->sliderId = $sliderModel->import($this->backup->slider); } if (!$this->sliderId) { return false; } switch ($imageImportMode) { case 'clone': $images = $importData['images']; $imageStore = new N2StoreImage('slider' . $this->sliderId, true); foreach ($images as $file => $content) { $localImage = $imageStore->makeCache($file, $content); if ($localImage) { $this->imageTranslation[$file] = N2ImageHelper::dynamic(N2Uri::pathToUri($localImage)); } else { $this->imageTranslation[$file] = $file; } if (!$this->imageTranslation[$file]) { $this->imageTranslation[$file] = array_search($file, $this->backup->imageTranslation); } } break; case 'update': $keys = array_keys($this->backup->NextendImageHelper_Export); $values = array_values($this->backup->NextendImageHelper_Export); foreach ($this->backup->imageTranslation as $image => $value) { $this->imageTranslation[$value] = str_replace($keys, $values, $image); } break; default: break; } foreach ($this->backup->NextendImageManager_ImageData as $image => $data) { $data['tablet']['image'] = $this->fixImage($data['tablet']['image']); $data['mobile']['image'] = $this->fixImage($data['mobile']['image']); N2ImageManager::addImageData($this->fixImage($image), $data); } unset($importData); if (empty($this->backup->slider['type'])) { $this->backup->slider['type'] = 'simple'; } $class = 'N2SSPluginType' . $this->backup->slider['type']; N2Loader::importPath(call_user_func(array($class, "getPath")) . NDS . 'backup'); $class = 'N2SmartSliderBackup' . $this->backup->slider['type']; call_user_func_array(array($class, 'import'), array($this, &$this->backup->slider)); $enabledWidgets = array(); $plugins = array(); N2Plugin::callPlugin('sswidget', 'onWidgetList', array(&$plugins)); $params = $this->backup->slider['params']; foreach ($plugins as $k => $v) { $widget = $params->get('widget' . $k); if ($widget && $widget != 'disabled') { $enabledWidgets[$k] = $widget; } } foreach ($enabledWidgets as $k => $v) { $class = 'N2SSPluginWidget' . $k . $v; if (class_exists($class, false)) { $params->fillDefault(call_user_func(array($class, 'getDefaults'))); call_user_func_array(array($class, 'prepareImport'), array($this, $params)); } else { unset($enabledWidgets); } } $sliderModel->importUpdate($this->sliderId, $params); $generatorTranslation = array(); N2Loader::import("models.generator", "smartslider"); $generatorModel = new N2SmartsliderGeneratorModel(); foreach ($this->backup->generators as $generator) { $generatorTranslation[$generator['id']] = $generatorModel->import($generator); } $slidesModel = new N2SmartsliderSlidesModel(); for ($i = 0; $i < count($this->backup->slides); $i++) { $slide = $this->backup->slides[$i]; $slide['params'] = new N2Data($slide['params'], true); $slide['thumbnail'] = $this->fixImage($slide['thumbnail']); $slide['params']->set('backgroundImage', $this->fixImage($slide['params']->get('backgroundImage'))); $slide['params']->set('link', $this->fixLightbox($slide['params']->get('link'))); $slide['slide'] = N2SmartSliderLayer::prepareImport($this, $slide['slide']); if (isset($generatorTranslation[$slide['generator_id']])) { $slide['generator_id'] = $generatorTranslation[$slide['generator_id']]; } $slidesModel->import($slide, $this->sliderId); } return $this->sliderId; }
function duplicate($id) { $slider = $this->get($id); unset($slider['id']); $slider['title'] .= ' - copy'; $slider['time'] = date('Y-m-d H:i:s', N2Platform::getTime()); try { $this->db->insert($slider); $newSliderId = $this->db->insertId(); } catch (Exception $e) { throw new Exception($e->getMessage()); } if (!$newSliderId) { return false; } $slidesModel = new N2SmartsliderSlidesModel(); foreach ($slidesModel->getAll($id) as $slide) { $slidesModel->copy($slide['id'], $newSliderId); } return $newSliderId; }
protected function loadSlides($extend, $dummy) { $this->slider->_activeSlide = 0; $where = $this->slidesWhereQuery(); N2Loader::import("models.Slides", "smartslider"); $slidesModel = new N2SmartsliderSlidesModel(); $slideRows = $slidesModel->getAll($this->slider->sliderId, $where); if (isset($extend['add'])) { if (!is_array($slideRows)) { $slideRows = array(); } array_push($slideRows, $extend['add']); } if (count($slideRows) == 0 && $dummy) { $images = array('$ss$/admin/images/dummyslide.png', '$ss$/admin/images/dummyslide.png', '$ss$/admin/images/dummyslide.png'); for ($i = 0; $i <= 7; $i++) { $index = $i % count($images); $slideRows[] = $slidesModel->getRowFromPost($this->slider->sliderId, array('title' => 'Dummy slide #' . $i, 'publish_up' => '', 'publish_down' => '', 'generator_id' => 0, 'slide' => '', 'description' => '', 'thumbnail' => $images[$index], 'published' => 1, 'first' => 0, 'backgroundImage' => $images[$index]), false); $slideRows[$i]['id'] = $i; } } for ($i = 0; $i < count($slideRows); $i++) { if (isset($extend[$slideRows[$i]['id']])) { $slideRows[$i] = $extend[$slideRows[$i]['id']]; } $slide = $this->createSlide($slideRows[$i]); if ($slide->isVisible()) { $this->slides[] = $slide; } $this->allEnabledSlides[$i] = $slide; } }