function onNextendFacebook(&$facebook)
 {
     $config = new NextendData();
     $config->loadJson(NextendSmartSliderStorage::get(self::$_group));
     require_once dirname(__FILE__) . "/api/facebook.php";
     $facebook = new Facebook(array('appId' => $config->get('apikey', ''), 'secret' => $config->get('apisecret', '')));
     $facebook->setAccessToken($config->get('token', ''));
 }
 function onNextendFlickr(&$flickr)
 {
     $config = new NextendData();
     $config->loadJson(NextendSmartSliderStorage::get(self::$_group));
     require_once dirname(__FILE__) . "/api/phpFlickr.php";
     $flickr = new phpFlickr($config->get('apikey', ''), $config->get('apisecret', ''));
     $flickr->setToken($config->get('token', ''));
 }
 function onNextendInstagram(&$instagram)
 {
     $config = new NextendData();
     $config->loadJson(NextendSmartSliderStorage::get(self::$_group));
     require_once dirname(__FILE__) . "/api/Instagram.php";
     $c = array('client_id' => $config->get('apikey', ''), 'client_secret' => $config->get('apisecret', ''), 'redirect_uri' => '', 'grant_type' => 'authorization_code');
     $instagram = new Instagram($c);
     $instagram->setAccessToken($config->get('token', ''));
 }
Beispiel #4
0
 function fetchElement()
 {
     global $smartslidercontroller, $ss2sliderafterform;
     $this->_value = htmlspecialchars($this->_form->get($this->_name, $this->_default), ENT_QUOTES);
     $this->_form->set($this->_name, $this->_value);
     $html = '<div style="display:none;">' . parent::fetchElement() . '</div>';
     $slider = null;
     $params = new NextendData();
     if (nextendIsJoomla()) {
         nextendimportsmartslider2('nextend.smartslider.joomla.slider');
         $module = new stdClass();
         $module->id = 0;
         $params->loadArray(array('slider' => intval($_GET['sliderid'])));
         $slider = new NextendSliderJoomla($module, $params, dirname(__FILE__), true);
     } else {
         if (nextendIsWordpress()) {
             nextendimportsmartslider2('nextend.smartslider.wordpress.slider');
             $slider = new NextendSliderWordpress(intval($_GET['sliderid']), $params, dirname(__FILE__), true);
         } else {
             if (nextendIsMagento()) {
                 nextendimportsmartslider2('nextend.smartslider.magento.slider');
                 $slider = new NextendSliderMagento(intval($_GET['sliderid']), $params, dirname(__FILE__), true);
             }
         }
     }
     ob_start();
     echo "<div id='smartslider-adjust-height' style='overflow:auto; margin: 5px; padding: 5px;'>";
     $slider->render();
     echo "</div>";
     echo "<div id='smart-slider-layer-dummy' class='smart-slider-layer'></div>";
     echo '<div class="smartslider-slide-advanced-layers" style="min-width: 1600px;"></div>';
     $ss2sliderafterform = ob_get_clean();
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('jqueryui/jquery.ui.resizable.css');
     $css->addCssFile(NEXTEND_SMART_SLIDER2_ASSETS . 'admin/css/layer.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.core.min.js');
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.widget.min.js');
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.mouse.min.js');
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.resizable.min.js');
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.draggable.min.js');
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.sortable.min.js');
     $js->addLibraryJsLibraryFile('jquery', 'ui/jquery.ui.droppable.min.js');
     $js->addLibraryJsFile('jquery', NEXTENDLIBRARYASSETS . 'js' . DIRECTORY_SEPARATOR . 'base64.js');
     $js->addLibraryJsFile('jquery', NEXTENDLIBRARYASSETS . 'js' . DIRECTORY_SEPARATOR . 'sortable.js');
     $js->addLibraryJsFile('jquery', NEXTEND_SMART_SLIDER2_ASSETS . 'admin' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'console.js');
     $js->addLibraryJsFile('jquery', NEXTEND_SMART_SLIDER2_ASSETS . 'admin' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'slide.js');
     $js->addLibraryJsFile('jquery', NEXTEND_SMART_SLIDER2_ASSETS . 'admin' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'slide.layer.js');
     $js->addLibraryJsFile('jquery', NEXTEND_SMART_SLIDER2_ASSETS . 'admin' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'slide.item.js');
     $js->addLibraryJsFile('jquery', NEXTEND_SMART_SLIDER2_ASSETS . 'admin' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'slide.layout.js');
     $js->addLibraryJs('jquery', "\r\n            njQuery(document).ready(function(){\r\n                var el = \$('#smartslider-adjust-height');\r\n                el.height(el[0].scrollHeight+10);\r\n                \$(window).trigger('resize');\r\n            });\r\n            ndojo.addOnLoad(function(){\r\n                SmartSliderAdminSlide('" . $slider->getId() . "','" . $slider->_activeSlide . "','" . $this->_id . "', '" . $smartslidercontroller->route('controller=layouts&action=create') . "');\r\n            });\r\n        ");
     if (NextendSmartSliderSettings::get('slideeditoralert', 1)) {
         $js->addLibraryJs('jquery', "\r\n                njQuery(window).on('beforeunload', function() {\r\n                    if (njQuery.now()-window.nextendtime > 60000 && !window.nextendsave) { // 1 min\r\n                        return '" . NextendText::_('Your_slide_settings_has_not_been_submitted_yet') . "';\r\n                    } else {\r\n                        return;\r\n                    }\r\n                });\r\n            ");
     }
     return $html;
 }
Beispiel #5
0
 function makeItem($args)
 {
     if (isset($this->items[$args[1]])) {
         $data = new NextendData();
         $data->loadJson(base64_decode($args[2]));
         if ($data->_data != null) {
             ++self::$i[$this->id];
             if ($this->admin) {
                 return $this->items[$args[1]]->renderAdmin($data, $this->id . 'item' . self::$i[$this->id], $this->id, $this);
             }
             return $this->items[$args[1]]->render($data, $this->id . 'item' . self::$i[$this->id], $this->id, $this);
         }
     }
     return '';
 }
Beispiel #6
0
 function NextendForm()
 {
     $this->_xml = null;
     $this->_tabs = array();
     parent::NextendData();
     $this->loadQtip();
 }
Beispiel #7
0
 function __construct()
 {
     $this->_xml = null;
     $this->_tabs = array();
     NextendText::l('common');
     parent::__construct();
     $this->loadQtip();
 }
 function onNextendYoutube(&$google, &$youtube)
 {
     $config = new NextendData();
     $config->loadJson(NextendSmartSliderStorage::get(self::$_group));
     if (!class_exists('Google_Client')) {
         require_once dirname(__FILE__) . '/googleclient/Google_Client.php';
     }
     if (!class_exists('Google_YouTubeService')) {
         require_once dirname(__FILE__) . '/googleclient/contrib/Google_YouTubeService.php';
     }
     $google = new Google_Client();
     $google->setClientId($config->get('apikey', ''));
     $google->setClientSecret($config->get('apisecret', ''));
     $token = $config->get('token', null);
     if ($token) {
         $google->setAccessToken($token);
     }
     $youtube = new Google_YouTubeService($google);
     if ($google->isAccessTokenExpired()) {
         $token = json_decode($google->getAccessToken(), true);
         if (isset($token['refresh_token'])) {
             $google->refreshToken($token['refresh_token']);
             $config->set('token', $google->getAccessToken());
             NextendSmartSliderStorage::set(self::$_group, $config->toJSON());
         }
     }
 }
Beispiel #9
0
 function onNextendSliderGeneratorList(&$group, &$list, $showall = false)
 {
     if ($showall || smartsliderIsFull()) {
         $installed = NextendFilesystem::existsFolder(JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_zoo');
         if ($installed) {
             $group[$this->_group] = 'ZOO';
             if (!isset($list[$this->_group])) {
                 $list[$this->_group] = array();
             }
             require_once JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_zoo' . DIRECTORY_SEPARATOR . 'config.php';
             $zoo = App::getInstance('zoo');
             $apps = $zoo->table->application->all(array('order' => 'name'));
             require_once $this->getPath() . 'items' . DIRECTORY_SEPARATOR . 'generator.php';
             foreach ($apps as $app) {
                 foreach ($app->getTypes() as $type) {
                     //Make them class name safe
                     $appid = preg_replace('/[^a-zA-Z0-9_\\x7f-\\xff]*/', '', $app->id);
                     $identifier = preg_replace('/[^a-zA-Z0-9_\\x7f-\\xff]*/', '', $type->identifier);
                     $list[$this->_group][$this->_group . '_items__' . $appid . '___' . $identifier] = array(ucfirst($app->name) . ' (' . ucfirst($type->identifier) . ')', $this->getPath() . 'items' . DIRECTORY_SEPARATOR, true, true, $installed ? true : 'http://extensions.joomla.org/extensions/authoring-a-content/content-construction/12479', null);
                     if (!class_exists('NextendGeneratorZoo_items__' . $appid . '___' . $identifier)) {
                         eval('class NextendGeneratorZoo_items__' . $appid . '___' . $identifier . ' extends NextendGeneratorZoo_Items{}');
                     }
                 }
             }
         } else {
             if ($showall) {
                 $group[$this->_group] = 'ZOO';
                 if (!isset($list[$this->_group])) {
                     $list[$this->_group] = array();
                 }
                 $list[$this->_group][$this->_group . '_items'] = array('Zoo', $this->getPath() . 'items' . DIRECTORY_SEPARATOR, true, true, 'http://extensions.joomla.org/extensions/authoring-a-content/content-construction/12479', null);
             }
         }
         $app = JFactory::getApplication();
         if ($app->isAdmin() && ((NextendRequest::getVar('action') == 'createdynamic' || NextendRequest::getVar('action') == 'generatorsettings') && NextendRequest::getVar('group') == 'zoo' && NextendRequest::getVar('type'))) {
             $class = 'NextendGenerator' . NextendRequest::getVar('type');
             $data = new NextendData();
             $data->set('source', NextendRequest::getVar('type'));
             new $class($data);
         }
     }
 }
 function onNextendTwitter(&$twitter)
 {
     $config = new NextendData();
     $config->loadJson(NextendSmartSliderStorage::get(self::$_group));
     require_once dirname(__FILE__) . "/api/tmhOAuth.php";
     $twitter = new tmhOAuth(array('consumer_key' => $config->get('apikey', ''), 'consumer_secret' => $config->get('apisecret', ''), 'user_token' => $config->get('token', ''), 'user_secret' => $config->get('tokensecret', '')));
 }
?>

<?php 
$accessModuleCreate = $this->canDo('core.create', 'com_modules');
$accessSliderCreate = $this->canDo('slider.create');
$accessSliderEdit = $this->canDo('slider.edit');
$accessSliderDelete = $this->canDo('slider.delete');
$accessSlideCreate = $this->canDo('slide.create');
$accessSlideEdit = $this->canDo('slide.edit');
$accessSlideDelete = $this->canDo('slide.delete');
$accessCore = $this->canDo('core.admin');
$j15 = !nextendIsJoomla() || version_compare(JVERSION, '1.6.0', 'ge') ? false : true;
$sliderid = NextendRequest::getInt('sliderid', 0);
$slidersModel = $this->getModel('sliders');
$slider = $slidersModel->getSlider($sliderid);
$generatorParams = new NextendData();
$generatorParams->loadJSON($slider['generator']);
?>
    
<h2>Generator</h2>
<div class="smartslider-button-wrap">
    <div class="smartslider-button smartslider-back smartslider-button-grey smartslider-button-blue-active smartslider-icon-container">
        <a href="<?php 
echo $this->route('controller=sliders&view=sliders_generator&action=generatorstart&sliderid=' . $sliderid);
?>
" class="smartslider-button-link"><span class="smartslider-icon smartslider-action-icon smartslider-action-icon-generator"></span><?php 
echo NextendText::_('Change_source');
?>
</a>
    </div>
    <?php 
Beispiel #12
0
    if (nextendIsWordpress()) {
        nextendimportsmartslider2('nextend.smartslider.wordpress.slider');
        $d = array();
        $slider = new NextendSliderWordpress($sliderid, $d, dirname(__FILE__));
    } else {
        if (nextendIsMagento()) {
            nextendimportsmartslider2('nextend.smartslider.magento.slider');
            $d = array();
            $slider = new NextendSliderMagento($sliderid, $d, dirname(__FILE__));
        }
    }
}
$slidersModel = new NextendSmartsliderAdminModelSliders(null);
$fakeslider = $slidersModel->getSlider($sliderid);
global $layout, $sliderpreset;
$sliderParams = new NextendData();
$sliderParams->loadJSON($fakeslider['params']);
$sliders = array();
NextendPlugin::callPlugin('nextendslidergeneratorlayouts', 'onNextendSliderGeneratorSlider', array(&$sliders, $sliderParams->get('size', null)));
$sliderpreset = NextendRequest::getVar('sliderpreset', '');
if (isset($sliders[$sliderpreset])) {
    $fakeslider = $sliders[$sliderpreset]['slider'] + $fakeslider;
}
$slider->_slider = new NextendData();
$slider->_slider->loadArray($fakeslider);
$slider->_sliderParams = new NextendData();
$slider->_sliderParams->loadJSON($fakeslider['params']);
$slider->_generatorParams = new NextendData();
$slider->_generatorParams->loadJSON($fakeslider['generator']);
if ($fakeslider['slide'] == '' && !isset($_REQUEST['layout'])) {
    $_REQUEST['layout'] = 'default';
Beispiel #13
0

<?php 
$accessModuleCreate = $this->canDo('core.create', 'com_modules');
$accessSliderCreate = $this->canDo('slider.create');
$accessSliderEdit = $this->canDo('slider.edit');
$accessSliderDelete = $this->canDo('slider.delete');
$accessSlideCreate = $this->canDo('slide.create');
$accessSlideEdit = $this->canDo('slide.edit');
$accessSlideDelete = $this->canDo('slide.delete');
$accessCore = $this->canDo('core.admin');
$j15 = !nextendIsJoomla() || version_compare(JVERSION, '1.6.0', 'ge') ? false : true;
$sliderid = NextendRequest::getInt('sliderid', 0);
$slidersModel = $this->getModel('sliders');
$slider = $slidersModel->getSlider($sliderid);
$generatorParams = new NextendData();
$generatorParams->loadJSON($slider['generator']);
?>


<div class="smartslider-button-wrap">
    <?php 
if ($accessSliderEdit) {
    ?>

    <div class="smartslider-button smartslider-back smartslider-button-grey smartslider-button-blue-active smartslider-icon-container ">
        <a href="<?php 
    echo $this->route('controller=sliders&view=sliders_slider&action=edit&sliderid=' . $sliderid);
    ?>
" class="smartslider-button-link"><span class="smartslider-icon smartslider-action-icon smartslider-action-icon-edit"></span><?php 
    echo NextendText::_('Edit_slider');
 function initSlides($slides)
 {
     if ($this->_backend) {
         if (NextendRequest::getCmd('action') == 'create') {
             array_unshift($slides, array('id' => 0, 'title' => '{_slidetitle}', 'slider' => NextendRequest::getInt('sliderid'), 'publish_up' => '0000-00-00 00:00:00', 'publish_down' => '0000-00-00 00:00:00', 'published' => 1, 'first' => 0, 'slide' => '', 'params' => '', 'thumbnail' => '', 'background' => 'ffffff00|*|', 'description' => 'Description', 'ordering' => count($slides)));
         }
         if (NextendRequest::getCmd('action') == 'generatoredit') {
             global $smartslidergeneratorslide;
             if (!$smartslidergeneratorslide) {
                 $smartslidergeneratorslide = array();
             }
             array_unshift($slides, array_merge(array('id' => 0, 'title' => '{_slidetitle}', 'slider' => NextendRequest::getInt('sliderid'), 'publish_up' => '0000-00-00 00:00:00', 'publish_down' => '0000-00-00 00:00:00', 'published' => 1, 'first' => 0, 'slide' => '', 'params' => '', 'thumbnail' => '', 'background' => 'ffffff00|*|', 'description' => 'Description', 'ordering' => count($slides)), $smartslidergeneratorslide));
         } else {
             if (NextendRequest::getCmd('controller') == 'layouts' && NextendRequest::getCmd('action') == 'edit') {
                 global $smartsliderlayout;
                 if (!$smartsliderlayout) {
                     $smartsliderlayout = '';
                 }
                 array_unshift($slides, array('id' => 0, 'title' => '{_slidetitle}', 'slide' => $smartsliderlayout, 'params' => ''));
             } else {
                 if (NextendRequest::getCmd('controller') == 'slides') {
                     $currentlyedited = NextendRequest::getInt('slideid');
                     for ($i = 0; $i < count($slides); $i++) {
                         if ($slides[$i]['id'] == $currentlyedited) {
                             $this->_activeSlide = $i;
                             break;
                         }
                     }
                 }
             }
         }
     } else {
         for ($i = 0; $i < count($slides); $i++) {
             if ($slides[$i]['first'] == 1) {
                 $this->_activeSlide = $i;
                 break;
             }
         }
     }
     nextendimport('nextend.image.color');
     for ($i = 0; $i < count($slides); $i++) {
         $params = new NextendData();
         $params->loadJSON($slides[$i]['params']);
         $slides[$i]['params'] = $params;
         $slides[$i]['classes'] = 'smart-slider-canvas';
         if (!isset($slides[$i]['background'])) {
             $slides[$i]['background'] = 'ffffff00|*|';
         }
         $bg = (array) NextendParse::parse($slides[$i]['background']);
         $style = '';
         if (isset($bg[0]) && strlen($bg[0]) == 8) {
             if (substr($bg[0], 6, 2) != '00') {
                 $style .= 'background-color: #' . substr($bg[0], 0, 6) . ';';
                 $rgba = NextendColor::hex2rgba($bg[0]);
                 $style .= 'background-color: RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
             }
         }
         $slides[$i]['style'] = $style;
         $bgmore = (array) NextendParse::parse($slides[$i]['params']->get('backgroundmore'));
         $slides[$i]['bg'] = array('desktop' => empty($bg[1]) ? 0 : NextendUri::fixrelative($bg[1]), 'desktopretina' => empty($bgmore[0]) ? 0 : NextendUri::fixrelative($bgmore[0]), 'tablet' => empty($bgmore[1]) ? 0 : NextendUri::fixrelative($bgmore[1]), 'tabletretina' => empty($bgmore[2]) ? 0 : NextendUri::fixrelative($bgmore[2]), 'mobile' => empty($bgmore[3]) ? 0 : NextendUri::fixrelative($bgmore[3]), 'mobileretina' => empty($bgmore[4]) ? 0 : NextendUri::fixrelative($bgmore[4]), 'alt' => empty($bg[2]) ? '' : $bg[2]);
         if (!empty($slides[$i]['thumbnail'])) {
             $slides[$i]['thumbnail'] = NextendUri::fixrelative($slides[$i]['thumbnail']);
         }
         $link = $params->get('link', '');
         $link = (array) NextendParse::parse($link);
         if (!$this->_backend && $link && isset($link[0]) && $link[0] != '' && $link[0] != '#') {
             if (!isset($link[1])) {
                 $link[1] = '_self';
             }
             $slides[$i]['link'] = ' onclick="' . htmlspecialchars(strpos($link[0], 'javascript:') === 0 ? $link[0] : ($link[1] == '_blank' ? "window.open('" . (nextendIsJoomla() ? JRoute::_($link[0], false) : $link[0]) . "','_blank');" : "window.location='" . (nextendIsJoomla() ? JRoute::_($link[0], false) : $link[0]) . "'")) . '" ';
             $slides[$i]['style'] .= 'cursor:pointer;';
         } else {
             $slides[$i]['link'] = '';
         }
     }
     return $slides;
 }
        <a class="smartslider-button-link" href="<?php 
echo $this->route('controller=sliders&view=sliders_generator&action=generatorrecords&refreshcache=1&sliderid=' . NextendRequest::getInt('sliderid'));
?>
">
            <span class="smartslider-icon smartslider-action-icon smartslider-action-icon-refresh"></span>
            Refresh cache
        </a>
    </div>
</div>
<div style="clear:both;"></div>
<?php 
nextendimportsmartslider2('nextend.smartslider.generator');
$slidersModel = $this->getModel('sliders');
$slider = $slidersModel->getSlider(NextendRequest::getInt('sliderid'));
$smartslidergenerator = (array) json_decode($slider['generator'], true);
$generatorParams = new NextendData();
$generatorParams->loadArray($smartslidergenerator);
if ($generatorParams->get('enabled')) {
    $source = $generatorParams->get('source', '');
    if ($source) {
        $generator = new NextendSmartsliderGenerator($generatorParams, array(), NextendRequest::getInt('sliderid'));
        $generator->initDatasource($source, true);
        $generatorgroup = $generatorParams->get('generatorgroup', 1);
        if (!empty($generator->_datasource)) {
            for ($i = 0, $j = 1; $i < count($generator->_datasource); $j++) {
                ?>
<h2>Slide #<?php 
                echo $j;
                ?>
</h2>
<table class="ni">
Beispiel #16
0
# author Roland Soos
# copyright Copyright (C) Nextendweb.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-3.0.txt GNU/GPL
*/
defined('_JEXEC') or die('Restricted access');
global $smartslidergeneratorslide, $slidegenerator, $generatorinstance;
nextendimportsmartslider2('nextend.smartslider.generator');
$slidersModel = $this->getModel('sliders');
$slider = $slidersModel->getSlider(NextendRequest::getInt('sliderid'));
$smartslidergenerator = (array) json_decode($slider['generator'], true);
$slidegenerator = null;
$generatorParams = new NextendData();
$generatorParams->loadArray($smartslidergenerator);
$source = $generatorParams->get('source', '');
if ($source) {
    $generatorSlideParams = new NextendData();
    $generatorSlideParams->loadArray(json_decode($slider['slide'], true));
    $generator = new NextendSmartsliderGenerator($generatorParams, $generatorSlideParams, NextendRequest::getInt('sliderid'));
    $generatorinstance = $generator->initDatasource($source, true);
    $slidegenerator = $generator;
} else {
    // Here should be a redirect for the generator start!
}
$this->loadFragment('headerstart');
?>
    <div class="smartslider-button smartslider-save" onclick="setTimeout(function(){njQuery('#smartslider-form').submit();}, 300);"><?php 
echo NextendText::_('Save');
?>
</div>
    <div class="smartslider-button smartslider-cancel" onclick="window.nextendsave=true;location.href='<?php 
echo $this->route('controller=sliders&view=sliders_slider&action=generatordashboard&sliderid=' . NextendRequest::getInt('sliderid'));
Beispiel #17
0
 function refreshCache($sliderid)
 {
     $slider = $this->getSlider($sliderid);
     $generatorParams = new NextendData();
     $generatorParams->loadJSON($slider['generator']);
     $generatorSlideParams = new NextendData();
     $generatorSlideParams->loadJSON($slider['slide']);
     //refresh generator
     // Set the cache expired
     $cached = json_decode(NextendSmartSliderStorage::get('generator' . $sliderid), true);
     if (is_array($cached)) {
         $cached['time'] = 0;
         NextendSmartSliderStorage::set('generator' . $sliderid, json_encode($cached));
     }
     if ($generatorParams->get('enabled', 0)) {
         nextendimportsmartslider2('nextend.smartslider.generator');
         $generator = new NextendSmartsliderGenerator($generatorParams, $generatorSlideParams, $sliderid);
         $source = $generatorParams->get('source', '');
         if ($source) {
             $generator->initDatasource($source);
         }
     }
     self::markChanged($sliderid);
 }