ElixirVault/www/system-brs-core/sys/sysSiteMap/js/sysSiteMap.js

1924 lines
71 KiB
JavaScript

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 <mareks.keiss@brsystems.lv>
* @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 <mareks.keiss@brsystems.lv>
* @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 <mareks.keiss@brsystems.lv>
* @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 <mareks.keiss@brsystems.lv>
* @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 : $('<div class="site_map_xml"><p>' + defaultVal(d.msg, defaultVal(CBase.gM.generateSiteMapXmlDone, "Site map xml generation done!")) + '</p></div>'),
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 = $("<div class='sqlDrop'><div></div></div>");
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($("<p>"+ str +"</p>"));
});
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 <info@brsystems.lv>
* @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<lower.length; ++i) {
if(specialChars[lower[i]])
result += specialChars[lower[i]];
else
result += lower[i]
}
return result.replace(/[^a-zA-Z0-9-]/g,"");
}
return '';
};
// Bind bField binds
SysSiteMap.prototype.bindMenusLoad = function(jqObj){
var _this = this;
var jqObjectDialogBox = $("#confirmDialog");
jqObj.find("#menus_set").find(".plus_btn").click(function(e){
e.stopImmediatePropagation();
var jqCaller = $(this);
var jqSettings = jqCaller.closest("div.settings");
var id = jqSettings.attr("id");
if(id && id.length){
var sAct = "", sClass = "", sTitle = "", selId = "", selText = "",
data = {};
switch (id){
case "menus_set":
sAct = "getMenus";
sClass = "get_menu";
sTitle = 'Select menus';
break;
}
_this.oTable.sendAjaxActionAdvanced({
action : sAct,
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("<div class='bottom-border'></div>");
});
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("<div class='bottom-border'></div>");
});
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 <mareks.keiss@brsystems.lv>
* @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 <mareks.keiss@brsystems.lv>
* @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 <mareks.keiss@brsystems.lv>
* @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 <mareks.keiss@brsystems.lv>
* @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;
})();