X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=js%2FeditPage.js;h=26b68ce7a7e4542c3411e2cbb5242255b4512580;hb=f19a294d54f38faaeab0027ecb5d85388243b924;hp=a9813d2d3fa8bdc21bfaa6359b7a634ac93a0a49;hpb=b82b7cb90c3c3666ada1e2a2777c902850f831a2;p=Rakka.git diff --git a/js/editPage.js b/js/editPage.js index a9813d2..26b68ce 100644 --- a/js/editPage.js +++ b/js/editPage.js @@ -35,8 +35,9 @@ return obj; })(); var source - = $page.attr("redirect") != null ? $page.attr("redirect") - : $page.find("textData").text() + = $page.attr("redirect") != null ? $page.attr("redirect") + : $page.attr("isBinary") == "yes" ? Rakka.decodeBase64($page.find("binaryData").text()) + : $page.find("textData").text() ; var summary = $page.find("summary").text(); @@ -228,10 +229,21 @@ $(fldJSSource).change(makeDirty); + var uploadFileBin + = (defaultType == "binary" && source != null ? source : ""); var fldUploadFile - = $.INPUT({type: "file"}); - - $(fldUploadFile).change(makeDirty); + = $.TEXTAREA({className: "hexDump", disabled: true}, Rakka.hexDump(uploadFileBin, 128)); + var btnSelectFile + = $.INPUT({type: "button", value: "Select file..."}); + + $(btnSelectFile).click(function () { + var path = Rakka.selectFile("Select a binary file to upload", "open"); + if (path != null) { + uploadFileBin = Rakka.loadLocalBinaryFile(path); + fldUploadFile.value = Rakka.hexDump(uploadFileBin, 128); + makeDirty(); + } + }); var fldRedirect = $.INPUT({type: "text", value: (defaultType == "redirect" ? source : "")}); @@ -253,9 +265,9 @@ fldPageName.value, fldRakkaSource.value); } else if (btnTypeBinary.checked) { - if (fldUploadFile.value != "") { + if (uploadFileBin != "") { previewBinaryPage( - fldPageName.value, fldUploadFile.value); + fldPageName.value, uploadFileBin); } } }); @@ -310,7 +322,7 @@ $(selPageLang).val(), otherLangs, fldSummary.value, - fldUploadFile.value); + uploadFileBin); } } else if (btnTypeRedirect.checked) { @@ -332,20 +344,6 @@ } }); - var btnCancel - = $.INPUT({type: "button", value: "Cancel editing"}); - - $(btnCancel).click(function () { - if (isDirty) { - if (window.confirm("Do you really want to discard changes?")) { - Rakka.restoreScreen(); - } - } - else { - Rakka.restoreScreen(); - } - }); - var updateTRContent = function () { if (btnTypeRakka.checked) { $(trPageLang).show(); @@ -376,7 +374,7 @@ $(trOtherLangs).show(); $(trSummary).show(); $(trContent).find("th").text("File"); - $(trContent).find("td").empty().append(fldUploadFile); + $(trContent).find("td").empty().append(fldUploadFile).append(btnSelectFile); $(btnPreview).show(); } else if (btnTypeRedirect.checked) { @@ -446,7 +444,7 @@ trContent, $.TR({}, $.TH({}), - $.TD({}, btnPreview, btnSubmit, btnDelete, btnCancel) + $.TD({}, btnPreview, btnSubmit, btnDelete) ) ) ); @@ -470,7 +468,7 @@ } if (btnTypeBinary.checked) { - if (fldUploadFile.value == "") { + if (uploadFileBin == "") { return false; } } @@ -492,6 +490,7 @@ .add(fldRedirect) .change(validate) .keyup(validate); + $(btnSelectFile).click(validate); validate(); if (oldRevision == null || oldRevision == 0) { @@ -527,17 +526,16 @@ }); }; - var previewBinaryPage = function (pageName, path) { + var previewBinaryPage = function (pageName, data) { 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), + data : Rakka.encodeBase64(data), processData: false, success : function (resultDoc) { Rakka.hideWaitingMessage(); @@ -641,7 +639,7 @@ }); }; - var submitBinaryPage = function (pageName, oldRevision, givenPageName, isLocked, lang, otherLangs, summary, path) { + var submitBinaryPage = function (pageName, oldRevision, givenPageName, isLocked, lang, otherLangs, summary, data) { var NS = "http://cielonegro.org/schema/Rakka/Page/1.0"; var doc = document.implementation.createDocument(NS, "page", null); var page = doc.documentElement; @@ -683,9 +681,7 @@ } page.appendChild(oLang); - var bin = Rakka.loadLocalBinaryFile(path); - var b64 = Rakka.encodeBase64(bin); - + var b64 = Rakka.encodeBase64(data); var binaryData = doc.createElementNS(NS, "binaryData"); binaryData.appendChild( doc.createTextNode(b64));