X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=js%2FeditPage.js;h=2dd99510f2080d3d1ec60860344b3e66deee1eb0;hb=736016f6e7b9c4ce5cec6d2fe82f8d2911783f8f;hp=ad1765891dfb9b3093f32377f2654c8836c56522;hpb=bb9575473ed1064965f9c0322f14991ef62fe523;p=Rakka.git diff --git a/js/editPage.js b/js/editPage.js index ad17658..2dd9951 100644 --- a/js/editPage.js +++ b/js/editPage.js @@ -1,11 +1,14 @@ -Rakka.editPage = function (baseURI, pageName) { +Rakka.$previewHeader = null; +Rakka.$previewArea = null; + +Rakka.editPage = function (pageName) { var $area = Rakka.switchScreen(); Rakka.displayWaitingMessage("Loading... please wait."); // XML 版のページを取得する。 $.ajax({ - url : baseURI + pageName + ".xml", + url : Rakka.baseURI + pageName + ".xml", success: function (pageXml) { Rakka.hideWaitingMessage(); @@ -22,13 +25,13 @@ Rakka.editPage = function (baseURI, pageName) { = $page.attr("redirect") != null ? $page.attr("redirect") : $page.find("textData").text() ; - Rakka.displayPageEditor(baseURI, pageName, oldRevision, defaultType, source); + Rakka.displayPageEditor(pageName, oldRevision, defaultType, source); }, error : function (req) { Rakka.hideWaitingMessage(); if (req.status == 404) { - Rakka.displayPageEditor(baseURI, pageName, null, "rakka", null); + Rakka.displayPageEditor(pageName, null, "rakka", null); } else { $area.text("Error: " + req.status + " " + req.statusText); @@ -37,16 +40,24 @@ Rakka.editPage = function (baseURI, pageName) { }); }; -Rakka.newPage = function (baseURI) { - Rakka.displayPageEditor(baseURI, "", null, "rakka", null); +Rakka.newPage = function () { + Rakka.displayPageEditor("", null, "rakka", null); }; -Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, source) { +Rakka.displayPageEditor = function (pageName, oldRevision, defaultType, source) { var $area = Rakka.switchScreen(); $area.empty(); - $area.append($.H1({}, pageName == "" ? "Create page" : "Edit page")); + Rakka.$previewHeader = $( $.H1({}, "Preview") ); + $area.append(Rakka.$previewHeader); + Rakka.$previewHeader.hide(); + Rakka.$previewArea = $( $.DIV({className: "preview"}) ); + $area.append(Rakka.$previewArea); + Rakka.$previewArea.hide(); + + $area.append($.H1({}, pageName == "" ? "Create page" : "Edit page")); + var fldPageName = $.INPUT({type : "text", value: pageName}); @@ -92,7 +103,14 @@ Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, = $.INPUT({type: "button", value: "Preview page"}); $(btnPreview).click(function () { - throw new Error("FIXME: not implemented yet"); + if (btnTypeRakka.checked) { + Rakka.previewRakkaPage( + fldPageName.value, fldRakkaSource.value); + } + else if (btnTypeBinary.checked) { + Rakka.previewBinaryPage( + fldPageName.value, fldUploadFile.value); + } }); var btnSubmit @@ -101,7 +119,6 @@ Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, $(btnSubmit).click(function () { if (btnTypeRakka.checked) { Rakka.submitTextPage( - baseURI, pageName, oldRevision, fldPageName.value, @@ -110,7 +127,6 @@ Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, } else if (btnTypeCSS.checked) { Rakka.submitTextPage( - baseURI, pageName, oldRevision, fldPageName.value, @@ -119,7 +135,6 @@ Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, } else if (btnTypeBinary.checked) { Rakka.submitBinaryPage( - baseURI, pageName, oldRevision, fldPageName.value, @@ -127,7 +142,6 @@ Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, } else if (btnTypeRedirect.checked) { Rakka.submitRedirection( - baseURI, pageName, oldRevision, fldPageName.value, @@ -224,7 +238,43 @@ Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, $area.append(pageEditor); }; -Rakka.submitTextPage = function (baseURI, pageName, oldRevision, givenPageName, mimeType, text) { +Rakka.previewRakkaPage = function (pageName, source) { + Rakka.displayWaitingMessage("Loading... please wait."); + + var url = Rakka.baseURI + "render/" + encodeURI(pageName); + $.ajax({ + type : "POST", + url : url, + contentType: "text/x-rakka", + data : source, + processData: false, + success : function (resultDoc) { + Rakka.hideWaitingMessage(); + Rakka.showPreview(resultDoc); + }, + error : function (req) { + alert("Error: " + req.status + " " + req.statusText); + } + }); +}; + +Rakka.showPreview = function (doc) { + Rakka.$previewArea.empty(); + + Rakka.$previewHeader.show(); + Rakka.$previewArea.show(); + + var root = doc.documentElement; + var child = root.firstChild; + do { + if (child.nodeType == 1) { + // 要素だったので複製 + Rakka.$previewArea.append(child.cloneNode(true)); + } + } while (child = child.nextSibling); +}; + +Rakka.submitTextPage = function (pageName, oldRevision, givenPageName, mimeType, text) { var doc = document.implementation.createDocument( "http://cielonegro.org/schema/Rakka/Page/1.0", "page", null); @@ -254,7 +304,7 @@ Rakka.submitTextPage = function (baseURI, pageName, oldRevision, givenPageName, Rakka.displayWaitingMessage("Submitting... please wait."); - var url = baseURI + encodeURI(givenPageName); + var url = Rakka.baseURI + encodeURI(givenPageName); $.ajax({ type : "PUT", url : url, @@ -273,7 +323,7 @@ Rakka.submitTextPage = function (baseURI, pageName, oldRevision, givenPageName, }); }; -Rakka.submitRedirection = function (baseURI, pageName, oldRevision, givenPageName, destination) { +Rakka.submitRedirection = function (pageName, oldRevision, givenPageName, destination) { var doc = document.implementation.createDocument( "http://cielonegro.org/schema/Rakka/Page/1.0", "page", null); @@ -297,7 +347,7 @@ Rakka.submitRedirection = function (baseURI, pageName, oldRevision, givenPageNam Rakka.displayWaitingMessage("Submitting... please wait."); - var url = baseURI + encodeURI(givenPageName); + var url = Rakka.baseURI + encodeURI(givenPageName); $.ajax({ type : "PUT", url : url,