static function render($slider, $id, $params) { $shadow = $params->get(self::$key . 'shadow-image'); if (empty($shadow)) { $shadow = $params->get(self::$key . 'shadow'); if ($shadow == -1) { $shadow = null; } } if (!$shadow) { return ''; } N2JS::addFile(N2Filesystem::translate(dirname(__FILE__) . '/shadow/shadow.js'), $id); list($displayClass, $displayAttributes) = self::getDisplayAttributes($params, self::$key); list($style, $attributes) = self::getPosition($params, self::$key); $width = $params->get(self::$key . 'width'); if (is_numeric($width) || substr($width, -1) == '%' || substr($width, -2) == 'px') { $style .= 'width:' . $width . ';'; } else { $attributes['data-sswidth'] = $width; } $parameters = array('overlay' => $params->get(self::$key . 'position-mode') != 'simple' || 0, 'area' => intval($params->get(self::$key . 'position-area'))); N2JS::addInline('new NextendSmartSliderWidgetShadow("' . $id . '", ' . json_encode($parameters) . ');'); return N2Html::tag('div', $displayAttributes + $attributes + array('class' => $displayClass . "nextend-shadow", 'style' => $style), N2Html::image(N2ImageHelper::fixed($shadow), 'Shadow', array('style' => 'display: block; width:100%;max-width:none;', 'class' => 'n2-ow nextend-shadow-image'))); }
public static function fallback($root, $imageVars, $textVars = array()) { $return = ''; if (is_array($imageVars)) { foreach ($imageVars as $image) { if (!empty($image)) { $return = N2ImageHelper::dynamic($root . $image); break; } } if ($return == '' && !empty($textVars)) { foreach ($textVars as $text) { $imageInText = self::findImage($text); if (!empty($imageInText)) { $return = N2ImageHelper::dynamic($root . $imageInText); if ($return != '$/') { break; } else { $return = ''; } } } } if ($return != '') { if (strpos($return, '$/http:') !== false || strpos($return, '$/https:') !== false) { $return = substr($return, 2); } else { if (strpos($return, '$http:') !== false || strpos($return, '$https:') !== false || strpos($return, '$//') !== false) { $return = substr($return, 1); } } } } return $return; }
protected function getImageStyle() { $image = $this->getValue(); if (empty($image) || $image[0] == '{') { return ''; } return 'background-image:url(' . N2ImageHelper::fixed($image) . ');'; }
protected function renderType() { $params = $this->slider->params; N2JS::addFiles(N2Filesystem::translate(dirname(__FILE__) . "/gsap"), array("MainAnimationSimple.js", "TypeSimple.js", "ResponsiveSimple.js"), "smartslider-simple-type-frontend"); N2JS::addFiles(N2Filesystem::translate(dirname(__FILE__) . "/gsap"), array("BackgroundAnimation.js"), "smartslider-simple-type-frontend"); N2JS::addFiles(NEXTEND_SMARTSLIDER_ASSETS . "/js/animation", array("BackgroundAnimationAbstract.js", 'Flux.js'), "smartslider-simple-type-frontend"); $background = $params->get('background'); $css = $params->get('slider-css'); $slidecss = $params->get('slide-css'); if (!empty($background)) { $css = 'background-image: url(' . N2ImageHelper::fixed($background) . ');'; } $this->initBackgroundAnimation(); echo $this->openSliderElement(); ?> <div class="n2-ss-slider-1" style="<?php echo $css; ?> "> <?php echo $this->getBackgroundVideo($params); ?> <div class="n2-ss-slider-2"> <?php if ($this->backgroundAnimation) { ?> <div class="n2-ss-background-animation"></div> <?php } ?> <div class="n2-ss-slider-3" style="<?php echo $slidecss; ?> "> <?php echo $this->slider->staticHtml; foreach ($this->slider->slides as $i => $slide) { echo N2Html::tag('div', $slide->attributes + array('class' => 'n2-ss-slide n2-ss-canvas ' . $slide->classes, 'style' => $slide->style), $slide->background . $slide->getHTML()); } ?> </div> </div> </div> <?php $this->widgets->echoRemainder(); echo N2Html::closeTag('div'); $this->javaScriptProperties['mainanimation'] = array('type' => $params->get('animation'), 'duration' => intval($params->get('animation-duration')), 'delay' => intval($params->get('animation-delay')), 'ease' => $params->get('animation-easing'), 'parallax' => floatval($params->get('animation-parallax')), 'shiftedBackgroundAnimation' => $params->get('animation-shifted-background-animation')); $this->javaScriptProperties['mainanimation']['shiftedBackgroundAnimation'] = 0; $this->javaScriptProperties['carousel'] = intval($params->get('carousel')); $this->javaScriptProperties['dynamicHeight'] = intval($params->get('dynamic-height', '0')); $this->javaScriptProperties['dynamicHeight'] = 0; N2Plugin::callPlugin('nextendslider', 'onNextendSliderProperties', array(&$this->javaScriptProperties)); N2JS::addFirstCode("new NextendSmartSliderSimple('#{$this->slider->elementId}', " . json_encode($this->javaScriptProperties) . ");"); echo N2Html::clear(); }
function setFolder() { $folder = N2XmlHelper::getAttribute($this->_xml, 'folder'); if (!empty($folder) && $folder[0] != '$') { $folder = dirname($this->_form->_xmlfile) . '/' . $folder . '/'; } else { $folder = N2ImageHelper::fixed($folder, true); } $this->_folder = N2Filesystem::translate($folder); }
static function render($slider, $id, $params) { $html = ''; $play = $params->get(self::$key . 'play-image'); $playColor = $params->get(self::$key . 'play-color'); if (empty($play)) { $play = $params->get(self::$key . 'play'); if ($play == -1) { $play = null; } elseif ($play[0] != '$') { $play = N2Uri::pathToUri(dirname(__FILE__) . '/image/play/' . $play); } } if ($params->get(self::$key . 'mirror')) { $pause = str_replace('image/play/', 'image/pause/', $play); $pauseColor = $playColor; } else { $pause = $params->get(self::$key . 'pause-image'); $pauseColor = $params->get(self::$key . 'pause-color'); if (empty($pause)) { $pause = $params->get(self::$key . 'pause'); if ($pause == -1) { $pause = null; } elseif ($pause[0] != '$') { $pause = N2Uri::pathToUri(dirname(__FILE__) . '/image/pause/' . $pause); } } } $ext = pathinfo($play, PATHINFO_EXTENSION); if (substr($play, 0, 1) == '$' && $ext == 'svg') { list($color, $opacity) = N2Color::colorToSVG($playColor); $play = 'data:image/svg+xml;base64,' . base64_encode(str_replace(array('fill="#FFF"', 'opacity="1"'), array('fill="#' . $color . '"', 'opacity="' . $opacity . '"'), N2Filesystem::readFile(N2ImageHelper::fixed($play, true)))); } else { $play = N2ImageHelper::fixed($play); } $ext = pathinfo($pause, PATHINFO_EXTENSION); if (substr($pause, 0, 1) == '$' && $ext == 'svg') { list($color, $opacity) = N2Color::colorToSVG($pauseColor); $pause = 'data:image/svg+xml;base64,' . base64_encode(str_replace(array('fill="#FFF"', 'opacity="1"'), array('fill="#' . $color . '"', 'opacity="' . $opacity . '"'), N2Filesystem::readFile(N2ImageHelper::fixed($pause, true)))); } else { $pause = N2ImageHelper::fixed($pause); } if ($play && $pause) { N2CSS::addFile(N2Filesystem::translate(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'image' . DIRECTORY_SEPARATOR . 'style.css'), $id); N2JS::addFile(N2Filesystem::translate(dirname(__FILE__) . '/image/autoplay.js'), $id); list($displayClass, $displayAttributes) = self::getDisplayAttributes($params, self::$key); $styleClass = N2StyleRenderer::render($params->get(self::$key . 'style'), 'heading', $slider->elementId, 'div#' . $slider->elementId . ' '); list($style, $attributes) = self::getPosition($params, self::$key); N2JS::addInline('new NextendSmartSliderWidgetAutoplayImage("' . $id . '", ' . floatval($params->get(self::$key . 'responsive-desktop')) . ', ' . floatval($params->get(self::$key . 'responsive-tablet')) . ', ' . floatval($params->get(self::$key . 'responsive-mobile')) . ');'); $html = N2Html::tag('div', $displayAttributes + $attributes + array('class' => $displayClass . $styleClass . 'nextend-autoplay nextend-autoplay-image', 'style' => $style), N2Html::image($play, '', array('class' => 'nextend-autoplay-play n2-ow')) . N2Html::image($pause, '', array('class' => 'nextend-autoplay-pause n2-ow'))); } return $html; }
public function actionGenerateImage() { $this->validateToken(); $device = N2Request::getVar('device'); $this->validateVariable($device == 'tablet' || $device == 'mobile', 'device'); $image = N2Request::getVar('image'); $this->validateVariable(!empty($image), 'image'); N2Loader::import('libraries.image.image'); $scale = array('tablet' => 0.5, 'mobile' => 0.3); $newImage = N2Image::scaleImage('image', $image, $scale[$device], true); $this->response->respond(array('image' => N2ImageHelper::fixed($newImage))); }
function generateOptions(&$xml) { $this->values = array(); $html = ''; foreach ($xml->option as $option) { $value = N2XmlHelper::getAttribute($option, 'value'); $selected = $this->isSelected($value); $this->values[] = $value; $html .= N2Html::tag("div", array("class" => "n2-radio-option n2-imagelist-option" . ($selected ? ' n2-active' : ''), "style" => "background-image:url(" . N2ImageHelper::fixed(N2XmlHelper::getAttribute($option, 'image')) . ");"), N2Html::tag('span', array(), (string) $option)); } return $html; }
public function actionSaveImage() { $this->validateToken(); N2Loader::import('libraries.image.aviary'); $image = N2Request::getVar('aviaryUrl'); $this->validateVariable(!empty($image), 'image'); require_once dirname(__FILE__) . '/Browse.php'; $root = N2Filesystem::getImagesFolder(); $folder = 'aviary'; $path = N2Filesystem::realpath($root . '/' . $folder); if ($path === false || $path == '') { N2Filesystem::createFolder($root . '/' . $folder); $path = N2Filesystem::realpath($root . '/' . $folder); } $tmp = tempnam(sys_get_temp_dir(), 'image-'); file_put_contents($tmp, file_get_contents($image)); $src = null; // Set variables for storage // fix file filename for query strings preg_match('/([^\\?]+)\\.(jpe?g|gif|png)\\b/i', $image, $matches); $file_array['name'] = basename($matches[1]); $file_array['tmp_name'] = $tmp; $file_array['size'] = filesize($tmp); $file_array['error'] = 0; try { $fileName = preg_replace('/[^a-zA-Z0-9_-]/', '', $file_array['name']); $upload = new N2BulletProof(); $file = $upload->uploadDir($path)->upload($file_array, $fileName); $src = N2ImageHelper::dynamic(N2Filesystem::pathToAbsoluteURL($file)); } catch (Exception $e) { N2Message::error($e->getMessage()); $this->response->error(); } if ($src) { $this->response->respond(array('image' => $src)); } else { N2Message::error(sprintf(n2_('Unexpected error: %s'), $image)); $this->response->error(); } }
private static function _search($keyword = '') { $result = array(); require_once JPATH_ROOT . '/components/com_content/helpers/route.php'; require_once JPATH_ADMINISTRATOR . '/components/com_content/models/articles.php'; $a = new ContentModelArticles(); $db = $a->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select($a->getState('list.select', 'a.id, a.title, a.introtext, a.images, a.alias, a.catid, a.language')); $query->from('#__content AS a'); // Join over the categories. $query->select('c.title AS category_title')->join('LEFT', '#__categories AS c ON c.id = a.catid'); if (!empty($keyword)) { if (stripos($keyword, 'id:') === 0) { $query->where('a.id = ' . (int) substr($keyword, 3)); } elseif (stripos($keyword, 'author:') === 0) { $keyword2 = $db->quote('%' . $db->escape(substr($keyword, 7), true) . '%'); $query->where('(ua.name LIKE ' . $keyword2 . ' OR ua.username LIKE ' . $keyword2 . ')'); } else { $keyword2 = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($keyword), true) . '%')); $query->where('(a.title LIKE ' . $keyword2 . ' OR a.alias LIKE ' . $keyword2 . ')'); } } $db->setQuery($query, 0, 10); $articles = $db->loadAssocList(); foreach ($articles as $article) { $images = new N2Data($article['images'], true); $image = $images->get('image_fulltext', $images->get('image_intro', '')); if (substr($image, 0, 2) != '//' && substr($image, 0, 4) != 'http') { $image = JUri::root(false) . $image; } $result[] = array('title' => $article['title'], 'description' => $article['introtext'], 'image' => N2ImageHelper::dynamic($image), 'link' => ContentHelperRoute::getArticleRoute($article['id'], $article['catid'], $article['language']), 'info' => $article['category_title']); } if (count($result) == 0 && !empty($keyword)) { return self::_search(); } return $result; }
public function renderGroupOption($group, $sources) { $button = false; $buttons = array(); foreach ($sources as $type => $info) { /** * @var $info N2GeneratorInfo */ if ($info->hasConfiguration) { $buttons[$this->appType->router->createUrl(array("generator/checkConfiguration", array("sliderid" => N2Request::getInt('sliderid'), "group" => $group, "type" => $type)))] = $info->title; } elseif (!$info->installed) { $button = N2Html::link(n2_("Visit site"), $info->readMore, array("target" => "_blank", "class" => "n2-button n2-button-big n2-button-grey")); break; } else { $buttons[$this->appType->router->createUrl(array("generator/createSettings", array("sliderid" => N2Request::getInt('sliderid'), "group" => $group, "type" => $type)))] = $info->title; } } if (!$button && ($count = count($buttons))) { if ($count == 1) { reset($buttons); $key = key($buttons); $button = N2Html::link($buttons[$key], $key, array("class" => "n2-button n2-button-small n2-button-blue n2-h5")); } else { $keys = array_keys($buttons); $actions = array(); for ($i = 0; $i < count($keys); $i++) { $actions[] = N2Html::link($buttons[$keys[$i]], $keys[$i], array('class' => 'n2-h4')); } ob_start(); $this->widget->init("buttonmenu", array("content" => N2Html::tag('div', array('class' => 'n2-button-menu'), N2Html::tag('div', array('class' => 'n2-button-menu-inner n2-border-radius'), implode('', $actions))))); $buttonMenu = ob_get_clean(); $button = N2Html::tag('div', array('class' => 'n2-button n2-button-with-menu n2-button-small n2-h5 n2-button-blue'), N2Html::link($buttons[$keys[0]], $keys[0], array('class' => 'n2-button-inner')) . $buttonMenu); } } $this->widget->init("box", array('attributes' => array('class' => 'n2-box-generator'), 'image' => N2ImageHelper::fixed(N2Uri::pathToUri(N2Filesystem::translate($info->path . '/../dynamic.png'))), 'firstCol' => $button)); }
protected static function optimizeImage($image, $data, $slider) { $lazyLoad = $slider->features->lazyLoad; $imagePath = N2ImageHelper::fixed($image, true); if ($imagePath[0] == '/' && $imagePath[1] != '/' && $lazyLoad->layerImageSizeBase64 && $lazyLoad->layerImageSizeBase64Size && filesize($imagePath) < $lazyLoad->layerImageSizeBase64Size) { return array('src' => N2Image::base64($imagePath, $image)); } if (!$lazyLoad->layerImageOptimize || !$data->get('image-optimize', 1)) { return array('src' => N2ImageHelper::fixed($image)); } $tablet = N2Image::scaleImage('image', $image, $lazyLoad->layerImageTablet); $mobile = N2Image::scaleImage('image', $image, $lazyLoad->layerImageMobile); if ($image == $tablet && $image == $mobile) { return array('src' => N2ImageHelper::fixed($image)); } return array('src' => N2Image::base64Transparent(), 'data-desktop' => N2ImageHelper::fixed($image), 'data-tablet' => N2ImageHelper::fixed($tablet), 'data-mobile' => N2ImageHelper::fixed($mobile), 'data-device' => '1'); }
public static function base64($imagePath, $image) { $pathInfo = pathinfo(parse_url($imagePath, PHP_URL_PATH)); $extension = self::validateExtension($pathInfo['extension']); if ($extension) { return 'data:image/' . $extension . ';base64,' . base64_encode(N2Filesystem::readFile($imagePath)); } return N2ImageHelper::fixed($image); }
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; }
private static function getHTML($id, &$params, $animation, $side, $image, $displayClass, $displayAttributes, $styleClass, $color = 'ffffffcc', $hover = 0, $hoverColor = 'ffffffcc') { list($style, $attributes) = self::getPosition($params, self::$key . $side . '-'); $imageHover = null; $ext = pathinfo($image, PATHINFO_EXTENSION); if (substr($image, 0, 1) == '$' && $ext == 'svg') { list($color, $opacity) = N2Color::colorToSVG($color); $content = N2Filesystem::readFile(N2ImageHelper::fixed($image, true)); $image = 'data:image/svg+xml;base64,' . base64_encode(str_replace(array('fill="#FFF"', 'opacity="1"'), array('fill="#' . $color . '"', 'opacity="' . $opacity . '"'), $content)); if ($hover) { list($color, $opacity) = N2Color::colorToSVG($hoverColor); $imageHover = 'data:image/svg+xml;base64,' . base64_encode(str_replace(array('fill="#FFF"', 'opacity="1"'), array('fill="#' . $color . '"', 'opacity="' . $opacity . '"'), $content)); } } else { $image = N2ImageHelper::fixed($image); } if ($imageHover === null) { $image = N2Html::image($image, 'arrow'); } else { $image = N2Html::image($image, 'arrow', array('class' => 'n2-arrow-normal-img')) . N2Html::image($imageHover, 'arrow', array('class' => 'n2-arrow-hover-img')); } if ($animation == 'none' || $animation == 'fade') { return N2Html::tag('div', $displayAttributes + $attributes + array('id' => $id . '-arrow-' . $side, 'class' => $displayClass . $styleClass . 'nextend-arrow n2-ib nextend-arrow-' . $side . ' nextend-arrow-animated-' . $animation, 'style' => $style), $image); } return N2Html::tag('div', $displayAttributes + $attributes + array('id' => $id . '-arrow-' . $side, 'class' => $displayClass . 'nextend-arrow n2-ib nextend-arrow-animated nextend-arrow-animated-' . $animation . ' nextend-arrow-' . $side, 'style' => $style), N2Html::tag('div', array('class' => $styleClass . ' n2-resize'), $image) . N2Html::tag('div', array('class' => $styleClass . ' n2-active n2-resize'), $image)); }
public static function SVGToBase64($image) { $ext = pathinfo($image, PATHINFO_EXTENSION); if (substr($image, 0, 1) == '$' && $ext == 'svg') { return 'data:image/svg+xml;base64,' . base64_encode(N2Filesystem::readFile(N2ImageHelper::fixed($image, true))); } return N2ImageHelper::fixed($image); }
public static function fixPreviewImages($matches) { return "url(" . N2ImageHelper::fixed($matches[1]) . ")"; }
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()); } } }
private function getDefaultImage($src, $deviceAttributes) { if (count($deviceAttributes) > 2 || $this->slider->features->lazyLoad->isEnabled > 0) { return N2Image::base64Transparent(); } else { return N2ImageHelper::fixed($src); } }
/** * @param $slide N2SmartSliderSlide * @param $slider N2SmartSliderAbstract * @param $widget * @param $appType * * @throws Exception */ public static function box($slide, $slider, $widget, $appType) { $lt = array(); if ($slide->isStatic()) { $lt[] = N2Html::tag('div', array('class' => 'n2-button-tag n2-button n2-button-x-small n2-sidebar-list-bg n2-uc n2-h5'), n2_('Static slide')); } else { $lt[] = N2Html::tag('div', array('class' => 'n2-button-tag n2-button n2-button-x-small n2-button-green n2-uc n2-h5 n2-slide-is-first'), n2_('First')); $lt[] = N2Html::tag('a', array('class' => 'n2-button n2-button-x-small n2-sidebar-list-bg n2-uc n2-h5 n2-slide-first', 'href' => $appType->router->createUrl(array('slides/first', array('sliderid' => $slider->sliderId, 'slideid' => $slide->id) + N2Form::tokenizeUrl()))), n2_('Set First')); } $rt = array(); $rt[] = N2Html::tag('a', array('class' => 'n2-button n2-button-small n2-sidebar-list-bg n2-sidebar-list-bg n2-slide-duplicate', 'href' => $appType->router->createUrl(array('slides/duplicate', array('sliderid' => $slider->sliderId, 'slideid' => $slide->id) + N2Form::tokenizeUrl()))), N2Html::tag('i', array('class' => 'n2-i n2-it n2-i-duplicate'), '')); $rt[] = N2Html::tag('a', array('class' => 'n2-button n2-button-small n2-sidebar-list-bg n2-slide-delete', 'href' => $appType->router->createUrl(array('slides/delete', array('sliderid' => $slider->sliderId, 'slideid' => $slide->id) + N2Form::tokenizeUrl()))), N2Html::tag('i', array('class' => 'n2-i n2-it n2-i-delete'), '')); $rt[] = N2Html::tag('div', array('class' => 'n2-button n2-button-small n2-button-blue n2-slide-selected'), N2Html::tag('i', array('class' => 'n2-i n2-it n2-i-tick'), '')); $rb = array(); if ($slide->hasGenerator()) { $rb[] = N2Html::tag('a', array('class' => 'n2-button n2-button-x-small n2-sidebar-list-bg n2-uc n2-h5 n2-slide-generator' . (N2Request::getVar('generator_id') == $slide->generator_id ? ' n2-button-blue' : ''), 'href' => $appType->router->createUrl(array('generator/edit', array('generator_id' => $slide->generator_id)))), 'Edit generator'); } $image = $slide->getThumbnail(); if (empty($image)) { $image = '$system$/images/placeholder/image.png'; } $editUrl = $appType->router->createUrl(array('slides/edit', array('sliderid' => $slider->sliderId, 'slideid' => $slide->id))); $widget->init("box", array('attributes' => array('class' => 'n2-box-slide n2-box-overflow' . ($slide->isFirst() ? ' n2-first-slide' : '') . ($slide->isCurrentlyEdited() ? ' n2-ss-slide-active' : ''), 'data-slideid' => $slide->id, 'data-title' => $slide->getRawTitle(), 'data-description' => $slide->getRawDescription(), 'data-link' => $slide->getRawLink(), 'data-image' => N2ImageHelper::fixed($image), 'data-editUrl' => $editUrl), 'image' => N2ImageHelper::fixed($image), 'firstCol' => N2Html::link($slide->getTitle() . ($slide->hasGenerator() ? ' [' . $slide->getSlideStat() . ']' : ''), $editUrl, array('class' => 'n2-h4')), 'lt' => implode('', $lt), 'rt' => implode('', $rt), 'rtAttributes' => array('class' => 'n2-on-hover'), 'rb' => implode('', $rb), 'placeholderContent' => N2Html::tag('a', array('class' => 'n2-slide-published' . ($slide->published ? ' n2-active' : ''), 'href' => $appType->router->createUrl(array('slides/publish', array('sliderid' => $slider->sliderId, 'slideid' => $slide->id) + N2Form::tokenizeUrl()))), N2Html::tag('i', array('class' => 'n2-i n2-it n2-i-unpublished'), '')))); }
public function onNextendBaseReady() { N2Loader::import('libraries.image.helper'); N2ImageHelper::addKeyword($this->getPathKey(), $this->getAssetsPath(), $this->getUri()); }
function _renderAdmin($data, $itemId, $slider, $slide) { return N2Html::tag('div', array("style" => 'width: 100%; height: 100%; background: url(' . N2ImageHelper::fixed($data->getIfEmpty('image', '$system$/images/placeholder/video.png')) . ') no-repeat 50% 50%; background-size: cover;'), '<img class="n2-video-play n2-ow" src="' . N2ImageHelperAbstract::SVGToBase64('$ss$/images/play.svg') . '"/>'); }
/** * @param $slider N2SmartSliderAbstract * @param $id * @param $params * * @return string */ static function render($slider, $id, $params) { $showImage = intval($params->get(self::$key . 'show-image')); $showTitle = intval($params->get(self::$key . 'title')); $showDescription = intval($params->get(self::$key . 'description')); if (!$showImage && !$showTitle && !$showDescription) { // Nothing to show return ''; } N2JS::addFile(N2Filesystem::translate(dirname(__FILE__) . '/default/thumbnail.js'), $id); N2LESS::addFile(N2Filesystem::translate(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'default' . DIRECTORY_SEPARATOR . 'style.less'), $slider->cacheId, array("sliderid" => $slider->elementId), NEXTEND_SMARTSLIDER_ASSETS . '/less' . NDS); list($displayClass, $displayAttributes) = self::getDisplayAttributes($params, self::$key); list($style, $attributes) = self::getPosition($params, self::$key); $attributes['data-offset'] = $params->get(self::$key . 'position-offset', 0); $barStyle = N2StyleRenderer::render($params->get(self::$key . 'style-bar'), 'simple', $slider->elementId, 'div#' . $slider->elementId . ' '); $slideStyle = N2StyleRenderer::render($params->get(self::$key . 'style-slides'), 'dot', $slider->elementId, 'div#' . $slider->elementId . ' '); $width = intval($slider->params->get(self::$key . 'width', 160)); $height = intval($slider->params->get(self::$key . 'height', 100)); $captionPlacement = $slider->params->get(self::$key . 'caption-placement', 'overlay'); if (!$showImage) { $captionPlacement = 'before'; } if (!$showTitle && !$showDescription) { $captionPlacement = 'overlay'; } $captionSize = intval($slider->params->get(self::$key . 'caption-size', 100)); $showCaption = $showTitle || $showDescription; if ($showCaption) { $captionStyle = N2StyleRenderer::render($params->get(self::$key . 'title-style'), 'simple', $slider->elementId, 'div#' . $slider->elementId . ' '); if ($showTitle) { $titleFont = N2FontRenderer::render($params->get(self::$key . 'title-font'), 'simple', $slider->elementId, 'div#' . $slider->elementId . ' '); } if ($showDescription) { $descriptionFont = N2FontRenderer::render($params->get(self::$key . 'description-font'), 'simple', $slider->elementId, 'div#' . $slider->elementId . ' '); } } $group = max(1, intval($params->get(self::$key . 'group'))); $orientation = self::getOrientationByPosition($params->get(self::$key . 'position-mode'), $params->get(self::$key . 'position-area'), $params->get(self::$key . 'orientation')); if ($orientation == 'auto') { $orientation = 'vertical'; } $slides = N2Html::openTag('table'); $containerStyle = ''; $captionClass = 'n2-caption-' . $captionPlacement; $captionExtraStyle = ''; switch ($captionPlacement) { case 'before': case 'after': switch ($orientation) { case 'vertical': if (!$showImage) { $width = 0; } $containerStyle = "width: " . ($width + $captionSize) . "px; height: {$height}px;"; $captionExtraStyle .= "width: {$captionSize}px"; break; default: if (!$showImage) { $height = 0; } $containerStyle = "width: {$width}px; height: " . ($height + $captionSize) . "px;"; $captionExtraStyle .= "height: {$captionSize}px"; } break; default: $containerStyle = "width: {$width}px; height: {$height}px;"; } $image = ''; $rows = array(); $i = 0; foreach ($slider->slides as $slide) { $active = ''; if ($slider->_activeSlide == $i) { $active = 'n2-active '; } if ($orientation == 'horizontal') { $row = $i % $group; } else { $row = intval($i / $group); } if (!isset($rows[$row])) { $rows[$row] = array(); } if ($showImage) { $image = N2Html::tag('div', array('class' => 'n2-ss-thumb-image', 'style' => "background-image: URL('" . $slide->getThumbnail() . "'); width: {$width}px; height: {$height}px;"), ''); } $inner = ''; if ($showCaption) { $html = ''; if ($showTitle) { $html .= N2Html::tag('div', array('class' => $titleFont), $slide->getTitle()); } $description = $slide->getDescription(); if ($showDescription && !empty($description)) { $html .= N2Html::tag('div', array('class' => $descriptionFont), $description); } $inner = N2Html::tag('div', array('class' => $captionStyle . 'n2-ss-caption ' . $captionClass, 'style' => $captionExtraStyle), $html); } switch ($captionPlacement) { case 'before': $inner .= $image; break; case 'after': default: $inner = $image . $inner; } $rows[$row][] = N2Html::tag('td', array(), N2Html::tag('div', array('class' => $slideStyle . $active, 'style' => $containerStyle), $inner)); $i++; } foreach ($rows as $row) { $slides .= N2Html::tag('tr', array(), implode('', $row)); } $slides .= N2Html::closeTag('table'); $parameters = array('overlay' => $params->get(self::$key . 'position-mode') != 'simple' || $params->get(self::$key . 'overlay'), 'area' => intval($params->get(self::$key . 'position-area')), 'orientation' => $orientation, 'group' => $group, 'action' => $params->get(self::$key . 'action')); N2JS::addInline('new NextendSmartSliderWidgetThumbnailDefault("' . $id . '", ' . json_encode($parameters) . ');'); $size = $params->get(self::$key . 'size'); if ($orientation == 'horizontal') { if (is_numeric($size) || substr($size, -1) == '%' || substr($size, -2) == 'px') { $style .= 'width:' . $size . ';'; } else { $attributes['data-sswidth'] = $size; } } else { if (is_numeric($size) || substr($size, -1) == '%' || substr($size, -2) == 'px') { $style .= 'height:' . $size . ';'; } else { $attributes['data-ssheight'] = $size; } } $previous = $next = ''; $showArrow = intval($slider->params->get(self::$key . 'arrow', 1)); if ($showArrow) { $previous = N2Html::image('data:image/svg+xml;base64,' . base64_encode(N2Filesystem::readFile(N2ImageHelper::fixed('$ss$/plugins/widgetthumbnail/default/default/thumbnail-up-arrow.svg', true))), '', array('class' => 'nextend-thumbnail-button nextend-thumbnail-previous')); $next = N2Html::image('data:image/svg+xml;base64,' . base64_encode(N2Filesystem::readFile(N2ImageHelper::fixed('$ss$/plugins/widgetthumbnail/default/default/thumbnail-down-arrow.svg', true))), '', array('class' => 'nextend-thumbnail-button nextend-thumbnail-next n2-active')); } if ($params->get(self::$key . 'position-mode') == 'simple' && $orientation == 'vertical') { $area = $params->get(self::$key . 'position-area'); switch ($area) { case '5': case '6': case '7': case '8': $attributes['data-sstop'] = '0'; break; } } return N2Html::tag('div', $displayAttributes + $attributes + array('class' => $displayClass . 'nextend-thumbnail nextend-thumbnail-default nextend-thumbnail-' . $orientation, 'style' => $style), $previous . $next . N2Html::tag('div', array('class' => 'nextend-thumbnail-inner'), N2Html::tag('div', array('class' => $barStyle . 'nextend-thumbnail-scroller'), $slides))); }
function fetchElement() { N2ImageHelper::initLightbox(); N2JS::addInline("new NextendElementFolders('" . $this->_id . "' );"); return parent::fetchElement(); }
function _renderAdmin($data, $itemId, $slider, $slide) { return N2Html::tag('div', array("style" => 'width: 100%; height: 100%; background: url(' . N2ImageHelper::fixed($data->getIfEmpty('image', '$system$/images/placeholder/video.png')) . ') no-repeat 50% 50%; background-size: cover;')); }
/** * @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 N2Html::openTag('div', $attributes); if ($image[0] == '<') { ?> <?php echo $image; } else { ?> <img src="<?php echo N2ImageHelper::fixed($image); ?> "/> <?php } ?> <?php if ($lt) { echo N2Html::tag('div', $ltAttributes, $lt); } if ($rt) { echo N2Html::tag('div', $rtAttributes, $rt); } if ($lb) {
function n2GetBox($class, $image, $html, $hasBorder = true) { echo N2Html::tag('div', array('class' => 'n2-box n2-box-title ' . $class . ($hasBorder ? ' n2-box-border' : '')), N2Html::image(N2ImageHelper::fixed('$ss$/admin/images/' . $image)) . N2Html::tag("div", array('class' => 'n2-box-placeholder'), N2Html::tag("table", array(), N2Html::tag("tr", array(), N2Html::tag("td", array('class' => 'n2-box-button'), $html))))); }
public function actionUpload() { if (defined('N2_IMAGE_UPLOAD_DISABLE')) { N2Message::error(n2_('You are not allowed to upload!')); $this->response->error(); } $this->validateToken(); $root = N2Filesystem::getImagesFolder(); $folder = ltrim(rtrim(N2Request::getVar('path', ''), '/'), '/'); $path = N2Filesystem::realpath($root . '/' . $folder); if ($path === false || $path == '') { $folder = preg_replace("/[^A-Za-z0-9]/", '', $folder); if (empty($folder)) { N2Message::error(n2_('Folder is missing!')); $this->response->error(); } else { N2Filesystem::createFolder($root . '/' . $folder); $path = N2Filesystem::realpath($root . '/' . $folder); } } $relativePath = $this->relative($path, $root); if (!$relativePath) { $relativePath = ''; } $response = array('path' => $relativePath); try { if (isset($_FILES) && isset($_FILES['image']) && isset($_FILES['image']['name'])) { $info = pathinfo($_FILES['image']['name']); $fileName = preg_replace('/[^a-zA-Z0-9_-]/', '', $info['filename']); if (strlen($fileName) == 0) { $fileName = ''; } $upload = new N2BulletProof(); $file = $upload->uploadDir($path)->upload($_FILES['image'], $fileName); $response['name'] = basename($file); $response['url'] = N2ImageHelper::dynamic(N2Filesystem::pathToAbsoluteURL($file)); } } catch (Exception $e) { N2Message::error($e->getMessage()); $this->response->error(); } $this->response->respond($response); }
public function getRow() { $this->fillParameters(); return array('title' => $this->getTitle(), 'slide' => $this->getFilledSlide(), 'description' => $this->getDescription(), 'thumbnail' => N2ImageHelper::dynamic($this->getThumbnail()), 'published' => $this->published, 'publish_up' => $this->publish_up, 'publish_down' => $this->publish_down, 'first' => $this->first, 'params' => $this->parameters->toJSON(), 'slider' => $this->slider, 'ordering' => $this->ordering, 'generator_id' => 0); }
function parseValue($image) { return N2ImageHelper::dynamic($image); }