X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=js%2FsystemConfig.js;h=5fc8303611cbb2df46c144bcbd9333228327759f;hp=7cc4c9194f8324e0378cda5c8d492eb6d30ea395;hb=52bafd675e7ac9d3fc9d3bf2d72e66a22efb6db9;hpb=c80a6d8660e2ed0168329b5a959c84923da177c7 diff --git a/js/systemConfig.js b/js/systemConfig.js index 7cc4c91..5fc8303 100644 --- a/js/systemConfig.js +++ b/js/systemConfig.js @@ -71,6 +71,10 @@ uri.anchor == ""); }; + var isValidMap = function (src) { + return src.match(/^\S+\s+\S+(?:\n\S+\s+\S+)*\n?$/) != null; + }; + Rakka.getSystemConfig = function () { if (cachedConf != null) { return cachedConf; @@ -131,9 +135,64 @@ var btnSave = $.INPUT({type: "button", value: "Save"}); + $(btnSave).click(function () { + var NS = "http://cielonegro.org/schema/Rakka/Config/1.0"; + var doc = document.implementation.createDocument(NS, "systemConfig", null); + var sc = doc.documentElement; + + var mkValue = function (path, value) { + var elem = doc.createElementNS(NS, "value"); + elem.setAttribute("path", path); + elem.appendChild(doc.createTextNode(value)); + return elem; + }; + + sc.appendChild(mkValue("siteName" , fldSiteName.value)); + sc.appendChild(mkValue("baseURI" , fldBaseURI.value)); + sc.appendChild(mkValue("defaultPage", fldDefaultPage.value)); + sc.appendChild(mkValue("styleSheet" , fldStyleSheet.value)); + sc.appendChild(mkValue("languages" , fldLanguages.value)); + sc.appendChild(mkValue("globalLock" , encoder_of["globalLock"](chkGlobalLock.checked))); + + Rakka.displayWaitingMessage("Submitting... please wait."); + + var url = Rakka.baseURI + "systemConfig"; + $.ajax({ type : "PUT", + url : url, + contentType: "text/xml", + data : doc, + processData: false, + beforeSend : function (req) { + Rakka.setAuthorization(req); + }, + success : function () { + cachedConf = null; + Rakka.hideWaitingMessage(); + Rakka.restoreScreen(); + }, + error : function (req) { + Rakka.hideWaitingMessage(); + + var $area = Rakka.switchScreen(); + $area.text("Error: " + req.status + " " + req.statusText); + } + }); + }); + var btnCancel = $.INPUT({type: "button", value: "Cancel"}); + $(btnCancel).click(function () { + if (isDirty) { + if (window.confirm("Do you really want to discard changes?")) { + Rakka.restoreScreen(); + } + } + else { + Rakka.restoreScreen(); + } + }); + var configPanel = $.TABLE({className: "pageEditor"}, $.TBODY({}, @@ -185,6 +244,10 @@ return false; } + if (!isValidMap(fldLanguages.value)) { + return false; + } + return true; })();