X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=js%2FsystemConfig.js;h=ef3a2e8da9a4054dab2b15e7589ef6d4673b5c9a;hp=82abaeeb9dbfc587fbc5739121fc70fb6afa252b;hb=f19a294d54f38faaeab0027ecb5d85388243b924;hpb=87df74aaf1fc55047bac7ac234546db7547cf166 diff --git a/js/systemConfig.js b/js/systemConfig.js index 82abaee..ef3a2e8 100644 --- a/js/systemConfig.js +++ b/js/systemConfig.js @@ -13,10 +13,12 @@ var lines = src.split(/\n/); $.each(lines, function () { - var m = this.match(/^(\S+)\s+(\S+)$/); + var m = this.match(/^(\S+)\s+(\S+)$/); - map[ m[1] ] = m[2]; - }); + if (m) { + map[ m[1] ] = m[2]; + } + }); return map; }; @@ -134,29 +136,79 @@ }; var appendConfigPanel = function ($area) { - var conf = Rakka.getSystemConfig(); $area.append($.H1({}, "Configuration")); var fldSiteName - = $.INPUT({type: "text", value: conf.siteName}); + = $.INPUT({type: "text"}); var fldBaseURI - = $.INPUT({type: "text", value: conf.baseURI}); + = $.INPUT({type: "text"}); var fldDefaultPage - = $.INPUT({type: "text", value: conf.defaultPage}); + = $.INPUT({type: "text"}); var fldStyleSheet - = $.INPUT({type: "text", value: conf.styleSheet}); + = $.INPUT({type: "text"}); var fldLanguages - = $.TEXTAREA({value: encoder_of.languages(conf.languages)}); + = $.TEXTAREA({}); var chkGlobalLock - = $.INPUT({type: "checkbox", checked: conf.globalLock}); + = $.INPUT({type: "checkbox"}); var btnSave - = $.INPUT({type: "button", value: "Save changes", disabled: "disabled"}); + = $.INPUT({type: "button", value: "Save changes"}); + + var btnRevert + = $.INPUT({type: "button", value: "Revert changes"}); + + var makeClean = function () { + $(btnSave).attr({disabled: "disabled"}); + $(btnRevert).attr({disabled: "disabled"}); + }; + + var updateConfig = function () { + var conf = Rakka.getSystemConfig(); + + fldSiteName.value = conf.siteName; + fldBaseURI.value = conf.baseURI; + fldDefaultPage.value = conf.defaultPage; + fldStyleSheet.value = conf.styleSheet; + fldLanguages.value = encoder_of.languages(conf.languages); + chkGlobalLock.checked = conf.globalLock; + + makeClean(); + }; + updateConfig(); + + var validate = function () { + var isValid = (function () { + if (!isValidBaseURI(fldBaseURI.value)) { + return false; + } + + if (fldDefaultPage.value.match(Rakka.rePageName) == null) { + return false; + } + + if (fldStyleSheet.value.match(Rakka.rePageName) == null) { + return false; + } + + if (!isValidMap(fldLanguages.value)) { + return false; + } + + return true; + })(); + + $(btnSave).attr({disabled: (isValid ? "" : "disabled")}); + }; + + var makeDirty = function () { + $(btnRevert).attr({disabled: ""}); + validate(); + }; $(btnSave).click(function () { var NS = "http://cielonegro.org/schema/Rakka/Config/1.0"; @@ -191,23 +243,21 @@ success : function () { cachedConf = null; Rakka.hideWaitingMessage(); - Rakka.restoreScreen(); + makeClean(); }, error : function (req) { Rakka.hideWaitingMessage(); + // FIXME: better error handling var $area = Rakka.switchScreen(); $area.text("Error: " + req.status + " " + req.statusText); } }); }); - var btnRevert - = $.INPUT({type: "button", value: "Revert changes", disabled: "disabled"}); - $(btnRevert).click(function () { if (window.confirm("Do you really want to discard changes?")) { - // FIXME: implement this + updateConfig(); } }); @@ -239,39 +289,6 @@ $.TH({}), $.TD({}, btnSave, btnRevert)))); - var validate = function () { - var isValid = (function () { - if (!isValidBaseURI(fldBaseURI.value)) { - return false; - } - - if (fldDefaultPage.value.match(Rakka.rePageName) == null) { - return false; - } - - if (fldStyleSheet.value.match(Rakka.rePageName) == null) { - return false; - } - - if (!isValidMap(fldLanguages.value)) { - return false; - } - - return true; - })(); - - $(btnSave).attr({disabled: (isValid ? "" : "disabled")}); - }; - - var isDirty = null; - var makeDirty = function () { - if (!isDirty) { - $(btnRevert).attr({disabled: ""}); - isDirty = true; - } - validate(); - }; - $(fldSiteName) .add(fldBaseURI) .add(fldDefaultPage)