| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Mail Enable/Bin/NETWebAdmin/Mondo/lang/sys/scripts/ |
Upload File : |
function jsonList_Init(jsonList) {
jsonList_ShowData(jsonList);
jsonList_ShowActions(jsonList);
}
function jsonList_Bind(jsonList, arrItems) {
//used when binding via ajax/json
jsonList.Items = arrItems;
jsonList.selectedIndex = -1;
}
function jsonList_Sort(sColumn, reverse) {
if (jsonList.Items) {
//See: https://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects-by-property
var sort_by = function (field, reverse, primer) {
var key = primer ? function (x) { return primer(x[field]) } : function (x) { return x[field] };
reverse = !reverse ? 1 : -1;
return function (a, b) {
return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
}
}
jsonList.Items.sort(sort_by(sColumn, reverse, null));
}
}
function jsonList_HighlightSelected() {
$(".sysListTableData tr").on('click', function () {
$(this).addClass("selected").siblings().removeClass("selected");
});
}
function jsonList_ShowActions(jsonList, bAppend) {
if ((jsonList.actionContainer) && (jsonList.actionContainer.length > 0) && (jsonList.Items)) {
var oItem = jsonList.Items[jsonList.selectedIndex]
var actions = $("#dvActions");
if (actions.length == 0) {
actions = $("<div id='dvActions'><ul></ul></div>");
$(jsonList.actionContainer).append(actions);
}
var actionlist = actions.find("ul");
if (!bAppend) {
actionlist.empty();
}
var availableActions = null;
if (jsonList.Options) {
if (jsonList.Options['StateValidation']) {
if (!(typeof jsonList.Options['StateValidation'] === "function")) { jsonList.Options['StateValidation'] = window[jsonList.Options['StateValidation']]; }
availableActions = jsonList.Options['StateValidation'](oItem);
}
}
if (jsonList.Actions) {
$.each(jsonList.Actions, function (i, action) {
if (jsonList.selectedIndex >= 0 && (!availableActions || (availableActions && availableActions[action.id] == 1))) {
var li = $("<li>" + action.Label + "</li>");
li.on('click', function () { if (!(typeof action.event === "function")) {action.event = window[action.event];} action.event(jsonList.Items[jsonList.selectedIndex], action, jsonList.selectedIndex); });
actionlist.append(li);
}
});
}
}
}
function jsonList_SelectItem(jsonList, i) {
jsonList.selectedIndex = i;
jsonList_ShowActions(jsonList);
if (jsonList.onSelect) {
if (!(typeof jsonList.onSelect === "function")) { jsonList.onSelect = window[jsonList.onSelect]; }
jsonList.onSelect(jsonList, false);
}
if (jsonList.onDefaultAction) {
if (!(typeof jsonList.onDefaultAction === "function")) { jsonList.onDefaultAction = window[jsonList.onDefaultAction]; }
jsonList.onDefaultAction(jsonList, false);
}
}
function jsonList_Default_Action(jsonList, i) {
if (jsonList.Actions) {
if (!(typeof jsonList.Actions[0].event === "function")) { jsonList.Actions[0].event = window[jsonList.Actions[0].event]; }
jsonList.Actions[0].event(jsonList.Items[jsonList.selectedIndex], jsonList.Actions[0], jsonList.selectedIndex);
}
}
function jsonList_ShowData(jsonList, bAppend) {
var table_header = $("#tblDataHeader");
if (table_header.length == 0) {
table_header = $("<table id='tblDataHeader' class='dataTable_table sysListTableHeader'></table>");
$(jsonList.listContainer).append(table_header);
var tHead = $("<thead></thead>");
var tr = $("<tr class='sysListTable_tr'></tr>");
tHead.append(tr);
if (jsonList.Headings) {
$.each(jsonList.Headings, function (i, item) {
var sColClass = '';
var sColEvents = '';
var sClasses = '';
if (item.ClassName) {
sClasses += item.ClassName;
}
if ((item.Type == 'DateTime') || (item.Type == 'Numeric')) {
if (sClasses.length > 0) { sClasses += ' ' };
sClasses += "td_" + item.Type;
}
if (sClasses.length > 0) {
sColClass = " class=\"" + sClasses + "\"";
}
if (item.Width) {
sColClass += " style=\"width:" + item.Width + "\"";
}
if (jsonList.ColumnSort) {
sColEvents = " onclick=\"" + jsonList.ColumnSort.toString() + "('" + item.Property.toString() + "',this);\"";
}
var td = $("<td" + sColClass + sColEvents + ">" + item.Label + "</td>");
tr.append(td);
});
}
tr.append($("<td width=\"*\" class=\"col_last\"></td>"));
table_header.append(tHead);
}
var table = $("#tblData");
if (table.length == 0) {
table = $("<div id='divData' class='sysListTable_scrollContent'><table id='tblData' class='dataTable_table sysListTableData'><tbody></tbody></table></div>");
$(jsonList.listContainer).append(table);
}
var tablebody = table.find("tbody");
if (!bAppend) {
tablebody.find("tr").remove();
}
//now show any data from our array
if (jsonList.Items) {
$.each(jsonList.Items, function (i, item) {
var tr = $("<tr class='sysListTable_tr_unselected'></tr>");
tr.on('click', function () {
$(this).addClass("selected").siblings().removeClass("selected");
jsonList_SelectItem(jsonList, i);
});
tr.dblclick(function () {
jsonList_Default_Action(jsonList, i);
});
tablebody.append(tr);
RenderRow(jsonList, tr, item);
});
}
//call the onselect so we can toggle any action button behaviour
if (jsonList.onSelect) {
if (!(typeof jsonList.onSelect === "function")) { jsonList.onSelect = window[jsonList.onSelect]; }
jsonList.onSelect(jsonList, false);
}
}
function GetColumnValue(oData, sColType) {
var sData = oData;
if (sData == null) {
sData = '';
}
if (sColType == 'DateTime') {
sData = (new Date(parseInt(sData.substr(6)))).toLocaleString();
}
return sData;
}
function RemoveScript(sData) {
//remove any script blocks
sData = sData.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "[script]");
//remove any images that have a source (that could contain an external link
sData = sData.replace(/<img\s+src\s*=\s*["']([^"']+)["']\s*\/*>/gi, "[img]");
//remove any anchor hrefs
sData = sData.replace(/<a\s+href\s*=\s*["']([^"']+)["']\s*\/*>/gi, "[href]");
return sData;
}
function escapeHTML(sStr) {
var escaped = {'&': '&','<': '<','>': '>','"': '"', '\'': '''};
return sStr.toString().replace(/[&<>"']/g, function (match) { return escaped[match];});
}
function RenderRow(jsonList, tr, item) {
tr.empty();
if (jsonList.Headings) {
$.each(jsonList.Headings, function (i, col) {
var sColClass = '';
var sClasses = '';
if (col.ClassName) {
sClasses += col.ClassName;
}
if ((col.Type == 'DateTime') || (col.Type == 'Numeric')) {
if (sClasses.length > 0) { sClasses += ' ' };
sClasses += "td_" + col.Type;
}
if (sClasses.length > 0) {
sColClass = " class=\"" + sClasses + "\"";
}
//protect againt html/script in data field
var sData = GetColumnValue(item[col.Property], col.Type);
if (col.Type) {
if (col.Type == 'String') {
sData = escapeHTML(sData);
}
else {
if (col.Type == 'HTML') {
sData = RemoveScript(sData);
}
}
}
if (col.Width) {
sColClass += " style=\" width:" + col.Width + "\"";
}
if (col.onRender) {
if (!(typeof col.onRender === "function")) { col.onRender = window[col.onRender]; }
tr.append($("<td" + sColClass + ">" + col.onRender(item, sData) + "</td>"));
}
else {
var tdData = $("<td" + sColClass + "></td>");
tdData.text(sData);
tdData.attr('title', sData);
tr.append(tdData);
}
});
}
tr.append($("<td width=\"*\" class=\"col_last\"></td>"));
}
function jsonList_UpdateScrollContainer() {
var tblHeaderHeight = $("#tblDataHeader").outerHeight();
var tblContentHeight = $(".sysListTable_shell").outerHeight() - tblHeaderHeight;
if (tblContentHeight <= 0) { tblContentHeight = 0; }
$(".sysListTable_scrollContent").height(tblContentHeight);
}