function fetchElement()
 {
     $element = new SimpleXMLElement('<param type="hidden" label="' . NextendText::_($this->_label) . '" default="' . NextendText::_($this->_label) . '" name="' . $this->_name . 'customlabel" />');
     $customlabel = new NextendElementHidden($this->_form, $this, $element);
     $h = $customlabel->render($this->control_name, false);
     return $h[1] . parent::fetchElement();
 }
Example #2
0
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/fontmanager.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/fontmanager.js');
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $html = '';
     $fontmanager = NextendFontmanager::getInstance();
     $fontmanager->_currentform = $this->_form;
     $html .= $fontmanager->render();
     $html .= '<a id="nextend-' . $this->_name . '-button" class="nextend-font-button" href="#">Font</a>';
     $html .= '<a id="nextend-' . $this->_name . '-button-export" class="nextend-button-css nextend-font-export nextend-element-hastip" title="Export" href="#"></a>';
     $html .= '<a id="nextend-' . $this->_name . '-button-import" class="nextend-button-css nextend-font-import nextend-element-hastip" title="Import" href="#"></a>';
     $html .= '<div id="nextend-' . $this->_name . '-message" class="nextend-message"></div>';
     $html .= "<div class='nextend-fontmanager clearfix'>";
     $hiddenhtml = $hidden->render($this->control_name);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $tabs = explode('|', NextendXmlGetAttribute($this->_xml, 'tabs'));
     $js->addLibraryJs('dojo', '
         new NextendElementFontmanager({
             hidden: "' . $this->_id . '",
             button: "nextend-' . $this->_name . '-button",
             importbtn: "nextend-' . $this->_name . '-button-import",
             exportbtn: "nextend-' . $this->_name . '-button-export",
             message: "nextend-' . $this->_name . '-message",
             tabs: ' . json_encode($tabs) . ',
             firsttab: "' . $tabs[0] . '"
         });
     ');
     return $html;
 }
Example #3
0
 function fetchElement()
 {
     $this->_values = array();
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/switcher.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/switcher.js');
     $html = "";
     $html .= "<div class='nextend-switcher' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $html .= "<div class='nextend-switcher-vertical'>";
     $html .= "<div class='nextend-switcher-vertical-dot'>";
     $html .= "</div>";
     $html .= "</div>";
     $html .= "<div class='nextend-switcher-units'>";
     foreach ($this->_xml->unit as $unit) {
         $this->_values[] = (string) $unit->attributes()->value;
         $html .= "<span class='nextend-switcher-units-unit'>";
         $html .= NextendText::_((string) $unit);
         $html .= "</span>";
     }
     $html .= "</div>";
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $hiddenhtml = $hidden->render($this->control_name, false);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $js->addLibraryJs('dojo', '
         new NextendElementSwitcher({
           hidden: "' . $this->_id . '",
           values: ' . json_encode($this->_values) . '
         });
     ');
     return $html;
 }
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/fontmanager.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/fontmanager.js');
     $this->_value = $this->_form->get($this->_name, $this->_default);
     if (intval(NextendXmlGetAttribute($this->_xml, 'base64'))) {
         $this->base64 = 1;
         $js->addLibraryJsFile('jquery', NEXTENDLIBRARYASSETS . 'js' . DIRECTORY_SEPARATOR . 'base64.js');
         $json = json_decode($this->_value);
         if ($json != null && $json != $this->_value) {
             $this->_value = base64_encode($this->_value);
             $this->_form->set($this->_name, $this->_value);
         }
     }
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $html = '';
     $fontmanager = NextendFontmanager::getInstance();
     $fontmanager->_currentform = $this->_form;
     $html .= $fontmanager->render();
     $html .= '<a id="nextend-' . $this->_name . '-button" class="nextend-font-button" href="#">' . NextendText::_('Font') . '</a>';
     $html .= '<a id="nextend-' . $this->_name . '-button-export" class="nextend-button-css nextend-font-export nextend-element-hastip" title="' . NextendText::_('FONTMANAGER_Export') . '" href="#"></a>';
     $html .= '<a id="nextend-' . $this->_name . '-button-import" class="nextend-button-css nextend-font-import nextend-element-hastip" title="' . NextendText::_('FONTMANAGER_Import') . '" href="#"></a>';
     $html .= '<div id="nextend-' . $this->_name . '-message" class="nextend-message"></div>';
     $html .= "<div class='nextend-fontmanager nextend-clearfix'>";
     $hiddenhtml = $hidden->render($this->control_name, false);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $tabs = explode('|', NextendXmlGetAttribute($this->_xml, 'tabs'));
     $translatedTabs = array();
     for ($i = 0; $i < count($tabs); $i++) {
         $translatedTabs[$i] = NextendText::_($tabs[$i]);
     }
     $this->printjs = '
         new NextendElementFontmanager({
             hidden: "' . $this->_id . '",
             button: "nextend-' . $this->_name . '-button",
             importbtn: "nextend-' . $this->_name . '-button-import",
             exportbtn: "nextend-' . $this->_name . '-button-export",
             message: "nextend-' . $this->_name . '-message",
             tabs: ' . json_encode($tabs) . ',
             translatedTabs: ' . json_encode($translatedTabs) . ',
             firsttab: "' . $tabs[0] . '",
             txt: {
                 importingdone: "' . NextendText::_('FONTMANAGER_Importing_done') . '",
                 youcanimport: "' . NextendText::_('FONTMANAGER_Now_you_can_import_the_settings_of_this_font') . '"
             },
             base64: ' . $this->base64 . '
         });
     ';
     if ($this->_includeJS) {
         $js->addLibraryJs('dojo', $this->printjs);
     }
     return $html;
 }
Example #5
0
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/mixed.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/mixed.js');
     $this->_translateable = NextendXmlGetAttribute($this->_xml, 'translateable');
     $this->_translateable = $this->_translateable === '0' ? false : true;
     $default = explode($this->_separator, $this->_default);
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $value = explode($this->_separator, $this->_value);
     $value = $value + $default;
     $html = "<div class='nextend-mixed' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $this->_elements = array();
     $i = 0;
     foreach ($this->_xml->param as $element) {
         $html .= "<div class='nextend-mixed-group' style='" . NextendXmlGetAttribute($element, 'mixedstyle') . "'>";
         $type = NextendXmlGetAttribute($element, 'type');
         $class = 'NextendElement' . $type;
         if (!class_exists($class, false)) {
             if (!nextendimportpath($this->_form->_xmlfolder . 'element/' . $type)) {
                 nextendimport('nextend.form.element.' . $type);
             }
         }
         $element->addAttribute('name', $this->_name . '_' . $i);
         $element->addAttribute('hidename', 1);
         if (isset($value[$i])) {
             $element->addAttribute('default', $value[$i]);
         }
         $el = new $class($this->_form, $this, $element);
         $el->parent =& $this;
         $elementHtml = $el->render($this->_name . $this->control_name, $this->_translateable);
         $html .= "<div class='nextend-mixed-label'>";
         $html .= $elementHtml[0];
         $html .= "</div>";
         $html .= "<div class='nextend-mixed-element'>";
         $html .= $elementHtml[1];
         $html .= "</div>";
         $this->_elements[$i] = $el->_id;
         $i++;
         $html .= "</div>";
     }
     $this->_form->set($this->_name, $this->_value);
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $hiddenhtml = $hidden->render($this->control_name, false);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $js->addLibraryJs('dojo', '
         new NextendElementMixed({
           hidden: "' . $this->_id . '",
           elements: ' . json_encode($this->_elements) . ',
           separator: "' . $this->_separator . '"
         });
     ');
     return $html;
 }
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/gradient.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/gradient.js');
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $gradient = explode('-', $this->_value);
     $this->validate($gradient);
     $html = "<div class='nextend-gradient' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $html .= "<table><tr>";
     $html .= "<td class='nextend-gradient-onoff'>";
     $attr = $this->_xml->attributes();
     $onoffXml = new SimpleXMLElement('<param type="onoff" default="' . $gradient[0] . '" name="' . $attr->name . '_onoff' . '" />');
     $onoff = new NextendElementOnoff($this->_form, $this->_tab, $onoffXml);
     $onoffHtml = $onoff->render($this->control_name, false);
     $html .= $onoffHtml[1];
     $html .= "</td>";
     $html .= "<td class='nextend-gradient-start'>";
     $startColorXml = new SimpleXMLElement('<param type="color" default="' . $gradient[1] . '" name="' . $attr->name . '_start' . '" />');
     $startColor = new NextendElementColor($this->_form, $this->_tab, $startColorXml);
     $startColorHtml = $startColor->render($this->control_name, false);
     $html .= $startColorHtml[1];
     $html .= "</td>";
     $html .= "<td class='nextend-grandient-bg'>";
     $html .= "</td>";
     $html .= "<td class='nextend-gradient-end'>";
     $endColorXml = new SimpleXMLElement('<param type="color" default="' . $gradient[2] . '" name="' . $attr->name . '_end' . '" />');
     $endColor = new NextendElementColor($this->_form, $this->_tab, $endColorXml);
     $endColorHtml = $endColor->render($this->control_name, false);
     $html .= $endColorHtml[1];
     $html .= "</td>";
     $html .= "</tr></table>";
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $hiddenhtml = $hidden->render($this->control_name, false);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $alpha = NextendXmlGetAttribute($this->_xml, 'alpha');
     if ($alpha != 1) {
         $alpha = 0;
     }
     $js->addLibraryJs('dojo', '
         new NextendElementGradient({
           hidden: "' . $this->_id . '",
           onoff: "' . $onoff->_id . '",
           start: "' . $startColor->_id . '",
           end: "' . $endColor->_id . '",
           value: "' . $this->_value . '"
         });
     ');
     return $html;
 }
Example #7
0
 function fetchElement()
 {
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/list.js');
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $this->_values = explode('||', $this->_value);
     if (!is_array($this->_values)) {
         $this->_values = array();
     }
     $this->_multiple = intval(NextendXmlGetAttribute($this->_xml, 'multiple'));
     $this->_translateable = intval(NextendXmlGetAttribute($this->_xml, 'translateable'));
     $size = NextendXmlGetAttribute($this->_xml, 'size');
     if ($size != '') {
         $size = " size='" . $size . "'";
     }
     $html = "<div class='nextend-list' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $html .= "<select id='" . $this->_id . "_select' class='nextend-select' name='select" . $this->_inputname . "' " . $size . $this->isMultiple() . " style='font-family:Arial !important;'  autocomplete='off'>";
     $html .= $this->generateOptions($this->_xml);
     if ($this->_xml->optgroup) {
         $html .= $this->generateOptgroup($this->_xml);
     }
     $html .= "</select>";
     $html .= "</div>";
     $html .= parent::fetchElement();
     $js->addLibraryJs('dojo', '
         new NextendElementList({
           hidden: "' . $this->_id . '",
           multiple: ' . $this->_multiple . ',
           value: "' . $this->_value . '"
         });
     ');
     return $html;
 }
Example #8
0
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/onoff.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/onoff.js');
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $html = "<div class='nextend-onoff nextend-clearfix gk_hack" . $this->isOn() . "' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $hiddenhtml = $hidden->render($this->control_name, false);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $js->addLibraryJs('dojo', '
         new NextendElementOnoff({
           hidden: "' . $this->_id . '"
         });
     ');
     return $html;
 }
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/checkbox.css');
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsAssetsFile('dojo', 'element.js');
     $js->addLibraryJsAssetsFile('dojo', 'element/checkbox.js');
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $hidden = new NextendElementHidden($this->_form, $this->_tab, $this->_xml);
     $html = "<div class='nextend-checkbox nextend-clearfix' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $html .= $this->generateOptions($this->_xml);
     $hiddenhtml = $hidden->render($this->control_name, false);
     $html .= $hiddenhtml[1];
     $html .= "</div>";
     $js->addLibraryJs('dojo', '
         new NextendElementCheckbox({
           hidden: "' . $this->_id . '",
           values: ' . json_encode($this->_values) . '
         });
     ');
     return $html;
 }
Example #10
0
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/subform.css');
     $html = "<div class='nextend-subform " . $this->_form->get('class', '') . "' style='" . NextendXmlGetAttribute($this->_xml, 'style') . "'>";
     $this->_value = $this->_form->get($this->_name, $this->_default);
     $html .= parent::fetchElement();
     $js = NextendJavascript::getInstance();
     $js->addLibraryJsLibraryFile('dojo', 'dojo/window.js');
     $js->addLibraryJsAssetsFile('dojo', 'window.js');
     $js->addLibraryJs('dojo', '
         
         var a = new NextendWindow({
           button: dojo.byId("' . $this->_id . 'nextend-' . $this->_name . '-button"),
           node: dojo.byId("' . $this->_id . 'nextend-' . $this->_name . '-lightbox"),
           save: dojo.byId("' . $this->_id . 'nextend-' . $this->_name . '-save")
         });
     ');
     $html .= '<div id="' . $this->_id . 'nextend-' . $this->_name . '-lightbox" class="gk_hack nextend-window">';
     $html .= '<div class="gk_hack nextend-window-container">';
     $html .= '<div class="gk_hack nextend-topbar"><div class="gk_hack nextend-topbar-logo"></div>';
     $manual = $this->_form->get('manual');
     if ($manual != "") {
         $html .= '<a href="' . $manual . '" target="_blank" class="gk_hack nextend-topbar-button nextend-topbar-manual">Manual</a>';
     }
     $support = $this->_form->get('support');
     if ($support != "") {
         $html .= '<a href="' . $support . '" target="_blank" class="gk_hack nextend-topbar-button nextend-topbar-support">Support</a>';
     }
     $html .= '<div id="' . $this->_id . 'nextend-' . $this->_name . '-save" class="nextend-window-save"><div class="NextendWindowSave">APPLY</div></div>';
     $html .= '</div>';
     $html .= '<div class="gk_hack nextend-window-container-inner">';
     $html .= '<fieldset id="nextend-' . $this->_name . '-panels" class="gk_hack panelform">';
     $html .= '<div id="nextend-' . $this->_name . '-panel" class="gk_hack pane-sliders">';
     $html .= $this->renderForm();
     $html .= '</div>';
     $html .= '</fieldset>';
     $html .= '</div>';
     $html .= '</div>';
     $html .= '</div>';
     $html .= '<a id="' . $this->_id . 'nextend-' . $this->_name . '-button" class="nextend-configurator-button" href="#">Configure</a>';
     $html .= '</div>';
     return $html;
 }
 function fetchElement()
 {
     $css = NextendCss::getInstance();
     $css->addCssLibraryFile('element/pluginmatrix.css');
     $html = "<div id='nextend-pluginmatrix-" . $this->_id . "'>";
     $widgetTypes = $this->getOptions();
     $html .= "<div class='nextend-pluginmatrix-views nextend-button-grey nextend-clearfix'>";
     $value = $this->_form->get($this->_name, 'arrow');
     $test = false;
     foreach ($widgetTypes as $type => $v) {
         if ($value == $type) {
             $test = true;
             break;
         }
     }
     if (!$test) {
         $value = 'arrow';
     }
     foreach ($widgetTypes as $type => $v) {
         if ($value == $type) {
             $active = 'active ';
         } else {
             $active = '';
         }
         $html .= "<div onclick=\"njQuery('#" . $this->_id . "').val('" . $type . "')\" class='" . $active . "nextend-button-grey nextend-button-blue-active nextend-pluginmatrix-view nextend-pluginmatrix-view-" . $type . "'>\r\n                <div class='nextend-border'>";
         $html .= $v[0];
         $html .= "</div></div>";
     }
     $html .= "</div>";
     $html .= "<div class='nextend-pluginmatrix-panes nextend-clearfix'>";
     foreach ($widgetTypes as $type => $v) {
         if ($value == $type) {
             $active = 'active ';
         } else {
             $active = '';
         }
         $html .= "<div class='" . $active . "nextend-pluginmatrix-pane nextend-pluginmatrix-pane-" . $type . "'>";
         $GLOBALS['nextendbuffer'] = '';
         $form = new NextendForm();
         $form->_data =& $this->_form->_data;
         $form->loadXMLFile($v[1] . 'config.xml');
         ob_start();
         $form->render($this->control_name);
         $html .= ob_get_clean();
         $html .= $GLOBALS['nextendbuffer'];
         $html .= "</div>";
     }
     $html .= "</div>";
     $html .= "</div>";
     $js = NextendJavascript::getInstance();
     $js->addLibraryJs('jquery', '
         (function(){
             var parent = $("#nextend-pluginmatrix-' . $this->_id . '"),
                 views = parent.find("> .nextend-pluginmatrix-views > .nextend-pluginmatrix-view"),
                 panes = parent.find("> .nextend-pluginmatrix-panes > .nextend-pluginmatrix-pane");
             views.on("click", function(){
                 views.not(this).removeClass("active");
                 panes.removeClass("active");
                 var i = views.index(this);
                 views.eq(i).addClass("active");
                 panes.eq(i).addClass("active");
                 njQuery(window).trigger("resize");
             });
         })();
     ');
     return $html . parent::fetchElement();
 }
Example #12
0
    function fetchElement()
    {
        $css = NextendCss::getInstance();
        $css->addCssFile(NEXTEND_SMART_SLIDER2_ASSETS . 'admin/css/createquick.css');
        $css->addCssLibraryFile('element/textarea.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.sortable.min.js');
        $this->_value = $this->_form->get($this->_name, $this->_default);
        $images = json_decode($this->_value, true);
        $html = '<div id="selected-images-container" class="">';
        if (nextendIsWordpress()) {
            add_filter('media_view_strings', 'custom_media_uploader_tabs', 5);
            function custom_media_uploader_tabs($strings)
            {
                $strings['insertMediaTitle'] = "Image";
                $strings['insertIntoPost'] = "Add to slider";
                // remove options
                if (isset($strings['createGalleryTitle'])) {
                    unset($strings['createGalleryTitle']);
                }
                if (isset($strings['insertFromUrlTitle'])) {
                    unset($strings['insertFromUrlTitle']);
                }
                return $strings;
            }
            wp_enqueue_style('editor');
            if (function_exists('wp_enqueue_media')) {
                wp_enqueue_media();
            } else {
                wp_enqueue_style('thickbox');
                wp_enqueue_script('media-upload');
                wp_enqueue_script('thickbox');
            }
            $html .= '<a title="Add Image" data-editor="content" class="button add-image" href="#">
              <span class="wp-media-buttons-icon"></span> Add Image
          </a>
          <div style="clear: both;"></div>';
        } else {
            if (nextendIsMagento()) {
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'extjs/ext-tree.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'extjs/ext-tree-checkbox.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'extjs/fix-defer.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'mage/adminhtml/variables.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'mage/adminhtml/wysiwyg/widget.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'lib/flex.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'lib/FABridge.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'mage/adminhtml/flexuploader.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'mage/adminhtml/browser.js"></script>';
                $html .= '<script type="text/javascript" src="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'prototype/window.js"></script>';
                $html .= '<link rel="stylesheet" type="text/css" href="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS) . 'prototype/windows/themes/default.css" media="screen"/>';
                $html .= '<link rel="stylesheet" type="text/css" href="' . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN) . 'adminhtml/default/default/lib/prototype/windows/themes/magento.css" media="screen"/>';
                $html .= '<a title="Add Image" data-editor="content" class="button add-image" href="#">
                <span class="wp-media-buttons-icon"></span> Add Image
            </a>
            <input type="hidden" id="magentohidden" />
            <div style="clear: both;"></div>';
            }
        }
        $html .= '<div id="delete-image"></div>
                <ul id="selected-images">';
        if (is_array($images)) {
            $i = 0;
            foreach ($images as $img) {
                $html .= '<li>';
                $html .= '<img src="' . NextendUri::fixrelative($img['image']) . '" data-src="' . $img['image'] . '" /><div class="field-container">';
                $html .= '
<div class="nextend-mixed-group">
  <div class="nextend-mixed-label">
    <label for="title' . $i . '" id="title' . $i . '-lbl">Title</label>
  </div>
  <div class="nextend-mixed-element">
    <div class="nextend-text ">
      <input type="text" autocomplete="off" style="width:390px;" value="' . $img['title'] . '" name="" id="title' . $i . '">
    </div>
  </div>
</div>';
                $html .= '
<div class="nextend-mixed-group" style="clear: both;">
  <div class="nextend-mixed-label">
    <label for="link' . $i . '" id="link' . $i . '-lbl">Link</label>
  </div>
  <div class="nextend-mixed-element">
    <div class="nextend-text">
      <input type="text" autocomplete="off" style="width:390px;" value="' . $img['url'] . '" name="" id="link' . $i . '">
    </div>
  </div>
</div>';
                $html .= '
<div class="nextend-mixed-group" style="clear: both;">
  <div class="nextend-mixed-label">
    <label for="description' . $i . '" id="description' . $i . '-lbl">Description</label>
  </div>
  <div class="nextend-mixed-element">
    <div class="nextend-textarea ">
      <textarea autocomplete="off" style="width:400px; height: 40px;" name="" id="description' . $i . '">' . $img['description'] . '</textarea>
    </div>
  </div>
</div>';
                $html .= '</div><div style="clear:both;"></div></li>';
                $i++;
            }
        }
        $html .= '</ul>
                <div style="clear: both;"></div>
            </div>' . parent::fetchElement();
        if (nextendIsJoomla()) {
            $app = JFactory::getApplication();
            $user = JFactory::getUser();
            $extension = $app->input->get('option');
            $link = 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;e_name=&amp;asset=' . $extension . '&amp;author=' . $user->id;
            $html .= '<div style="margin: 0 -10px -5px;"><h2>Choose images</h2>
            <div class="blue-container">
                <iframe frameborder="0" src="' . $link . '" id="image-chooser" width="100%" style="float: left; width: 100%;" height="0"></iframe>
            </div></div>';
        }
        ob_start();
        ?>
<script type="text/html" id="image-form-skeleton">
    <div class="field-container">
    <div class="nextend-mixed-group">
      <div class="nextend-mixed-label">
        <label for="title'.$i.'" id="title'.$i.'-lbl">Title</label>
      </div>
      <div class="nextend-mixed-element">
        <div class="nextend-text ">
          <input type="text" autocomplete="off" style="width:390px;" value="" name="" id="title'.$i.'">
        </div>
      </div>
    </div>
    
    <div class="nextend-mixed-group" style="clear: both;">
      <div class="nextend-mixed-label">
        <label for="link'.$i.'" id="link'.$i.'-lbl">Link</label>
      </div>
      <div class="nextend-mixed-element">
        <div class="nextend-text">
          <input type="text" autocomplete="off" style="width:390px;" value="" name="" id="link'.$i.'">
        </div>
      </div>
    </div>
    
    <div class="nextend-mixed-group" style="clear: both;">
      <div class="nextend-mixed-label">
        <label for="description'.$i.'" id="description'.$i.'-lbl">Description</label>
      </div>
      <div class="nextend-mixed-element">
        <div class="nextend-textarea ">
          <textarea autocomplete="off" style="width:400px; height: 40px;" name="" id="description'.$i.'"></textarea>
        </div>
      </div>
    </div>
    </div>
    <div style="clear:both;"></div>
</script>
<script>
njQuery(window).ready(function(){
    var $ = njQuery,
        images = $('#selected-images'),
        deleteimage = $('#delete-image'),
        form = $('#smartslider-form'),
        skeleton = njQuery('#image-form-skeleton').html(),
        iii = 10000;
    
    function addImageToList(img){
        var el = $('<li><img src="'+nextendFixRelative(img)+'" data-src="'+img+'" />'+skeleton.replace(/'\.\$i\.'/g, iii)+'</li>').appendTo(images);
        iii++;
        images.sortable( "refresh" );
        $(window).trigger('resize');
        return el;
    }
    
    <?php 
        if (nextendIsJoomla()) {
            ?>
    var folder = "<?php 
            echo JComponentHelper::getParams('com_media')->get('image_path', 'images') . '/';
            ?>
",
        base_uri = "<?php 
            echo NextendUri::getBaseUri();
            ?>
",
        iframe = $('#image-chooser'),
        frame = $('#image-chooser');
    frame.on('load', function(){
        frame = $(this.contentWindow.document);
        frame.find('#imageframe').next('.well').remove();
        frame.find('#imageframe').next('fieldset').remove();
        frame.find('#imageframe').prev('fieldset').find('.fltrt').remove();
        frame.find('#imageForm').find('.pull-right').remove();
        frame.find('#upbutton').css('verticalAlign', 'top');
        this.contentWindow.ImageManager.populateFields = function(file){
            var uri = '';
            if(window.nextendimageurl == 0) uri = base_uri;
            addImageToList(uri+folder+file);
        }
        frame.find('#system-message-container').css('paddingTop', '15px');
        frame.find('body').css('overflow', 'hidden').css('padding', '0 15px');
        iframe.css('height', frame.find('html').prop('scrollHeight'));
        $(window).trigger('resize');
    });
    <?php 
        } elseif (nextendIsWordpress()) {
            ?>
    		var file_frame;
    		
    		jQuery('#smartslider-admin .add-image').on('click', function(event){
    			event.preventDefault();
    
    			// If the media frame already exists, reopen it.
    			if ( file_frame ) {
    				file_frame.open();
    				return;
    			}
    
    			// Create the media frame.
    			file_frame = wp.media.frames.file_frame = wp.media({
    				multiple: 'add',
    				frame: 'post',
    				library: {type: 'image'}
    			});
    
    			// When an image is selected, run a callback.
    			file_frame.on('insert', function(selection) {
              var state = file_frame.state();
              
              selection = selection || state.get('selection');
              
              if ( ! selection )
					       return; 
                 
              selection.map( function( attachment ) {
    					   var display = state.display( attachment ).toJSON();
                 
        					attachment = attachment.toJSON();
                  
                  var el = addImageToList(attachment.url);
                  el.find('input[id^=title]').val(attachment.title);
                  if(attachment.caption != '') el.find('textarea[id^=description]').val(attachment.caption);
                  else if(attachment.description != '') el.find('textarea[id^=description]').val(attachment.description);
                  
                  if(typeof display !== 'undefined' && typeof display.linkUrl !== 'undefined') el.find('input[id^=link]').val(display.linkUrl);
      				});
    			});
    
    			file_frame.open();
    
    			// Remove the Media Library tab (media_upload_tabs filter is broken in 3.6)
    			jQuery(".media-menu a:contains('Media Library')").remove();
    		});
    <?php 
        } elseif (nextendIsMagento()) {
            ?>
    
    var magentohidden = document.getElementById('magentohidden');
    
Mediabrowser.prototype.insert = Mediabrowser.prototype.insert.wrap(function(parentMethod, event) {
    var div;
    if (event != undefined) {
        div = $(Event.findElement(event, 'DIV'));
    } else {
        $$('div.selected').each(function (e) {
            div = $('#'+e.id);
        });
    }
    if (div.length == 0) {
        return false;
    }
    var targetEl = this.getTargetElement();
    if (! targetEl) {
        alert("Target element not found for content update");
        Windows.close('browser_window');
        return;
    }
    div = div[0];
    var params = {filename:div.id, node:this.currentNode.id, store:this.storeId};

    if (targetEl.tagName.toLowerCase() == 'textarea') {
        params.as_is = 1;
    }

    new Ajax.Request(this.onInsertUrl, {
        parameters: params,
        onSuccess: function(transport) {
            try {
                this.onAjaxSuccess(transport);
                if (this.getMediaBrowserOpener()) {
                    self.blur();
                }
                Windows.close('browser_window');
                if (targetEl.tagName.toLowerCase() == 'input') {
                    targetEl.value = transport.responseText;

                    // AntoineK overload START
                    if (varienGlobalEvents) {
                        varienGlobalEvents.fireEvent('mediachooserChange' + targetEl.id, transport.responseText);
                    }
                    // AntoineK overload END

                } else {
                    updateElementAtCursor(targetEl, transport.responseText);
                    if (varienGlobalEvents) {
                        varienGlobalEvents.fireEvent('tinymceChange');
                    }
                }
            } catch (e) {
                alert(e.message);
            }
        }.bind(this)
    });
});
        jQuery('#smartslider-admin .add-image').on('click', function(event){
            event.preventDefault();
            MediabrowserUtility.openDialog('<?php 
            echo Mage::helper("adminhtml")->getUrl('adminhtml/cms_wysiwyg_images_chooser/index', array('target_element_id' => 'magentohidden', 'store' => 'undefined', 'type' => 'image'));
            ?>
');
        });

        varienGlobalEvents.attachEventHandler('mediachooserChangemagentohidden', function(url){
            addImageToList(url);
        });
    <?php 
        }
        ?>
    
    $(document.body).css('overflow', 'auto');
    images.sortable({
        connectWith: deleteimage,
        placeholder: "ui-state-highlight",
        forcePlaceholderSize: true,
        appendTo: document.body,
        tolerance: 'pointer',
        handle: "img",
        over: function(){
            $(window).trigger('resize');
        },
        out: function(){
            $(window).trigger('resize');
        }
    });
    
    $(window).on('resize', function(){
        deleteimage.height(images.height());
    });
    
    deleteimage.sortable({
        tolerance: 'pointer',
        appendTo: document.body,
        over: function(){
            deleteimage.addClass('over');
            $(window).trigger('resize');
        },
        out: function(){
            deleteimage.removeClass('over');
            $(window).trigger('resize');
        },
        update: function(event, ui) {
            ui.item.remove();
            $(window).trigger('resize');
        } 
    });
    images.find('img').disableSelection();
    
    form.on('submit', function(){
        var data = {},
            i = 0;
        images.find('img').each(function(){
            data[i] = {};
            data[i].image = $(this).data('src');
            var cont = $(this).parent();
            data[i].title = cont.find('input[id^=title]').val();
            data[i].url = cont.find('input[id^=link]').val();
            data[i].description = cont.find('textarea[id^=description]').val();
            i++;
        });
        $('#<?php 
        echo $this->_id;
        ?>
').val(JSON.stringify(data));
    });
});
</script>
        <?php 
        $html .= ob_get_clean();
        return $html;
    }