- var conf = Rakka.getSystemConfig();
- $area.append($.H1({}, "Configuration"));
-
- var fldSiteName
- = $.INPUT({type: "text", value: conf.siteName});
-
- var fldBaseURI
- = $.INPUT({type: "text", value: conf.baseURI});
-
- var fldDefaultPage
- = $.INPUT({type: "text", value: conf.defaultPage});
-
- var fldStyleSheet
- = $.INPUT({type: "text", value: conf.styleSheet});
-
- var fldLanguages
- = $.TEXTAREA({value: encoder_of.languages(conf.languages)});
-
- var chkGlobalLock
- = $.INPUT({type: "checkbox", checked: conf.globalLock});
-
- 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();
- }
- });
+ $area.append($.H1({}, "Configuration"));
+
+ var fldSiteName
+ = $.INPUT({type: "text"});
+
+ var fldBaseURI
+ = $.INPUT({type: "text"});
+
+ var fldDefaultPage
+ = $.INPUT({type: "text"});
+
+ var fldStyleSheet
+ = $.INPUT({type: "text"});
+
+ var fldLanguages
+ = $.TEXTAREA({});
+
+ var chkGlobalLock
+ = $.INPUT({type: "checkbox"});
+
+ var btnSave
+ = $.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";
+ 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();
+ makeClean();
+ },
+ error : function (req) {
+ Rakka.hideWaitingMessage();
+
+ // FIXME: better error handling
+ var $area = Rakka.switchScreen();
+ $area.text("Error: " + req.status + " " + req.statusText);
+ }
+ });
+ });