X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=js%2FeditPage.js;h=959d0889c72d5310df4c3fd3b68404331d099f7c;hb=044a917ed3908780479b759ac772e1545616c7fc;hp=2dd99510f2080d3d1ec60860344b3e66deee1eb0;hpb=736016f6e7b9c4ce5cec6d2fe82f8d2911783f8f;p=Rakka.git diff --git a/js/editPage.js b/js/editPage.js index 2dd9951..959d088 100644 --- a/js/editPage.js +++ b/js/editPage.js @@ -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); + } + }); +};