%PDF- %PDF-
Direktori : /home1/lightco1/www/kichler.com.au/plugins/system/t3/admin/megamenu/js/ |
Current File : //home1/lightco1/www/kichler.com.au/plugins/system/t3/admin/megamenu/js/megamenu.js |
/** *------------------------------------------------------------------------------ * @package T3 Framework for Joomla! *------------------------------------------------------------------------------ * @copyright Copyright (C) 2004-2013 JoomlArt.com. All Rights Reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @authors JoomlArt, JoomlaBamboo, (contribute to this project at github * & Google group to become co-author) * @Google group: https://groups.google.com/forum/#!forum/t3fw * @Link: http://t3-framework.org *------------------------------------------------------------------------------ */ var T3AdminMegamenu = window.T3AdminMegamenu || {}; !function ($) { var currentSelected = null, megamenu, nav_items, nav_subs, nav_cols, nav_all; $.fn.megamenuAdmin = function (options) { options = $.extend({}, $.fn.megamenuAdmin.defaults, options); //get the first (top most megamenu) megamenu = $(this).find('.t3-megamenu:first'); //find all class nav_items = megamenu.find('ul[class*="level"]>li[data-id]>:first-child'); console.log(nav_items); nav_subs = megamenu.find('.nav-child'); nav_cols = megamenu.find('[class*="span"]'); nav_all = nav_items.add(nav_subs).add(nav_cols); // hide sub nav_items.each (function () { var a = $(this), liitem = a.closest('li'); if (liitem.data ('hidesub') == 1) { var sub = liitem.find('.nav-child:first'); // check if have menu-items in sub sub.css('display','none'); a.removeClass ('dropdown-toggle').data('toggle', ''); liitem.removeClass('dropdown dropdown-submenu mega'); } }); // hide toolbox hide_toolbox(true); // bind events for all selectable elements bindEvents (nav_all); // unbind all events for toolbox actions & inputs $('.toolbox-action, .toolbox-toggle, .toolbox-input').unbind ("focus blur click change keydown"); // stop popup event when click in toolbox area $('.t3-admin-mm-row').click (function(event) { event.stopPropagation(); // return false; }); // deselect when click outside menu $(document.body).click (function(event) { hide_toolbox (true); //event.stopPropagation(); }); // bind event for action $('.toolbox-action').click (function(event) { var action = $(this).data ('action'); if (action) { actions.datas = $(this).data(); actions[action] (); } event.stopPropagation(); return false; }); $('.toolbox-toggle').change (function(event) { var action = $(this).data ('action'); if (action) { actions.datas = $(this).data(); actions[action] (); } event.stopPropagation(); return false; }); // ignore events $('.toolbox-input').bind ('focus blur click', function(event) { event.stopPropagation(); return false; }); $('.toolbox-input').bind ('keydown', function(event) { if (event.keyCode == '13') { apply_toolbox (this); event.preventDefault(); } }); $('.toolbox-input').change (function(event) { apply_toolbox (this); event.stopPropagation(); return false; }); return this; }; $.fn.megamenuAdmin.defaults = {}; // Actions var actions = {}; actions.data = {}; actions.toggleSub = function () { if (!currentSelected) return ; var liitem = currentSelected.closest('li'), sub = liitem.find ('.nav-child:first'); if (liitem.data('group')) return; // not allow do with group if (sub.length == 0 || sub.css('display') == 'none') { // add sub if (sub.length == 0) { sub = $('<div class="nav-child dropdown-menu mega-dropdown-menu"><div class="row-fluid"><div class="span12" data-width="12"><div class="mega-inner"></div></div></div></div>').appendTo(liitem); bindEvents (sub.find ('[class*="span"]')); liitem.addClass ('mega'); } else { // sub.attr('style', ''); sub.css('display',''); liitem.data('hidesub', 0); } liitem.data('group', 0); currentSelected.addClass ('dropdown-toggle').data('toggle', 'dropdown'); liitem.addClass(liitem.data('level') == 1 ? 'dropdown' : 'dropdown-submenu'); bindEvents(sub); } else { unbindEvents(sub); // check if have menu-items in sub if (liitem.find('ul.mega-nav.level'+liitem.data('level')).length > 0) { sub.css('display','none'); liitem.data('hidesub', 1); } else { // just remove it sub.remove(); } liitem.data('group', 0); currentSelected.removeClass ('dropdown-toggle').data('toggle', ''); liitem.removeClass('dropdown dropdown-submenu mega'); } // update toolbox status update_toolbox (); } actions.toggleGroup = function () { if (!currentSelected) return ; var liitem = currentSelected.parent(), sub = liitem.find ('.nav-child:first'); if (liitem.data('level') == 1) return; // ignore for top level if (liitem.data('group')) { liitem.data('group', 0); liitem.removeClass('mega-group').addClass('dropdown-submenu'); currentSelected.addClass ('dropdown-toggle').data('toggle', 'dropdown'); sub.removeClass ('mega-group-ct').addClass ('dropdown-menu mega-dropdown-menu'); sub.css('width', sub.data('width')); rebindEvents(sub); } else { currentSelected.removeClass ('dropdown-toggle').data('toggle', ''); liitem.data('group', 1); liitem.removeClass('dropdown-submenu').addClass('mega-group'); sub.removeClass ('dropdown-menu mega-dropdown-menu').addClass ('mega-group-ct'); sub.css('width', ''); rebindEvents(sub); } // update toolbox status update_toolbox (); } actions.moveItemsLeft = function () { if (!currentSelected) return ; var $item = currentSelected.closest('li'), $liparent = $item.parent().closest('li'), level = $liparent.data('level'), $col = $item.closest ('[class*="span"]'), $items = $col.find ('ul:first > li'), itemidx = $items.index ($item), $moveitems = $items.slice (0, itemidx+1), itemleft = $items.length - $moveitems.length, $rows = $col.parent().parent().children ('[class*="row"]'), $cols = $rows.children('[class*="span"]').filter (function(){return !$(this).data('position')}), colidx = $cols.index ($col); if (!$liparent.length) return ; // need make this is mega first if (colidx == 0) { // add new col var oldSelected = currentSelected; currentSelected = $col; // add column to first actions.datas.addfirst = true; actions.addColumn (); $cols = $rows.children('[class*="span"]').filter (function(){return !$(this).data('position')}); currentSelected = oldSelected; colidx++; } // move content to right col var $tocol = $($cols[colidx-1]); var $ul = $tocol.find('ul:first'); if (!$ul.length) { $ul = $('<ul class="mega-nav level'+level+'">').appendTo ($tocol.children('.mega-inner')); } $moveitems.appendTo($ul); if (itemleft == 0) { $col.find('ul:first').remove(); } // update toolbox status update_toolbox (); } actions.moveItemsRight = function () { if (!currentSelected) return ; var $item = currentSelected.closest('li'), $liparent = $item.parent().closest('li'), level = $liparent.data('level'), $col = $item.closest ('[class*="span"]'), $items = $col.find ('ul:first > li'), itemidx = $items.index ($item), $moveitems = $items.slice (itemidx), itemleft = $items.length - $moveitems.length, $rows = $col.parent().parent().children ('[class*="row"]'), $cols = $rows.children('[class*="span"]').filter (function(){return !$(this).data('position')}), colidx = $cols.index ($col); if (!$liparent.length) return ; // need make this is mega first if (colidx == $cols.length - 1) { // add new col var oldSelected = currentSelected; currentSelected = $col; actions.datas.addfirst = false; actions.addColumn (); $cols = $rows.children('[class*="span"]').filter (function(){return !$(this).data('position')}); currentSelected = oldSelected; } // move content to right col var $tocol = $($cols[colidx+1]); var $ul = $tocol.find('ul:first'); if (!$ul.length) { $ul = $('<ul class="mega-nav level'+level+'">').appendTo ($tocol.children('.mega-inner')); } $moveitems.prependTo($ul); if (itemleft == 0) { $col.find('ul:first').remove(); } // update toolbox status show_toolbox (currentSelected); } actions.addRow = function () { if (!currentSelected) return ; var $row = $('<div class="row-fluid"><div class="span12"><div class="mega-inner"></div></div></div>').appendTo(currentSelected.find('[class*="row"]:first').parent()), $col = $row.children(); // bind event bindEvents ($col); currentSelected = null; // switch selected to new column show_toolbox ($col); } actions.alignment = function () { var liitem = currentSelected.closest ('li'); liitem.removeClass ('mega-align-left mega-align-center mega-align-right mega-align-justify').addClass ('mega-align-'+actions.datas.align); if (actions.datas.align == 'justify') { currentSelected.addClass('span12'); currentSelected.css('width', ''); } else { currentSelected.removeClass('span12'); if (currentSelected.data('width')) currentSelected.css('width', currentSelected.data('width')); } liitem.data('alignsub', actions.datas.align); update_toolbox (); } actions.addColumn = function () { if (!currentSelected) return ; var $cols = currentSelected.parent().children('[class*="span"]'), colcount = $cols.length + 1, colwidths = defaultColumnsWidth (colcount); // add new column var $col = $('<div><div class="mega-inner"></div></div>'); if (actions.datas.addfirst) $col.prependTo (currentSelected.parent()); else { $col.insertAfter (currentSelected); } $cols = $cols.add ($col); // bind event bindEvents ($col); // update width $cols.each (function (i) { $(this).removeClass ('span'+$(this).data('width')).addClass('span'+colwidths[i]).data('width', colwidths[i]); }); // switch selected to new column show_toolbox ($col); } actions.removeColumn = function () { if (!currentSelected){ return; } var $col = currentSelected, $row = $col.parent(), $rows = $row.parent().children ('[class*="row"]'), $allcols = $rows.children('[class*="span"]'), $allmenucols = $allcols.filter (function(){return !$(this).data('position')}), $haspos = $allcols.filter (function(){return $(this).data('position')}).length, $cols = $row.children('[class*="span"]'), colcount = $cols.length - 1, colwidths = defaultColumnsWidth (colcount), type_menu = $col.data ('position') ? false : true; if ((type_menu && ((!$haspos && $allmenucols.length == 1) || ($haspos && $allmenucols.length == 0))) || $allcols.length == 1) { // if this is the only one column left return; } // remove column // check and move content to other column if (type_menu) { var colidx = $allmenucols.index($col), tocol = colidx == 0 ? $allmenucols[1] : $allmenucols[colidx-1]; $col.find ('ul:first > li').appendTo ($(tocol).find('ul:first')); } var colidx = $allcols.index($col), nextActiveCol = colidx == 0 ? $allcols[1] : $allcols[colidx-1]; if (colcount < 1) { $row.remove(); } else { $cols = $cols.not ($col); // update width $cols.each (function (i) { $(this).removeClass ('span'+$(this).data('width')).addClass('span'+colwidths[i]).data('width', colwidths[i]); }); // remove col $col.remove(); } show_toolbox ($(nextActiveCol)); } actions.hideWhenCollapse = function () { if (!currentSelected) return ; var type = toolbox_type (); if (type == 'sub') { var liitem = currentSelected.closest('li'); if (liitem.data('hidewcol')) { liitem.data('hidewcol', 0); liitem.removeClass ('sub-hidden-collapse'); } else { liitem.data('hidewcol', 1); liitem.addClass ('sub-hidden-collapse'); } } else if (type == 'col') { if (currentSelected.data('hidewcol')) { currentSelected.data('hidewcol', 0); currentSelected.removeClass ('hidden-collapse'); } else { currentSelected.data('hidewcol', 1); currentSelected.addClass ('hidden-collapse'); } } update_toolbox (); } // toggle screen actions.toggleScreen = function () { if ($('.toolbox-togglescreen').hasClass('t3-fullscreen-full')) { $('.subhead-collapse').removeClass ('subhead-fixed'); $('#t3-admin-megamenu').closest('.controls').removeClass ('t3-admin-control-fixed'); $('.toolbox-togglescreen').removeClass ('t3-fullscreen-full').find('i').removeClass().addClass(actions.datas.iconfull); } else { $('.subhead-collapse').addClass ('subhead-fixed'); $('#t3-admin-megamenu').closest('.controls').addClass ('t3-admin-control-fixed'); $('.toolbox-togglescreen').addClass ('t3-fullscreen-full').find('i').removeClass().addClass(actions.datas.iconsmall); } } actions.saveConfig = function (e) { //blocking var savebtn = $(this); if(savebtn.hasClass('loading')){ return false; } savebtn.addClass('loading'); var config = {}, items = megamenu.find('ul[class*="level"] > li[data-id]'); items.each (function(){ var $this = $(this), id = 'item-'+$this.data('id'), item = {}; if ($this.hasClass ('mega')) { var $sub = $this.find ('.nav-child:first'); item['sub'] = {}; for (var d in $sub.data()) { if (d != 'id' && d != 'level' && $sub.data(d)) item['sub'][d] = $sub.data(d); } // build row var $rows = $sub.find('[class*="row"]:first').parent().children('[class*="row"]'), rows = [], i = 0; $rows.each (function () { var row = [], $cols = $(this).children('[class*="span"]'), j = 0; $cols.each (function(){ var li = $(this).find('ul[class*="level"] > li[data-id]:first'), col = {}; if (li.length) { col['item'] = li.data('id'); } else if ($(this).data('position')) { col['position'] = $(this).data('position'); } else { col['item'] = -1; } for (var d in $(this).data()) { if (d != 'id' && d != 'level' && d != 'position' && $(this).data(d)) col[d] = $(this).data(d); } row[j++] = col; }); rows[i++] = row; }); item['sub']['rows'] = rows; } for (var d in $this.data()) { if (d != 'id' && d != 'level' && $this.data(d)) { if (d == 'caption') { item[d] = $this.data(d).replace(/</g, "[lt]").replace(/>/g, "[gt]"); } else item[d] = $this.data(d); } } if (!$.isEmptyObject(item)){ config[id] = item; } }); var menutype = $('#jform_params_mm_type').val(), curconfig = T3AdminMegamenu.config; if($.isArray(curconfig) && curconfig.length == 0){ curconfig = {}; } curconfig[menutype] = config; $.ajax({ url: T3AdminMegamenu.referer, type: 'post', data: { t3action: 'megamenu', t3task: 'save', styleid: T3AdminMegamenu.styleid, template: T3AdminMegamenu.template, mmkey: $('#megamenu-key').val(), config: JSON.stringify(config), rand: Math.random() } }).done(function(rsp){ try { rsp = $.parseJSON(rsp); } catch(e){ rsp = false; } if(rsp){ clearTimeout($('#ajax-message').data('sid')); $('#ajax-message') .removeClass('alert-error alert-success') .addClass(rsp.status ? 'alert-success' : 'alert-error') .addClass('in') .data('sid', setTimeout(function(){ $('#ajax-message').removeClass('in') }, 5000)) .find('strong') .html(rsp.message); } }).always(function(){ savebtn.removeClass('loading') }); } toolbox_type = function () { return currentSelected.hasClass ('nav-child') ? 'sub' : (!currentSelected.hasClass('mega-group-title') && currentSelected[0].tagName == 'DIV' ? 'col':'item'); } hide_toolbox = function (show_intro) { $('#t3-admin-mm-tb .admin-toolbox').hide(); currentSelected = null; if (megamenu && megamenu.data('nav_all')) megamenu.data('nav_all').removeClass ('selected'); megamenu.find ('li').removeClass ('open'); if (show_intro) { $('#t3-admin-mm-intro').show(); } else { $('#t3-admin-mm-intro').hide(); } } show_toolbox = function (selected) { hide_toolbox (false); if (selected) currentSelected = selected; // remove class open for other megamenu.find ('ul[class*="level"] > li[data-id]').each (function(){ if (!$(this).has (currentSelected).length > 0) $(this).removeClass ('open'); else $(this).addClass ('open'); }); // set selected megamenu.data('nav_all').removeClass ('selected'); currentSelected.addClass ('selected'); var type = toolbox_type (); $('#t3-admin-mm-tool' + type).show(); update_toolbox (type); $('#t3-admin-mm-tb').show(); } update_toolbox = function (type) { if (!type) type = toolbox_type (); // remove all disabled status $('#t3-admin-mm-tb .disabled').removeClass('disabled'); //$('#t3-admin-mm-tb .active').removeClass('active'); switch (type) { case 'item': // value for toggle var liitem = currentSelected.closest('li'), liparent = liitem.parent().closest('li'), sub = liitem.find ('.nav-child:first'); $('.toolitem-exclass').attr('value', liitem.data ('class') || ''); $('.toolitem-xicon').attr('value', liitem.data ('xicon') || ''); $('.toolitem-caption').attr('value', liitem.data ('caption') || ''); // toggle Submenu var toggle = $('.toolitem-sub'); //toggle.find('label').removeClass('active'); if (liitem.data('group')) { // disable the toggle $('.toolitem-sub').addClass ('disabled'); } else if (sub.length == 0 || sub.css('display') == 'none') { // sub disabled update_toggle (toggle, 0); } else { // sub enabled update_toggle (toggle, 1); } // toggle Group var toggle = $('.toolitem-group'); //toggle.find('label').removeClass('active'); if (liitem.data('level') == 1 || sub.length == 0 || liitem.data('hidesub') == 1) { // disable the toggle $('.toolitem-group').addClass ('disabled'); } else if (liitem.data('group')) { // Group off update_toggle (toggle, 1); } else { // Group on update_toggle (toggle, 0); } // move left/right column action: disabled if this item is not in a mega submenu if (!liparent.length || !liparent.hasClass('mega')) { $('.toolitem-moveleft, .toolitem-moveright').addClass ('disabled'); } break; case 'sub': var liitem = currentSelected.closest('li'); $('.toolsub-exclass').attr('value', currentSelected.data ('class') || ''); $('.toolsub-alignment .toolbox-action').removeClass('active'); if (liitem.data('group')) { $('.toolsub-width').attr('value', '').addClass ('disabled'); // disable alignment $('.toolsub-alignment').addClass ('disabled'); } else { $('.toolsub-width').attr('value', currentSelected.data ('width') || ''); // if not top level, allow align-left & right only if (liitem.data('level') > 1) { $('.toolsub-align-center').addClass ('disabled'); $('.toolsub-align-justify').addClass ('disabled'); } // active align button if (liitem.data('alignsub')) { $('.toolsub-align-'+liitem.data('alignsub')).addClass ('active').siblings().removeClass('active'); if (liitem.data('alignsub') == 'justify') { $('.toolsub-width').addClass ('disabled'); } } } // toggle hidewhencollapse var toggle = $('.toolsub-hidewhencollapse'); //toggle.find('label').removeClass('active'); if (liitem.data('hidewcol')) { // toggle enable update_toggle (toggle, 1); } else { // toggle disable update_toggle (toggle, 0); } break; case 'col': $('.toolcol-exclass').attr('value', currentSelected.data ('class') || ''); //$('.toolcol-position').attr('value', currentSelected.data ('position') || ''); //$('.toolcol-width').attr('value', currentSelected.data ('width') || ''); $('.toolcol-position').val (currentSelected.data ('position') || '').trigger("liszt:updated"); $('.toolcol-width').val (currentSelected.data ('width') || '').trigger("liszt:updated"); /* enable/disable module chosen */ if (currentSelected.find ('.mega-nav').length > 0) { $('.toolcol-position').parent().addClass('disabled'); } else { $('.toolcol-groupstyle').parent().addClass('disabled'); } // disable choose width if signle column if (currentSelected.parent().children().length == 1) { $('.toolcol-width').parent().addClass ('disabled'); } // toggle hidewhencollapse var toggle = $('.toolcol-hidewhencollapse'); //toggle.find('label').removeClass('active'); if (currentSelected.data('hidewcol')) { // toggle enable update_toggle (toggle, 1); } else { // toggle disable update_toggle (toggle, 0); } // toggle group style update_toggle ($('.toolcol-groupstyle'), currentSelected.data('groupstyle') == 'mega-tab' ? 1 : 0); break; } } update_toggle = function (toggle, val) { $input = toggle.find('input[value="'+val+'"]'); $input.attr('checked', 'checked'); $input.trigger ('update'); } apply_toolbox = function (input) { var name = $(input).data ('name'), value = input.value, type = toolbox_type (); switch (name) { case 'width': if (type == 'sub') { currentSelected.width(value); } if (type == 'col') { currentSelected.removeClass('span'+currentSelected.data(name)).addClass ('span'+value); } currentSelected.data (name, value); break; case 'class': if (type == 'item') { var item = currentSelected.closest('li'); } else { var item = currentSelected; } item.removeClass(item.data(name) || '').addClass (value); item.data (name, value); break; case 'xicon': if (type == 'item') { currentSelected.closest('li').data (name, value); currentSelected.find('i').remove(); if (value) currentSelected.prepend($('<i class="'+value+'"></i>')); } break; case 'caption': if (type == 'item') { currentSelected.closest('li').data (name, value); currentSelected.find('span.mega-caption').remove(); if (value) currentSelected.append($('<span class="mega-caption">'+value+'</span>')); } break; case 'position': // replace content if this is not menu-items type if (currentSelected.find ('ul.mega-nav[class*="level"]').length == 0) { // get module content if (value) { $.ajax({ url: T3AdminMegamenu.site, data: { t3action: 'module', mid: value, styleid: T3AdminMegamenu.styleid, template: T3AdminMegamenu.template, t3menu: $('#menu-type').val(), t3acl: $('#access-level').val(), t3lang: $('#menu-type :selected').attr('data-language') || '*', rand: Math.random() } }).done(function ( data ) { if(data){ if(data.charAt(0) == '{' || data.charAt(0) == '['){ try { data = $.parseJSON(data); } catch(e){ data = false; } if(data && data.message){ clearTimeout($('#ajax-message').data('sid')); $('#ajax-message') .removeClass('alert-error alert-success') .addClass('alert-error') .addClass('in') .data('sid', setTimeout(function(){ $('#ajax-message').removeClass('in') }, 5000)) .find('strong') .html(data.message); } //not valid value => we set to empty $(input).val('').trigger('liszt:updated'); currentSelected.data (name, ''); } else { currentSelected.find('.mega-inner').html(data).find(':input').removeAttr('name'); } } }); } else { currentSelected.find('.mega-inner').html(''); } currentSelected.data (name, value); } break; case 'groupstyle': console.log(name + ':' + value); if (value == 1) { currentSelected.data (name, 'mega-tab').addClass('mega-tab'); } else { currentSelected.data (name, '').removeClass('mega-tab'); } break; } } defaultColumnsWidth = function (count) { if (count < 1) return null; var total = 12, min = Math.floor(total / count), widths = []; for(var i=0;i<count;i++) { widths[i] = min; } widths[count - 1] = total - min*(count-1); return widths; } bindEvents = function (els) { if (megamenu.data('nav_all')) megamenu.data('nav_all', megamenu.data('nav_all').add(els)); else megamenu.data('nav_all', els); els.mouseover(function(event) { megamenu.data('nav_all').removeClass ('hover'); $this = $(this); clearTimeout (megamenu.data('hovertimeout')); megamenu.data('hovertimeout', setTimeout("$this.addClass('hover')", 100)); event.stopPropagation(); }); els.mouseout(function(event) { clearTimeout (megamenu.data('hovertimeout')); $(this).removeClass('hover'); }); els.click (function(event){ show_toolbox ($(this)); event.stopPropagation(); return false; }); } unbindEvents = function (els) { megamenu.data('nav_all', megamenu.data('nav_all').not(els)); els.unbind('mouseover').unbind('mouseout').unbind('click'); } rebindEvents = function (els) { unbindEvents(els); bindEvents(els); } }(jQuery); !function($){ $.extend(T3AdminMegamenu, { // put megamenu admin panel into right place t3megamenu: function(rsp){ $('#t3-admin-mm-container').html(rsp).megamenuAdmin().find(':input').removeAttr('name'); }, initCustomForm: function(){ //copy from J3.0 // Turn radios into btn-group if(typeof T3Admin != 'undefined'){ return true; } var jt3menu = $('.t3-admin-megamenu'); //convert to on/off jt3menu.find('.radio').filter(function(){ return $(this).find('input').length == 2 && $(this).find('input').filter(function(){ return $.inArray(this.value + '', ['0', '1']) !== -1; }).length == 2; }).addClass('t3onoff').removeClass('btn-group') .find('label').addClass(function(){ return $(this).prev('input').val() == '0' ? 'off' : 'on' }); //action jt3menu.find('.radio label').unbind('click').click(function() { var label = $(this), input = $('#' + label.attr('for')); if (!input.prop('checked')){ label.addClass('active').siblings().removeClass('active'); input.prop('checked', true).trigger('change'); } }); jt3menu.find('.radio input:checked').each(function(){ $('label[for=' + $(this).attr('id') + ']').addClass('active'); }); jt3menu.on('update', 'input[type=radio]', function(){ if(this.checked){ $(this) .closest('.radio') .find('label').removeClass('active') .filter('[for="' + this.id + '"]') .addClass('active'); } }); //init chosen $('select').chosen({ allow_single_deselect: true, disable_search_threshold : 10 }); $('#access-level').val(1).trigger('liszt:updated'); }, initAjaxmenu: function(){ var lid = null, ajax = null, ajaxing = false, doajax = function(){ if(ajaxing && ajax){ ajax.abort(); } ajax = $.ajax({ url: T3AdminMegamenu.site, data: { t3action: 'megamenu', t3task: 'display', styleid: T3AdminMegamenu.styleid, template: T3AdminMegamenu.template, t3menu: $('#menu-type').val(), t3acl: $('#access-level').val(), t3lang: $('#menu-type :selected').attr('data-language') || '*', rand: Math.random() }, beforeSend: function(){ clearTimeout(lid); //progress bar $('#t3-admin-megamenu').addClass('loading'); if($.support.transition){ T3AdminMegamenu.progElm .removeClass('t3-anim-slow t3-anim-finish') .css('width', ''); setTimeout(function(){ T3AdminMegamenu.progElm .addClass('t3-anim-slow') .css('width', 50 + Math.floor(Math.random() * 20) + '%'); }); } else { T3AdminMegamenu.progElm.stop(true).css({ width: '0%', display: 'block' }).animate({ width: 50 + Math.floor(Math.random() * 20) + '%' }); } } }).done(function(rsp){ T3AdminMegamenu.t3megamenu(rsp); }).fail(function(){ }).always(function(){ clearTimeout(lid); lid = setTimeout(function(){ $('#t3-admin-megamenu').removeClass('loading'); //progress bar if($.support.transition){ T3AdminMegamenu.progElm .removeClass('t3-anim-slow') .addClass('t3-anim-finish') .one($.support.transition.end, function () { setTimeout(function(){ if(T3AdminMegamenu.progElm.hasClass('t3-anim-finish')){ $(T3AdminMegamenu.progElm).removeClass('t3-anim-finish'); } }, 1000); }); } else { $(T3AdminMegamenu.progElm).stop(true).animate({ width: '100%' }, function(){ $(T3AdminMegamenu.progElm).hide(); }); } }, 500); }) }; $('#menu-type, #access-level').on('change.mm', doajax); //init once doajax(); T3AdminMegamenu.doajax = doajax; }, initToolbar: function(){ $('#t3-admin-mm-save').off('click.mm').on('click.mm', function(){ $('.toolbox-saveConfig').trigger('click'); return false; }); $('#t3-admin-mm-delete').off('click.mm').on('click.mm', function(){ var delbtn = $(this); if(delbtn.hasClass('loading')){ return false; } delbtn.addClass('loading'); T3AdminMegamenu.confirm(function(ok){ if(ok != undefined && !ok){ delbtn.removeClass('loading'); return false; } $.ajax({ url: T3AdminMegamenu.referer, type: 'post', data: { t3action: 'megamenu', t3task: 'delete', styleid: T3AdminMegamenu.styleid, template: T3AdminMegamenu.template, mmkey: $('#megamenu-key').val(), rand: Math.random() } }).done(function(rsp){ $('#t3-admin-megamenu-dlg').modal('hide'); try { rsp = $.parseJSON(rsp); } catch(e){ rsp = false; } if(rsp){ clearTimeout($('#ajax-message').data('sid')); $('#ajax-message') .removeClass('alert-error alert-success') .addClass(rsp.status ? 'alert-success' : 'alert-error') .addClass('in') .data('sid', setTimeout(function(){ $('#ajax-message').removeClass('in') }, 5000)) .find('strong') .html(rsp.message); } }).always(function(){ delbtn.removeClass('loading'); T3AdminMegamenu.doajax(); }); }); return false; }); $('#t3-admin-mm-close').off('click.mm').on('click.mm', function(){ window.location.href = T3AdminMegamenu.referer; return false; }); }, initAjaxMessage: function(){ $('#ajax-message').on('click', '.close', function(){ clearTimeout($('#ajax-message').removeClass('in').data('sid')); }); }, initModalDialog: function(){ $('#t3-admin-megamenu-dlg') .prop('hide', false) //remove mootool hide function .on('click', '.modal-footer button', function(e){ if($.isFunction(T3AdminMegamenu.modalCallback)){ T3AdminMegamenu.modalCallback($(this).hasClass('yes')); } else if($(this).hasClass('yes')){ $('#t3-admin-megamenu-dlg').modal('hide'); } return false; }).on('hidden', function(){ $('#t3-admin-mm-delete').removeClass('loading'); }) }, confirm: function(callback){ T3AdminMegamenu.modalCallback = callback; $('#t3-admin-megamenu-dlg').addClass('modal-confirm').modal('show'); }, initLoadingBar: function(){ if(!T3AdminMegamenu.progElm){ T3AdminMegamenu.progElm = $('.t3-progress'); if(!T3AdminMegamenu.progElm.length){ T3AdminMegamenu.progElm = $('<div class="t3-progress"></div>'); } T3AdminMegamenu.progElm.appendTo(document.body); var placed = $('.t3-admin-header'); if(placed.length){ T3AdminMegamenu.progElm.appendTo(placed); } } } }); $(document).ready(function(){ T3AdminMegamenu.initLoadingBar(); T3AdminMegamenu.initCustomForm(); T3AdminMegamenu.initToolbar(); T3AdminMegamenu.initAjaxmenu(); T3AdminMegamenu.initModalDialog(); T3AdminMegamenu.initAjaxMessage(); }); }(jQuery);