/** * 2014-2017 IQIT-COMMERCE.COM * * NOTICE OF LICENSE * * @author IQIT-COMMERCE.COM * @copyright 2007-2017 IQIT-COMMERCE.COM * @license GNU General Public License version 2 * * You can not resell or redistribute this software. * */ $(document).ready(function () { var $myHorizontalTabs = $('#tabs1'); $myHorizontalTabs.sortable({ opacity: 0.6, cursor: 'move', update: function() { var order = $(this).sortable('serialize') + "&action=updateHorizontalTabsPosition&ajax=true"; $.post(iqitsearch_url, order); } }); $myHorizontalTabs.hover(function() { $(this).css("cursor","move"); }, function() { $(this).css("cursor","auto"); }); var $myVerticalTabs = $('#tabs2'); $myVerticalTabs.sortable({ opacity: 0.6, cursor: "move", update: function() { var order = $(this).sortable("serialize") + "&action=updateVerticalTabsPosition&ajax=true"; $.post(iqitsearch_url, order); } }); $myVerticalTabs.hover(function() { $(this).css("cursor","move"); }, function() { $(this).css("cursor","auto"); }); $('.list-wrapper').detach().prependTo('#list-container'); $('.icp-auto').iconpicker({ iconBaseClass: 'icon', iconComponentBaseClass: 'icon', iconClassPrefix: 'fa-' }); var p_auto_settings = { minChars: 1, cache: 0, source: function(term, response){ $.getJSON(iqitsearch_url, { q: term, ajax: true, action: 'SearchProducts' }, function(data){ response(data); }); }, renderItem: function (item, search){ return '
' + '(ID: ' + item.id + ') ' + item.name + '
'; }, onSelect: function(e, term, item){ item.parents('.products-wrapper').first().find('.select-products-ids').first().append(''); } }; $('.product-autocomplete').autoCompleteIq(p_auto_settings); //fix for tinymce source code edit $(document).on('focusin', function (e) { if ($(e.target).closest(".mce-window").length) { e.stopImmediatePropagation(); } }); /** * Grid creator * type = 1 = row * type = 2 = column */ //first rows sortable init $('.first-rows-wrapper').sortable({ items: ".first_rows", placeholder: "row-placeholder", handle: ".dragger-handle" }); //$( '.first-rows-wrapper' ).disableSelection(); //menu row sortable init $('.menu_row').sortable({ items: ".menu_column", handle: ".dragger-handle", forcePlaceholderSize: true, placeholder: "col-placeholder", start: function (e, ui) { ui.placeholder.height(ui.item.outerHeight()); ui.placeholder.addClass('col-xs-' + ui.item.data('width')); }, connectWith: ".menu_row" }); //$( '.menu_row' ).disableSelection(); //menu column sortable init $('.menu_column').sortable({ items: ".menu_row", handle: ".dragger-handle", placeholder: "row-placeholder", connectWith: ".menu_column" }); //$( '.menu_column' ).disableSelection(); //bind sort update $('.first-rows-wrapper').on('sortupdate', function (event, ui) { tmpelementId1 = ui.item.data('elementId'); if (typeof ui.item.parent().data('elementId') === 'undefined') { tmpparentId = 0; } ; tmpparentId = ui.item.parent().data('elementId'); if (submenu_content.hasOwnProperty(tmpelementId1)) { submenu_content[tmpelementId1].parentId = tmpparentId; } updateElementsPositions(); }); //set column width $('.grid_creator').on('change', '.select-column-width', function () { $element = $(this).parent().parent().parent(); tmpelementId = $element.data('elementId'); $element.removeClass('col-xs-' + $element.data('width')); $element.addClass('col-xs-' + this.value); $element.data('width', this.value); if (submenu_content.hasOwnProperty(tmpelementId)) { submenu_content[tmpelementId].width = parseInt(this.value); } }); //open content modal $('.grid_creator').on('click', '.column-content-edit', function () { $($(this).parent().parent().find('.column-content-modal').first()).modal({ keyboard: false }); }); //colum type $('.grid_creator').on('change', '.select-column-content', function () { $element = $(this).parents('.menu_column').first(); elmid = $element.data('elementId'); if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].contentType = parseInt(this.value); } setContentForm($element, this.value); }); //set content options $('.grid_creator').on('hidden.bs.modal', '.column-content-modal', function (e) { modid = $(this).parents('.menu_column').first().data('elementId'); if (submenu_content.hasOwnProperty(modid)) { delete submenu_content[modid].content; } switch (parseInt($(this).find('.select-column-content').first().val())) { case 1: setHtmlContent(this, modid); break; case 2: setCategoriesContent(this, modid); break; case 3: setLinksContent(this, modid); break; case 4: setProductsContent(this, modid); break; case 5: setManufacturersContent(this, modid); break; case 6: setImagesContent(this, modid); break; case 7: setSuppliersContent(this, modid); break; } setColumnStyle(this, modid); }); function setCategoriesContent(modal, elmid) { column_content = {}; if (ids = $(modal).find('.select-categories-ids').first().val()) { column_content.ids = ids; column_content.treep = parseInt($(modal).find('.select-categories-treep').first().val()); column_content.thumb = parseInt($(modal).find('.select-categories-thumb').first().val()); column_content.depth = parseInt($(modal).find('.select-categories-depth').first().val()); column_content.line = parseInt($(modal).find('.select-categories-line').first().val()); column_content.sublimit = parseInt($(modal).find('.select-categories-sublimit').first().val()); } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function getMeta(url) { var img = new Image(); img.src = url; var size = {}; img.addEventListener("load", function () { size['w'] = this.naturalWidth; size['h'] = this.naturalHeight; return size; }); return size; } function setImagesContent(modal, elmid) { column_content = {}; source = {}; href = {}; alt = {}; size = {}; if (typeof languages != "undefined") { languages.forEach(function (jsLang) { source[jsLang.id_lang] = $(modal).find('.image-source-' + jsLang.id_lang).first().val(); href[jsLang.id_lang] = $(modal).find('.image-href-' + jsLang.id_lang).first().val(); alt[jsLang.id_lang] = $(modal).find('.image-alt-' + jsLang.id_lang).first().val(); size[jsLang.id_lang] = getMeta(source[jsLang.id_lang]); }); } else { source[id_language] = $(modal).find('.image-source-' + id_language).first().val(); href[id_language] = $(modal).find('.image-href-' + id_language).first().val(); alt[id_language] = $(modal).find('.image-alt-' + id_language).first().val(); size[id_language] = getMeta(source[id_language]); } column_content.source = source; column_content.href = href; column_content.alt = alt; column_content.size = size; if (absolute = parseInt($(modal).find('.select-image-absolute').first().val())) { column_content.absolute = 1; column_content.i_a_t = $(modal).find('.image-absolute-t').first().val(); column_content.i_a_r = $(modal).find('.image-absolute-r').first().val(); column_content.i_a_b = $(modal).find('.image-absolute-b').first().val(); column_content.i_a_l = $(modal).find('.image-absolute-l').first().val(); } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function setProductsContent(modal, elmid) { column_content = {}; if (ids = serialize_productsselect($(modal).find('.select-products-ids').first().find('option'))) { column_content.ids = ids; column_content.line = parseInt($(modal).find('.select-products-line').first().val()); column_content.view = parseInt($(modal).find('.select-products-view').first().val()); } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function setManufacturersContent(modal, elmid) { column_content = {}; if (ids = $(modal).find('.select-manufacturers-ids').first().val()) { column_content.ids = ids; column_content.line = parseInt($(modal).find('.select-manufacturers-line').first().val()); } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function setSuppliersContent(modal, elmid) { column_content = {}; if (ids = $(modal).find('.select-suppliers-ids').first().val()) { column_content.ids = ids; column_content.line = parseInt($(modal).find('.select-suppliers-line').first().val()); } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function setLinksContent(modal, elmid) { column_content = {}; if (ids = $(modal).find('.select-links-ids').first().val()) { column_content.ids = ids; column_content.view = parseInt($(modal).find('.select-links-view').first().val()); } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function setHtmlContent(modal, elmid) { column_content = {}; if (ids = $(modal).find('.select-customhtml').first().val()) { column_content.ids = ids; } if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content = column_content; } } function setColumnStyle(modal, elmid) { submenu_style = {}; title = {}; href = {}; legend = {}; if (typeof languages != "undefined") { languages.forEach(function (jsLang) { title[jsLang.id_lang] = $(modal).find('.column-title-' + jsLang.id_lang).first().val(); href[jsLang.id_lang] = $(modal).find('.column-href-' + jsLang.id_lang).first().val(); legend[jsLang.id_lang] = $(modal).find('.column-legend-' + jsLang.id_lang).first().val(); }); } else { title[id_language] = $(modal).find('.column-title-' + id_language).first().val(); href[id_language] = $(modal).find('.column-href-' + id_language).first().val(); legendf[id_language] = $(modal).find('.column-legen-' + id_language).first().val(); } submenu_style.title = title; submenu_style.href = href; submenu_style.legend = legend; if (bgcolor = $(modal).find('.column_bg_color').first().val()) submenu_style.bg_color = bgcolor; if (legend_bg = $(modal).find('.legend_bg').first().val()) submenu_style.legend_bg = legend_bg; if (legend_txt = $(modal).find('.legend_txt').first().val()) submenu_style.legend_txt = legend_txt; if (title_borderc = $(modal).find('.title_borderc').first().val()) submenu_style.title_borderc = title_borderc; if (title_color = $(modal).find('.title_color').first().val()) submenu_style.title_color = title_color; if (title_colorh = $(modal).find('.title_colorh').first().val()) submenu_style.title_colorh = title_colorh; if (txt_color = $(modal).find('.txt_color').first().val()) submenu_style.txt_color = txt_color; if (txt_colorh = $(modal).find('.txt_colorh').first().val()) submenu_style.txt_colorh = txt_colorh; if (br_top_st = parseInt($(modal).find('.br_top_st').first().val())) { submenu_style.br_top_st = br_top_st; submenu_style.br_top_wh = parseInt($(modal).find('.br_top_wh').first().val()); submenu_style.br_top_c = $(modal).find('.br_top_c').first().val(); } if (br_right_st = parseInt($(modal).find('.br_right_st').first().val())) { submenu_style.br_right_st = br_right_st; submenu_style.br_right_wh = parseInt($(modal).find('.br_right_wh').first().val()); submenu_style.br_right_c = $(modal).find('.br_right_c').first().val(); } if (br_bottom_st = parseInt($(modal).find('.br_bottom_st').first().val())) { submenu_style.br_bottom_st = br_bottom_st; submenu_style.br_bottom_wh = parseInt($(modal).find('.br_bottom_wh').first().val()); submenu_style.br_bottom_c = $(modal).find('.br_bottom_c').first().val(); } if (br_left_st = parseInt($(modal).find('.br_left_st').first().val())) { submenu_style.br_left_st = br_left_st; submenu_style.br_left_wh = parseInt($(modal).find('.br_left_wh').first().val()); submenu_style.br_left_c = $(modal).find('.br_left_c').first().val(); } //paddings if ($(modal).find('.c-padding-top').first().prop('checked')) submenu_style.c_p_t = 1; if ($(modal).find('.c-padding-right').first().prop('checked')) submenu_style.c_p_r = 1; if ($(modal).find('.c-padding-bottom').first().prop('checked')) submenu_style.c_p_b = 1; if ($(modal).find('.c-padding-left').first().prop('checked')) submenu_style.c_p_l = 1; //margins if ($(modal).find('.c-margin-top').first().prop('checked')) submenu_style.c_m_t = 1; if ($(modal).find('.c-margin-right').first().prop('checked')) submenu_style.c_m_r = 1; if ($(modal).find('.c-margin-bottom').first().prop('checked')) submenu_style.c_m_b = 1; if ($(modal).find('.c-margin-left').first().prop('checked')) submenu_style.c_m_l = 1; if (submenu_content.hasOwnProperty(elmid)) { submenu_content[elmid].content_s = submenu_style; } } function serialize_productsselect(element) { options = []; element.each(function (i) { options[i] = $(this).val(); }); return uniqProducts(options); } function uniqProducts(a) { var prims = {"boolean": {}, "number": {}, "string": {}}, objs = []; return a.filter(function (item) { var type = typeof item; if (type in prims) return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); else return objs.indexOf(item) >= 0 ? false : objs.push(item); }); } function setContentForm($element, val) { $element.find('.column-content-info').first().text($element.find('.select-column-content option[value="' + parseInt(val) + '"]').first().text()); switch (parseInt(val)) { case 0: $element.find('.content-options-wrapper').hide(); break; case 1: $element.find('.content-options-wrapper').not('.htmlcontent-wrapper').hide(); $element.find('.htmlcontent-wrapper').show(); break; case 2: $element.find('.content-options-wrapper').not('.categorytree-wrapper').hide(); $element.find('.categorytree-wrapper').show(); break; case 3: $element.find('.content-options-wrapper').not('.va-links-wrapper').hide(); $element.find('.va-links-wrapper').show(); break; case 4: $element.find('.content-options-wrapper').not('.products-wrapper').hide(); $element.find('.products-wrapper').show(); break; case 5: $element.find('.content-options-wrapper').not('.manufacturers-wrapper').hide(); $element.find('.manufacturers-wrapper').show(); break; case 6: $element.find('.content-options-wrapper').not('.column-image-wrapper').hide(); $element.find('.column-image-wrapper').show(); break; case 7: $element.find('.content-options-wrapper').not('.suppliers-wrapper').hide(); $element.find('.suppliers-wrapper').show(); break; } } //init submenu elements var submenu_content = {}; var elementId = 0; if ($('#submenu-elements').length) { var prev_submenu_val = $('#submenu-elements').val(); if (prev_submenu_val.length !== 0) { var old_submenu_content = JSON.parse(prev_submenu_val); $.extend(submenu_content, old_submenu_content); var ids = $(".menu-element").map(function () { return parseInt($(this).data('element-id'), 10); }).get(); elementId = Math.max.apply(Math, ids); } } $('.menu_column').each(function () { $(this).find('.column_bg_color-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.legend_bg-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.legend_txt-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.br_top_c-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.br_right_c-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.br_bottom_c-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.br_left_c-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.title_borderc-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.title_color-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.title_colorh-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.txt_color-' + $(this).data('element-id')).first().mColorPicker(); $(this).find('.txt_colorh-' + $(this).data('element-id')).first().mColorPicker(); setContentForm($(this), $(this).data('contenttype')); }); //add first row button $('#buttons-sample').on('click', '.add-row-action', function () { $parentElement = $(this).parent().parent().parent().find('.first-rows-wrapper'); $parentElement.append(''); $('.menu-element-id-' + elementId).sortable({ items: ".menu_column", handle: ".dragger-handle", connectWith: ".menu_row", placeholder: "col-placeholder", }); //$( '.menu-element-id-' + elementId).disableSelection(); position = $parentElement.children().length; var newElement = { 'elementId': elementId, 'type': 1, 'depth': 0, 'position': position, 'parentId': 0 }; submenu_content[elementId] = newElement; }); //add row button $('.grid_creator').on('click', '.menu-element .add-row-action', function () { parentId = $(this).parent().parent().data("element-id"); depth = $(this).parent().parent().data("depth") + 1; $parentElement = $(this).parent().parent(); $parentElement.append(''); $('.menu-element-id-' + elementId).sortable({ items: ".menu_column", handle: ".dragger-handle", placeholder: "col-placeholder", connectWith: ".menu_row" }); //$( '.menu-element-id-' + elementId).disableSelection(); position = $parentElement.children().length; var newElement = { 'elementId': elementId, 'type': 1, 'depth': depth, 'position': position, 'parentId': parentId }; submenu_content[elementId] = newElement; }); //clone column $('.grid_creator').on('click', ' .duplicate-element-action', function () { $brotherElement = $(this).parents('.menu-element').first(); brotherId = $brotherElement.data('element-id'); if (submenu_content.hasOwnProperty(brotherId)) { clonedElement = clone(submenu_content[brotherId]); clonedElement.elementId = ++elementId; $cloneElement = $brotherElement.clone(true); $cloneElement.data('element-id', elementId); $cloneElement.removeClass('menu-element-id-' + brotherId); $cloneElement.addClass('menu-element-id-' + elementId).appendTo($brotherElement.parent()); submenu_content[elementId] = clonedElement; } }); //add column button $('.grid_creator').on('click', '.menu-element .add-column-action', function () { parentId = $(this).parent().parent().data('element-id'); depth = $(this).parent().parent().data("depth") + 1; $parentElement = $(this).parent().parent(); $parentElement.append(''); $('.menu-element-id-' + elementId).sortable({ items: ".menu_row", handle: ".dragger-handle", placeholder: "row-placeholder", connectWith: ".menu_column" }); //$( '.menu-element-id-' + elementId).disableSelection(); position = $parentElement.children().length; var newElement = { 'elementId': elementId, 'type': 2, 'depth': depth, 'width': 3, 'contentType': 0, 'position': position, 'parentId': parentId }; $('.menu-element-id-' + elementId + ' .column_bg_color').addClass('column_bg_color-' + elementId); $('.menu-element-id-' + elementId + ' .column_bg_color-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .legend_bg').addClass('legend_bg-' + elementId); $('.menu-element-id-' + elementId + ' .legend_bg-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .legend_txt').addClass('legend_txt-' + elementId); $('.menu-element-id-' + elementId + ' .legend_txt-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .br_top_c').addClass('br_top_c-' + elementId); $('.menu-element-id-' + elementId + ' .br_top_c-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .br_right_c').addClass('br_right_c-' + elementId); $('.menu-element-id-' + elementId + ' .br_right_c-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .br_bottom_c').addClass('br_bottom_c-' + elementId); $('.menu-element-id-' + elementId + ' .br_bottom_c-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .br_left_c').addClass('br_left_c-' + elementId); $('.menu-element-id-' + elementId + ' .br_left_c-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .title_borderc').addClass('title_borderc-' + elementId); $('.menu-element-id-' + elementId + ' .title_borderc-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .title_color').addClass('title_color-' + elementId); $('.menu-element-id-' + elementId + ' .title_color-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .title_colorh').addClass('title_colorh-' + elementId); $('.menu-element-id-' + elementId + ' .title_colorh-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .txt_color').addClass('txt_color-' + elementId); $('.menu-element-id-' + elementId + ' .txt_color-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .txt_colorh').addClass('txt_colorh-' + elementId); $('.menu-element-id-' + elementId + ' .txt_colorh-' + elementId).mColorPicker(); $('.menu-element-id-' + elementId + ' .image-source').attr('id', elementId + '-image-source-' + $(this).data('lang-id')); $('.menu-element-id-' + elementId + ' .image-source').each(function () { $(this).attr('id', elementId + '-image-source-' + $(this).data('lang-id')); $(this).parent().find('.iframe-column-upload').data('input-name', elementId + '-image-source-' + $(this).data('lang-id')); }); $('.menu-element-id-' + elementId + ' .rte').each(function () { $(this).attr('id', elementId + '-htmlcontent-' + $(this).data('lang-id')); }); submenu_content[elementId] = newElement; setContentForm($('.menu-element-id-' + elementId), 0); $('.menu-element-id-' + elementId + ' .product-autocomplete').autoCompleteIq(p_auto_settings); }); //remove element button $('.grid_creator').on('click', '.remove-element-action', function () { deleteId = $(this).parent().parent().data('element-id'); $(this).parent().parent().remove(); delete submenu_content[deleteId]; deleteMenuElelement(deleteId) }); //pass submenu to input field $('button[name="submitAddTab"]').on("click", function () { if ($.isEmptyObject(submenu_content)) $('#submenu-elements').val(''); else $('#submenu-elements').val(encodeURIComponent(JSON.stringify(submenu_content))); }); //remove product fromc olumn $('.grid_creator').on('click', '.remove-products-ids', function () { $(this).parent().find('.select-products-ids option:selected').each(function (i) { $(this).remove(); }); }); //delete menu elements recursivly function deleteMenuElelement(id) { for (var key in submenu_content) { if (submenu_content.hasOwnProperty(key)) { if (submenu_content[key].parentId == id) { tmpelid = submenu_content[key].elementId; delete submenu_content[key]; deleteMenuElelement(tmpelid); } } } } //update all menu positions after drag and drop function updateElementsPositions() { for (var key in submenu_content) { if (submenu_content.hasOwnProperty(key)) { submenu_content[key].position = $('.menu-element-id-' + submenu_content[key].elementId).index(); } } } function clone(src) { function mixin(dest, source, copyFunc) { var name, s, i, empty = {}; for (name in source) { // the (!(name in empty) || empty[name] !== s) condition avoids copying properties in "source" // inherited from Object.prototype. For example, if dest has a custom toString() method, // don't overwrite it with the toString() method that source inherited from Object.prototype s = source[name]; if (!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))) { dest[name] = copyFunc ? copyFunc(s) : s; } } return dest; } if (!src || typeof src != "object" || Object.prototype.toString.call(src) === "[object Function]") { // null, undefined, any non-object, or function return src; // anything } if (src.nodeType && "cloneNode" in src) { // DOM Node return src.cloneNode(true); // Node } if (src instanceof Date) { // Date return new Date(src.getTime()); // Date } if (src instanceof RegExp) { // RegExp return new RegExp(src); // RegExp } var r, i, l; if (src instanceof Array) { // array r = []; for (i = 0, l = src.length; i < l; ++i) { if (i in src) { r.push(clone(src[i])); } } // we don't clone functions for performance reasons // }else if(d.isFunction(src)){ // // function // r = function(){ return src.apply(this, arguments); }; } else { // generic objects r = src.constructor ? new src.constructor() : {}; } return mixin(r, src, clone); } });