示例#1
0
 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());
     }
 }
示例#3
0
 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();
         }
     }
 }
示例#4
0
 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);
 }
示例#5
0
<?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);
}
示例#6
0
 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());
         }
     }
 }
示例#7
0
<?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);
示例#8
0
 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"));
     }
 }
示例#9
0
 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;
 }
示例#10
0
 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;
 }
示例#11
0
 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;
     }
 }