var ModuleDialogBox = (function() { function ModuleDialogBox(jqObj, sClass){ var _this = this; _this.jqScopeObject = jqObj; _this.sModtype = sClass; _this.sendModuleAjax(); } ModuleDialogBox.prototype.oInstConfig = {}; ModuleDialogBox.prototype.oMyDialog = false; ModuleDialogBox.prototype.sModtype = ""; ModuleDialogBox.prototype.jqScopeObject = {}; ModuleDialogBox.prototype.oModuleData = {}; /** * Function to send module ajax action * * @author Mareks Keišs * @category SysSiteMap * @param bReload - indicates whether its on reload * @return void */ ModuleDialogBox.prototype.sendModuleAjax = function(bReload){ var _this = this; // Set default values bReload = defaultVal(bReload, false); // Get selected language id; var langId = _this.jqScopeObject.find(".lang_menu li.ts a").attr("id"); langId = langId.substr(5); if(!defaultVal(_this.oModuleData[_this.sModtype], false)){ var oData = { action : "getModules", id : _this.sModtype, reload : bReload, language : langId }; CBase.ajax(oData, false, function(d){ if(d && d.jsonok){ // Save html data in global variable if(_this.sModtype == "app_modules"){ _this.oModuleData[_this.sModtype] = d["app_modules_html"]; }else{ _this.oModuleData["js_modules"] = d["js_modules_html"]; _this.oModuleData["css_modules"] = d["css_modules_html"]; } // Construct dialog box with all binds; _this.bindEvents(); } }); }else{ // Load data from javascript object - no ajax needed // Construct dialog box with all binds; _this.bindEvents(); } }; /** * Function to bind events to dialog form * * @author Mareks Keišs * @category SysSiteMap * @return void */ ModuleDialogBox.prototype.bindEvents = function(){ var _this = this; // Construct New dialog if necessary if(!_this.oMyDialog) _this.oMyDialog = new ConfirmDialog("moduleDialogBox"); // Show dialog with HTML _this.oMyDialog.setCustomContentAndShow({ closeBtn: true, title : defaultVal(CBase.gM.sModSelTitle, "Select modules"), message : defaultVal(_this.oModuleData[_this.sModtype], "Some message HTML"), buttons : { 1 : { lbl : defaultVal(CBase.gM.sModSelAdd, "Add module"), id : "buttonYes", click : function(){ _this.oMyDialog.hide(); // Confirm module add _this.addSelectedModules(); } }, 2 : { lbl : defaultVal(CBase.gM.sModSelCancel, "Cancel"), id : "buttonNo", click : function(){ _this.oMyDialog.hide(); } } } }); // Bind check boxes _this.checkBoxesForModules(); // Set base table config _this.oInstConfig = { filter : "", isModules : false, bShowSelMods : false, bOnlyOneAllowed : false, jqRows : _this.oMyDialog.jqDialog.find(".search").parent().find(">.table-rows:visible:first").find("> ul.dxr"), jqNoResults : _this.oMyDialog.jqDialog.find(".noresults"), jqFilterMatches : $(""), jqFilterNotMatches : $("") }; _this.oInstConfig.isModules = (_this.sModtype == "app_modules"? 1 : 0); // Check in with which modules we are working and do stuff; if(_this.sModtype == "app_modules"){ // Check in used module var sModCode = _this.jqScopeObject.find("#mod_code").val(); var jqSelRowObj = _this.oMyDialog.jqDialog.find("ul#m_" + sModCode); if(jqSelRowObj.length){ jqSelRowObj.find(".chk").addClass("chked"); jqSelRowObj.next().show().find("ul#a_"+ sModCode +"_"+ _this.jqScopeObject.find("#mod_run").val() +" .chk").addClass("chked"); var jqAniObj = _this.oMyDialog.jqDialog.find('.table-rows:visible').scrollTop(0); var x = jqSelRowObj.position().top-4; setTimeout(function(){ jqAniObj.animate({scrollTop:x}, 400); }, 200); } }else{ // Hide added already modules _this.setCheckedModulesAndHideThem(); // Bind table upper actions - checkbox'es _this.bindTableUpperActions(); } // Set default Style _this.moduleSearchStyle(); // Bind search in our new appended data box; _this.searchFilterPField(); // Bind Clear cache button _this.oMyDialog.jqDialog.find("#clear_cache > span").bind("click", function(){ _this.oModuleData = {}; _this.sendModuleAjax(true); }); }; ModuleDialogBox.prototype.checkBoxesForModules = function(){ var _this = this; // Base parent checkbox clicks - js, css & app modules _this.oMyDialog.jqDialog.find(".table-rows .dxr:not(.thead,.hidden_actions) .chk").click(function(e){ e.stopImmediatePropagation(); var chk = $(this); chk.toggleClass("chked"); // Reset module selection if(_this.oInstConfig.bOnlyOneAllowed || _this.sModtype == "app_modules"){ var rows = chk.closest(".table-rows"); // Remove checked and hide all mod actions; rows.find(".chk").not(chk).removeClass("chked"); rows.find(".module_actions").hide(); } // In app mode if(_this.sModtype == "app_modules"){ // Show actions if(chk.hasClass("chked")){ var jqDivObj = chk.closest("ul").next(); jqDivObj.slideDown("fast", function(){ $(this).find("ul:first .chk").addClass("chked"); }); } } }); // Sub Child row checkbox clicks - app module actions _this.oMyDialog.jqDialog.find(".table-rows .hidden_actions:not(.thead) .chk").click(function(e){ e.stopImmediatePropagation(); var chk = $(this); if(!chk.hasClass("chked")){ chk.addClass("chked"); // Un-check checked element var rows = chk.closest(".module-rows"); rows.find("ul.hidden_actions .chk").not(chk).removeClass("chked"); } }); // Bind each row click _this.oMyDialog.jqDialog.find(".table-rows .dxr:not(.thead)").click(function(){ $(this).find(".ncheckbox .chk").trigger("click"); }); }; // Hide checked modules in module list ( JS and CSS ) ModuleDialogBox.prototype.setCheckedModulesAndHideThem = function(){ var _this = this; _this.jqScopeObject.find("div#" + _this.sModtype + " ul.dx li:not(.clone) .chked").each(function(){ // Find ul with associated id - check it and add class used_m ( used module ); var jqRow = _this.oMyDialog.jqDialog.find("ul#" + $(this).attr("id")); if(jqRow.length) jqRow.hide().css("opacity", "0.5").find(".ncheckbox .chk").addClass("chked used_m"); }); }; // Bind table actions ModuleDialogBox.prototype.bindTableUpperActions = function(){ var _this = this; var chkBoxes = _this.oMyDialog.jqDialog.find("#p_show,#show_other_pages,#p_js,#p_css").closest("li"); chkBoxes.click(function(){ var jqCkkBox = $(this).find(".chk"); var sID = jqCkkBox.attr("id"); // Switch checkbox jqCkkBox.toggleClass("chked"); switch(sID){ case "p_show": _this.oInstConfig.bShowSelMods = jqCkkBox.hasClass("chked"); if(!_this.oInstConfig.bShowSelMods){ _this.oMyDialog.jqDialog.find("ul .chked.used_m").closest("ul").hide(); }else{ _this.oMyDialog.jqDialog.find("ul .chked.used_m").closest("ul").fadeIn("fast"); } // Reset data set _this.oInstConfig.jqRows = _this.oMyDialog.jqDialog.find(".search").parent().find(">.table-rows:visible:first").find("> ul.dxr"); // Search elements for the phrase _this.oInstConfig.jqFilterMatches = _this.oInstConfig.jqRows.find('div:Contains(' + _this.oInstConfig.filter + ')').closest("ul"); // Hide all than matches _this.oInstConfig.jqRows.not(_this.oInstConfig.jqFilterMatches).hide(); // Set default Style _this.moduleSearchStyle(); break; case "show_other_pages": var oTableMod = _this.oMyDialog.jqDialog.find(".module-rows"), oTablePagesMod = _this.oMyDialog.jqDialog.find(".page-rows"), oButtons = _this.oMyDialog.jqDialog.find("#p_js,#p_css").closest("li"); // Show & hide content if(jqCkkBox.hasClass("chked")){ oTableMod.hide(); oButtons.fadeIn("fast"); oTablePagesMod.fadeIn("fast", function(){ _this.oInstConfig.bOnlyOneAllowed = true; // Reset data set _this.oInstConfig.jqRows = _this.oMyDialog.jqDialog.find(".search").parent().find(">.table-rows:visible:first").find("> ul.dxr"); // Search elements for the phrase _this.oInstConfig.jqFilterMatches = _this.oInstConfig.jqRows.find('div:Contains(' + _this.oInstConfig.filter + ')').closest("ul"); // Hide all than matches _this.oInstConfig.jqRows.not(_this.oInstConfig.jqFilterMatches).hide(); // Set default Style _this.moduleSearchStyle(); // Check if any node visible if(!_this.oInstConfig.jqFilterMatches.length) _this.oInstConfig.jqNoResults.fadeIn("fast"); else _this.oInstConfig.jqNoResults.hide(); }); }else{ oTablePagesMod.add(oButtons).hide(); _this.oInstConfig.bOnlyOneAllowed = false; oTableMod.fadeIn("fast", function(){ // Reset data set _this.oInstConfig.jqRows = _this.oMyDialog.jqDialog.find(".search").parent().find(">.table-rows:visible:first").find("> ul.dxr"); // Search elements for the phrase _this.oInstConfig.jqFilterMatches = _this.oInstConfig.jqRows.find('div:Contains(' + _this.oInstConfig.filter + ')').closest("ul"); // Hide all than matches _this.oInstConfig.jqRows.not(_this.oInstConfig.jqFilterMatches).hide(); // Set default Style _this.moduleSearchStyle(); // Check if any node visible if(!_this.oInstConfig.jqFilterMatches.length) _this.oInstConfig.jqNoResults.fadeIn("fast"); else _this.oInstConfig.jqNoResults.hide(); }); } // Check default opposite module oButtons.find("#"+(_this.sModtype == "js_modules"?"p_js":"p_css")).addClass("chked"); break; } }); }; // Style module search uls ModuleDialogBox.prototype.moduleSearchStyle = function(){ var _this = this; if($.isDefined(_this.oInstConfig)){ if(_this.oInstConfig.jqFilterMatches.length){ _this.oInstConfig.jqFilterMatches.filter(".odd, .even").removeClass("odd even"); _this.oInstConfig.jqFilterMatches.filter(":visible:odd").addClass("odd"); }else{ _this.oInstConfig.jqRows.filter(".odd, .even").removeClass("odd even"); _this.oInstConfig.jqRows.filter(":visible:odd").addClass("odd"); } } }; // Confirm module selection; ModuleDialogBox.prototype.addSelectedModules = function(){ var _this = this; var oButton = _this.oMyDialog.jqDialog.find("#show_other_pages"); var oTableMod = _this.oMyDialog.jqDialog.find(".module-rows"), oTablePagesMod = _this.oMyDialog.jqDialog.find(".page-rows"); var modObj = _this.jqScopeObject.find("div#modules_set"); var i = 0; // Chk if we need to clone from other page if(oButton.length && oButton.hasClass("chked") && oTablePagesMod.find(".dxr:not(.thead) .ncheckbox .chked").length){ // Get the page id from which we want to clone modules; var page_id = oTablePagesMod.find(".dxr:not(.thead) .ncheckbox .chked:first").closest("ul").attr("id"); page_id = page_id.substr(5); CBase.jsModule.oTable.sendAjaxActionAdvanced({ action : "getPageUsedModules", id : page_id, data : {css: _this.oMyDialog.jqDialog.find("#p_css").hasClass("chked") ? 1 : 0 , js : _this.oMyDialog.jqDialog.find("#p_js").hasClass("chked") ? 1 : 0} }, function(d){ if(d && d.jsonok){ // Remove all modules from table object; if(_this.oMyDialog.jqDialog.find("#p_css").hasClass("chked") && d.css){ _this.jqScopeObject.find("div#css_modules ul.dx li:not(.clone)").remove(); // Append all modules CBase.jsModule.cloneObjects(_this.jqScopeObject, d.css, "css_modules"); } if(_this.oMyDialog.jqDialog.find("#p_js").hasClass("chked") && d.js){ _this.jqScopeObject.find("div#js_modules ul.dx li:not(.clone)").remove(); // Append all modules CBase.jsModule.cloneObjects(_this.jqScopeObject, d.js, "js_modules"); } } }) }else{ // If a module is checked if(oTableMod.find(".dxr:not(.thead) .ncheckbox .chked").length){ // If its app_modules if(_this.sModtype == "app_modules"){ var appMod = modObj.find("#app_modules"); i = 0; oTableMod.find(".dxr:not(.thead) .ncheckbox .chked").each(function(){ var ul = $(this).closest("ul"); if(i == 0){ appMod.find("#mod_code").val(ul.find("li.last div").html()); i++ }else{ appMod.find("#mod_run").val(ul.find("li.last div").html()); } }); }else{ var oSelMod = [], oData = {}, ii = 0, add = true; // Gather all checked modules from table ( in the right order ); i = 0; var jqSelectedModules = _this.jqScopeObject.find("div#" + _this.sModtype + " ul > li:not(.clone)"); jqSelectedModules.each(function(){ oSelMod[i] = []; oSelMod[i]['id'] = $(this).find("div.chked").attr("id"); oSelMod[i++]['v'] = $.trim($(this).find("label").html()); }); // Gather all checked modules in dialog box; oTableMod.find(".dxr:not(.thead) .ncheckbox > .chked").each(function(){ var ul = $(this).closest("ul"); var html = ul.find("li.last div").html(); oData[ul.attr("id")] = $.trim(html); }); // delete deselected modules; i = oSelMod.length - 1; while (i >= 0) { if(!(oData[oSelMod[i]['id']])) oSelMod.splice(i, 1); i--; } ii = oSelMod.length - 1; for(var id in oData){ if(oData.hasOwnProperty(id)){ for (i = 0; i < ii; i++) { // Check if we need to add this object - short if/else statement for true/false; add = oSelMod[i]['id'] != id; // End the loop if we don't need to add; if(!add) break; } if(add){ // add values to selected object array oSelMod[ii] = []; oSelMod[ii]['id'] = id; oSelMod[ii++]['v'] = oData[id]; add = true } } } // Remove all modules from table object; jqSelectedModules.remove(); // Append all modules CBase.jsModule.cloneObjects(_this.jqScopeObject, oSelMod, _this.sModtype); } }else{ // Clear values or remove objects if(_this.sModtype == "app_modules"){ modObj.find("#mod_code").val(""); modObj.find("#mod_run").val(""); }else{ _this.jqScopeObject.find("div#" + _this.sModtype + " ul.dx li:not(.clone)").remove(); } } } return true; }; // Search for modules in dialog box. ModuleDialogBox.prototype.searchFilterPField = function(){ var _this = this; // Declaring variables for later use. var timeout = null; var jqClear = _this.oMyDialog.jqDialog.find("a.clf"); // "x" for input field, to clear input var jqInput = _this.oMyDialog.jqDialog.find(".search input"); var jqSLabel = _this.oMyDialog.jqDialog.find(".search div > label"); jqInput.bind({ keyup : function(e){ // If enter pressed, we set time out to zero for instant filter; if(e.keyCode == 13) e.timeoutMs = 0; clearTimeout(timeout); // Set filter value _this.oInstConfig.filter = $(this).val(); // Make a new timeout set to go off in 800ms timeout = setTimeout(function(){ // Search elements for the phrase _this.oInstConfig.jqFilterMatches = _this.oInstConfig.jqRows.find('div:Contains(' + _this.oInstConfig.filter + ')').closest("ul"); // If not app modules - remove checked from data set if(!_this.oInstConfig.isModules && !_this.oInstConfig.bShowSelMods){ _this.oInstConfig.jqFilterMatches = _this.oInstConfig.jqFilterMatches.find("li.rchk .chk:not(.used_m)").closest("ul"); } // Hide all than matches _this.oInstConfig.jqRows.not(_this.oInstConfig.jqFilterMatches).hide(); // Show filtered elements if(_this.oInstConfig.jqFilterMatches.length){ _this.oInstConfig.jqFilterMatches.fadeIn("fast", function(){ // Show Actions for Modules except JS & CSS if(_this.oInstConfig.isModules){ var jqChked = _this.oInstConfig.jqRows.find(".chked:first").closest("ul"); _this.oInstConfig.jqRows.parent().find(".module_actions:visible").not((jqChked.is(":visible") ? jqChked.next(): "")).hide(); if(jqChked.is(":visible") && !jqChked.next().is(":visible")){ jqChked.next().slideDown("fast"); } } _this.moduleSearchStyle(); }); }else{ _this.oInstConfig.jqRows.parent().find(".module_actions:visible").hide(); } // Check if any node visible if(!_this.oInstConfig.jqFilterMatches.length) _this.oInstConfig.jqNoResults.fadeIn("fast"); else _this.oInstConfig.jqNoResults.hide(); // Show/hide "x" in input field. if(_this.oInstConfig.filter && !jqClear.is(":visible")) jqClear.fadeIn("fast"); else if(!_this.oInstConfig.filter && jqClear.is(":visible")) jqClear.hide(); }, defaultVal(e.timeoutMs, 600)); }, focus : function(){ jqSLabel.hide(); }, blur : function(){ if(!$(this).val().length) jqSLabel.show(); } }); jqClear.click(function(){ var e = jQuery.Event("keyup"); e.timeoutMs = 0; jqInput.val("").trigger(e); jqSLabel.show(); }); }; return ModuleDialogBox; })(); var UnusedModules = (function() { function UnusedModules(){ var _this = this; _this.jqScopeObject = $(".data"); _this.sendModuleAjax(); } UnusedModules.prototype.oMyDialog = false; UnusedModules.prototype.jqScopeObject = {}; UnusedModules.prototype.oModuleData = {}; UnusedModules.prototype.oModulesToDelete = {}; /** * Function to send ajax action * * @author Mareks Keišs * @category SysSiteMap * @param bReload - indicates whether its on reload * @return void */ UnusedModules.prototype.sendModuleAjax = function(bReload){ var _this = this; var oData = { action : "getAllUnusedSiteMapModules" }; CBase.ajax(oData, false, function(d){ if(d && d.jsonok){ _this.oModuleData = d.data; // Construct dialog box with all binds; _this.bindEvents(); } }); }; /** * Function to bind events to dialog form * * @author Aivarss Žukovskis * @category SysSiteMap * @return void */ UnusedModules.prototype.bindEvents = function(after){ var _this = this; // Construct New dialog if necessary if(!_this.oMyDialog) _this.oMyDialog = new ConfirmDialog(); _this.oMyDialog.jqDialog.addClass('unusedModules'); var buttons = {}; if(after){ buttons = { 1 : { lbl : defaultVal(CBase.gM.sUnusedModClose, "Close"), id : "buttonClose", click : function(){ _this.oMyDialog.hide(); } } }; }else{ buttons = { 1 : { lbl : defaultVal(CBase.gM.sUnusedModDelete, "Delete modules"), id : "buttonDelete", click : function(){ // Confirm module delete _this.deleteSelectedModules(); } }, 2 : { lbl : defaultVal(CBase.gM.sUnusedModClose, "Close"), id : "buttonClose", click : function(){ _this.oMyDialog.hide(); } } }; } // Show dialog with HTML _this.oMyDialog.show({ closeBtn: true, title : defaultVal(CBase.gM.sUnusedModTitle, "Unused modules"), message : defaultVal(_this.oModuleData, "Some message HTML"), buttons : buttons }); // Bind check boxes _this.checkBoxesForModules(); // Set default Style _this.moduleListStyle(); }; UnusedModules.prototype.checkBoxesForModules = function(){ var _this = this; // Bind each row click _this.oMyDialog.jqDialog.find(".table-rows .dxr:not(.thead)").click(function(){ $(this).find(".ncheckbox .chk").toggleClass("chked"); }); }; // Style module list uls UnusedModules.prototype.moduleListStyle = function(){ var _this = this; _this.oMyDialog.jqDialog.find(".odd, .even").removeClass("odd even"); _this.oMyDialog.jqDialog.find(".table-rows ul:visible:odd").addClass("odd"); }; // function to delete selected modules UnusedModules.prototype.deleteSelectedModules = function(){ var _this = this; var i = 0, ii = 0; _this.oModulesToDelete = {"css" : [], "js" : []}; _this.oMyDialog.jqDialog.find(".table-rows .dxr:not(.thead) .chked").each(function(){ var oO = $(this).closest("li").next().find("div"); if(oO.attr("class") === "css") _this.oModulesToDelete["css"][i++] = oO.html() + ".css"; if(oO.attr("class") === "js") _this.oModulesToDelete["js"][ii++] = oO.html() + ".js"; }); if(_this.oModulesToDelete['css'].length > 0 || _this.oModulesToDelete['js'].length > 0){ var oData = { action : "deleteUnusedModules", data : _this.oModulesToDelete }; CBase.ajax(oData, false, function(d){ if(d && d.jsonok){ _this.oModuleData = d.data; // Construct dialog box with all binds; _this.bindEvents(true); }else{ console.log("Ooops!!! Something went wrong?"); } }); } }; return UnusedModules; })(); var SysSiteMap = (function() { function SysSiteMap(){ var _this = this; _this.sModName = CBase.dt.sModName; _this.oTable = new CTable("data"); _this.oTable.loadTableData(); } SysSiteMap.prototype.oData = {}; SysSiteMap.prototype.sModName = ""; SysSiteMap.prototype.oModDialog = {}; SysSiteMap.prototype.oUnusedModules = {}; // Class vars SysSiteMap.prototype.bNewClone = false; // Rewrite CTable object callback CTable.prototype.tableObjectCallback = function(oTable){ var _this = this; // Clone blank action oTable.find("a#icloneBlank").click(function(){ CBase.jsModule.bNewClone = true; CBase.message.hide(true, false); _this.loadRecord(false, $(".dxr:not(.head) li.first div.chked").closest("ul").find("#ledit").attr("href")); }); oTable.find("a#iChangeFolder").click(function(){ CBase.jsModule.adminChangeDialogBox(); }); oTable.find("a#iGetUnusedModules").bind("click", function(){ CBase.jsModule.oUnusedModules = new UnusedModules() }); // Cache binds oTable.find("#minify_css, #minify_js, #clear_cache").bind("click", function(){ CBase.jsModule.handleTreeActions($(this).attr("id")); }); // BInd send only actions $("#iDeleteTempTables").bind("click", function(){ CBase.jsModule.handleSendOnlyActions($(this)); }); // Generate site map xml oTable.find("#igenxml").click(function(){ CBase.ajax({action : "generateSiteMapXML"}, false, function(d){ // Construct New dialog if necessary if(!CBase.jsModule.oSiteMapXmlDialog) CBase.jsModule.oSiteMapXmlDialog = new ConfirmDialog("siteMapXml"); // Show dialog with HTML CBase.jsModule.oSiteMapXmlDialog.setCustomContentAndShow({ closeBtn: true, title : defaultVal(CBase.gM.generateSiteMapXml, "Generate site map xml"), message : $('

' + defaultVal(d.msg, defaultVal(CBase.gM.generateSiteMapXmlDone, "Site map xml generation done!")) + '

'), buttons : { 1 : { lbl : defaultVal(CBase.gM.done, "Done!"), id : "buttonYes", click : function(){ CBase.jsModule.oSiteMapXmlDialog.hide(); } } } }); }); }); // Gen insert query oTable.find("#igensql").click(function(){ var oIds = [], id = 0; if(oTable.find("ul.dxr.single:not(.thead) li.first .chked").length > 0){ oTable.find("ul.dxr.single:not(.thead) li.first .chked").each(function(){ id = $(this).closest("ul").attr("id"); if(id) oIds.push(id); }); }else{ oTable.find("ul.dxr.single:not(.thead)").each(function(){ id = $(this).attr("id"); if(id) oIds.push(id); }); } var jqData = $("
"); CBase.ajax({action : "generateInsertSql", ids : $.toJSON(oIds)}, false, function(d){ if(d && d.jsonok && d.sql){ $.each(d.sql, function(k, str){ jqData.find("> div").append($("

"+ str +"

")); }); jqData.find("> div").click(function(){ var selection = window.getSelection(); var txt = jqData.find("> div"); var range = document.createRange(); range.selectNodeContents(txt[0]); selection.removeAllRanges(); selection.addRange(range); }) } }); // Construct New dialog if necessary if(!CBase.jsModule.oMyDialog) CBase.jsModule.oMyDialog = new ConfirmDialog("sqlExport"); // Show dialog with HTML CBase.jsModule.oMyDialog.setCustomContentAndShow({ closeBtn: true, title : defaultVal(CBase.gM.sSqlExpTitle, "Sql Export for permissions"), message : jqData, buttons : { 1 : { lbl : defaultVal(CBase.gM.done, "Done!"), id : "buttonYes", click : function(){ CBase.jsModule.oMyDialog.hide(); } } } }); }); }; // Ajax load cfg object CBlank.prototype.getAjaxData = function(){ var d = { action : "selfLoad" }; if(CBase.jsModule.bNewClone){ d["action"] = "cloneBlank"; CBase.jsModule.bNewClone = false; } return d; }; // Rewrite CBase form callback CBlank.prototype.viewCallback = function(jqObj, d){ var _this = this; jqObj.find(".settings").find("h3:first").click(function(){ var jqParent = $(this).parent(); if(jqParent.hasClass("load")) _this.loadBlankBlockSubContent(jqParent); else _this.showHideSubContentPanel(jqParent); }); _this.oBtnPan.find("#fcancel").click(function(){ CBase.message.hide(); if(_this.isModiffied){ CBase.oTable.filterTableData(true); }else{ CBase.oTable.show(); } }); _this.oBtnPan.find("#fsave").click(function(){ _this.saveBlankView(); }); // Sortable modules jqObj.find(".sortable").sortable({ helper : 'clone' }).disableSelection(); // Bind base actions; CBase.jsModule.baseFieldBinds(jqObj); // Bind base blank actions _this.bindBlankActions(jqObj); if(d && d.data){ CBase.jsModule.oData = d.data; CBase.jsModule.oData['deletedPages'] = "0"; } // Fill in data CBase.jsModule.fillInData(); // Bind language binds; CBase.jsModule.languageBinds(jqObj); }; // Base field binds SysSiteMap.prototype.baseFieldBinds = function(jqObj){ var _this = this; // Bind base field actions _this.baseFieldActions(jqObj); // Bind title action binds; _this.titleActionBinds(jqObj); // Bind title action binds; //_this.baseSettingsChkBoxBinds(jqObj); // BField binds && Menu load binds; _this.bFieldBinds(jqObj); _this.bindMenusLoad(jqObj); // Bind all document binds _this.documentBinds(jqObj); }; // Bind base field actions SysSiteMap.prototype.baseFieldActions = function(jqObj){ var _this = this; var val = ""; var jqUrlObj = jqObj.find('input#p_url'), jqFullUrlObj = jqObj.find("span#full_url"), jqParentUrlObj = jqObj.find("a#parent_url"); // On blur take title value and set it to full url input if its not empty jqObj.find('input#p_title').bind('blur', function(){ val = _this.removeSpecial($(this).val()); if(!jqUrlObj.val()){ jqUrlObj.val(val); val += "/"; jqFullUrlObj.html(jqObj.find("input#p_parent").val.length ? (jqParentUrlObj.html().length ? jqParentUrlObj.html() : "/") + val : "/" + val); } }); // Bind on blur url field jqUrlObj.bind("blur", function(){ val = _this.removeSpecial($(this).val()); if(val.length){ $(this).val(val); val += "/"; jqFullUrlObj.html(jqObj.find("input#p_parent").val().length ? (jqParentUrlObj.html().length ? jqParentUrlObj.html() : "/") + val : "/" + val) } }); // Bind load modules; jqObj.find("#modules_set").find(".plus_btn").click(function(){ _this.oModDialog = new ModuleDialogBox(jqObj, $(this).parent().next().attr("id")) }); // Bind load modules; jqObj.find("#modules_set").find(".chose_module").click(function(){ _this.oModDialog = new ModuleDialogBox(jqObj, "app_modules") }); }; /** * Function to remove special characters from text, returns the result string * * @author Aivars Žukovskis * @category SysSiteMap */ SysSiteMap.prototype.removeSpecial = function(text){ var specialChars = { "ā" : "a", "č" : "c", "ē" : "e", "ģ" : "g", "ī" : "i", "ķ" : "k", "ļ" : "l", "ņ" : "n", "ū" : "u", "š" : "s", "ž" : "z", " " : "-" }; if(text.length) { var lower = text.toLowerCase(); var result = ""; for(var i=0; i input").focus() }, 250); }); chz.each(function(){ $(this).next().append("
"); }); chz.trigger('chosen:open'); }else{ pr("Chosen js missing!"); } // Bind ok click - write our parent in field; jqObjectDialogBox.find("#buttonYes").bind("click", function(){ if(selId.length && selText.length){ switch (id){ case "menus_set": _this.cloneObjects(jqSettings, {x:{'id' : selId, 'v' : selText}}, jqCaller.parent().attr("id")); // Remove unchecked menus; jqCaller.parent().next().find("li:not(.clone) .chk:not(.chked)").each(function(){ $(this).closest("li").remove(); }); break; } } }); } }); return true; } }); return false; }; // Bind bField binds SysSiteMap.prototype.bFieldBinds = function(jqObj){ var _this = this; // For Redirect jqObj.find(".bfield li.selOpt:not(.pparent)").each(function(){ var objSel = $(this); // Bind click event for redirect; objSel.click(function(){ objSel.find(".selCnt").toggleClass("ddHover"); }); // Find container for select var objSelCnt = objSel.find(".parData"); // each value in container objSelCnt.find("a").each(function(){ $(this).parent().bind("click", function(){ var val = $(this).find("a").html(); var id = $(this).find("a").attr("id"); // Set value objSel.find("a:first") .attr("id", id) .html(val); }); }); }); // For Parent, permission and menu search; var act = "", sClass = "", sTitle = "", data = {}, lang_id = {}, jqObjectDialogBox = $("#confirmDialog"); var selId = "", selText = ""; var jqObjFullUrl = jqObj.find("span#full_url"), jqObjUrl = jqObj.find("input#p_url"); jqObj.find(".bfield").find(".pparent, .p_permission").bind("click", function(){ var tthis = $(this); if(tthis.hasClass("pparent")){ // Set action act = "getParentsByLanguageId"; data['lang_id'] = jqObj.find(".lang_menu li.ts a").attr("id").substr(5); data['id'] = $(".form-data > input#id-" + data['lang_id']).val(); sClass = "pparent"; sTitle = "Select Parent"; }else if(tthis.hasClass("p_permission")){ // Set action act = "getPermissions"; sClass = "p_permission"; sTitle = "Select permission"; }else{ return false; } _this.oTable.sendAjaxActionAdvanced({ action : act, data : data }, function(d){ if(d && d.jsonok){ var jqObjectData = d.html; // Create dialog show and append our data in it; _this.dialogShowFunction(sTitle, jqObjectData, 'ok', 'cancel', 'noOverFlow'); //----------------------------------------------------------------- // Bind Chosen controllers //----------------------------------------------------------------- if(jQuery().chosen){ var chz = jqObjectDialogBox.find("select.chz"); // Bind chosen controller & on change function chz.chosen({ width : "100%", search_contains: true }).on('change', function(e, params) { selId = params.selected; selText = e.currentTarget[e.currentTarget.selectedIndex]['firstChild']['data']; }).on('chosen:showing_dropdown', function(e, params) { setTimeout(function() { params.chosen.container.find(".chosen-search > input").focus() }, 250); }); chz.each(function(){ $(this).next().append("
"); }); chz.trigger('chosen:open'); } // Bind ok click - write our parent in field; jqObjectDialogBox.find("#buttonYes").bind("click", function(){ if(selId.length && selText.length){ if(sClass === "p_permission"){ jqObj.find("input#p_permission").val(selId); jqObj.find("input#p_permission_name").val(selText); }else if(sClass === "pparent"){ jqObjFullUrl.html(selText + jqObjUrl.val() + "/"); jqObj.find("input#p_parent").val(selId); jqObj.find("a#parent_url").html(selText); } } }); } }); return true; }); // Bind "x" for clearing out permission; jqObj.find(".p_permission > span.delete ").bind("click", function(e){ e.stopPropagation(); var jqP = $(this).parent(); jqP.find("input").add(jqP.next().find("input")).val(""); }); // Bind "x" for clearing out parent; jqObj.find(".pparent > span.delete ").bind("click", function(e){ e.stopPropagation(); $(this).parent().find("input").val(""); $(this).parent().find("a").html("/"); // delete then delete parent from full url jqObjFullUrl.html("/" + jqObjUrl.val()); _this.oData[$("div.lang_menu li.ts > a").attr("id").substr(5)]['b'][$(this).find("input").attr("id")] = ''; }); }; // Language binds SysSiteMap.prototype.languageBinds = function(jqObj){ var _this = this; var jqLangObj = jqObj.find(".lang_menu"); jqLangObj.find("li").each(function(){ var lId = $(this).find("a").attr("id").substr(5); // Delete hover var oDel = $(this).find("span.delete"); // Bind language delete buttons oDel.bind("click", function(e){ e.stopPropagation(); // Show dialog box for confirmation delete; _this.dialogShowFunction("Delete this language", "Do you really want to delete this language", "Yes", "No", "delete"); // Bind dialog accept button $("#confirmDialog").find("#buttonYes").bind("click", function(){ var p = oDel.parent(); p.addClass("o6"); if(p.prev().length && !p.prev().hasClass("o6")) p.prev().trigger("click"); else if(p.next().length && !p.next().hasClass("o6")) p.next().trigger("click"); if(_this.oData['deletedPages'] && _this.oData[lId] && _this.oData[lId]["b"]["id"]) _this.oData['deletedPages'] += "," + _this.oData[lId]["b"]["id"]; delete _this.oData[lId]; // Clear fields p.closest("div.form-data").find("> input#id-" + p.find("a").attr("id").substr(5)).val(''); _this.fillInData(); }); }); // Add class to unused languages if(!_this.oData[lId] && !$(this).hasClass("ts")) $(this).addClass("o6"); // Bind language tab switch buttons $(this).bind("click", function(){ if(!$(this).hasClass("ts")){ $(this).removeClass("o6"); // gather save data on selected language before selecting new language; if(_this.saveDataInObject()){ // Select new language $(this).parent().find("li.ts").removeClass("ts"); $(this).addClass("ts"); // Fill in new language data _this.fillInData(); } } }); }); // Copy to all languages button jqObj.find("#copy_to_all").bind("click", function(){ // Get selected language id and gather then all data for this language; var langId = jqLangObj.find("li.ts a").attr("id").substr(5); _this.saveDataInObject(); // Clone all data to all other languages; jqLangObj.find("li:not(.ts)").each(function(){ var lid = $(this).find("a").attr("id").substr(5); var id = $("input#id-" + lid); if(langId !== lid){ // Set old data we need to keep (language based) if(_this.oData[lid] && _this.oData[lid].b) { var oOldData = { furl: _this.oData[lid].b["full_url"], title: _this.oData[lid].b["p_title"], purl: _this.oData[lid].b["p_url"], desc: _this.oData[lid].b["p_description"], keyWords: _this.oData[lid].b["p_keywords"], redUrl: _this.oData[lid].b["p_redirect_url"], parent_url: _this.oData[lid].b["parent_url"] }; } // Rewrite object _this.oData[lid] = {}; _this.oData[lid] = $.extend(true, {}, _this.oData[langId]); _this.oData[lid]["b"]["id"] = id.val() ? id.val() : 0; // Insert back old data we needed to keep (language based) if(oOldData) { if (oOldData["title"].length) _this.oData[lid]["b"]["p_title"] = oOldData["title"]; if (oOldData["furl"].length) _this.oData[lid]["b"]["full_url"] = oOldData["furl"]; if (oOldData["purl"].length) _this.oData[lid]["b"]["p_url"] = oOldData["purl"]; if (oOldData["desc"].length) _this.oData[lid]["b"]["p_description"] = oOldData["desc"]; if (oOldData["keyWords"].length) _this.oData[lid]["b"]["p_keywords"] = oOldData["keyWords"]; if (oOldData["redUrl"].length) _this.oData[lid]["b"]["p_redirect_url"] = oOldData["redUrl"]; if (oOldData["parent_url"].length) _this.oData[lid]["b"]["parent_url"] = oOldData["parent_url"]; } } }); }); }; // Title action binds SysSiteMap.prototype.titleActionBinds = function(jqObj){ // Change "title actions" on click classes. jqObj.find("li.dd > a").click(function(){ var title_action = $(this).parent().find(".title_action"); // On click add/remove class on title_action/redirect if(title_action.hasClass("ddHover")) title_action.removeClass('ddHover'); else title_action.addClass('ddHover'); }); // On button click, remove class from title_action jqObj.find(".title_action > li.sbtn").click(function(){ $(this).parent().removeClass('ddHover') }); }; // Document binds SysSiteMap.prototype.documentBinds = function(jqObj){ $(document) .click(function (e){ var container = {}; // Title action; // Remove class ddHover if clicked elsewhere. jqObj.find(".ddHover").each(function(){ container = $(this).add($(this).parent()); // div.ddHover + hes parent. // if the target of the click isn't the container ... nor a descendant of the container if (!container.is(e.target) && container.has(e.target).length === 0) container.removeClass("ddHover"); }); }) .keydown(function (e){ // Do things on key press e = e || window.event; if (e.keyCode == CBase.iKeys.ESC){ // on escape // hide title actions; jqObj.find(".ddHover").removeClass("ddHover"); } }); }; /** * Helper function to load and show dialog form * * @author Aivars Žukovskis * @category SysSiteMap * @param sTitle - title name ( string ) * @param jqObjHtml - javascript object - html return object with data * @param sClearYes - Button yes name ( string ) * @param sClearCancel - Button cancel name (string ) * @param sClass - addition class to add to dialog box; * @return void */ SysSiteMap.prototype.dialogShowFunction = function(sTitle, jqObjHtml, sClearYes, sClearCancel, sClass){ CBase.oDialog.jqDialog.removeAttr("class"); CBase.oDialog.jqDialog.addClass(sClass); CBase.oDialog.show({ closeBtn: true, title : $.isDefined(CBase.gM.sTitle)?CBase.gM.sTitle:sTitle, message : jqObjHtml, buttons : { 1 : { lbl : $.isDefined(CBase.gM.sClearYes)?CBase.gM.sClearYes:sClearYes, id : "buttonYes", click : function(){ CBase.oDialog.hide(); } }, 2 : { lbl : $.isDefined(CBase.gM.sClearCancel)?CBase.gM.sClearCancel:sClearCancel, id : "buttonNo", click : function(){ CBase.oDialog.hide(); } } } }); }; /** * Helper function to load and show dialog form for change admin folder * * @author Aivars Žukovskis * @category SysSiteMap * @return void */ SysSiteMap.prototype.adminChangeDialogBox = function(){ var oObj = $(".admin_folder > div").clone(); var inp = oObj.find("input"); inp.bind({ focusout : function(){ $(this).val(inp.val().trim().toLowerCase().replace(/[\W_]/g, "-")); } }); CBase.oDialog.jqDialog.removeAttr("class"); CBase.oDialog.jqDialog.addClass("form-data"); CBase.oDialog.show({ closeBtn: true, title : $.isDefined(CBase.gM.sTitle)?CBase.gM.sTitle:"Change administration link", message : oObj, buttons : { 1 : { lbl : $.isDefined(CBase.gM.sClearYes)?CBase.gM.sClearYes:"Change", id : "buttonYes", click : function(){ // submit the changes via ajax CBase.jsModule.oTable.sendAjaxActionAdvanced({ action : "changeAdministrationFolder", val : inp.val() }, function(d){ if(d && d.jsonok){ CBase.message.show(false, false, "Administration links changed!"); CBase.oDialog.hide(); }else{ if(d && d.error && d.data){ inp.attr("title", d.data['a_folder']).parent().addClass("v-error"); } } }) } }, 2 : { lbl : $.isDefined(CBase.gM.sClearCancel)?CBase.gM.sClearCancel:"Cancel", id : "buttonNo", click : function(){ CBase.oDialog.hide(); } } } }); }; CBlank.prototype.addAdditionalSaveData = function(){ // gather save data; CBase.jsModule.saveDataInObject(); // Return our saved data object for save; return CBase.jsModule.oData; }; // Fill in all data from javascript if any SysSiteMap.prototype.saveDataInObject = function(){ var _this = this; var jqObject = $("#data").find(".form-data"); // Get language id var lang_id = jqObject.find(".lang_menu li.ts a").attr("id").substr(5); _this.oData[lang_id] = { 'b' : { 'p_menus' : { 'load_menus' : {}, 'link_menus' : {} } }, 'mod' : { 'app' : {}, 'js' : {}, 'css' : {} } }; // Set id var id = jqObject.find("#id-" + lang_id).val(); _this.oData[lang_id]['b']['id'] = (id ? id : 0); // Set extra data; _this.oData[lang_id]['b']['p_created'] = jqObject.find(".title ul.record-info #p_created").html(); _this.oData[lang_id]['b']['p_modified'] = jqObject.find(".title ul.record-info #p_modified").html(); _this.oData[lang_id]['b']['user_name'] = jqObject.find(".title ul.record-info #user_name").html(); // Find all inputs, text area and select fields (including sliders) jqObject.find("> div.data input, textarea, select").each(function (){ id = $(this).attr("id"); if(id && id.length){ var sVal = ($(this).val() && $(this).val().length ? $(this).val() : ""); var jqUl = $(this).closest("ul"); switch (id){ case "p_url": // Parent id, url and full url; _this.oData[lang_id]["b"]["p_parent"] = jqUl.find("input#p_parent").val() ? jqUl.find("input#p_parent").val() : 0; _this.oData[lang_id]["b"]["parent_url"] = jqUl.find("a#parent_url").html() ? jqUl.find("a#parent_url").html() : ""; _this.oData[lang_id]["b"]["full_url"] = jqObject.find("span#full_url").html() ? jqObject.find("span#full_url").html() : ""; _this.oData[lang_id]["b"][id] = sVal; break; case "p_redirect_url": // _this.oData[lang_id]['b'][id] = sVal.length ? jqUl.find("#red_url").val() + sVal : ""; _this.oData[lang_id]['b'][id] = sVal; break; case "red_url": _this.oData[lang_id]['b'][id] = sVal; break; default: _this.oData[lang_id]['b'][id] = sVal; break; } } }); // Get permission data /*jqObject.find(" > div.data li.p_permission").each(function(){ pr(1); if($(this).find("input#p_permission").val().length){ pr(2); _this.oData[lang_id]['b']['p_permission'] = $(this).find("input#p_permission").val(); _this.oData[lang_id]['b']['p_permission_name'] = $(this).find("a#p_permission_name").html(); } });*/ // Get load menus var i = 0; jqObject.find(" > div.data .menu_load_set > ul > li:not(.clone) div.chked").each(function(){ _this.oData[lang_id]['b']['p_menus']['load_menus'][i] = {}; _this.oData[lang_id]['b']['p_menus']['load_menus'][i]['id'] = $(this).attr("id"); _this.oData[lang_id]['b']['p_menus']['load_menus'][i++]['v'] = $(this).closest("li").find("label").html(); }); // Get link menus i = 0; jqObject.find(" > div.data .menu_link_set > ul > li:not(.clone) div.chked").each(function(){ _this.oData[lang_id]['b']['p_menus']['link_menus'][i] = {}; _this.oData[lang_id]['b']['p_menus']['link_menus'][i]['id'] = $(this).attr("id"); _this.oData[lang_id]['b']['p_menus']['link_menus'][i++]['v'] = $(this).closest("li").find("label").html(); }); // Find modules jqObject.find(" > div.data #modules_set").each(function(){ // Find app modules var jqObjApp = $(this).find("#app_modules"); _this.oData[lang_id]['mod']['app']['mod_code'] = jqObjApp.find("#mod_code").val(); _this.oData[lang_id]['mod']['app']['mod_action'] = jqObjApp.find("#mod_run").val(); i = 0; $(this).find("#js_modules div.chked").each(function(){ _this.oData[lang_id]['mod']['js'][i] = {}; _this.oData[lang_id]['mod']['js'][i]['v'] = $(this).closest("li").find("label").html(); _this.oData[lang_id]['mod']['js'][i++]['id'] = $(this).attr("id"); }); i = 0; $(this).find("#css_modules div.chked").each(function(){ _this.oData[lang_id]['mod']['css'][i] = {}; _this.oData[lang_id]['mod']['css'][i]['v'] = $(this).closest("li").find("label").html(); _this.oData[lang_id]['mod']['css'][i++]['id'] = $(this).attr("id"); }); }); return true; }; // Fill in all data from javascript if any SysSiteMap.prototype.fillInData = function(){ var _this = this, jqObject = $(".form-data"), jqObjApp = jqObject.find('div#app_modules'), lId = jqObject.find(".lang_menu li.ts a").attr("id").substr(5); // Clear fields before anything else; jqObject.find("input:not(.p_id), textarea").val(""); // Clear all inputs jqObject.find("select").each(function(){ // Reset selects $(this).find("option:nth-child(1)").prop("selected", true); $(this).trigger("chosen:updated"); }); jqObject.find("div.menu_link_set, div.menu_load_set, div#css_modules, div#js_modules").find("li:not(.clone)").remove(); jqObjApp.find("#mod_code, #mod_run").val(""); // Check if we have data set and if we do, fill in fields; if($.isDefined(_this.oData) && $.isObject(_this.oData) && $.isDefined(_this.oData[lId])){ // --------------------------------------------------------------------------------------------------------- // Base data && menus // --------------------------------------------------------------------------------------------------------- if($.isDefined(_this.oData[lId]['b'])){ for(var id in _this.oData[lId]['b']){ if(_this.oData[lId]['b'].hasOwnProperty(id) && id !== "p_id"){ if(id === "p_menus"){ // Add menus _this.cloneObjects(jqObject, _this.oData[lId]['b'][id]['link_menus'], 'link_menu'); _this.cloneObjects(jqObject, _this.oData[lId]['b'][id]['load_menus'], 'load_menu'); }else{ // Add base data jqObject.find("#" + id + ":not(.p_id)").each(function(){ if($(this).is("input") || $(this).is("textarea") || $(this).is("select")){ if(id === "p_redirect_url"){ // Select drop down $(this).closest("ul").find("select").val(_this.oData[lId]['b'].red_url); // set substring var $i = 0; if(_this.oData[lId]['b'][id].substring(0, 7) === "http://"){ $i = 7; }else if(_this.oData[lId]['b'][id].substring(0, 1) === "/"){ $i = 1; } $(this).val(_this.oData[lId]['b'][id] ? _this.oData[lId]['b'][id].substr($i) : ""); }else{ $(this).val(_this.oData[lId]['b'][id] ? _this.oData[lId]['b'][id] : ""); } }else if($(this).is("a") || $(this).is("span")){ if(id === "parent_url") $(this).html(_this.oData[lId]['b'][id] ? _this.oData[lId]['b'][id] : '/'); else $(this).html(_this.oData[lId]['b'][id] ? _this.oData[lId]['b'][id] : ''); }else if($(this).is("li")){ $(this).find("> a").html(_this.oData[lId]['b'][id] ? _this.oData[lId]['b'][id] : '') } }); } } } // Update all chosen fields jqObject.find(".chz").trigger("chosen:updated"); } // --------------------------------------------------------------------------------------------------------- // Select active modules // --------------------------------------------------------------------------------------------------------- if($.isDefined(_this.oData[lId]['mod'])){ if($.isDefined(_this.oData[lId]['mod']['app'])){ var mCode = _this.oData[lId]['mod']['app']['mod_code']; var mAction = _this.oData[lId]['mod']['app']['mod_action']; jqObjApp.find('#mod_code').val(mCode); jqObjApp.find('#mod_run').val(mAction); } if($.isDefined(_this.oData[lId]['mod']['css'])) _this.cloneObjects(jqObject, _this.oData[lId]['mod']['css'], 'css_modules'); if($.isDefined(_this.oData[lId]['mod']['js'])) _this.cloneObjects(jqObject, _this.oData[lId]['mod']['js'], 'js_modules'); } } // Update all sliders CBase.checkboxes.bindSliderCheckboxesUpdate(jqObject); }; // Clone Objects; SysSiteMap.prototype.cloneObjects = function(jqObject, d, t){ var jqObjDiv = $(""); switch(t){ case 'link_menu': jqObjDiv = jqObject.find("div.menu_link_set"); break; case 'load_menu': jqObjDiv = jqObject.find("div.menu_load_set"); break; case 'css_modules': jqObjDiv = jqObject.find('div#css_modules'); break; case 'js_modules': jqObjDiv = jqObject.find('div#js_modules'); break; } if(jqObjDiv.length){ for(var b in d){ if(d.hasOwnProperty(b)){ // Get the cloneable object; var objToClone = jqObjDiv.find("ul.dx li.clone"); var liClone = objToClone.clone(true); liClone.removeClass("clone").find(".chk").addClass("chked").attr("id", d[b]['id']); liClone.find("label").attr("for", d[b]['id']).html(d[b]['v']); jqObjDiv.find("ul.dx").append(liClone.show()); } } } return true; }; CBlank.prototype.saveBlankViewCallback = function(d){ // On save add ids to language pages. if(d){ var jqObj = $(".form-data"); if(d.ids){ // On save remove all id's jqObj.find(".p_id").each(function(){ $(this).val(""); }); for(var lang in d.ids){ if(d.ids.hasOwnProperty(lang)){ jqObj.find("input#id-" + lang).val(d.ids[lang]); CBase.jsModule.oData[lang]["b"]["id"] = d.ids[lang]; } } } if(d.error && d.data){ for(var lang_id in d.data){ if(d.data.hasOwnProperty(lang_id)){ if(!jqObj.find("a#lang-" + lang_id).parent().hasClass("ts")) jqObj.find("a#lang-" + lang_id).trigger("click"); for(var i in d.data[lang_id]["b"]){ if(d.data[lang_id]["b"].hasOwnProperty(i)){ var o = jqObj.find("#"+i); if(!o.is(":visible")){ o.closest(".settings").find("h3").trigger("click"); } $('html, body').animate({scrollTop:o.offset().top-80}, 400); break; } } } } } } }; // Rewrite Save error callback function CBlank.prototype.saveBlankErrorCallback = function(d){ CBase.jsModule.showErrorOnSave(); }; // Update count classification selection availability SysSiteMap.prototype.showErrorOnSave = function(){ var err = $(".v-error:first"); if(err.length){ if(!err.is(":visible")) err.closest(".settings").find("h3").trigger("click"); $('html, body').animate({scrollTop:err.find("input,textarea").offset().top-80}, 400); } }; SysSiteMap.prototype.handleTreeActions = function($action){ var _this = this; switch ($action) { case "minify_css": _this.cacheMapById(false, "minify_css"); break; case "minify_js": _this.cacheMapById(false, "minify_js"); break; case "clear_cache": _this.cacheMapById(true); break; } }; /** * Helper function to create & clear module cache * * @author Mareks Keišs * @category Content * @param bClear_only - indicates to clear cache only * @param $all - indicates to clear all * @param $pub - indicates to clear only pub * @return void */ SysSiteMap.prototype.cacheMapById = function(bClear_only, action){ var _this = this; var oData = {}; if($.isDefined(bClear_only)) oData["action"] = "clear_only"; if($.isDefined(action)) oData["action"] = action; // Set data var data = { action : "cache", data : $.toJSON(oData) }; _this.oTable.sendAjaxActionAdvanced(data, function(d){ if(d && d.jsonok && d.data && d.data.msg){ CBase.message.show(false, false, d.data.msg); }else{ CBase.message.show(true, false, d.msg ? d.msg : "Error!"); } }); }; /** * Helper function to send custom table actions * * @author Mareks Keišs * @category Content * @param object jqObj - caller object * @param bool bSendSelRows optional - add selected rows * @param bool bFilterTable optional - filter table on jsonok */ SysSiteMap.prototype.handleSendOnlyActions = function(jqObj, bSendSelRows, bFilterTable){ var _this = this; // Set data var data = { action : jqObj.attr("id") }; // Add additional data to array if(defaultVal(bSendSelRows, false)) data["rows"] = _this.oTable.getSelectedTableRows(); _this.oTable.sendAjaxActionAdvanced(data, function(d){ if(d && $.isDefined(d.jsonok)){ if(defaultVal(bFilterTable, false)) _this.oTable.filterTableData(true); if(d.msg) CBase.message.show(false, true, d.msg); }else if(d && $.isDefined(d.error)) if(d.msg) CBase.message.show(true, true, d.msg); }); }; return SysSiteMap; })();