]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - js/editPage.js
hexdumping
[Rakka.git] / js / editPage.js
index e4483a1e3520104e5372401ae8f6f12a13dfd489..eb5097c54da1fc3bd7fa524bb8d7e7a13a36824b 100644 (file)
@@ -36,7 +36,8 @@
                     })();
                     var source
                         = $page.attr("redirect") != null ? $page.attr("redirect")
-                        : $page.find("textData").text()
+                        : $page.attr("isBinary") != null ? Rakka.decodeBase64($page.find("binaryData").text())
+                        :                                  $page.find("textData").text()
                         ;
                     var summary     = $page.find("summary").text();
 
 
         $(fldJSSource).change(makeDirty);
 
+        var uploadFileBin
+            = (defaultType == "binary" && source != null ? source : "");
         var fldUploadFile
-            = $.INPUT({type: "text", disabled: true});
+            = $.TEXTAREA({className: "hexDump", disabled: true}, Rakka.hexDump(uploadFileBin, 128));
         var btnSelectFile
-            = $.INPUT({type: "button", value: "Select File"});
+            = $.INPUT({type: "button", value: "Select file..."});
 
         $(btnSelectFile).click(function () {
                                    var path = Rakka.selectFile("Select a binary file to upload", "open");
                                    if (path != null) {
-                                       fldUploadFile.value = path;
+                                       uploadFileBin = Rakka.loadLocalBinaryFile(path);
+                                       fldUploadFile.value = Rakka.hexDump(uploadFileBin, 128);
                                        makeDirty();
                                    }
                                });
                     fldPageName.value, fldRakkaSource.value);
             }
             else if (btnTypeBinary.checked) {
-                if (fldUploadFile.value != "") {
+                if (uploadFileBin != "") {
                     previewBinaryPage(
-                        fldPageName.value, fldUploadFile.value);
+                        fldPageName.value, uploadFileBin);
                 }
             }
         });
                         $(selPageLang).val(),
                         otherLangs,
                         fldSummary.value,
-                        fldUploadFile.value);
+                        uploadFileBin);
                 }
             }
             else if (btnTypeRedirect.checked) {
                     }
 
                     if (btnTypeBinary.checked) {
-                        if (fldUploadFile.value == "") {
+                        if (uploadFileBin == "") {
                             return false;
                         }
                     }
             .add(fldRedirect)
             .change(validate)
             .keyup(validate);
+        $(btnSelectFile).click(validate);
         validate();
 
         if (oldRevision == null || oldRevision == 0) {
         });
     };
 
-    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();
         });
     };
 
-    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;
         }
         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));