]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - js/systemConfig.js
/systemConfig now works
[Rakka.git] / js / systemConfig.js
index 7cc4c9194f8324e0378cda5c8d492eb6d30ea395..5fc8303611cbb2df46c144bcbd9333228327759f 100644 (file)
                  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;
          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({},
                                     return false;
                                 }
 
+                               if (!isValidMap(fldLanguages.value)) {
+                                   return false;
+                               }
+
                                 return true;
                             })();