]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - js/editPage.js
implemented page deleting
[Rakka.git] / js / editPage.js
index 2dd99510f2080d3d1ec60860344b3e66deee1eb0..959d0889c72d5310df4c3fd3b68404331d099f7c 100644 (file)
@@ -153,7 +153,9 @@ Rakka.displayPageEditor = function (pageName, oldRevision, defaultType, source)
         = $.INPUT({type: "button", value: "Delete this page"});
     
     $(btnDelete).click(function () {
-        throw new Error("FIXME: not implemented yet");
+        if (window.confirm("Do you really want to delete this page?")) {
+            Rakka.deletePage(pageName);
+        }
     });
 
     var updateTRContent = function () {
@@ -253,6 +255,30 @@ Rakka.previewRakkaPage = function (pageName, source) {
             Rakka.showPreview(resultDoc);
         },
         error      : function (req) {
+            Rakka.hideWaitingMessage();
+            alert("Error: " + req.status + " " + req.statusText);
+        }
+    });
+};
+
+Rakka.previewBinaryPage = function (pageName, path) {
+    Rakka.displayWaitingMessage("Loading... please wait.");
+
+    /* Firefox でバイナリを送らうとすると 0x00 の位置で切れてしまふ。*/
+    var bin = Rakka.loadLocalBinaryFile(path);
+    var url = Rakka.baseURI + "render/" + encodeURI(pageName);
+    $.ajax({
+        type       : "POST",
+        url        : url,
+        contentType: "application/x-rakka-base64-stream",
+        data       : Rakka.encodeBase64(bin),
+        processData: false,
+        success    : function (resultDoc) {
+            Rakka.hideWaitingMessage();
+            Rakka.showPreview(resultDoc);
+        },
+        error      : function (req) {
+            Rakka.hideWaitingMessage();
             alert("Error: " + req.status + " " + req.statusText);
         }
     });
@@ -323,6 +349,58 @@ Rakka.submitTextPage = function (pageName, oldRevision, givenPageName, mimeType,
     });
 };
 
+Rakka.submitBinaryPage = function (pageName, oldRevision, givenPageName, path) {
+    var doc = document.implementation.createDocument(
+        "http://cielonegro.org/schema/Rakka/Page/1.0", "page", null);
+
+    var page = doc.documentElement;
+
+    if (oldRevision != null) {
+        // ページ書換時
+        var updateInfo = doc.createElement("updateInfo");
+        updateInfo.setAttribute("oldRevision", oldRevision);
+
+        if (pageName != givenPageName) {
+            var move = doc.createElement("move");
+            move.setAttribute("from", pageName);
+            updateInfo.appendChild(move);
+        }
+
+        page.appendChild(updateInfo);
+    }
+
+    page.setAttribute("type", "");
+
+    var bin = Rakka.loadLocalBinaryFile(path);
+    var b64 = Rakka.encodeBase64(bin);
+
+    var binaryData = doc.createElement("binaryData");
+    binaryData.appendChild(
+        doc.createTextNode(b64));
+
+    page.appendChild(binaryData);
+
+    Rakka.displayWaitingMessage("Submitting... please wait.");
+
+    var url = Rakka.baseURI + encodeURI(givenPageName);
+    $.ajax({
+        type       : "PUT",
+        url        : url,
+        contentType: "text/xml",
+        data       : doc,
+        processData: false,
+        success    : function () {
+            window.location.replace(url);
+        },
+        error      : function (req) {
+            Rakka.hideWaitingMessage();
+            
+            var $area = Rakka.switchScreen();
+            $area.text("Error: " + req.status + " " + req.statusText);
+        }
+    });
+};
+
 Rakka.submitRedirection = function (pageName, oldRevision, givenPageName, destination) {
     var doc = document.implementation.createDocument(
         "http://cielonegro.org/schema/Rakka/Page/1.0", "page", null);
@@ -364,4 +442,21 @@ Rakka.submitRedirection = function (pageName, oldRevision, givenPageName, destin
             $area.text("Error: " + req.status + " " + req.statusText);
         }
     });
-};
\ No newline at end of file
+};
+
+Rakka.deletePage = function (pageName) {
+    var url = Rakka.baseURI + encodeURI(pageName);
+    $.ajax({
+        type       : "DELETE",
+        url        : url,
+        success    : function () {
+            window.location.replace(url);
+        },
+        error      : function (req) {
+            Rakka.hideWaitingMessage();
+            
+            var $area = Rakka.switchScreen();
+            $area.text("Error: " + req.status + " " + req.statusText);
+        }
+    });
+};