Mercurial > hg > fapweb
view majax.inc.php @ 686:8730bffcffd4
Add new return code 903 and handling for it.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 09 Nov 2014 20:36:01 +0200 |
parents | 1005de5ee3f0 |
children | 2b3c17c7b7f8 |
line wrap: on
line source
<? // // FAPWeb - Simple Web-based Demoparty Management System // Common AJAX Javascript code module // (C) Copyright 2012-2014 Tecnic Software productions (TNSP) // function stCommonAJAX($backend, $failover, $script = FALSE, $tabs = FALSE) { if ($script) echo "<script type=\"text/javascript\">\n"; ?> function jsCloseMessageBox(callback, cb_data) { var nitem = document.getElementById("messageBox"); if (nitem && nitem.style.display != "none") { nitem.style.display = "none"; if (callback && typeof(callback) === "function") callback(cb_data); } } function jsMessageBox(msg) { var nitem = document.getElementById("messageBox"); if (nitem) { nitem.innerHTML = "<div class='messageBoxInner'>"+ msg + "<div class='messageBoxControls'>"+ "<input id='msgBoxConfirmClose' type='button' value=' OK '>"+ "</div></div>"; document.getElementById("msgBoxConfirmClose").onclick = function () { jsCloseMessageBox(0, 0); } nitem.style.display = "block"; } } function jsConfirmBox(msg, cb_ok, cb_cancel, cb_data) { var nitem = document.getElementById("messageBox"); if (nitem) { nitem.innerHTML = "<div class='messageBoxInner'><h1>Confirmation</h1><p>"+ msg +"</p>"+ "<div class='messageBoxControls'>"+ "<input id='msgBoxConfirmCancel' type='button' value=' Cancel '>"+ "<input id='msgBoxConfirmOK' type='button' value=' OK '>"+ "</div></div>"; document.getElementById("msgBoxConfirmCancel").onclick = function () { jsCloseMessageBox(cb_cancel, cb_data); } document.getElementById("msgBoxConfirmOK").onclick = function () { jsCloseMessageBox(cb_ok, cb_data); } nitem.style.display = "block"; } } function statusMsg(msg) { var nitem = document.getElementById("nstatus"); if (nitem) nstatus.innerHTML = msg; } function strtrim(str) { if (!str || str == null) return ""; return str.replace(/^\s+|\s+$/g,'') } function strencode(str) { return encodeURIComponent(str); } function jsCreateXMLRequest() { var req; if (window.XMLHttpRequest) { // Modern browsers req = new XMLHttpRequest(); } else { // Old IE versions req = new ActiveXObject("Microsoft.XMLHTTP"); } return req; } function jsSendPOSTRequest(params, success, failure) { <? if (($csrfID = stGetSessionItem("csrfID", FALSE)) !== FALSE) echo " params += \"&csrfID=".$csrfID."\";\n"; ?> var req = jsCreateXMLRequest(); req.open("POST", "<? echo $backend ?>", true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); req.onreadystatechange = function() { if (req.readyState == 4) { switch (req.status) { case 404: window.location = "<? echo $failover ?>"; break; case 902: statusMsg(req.statusText); jsMessageBox(req.responseText); break; case 903: var nitem = document.getElementById("adminContent"); if (nitem) nstatus.innerHTML = req.responseText; break; case 200: if (success) success(req.responseText); statusMsg(req.statusText); break; default: if (failure) failure(req.status, req.statusText, req.responseText); else statusMsg("["+req.status+" - "+req.statusText+"] "+ req.responseText); break; } } } req.send(params); } // // Function for creating AJAX POST request arguments list based // on fields and giving them specified types. Also basic check // for validity can be performed (e.g. field empty or not) // var lastPostArgs = Object(); function jsMakePostArgs(fields, fprefix, fsuffix, nofail) { var res = []; lastPostArgs = Object(); for (var id in fields) { var elname = fprefix + id + fsuffix; var elem = document.getElementById(elname); if (!elem && !nofail) { jsMessageBox("No such DOM element '"+ elname +"'."); return ""; } if (elem) switch (fields[id]) { case 1: var vstr = strtrim(elem.value); res.push(id+"="+strencode(vstr)); lastPostArgs[id] = vstr; break; case 2: var vint = parseInt(strtrim(elem.value)); res.push(id+"="+vint); lastPostArgs[id] = vint; break; case 3: res.push(id+"="+(elem.checked ? "1" : "0")); lastPostArgs[id] = elem.checked; break; case 4: var vval = (elem.selectedValue != -1) ? elem.options[elem.selectedValue].value : -1; res.push(id+"="+vval); lastPostArgs[id] = vval; break; default: jsMessageBox("Unsupported field type in "+ elname); return ""; } } return res.join("&"); } function jsGetValue(elname, eltype) { var elem = document.getElementById(elname); if (!elem) { jsMessageBox("No such DOM element '"+ elname +"'."); return ""; } switch (eltype) { case 1: var vstr = strtrim(elem.value); return strencode(vstr); case 2: var vint = parseInt(strtrim(elem.value)); return vint; case 3: return elem.checked ? "1" : "0"; case 4: if (elem.selectedIndex != -1) return elem.options[elem.selectedIndex].value; else return null; default: jsMessageBox("Unsupported field type in "+ elname); return ""; } } <? if ($tabs) { ?> // // Tab related code // var registeredTabs = Object(); var activeTabs = Object(); function jsUpdateTabList(tabset, extra) { var tabs = ""; var content = ""; for (var id in registeredTabs[tabset]) { var thead = registeredTabs[tabset][id]; tabs += "<a id=\"tabHead"+ tabset + id + "\"href=\"#\" onClick=\"jsSwitchActiveTab('"+tabset+"', '"+id+ "')\">"+ thead.replace(/\s/g, " ") +"</a> "; content += "<div id=\"tabCont"+ tabset + id +"\"></div>"; } var item = document.getElementById("tabHeaders"+ tabset); if (item) item.innerHTML = tabs + extra; item = document.getElementById("tabContents"+ tabset); if (item) item.innerHTML = content; } function jsRegisterTab(tabset, id, name) { if (!registeredTabs[tabset]) registeredTabs[tabset] = Object(); registeredTabs[tabset][id] = name; } function jsSwitchActiveTab(tabset, tab) { for (var id in registeredTabs[tabset]) { var tabContent = document.getElementById("tabCont"+ tabset + id); var tabHead = document.getElementById("tabHead"+ tabset + id); if (tabContent && tabHead) { tabContent.style.display = (tab == id) ? "block" : "none"; tabHead.style.borderTop = (tab == id) ? "4px solid white" : "none"; if (tab == id) { activeTabs[tabset] = id; setTimeout("refreshDispatch"+ tabset +"('"+ id +"');", 10); } } } } <? } // if (tabs) if ($script) echo "</script>\n"; } ?>