qsos-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qsos-commits] qsos/apps/xuleditor/chrome/content Document.js ...


From: Raphaël Semeteys
Subject: [Qsos-commits] qsos/apps/xuleditor/chrome/content Document.js ...
Date: Thu, 14 Dec 2006 13:34:44 +0000

CVSROOT:        /sources/qsos
Module name:    qsos
Changes by:     Raphaël Semeteys <rsemeteys>   06/12/14 13:34:44

Modified files:
        apps/xuleditor/chrome/content: Document.js editor.js editor.xul 

Log message:
        Upload on remote server added

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qsos/apps/xuleditor/chrome/content/Document.js?cvsroot=qsos&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/qsos/apps/xuleditor/chrome/content/editor.js?cvsroot=qsos&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/qsos/apps/xuleditor/chrome/content/editor.xul?cvsroot=qsos&r1=1.11&r2=1.12

Patches:
Index: Document.js
===================================================================
RCS file: /sources/qsos/qsos/apps/xuleditor/chrome/content/Document.js,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- Document.js 11 Dec 2006 18:05:55 -0000      1.9
+++ Document.js 14 Dec 2006 13:34:44 -0000      1.10
@@ -21,8 +21,6 @@
 ** QSOS XUL Editor
 ** Documents.js: document object abstracting the QSOS XML format
 **
-** TODO:
-**     - Load remote QSOS XML file
 */
 
 //Constructor
@@ -30,12 +28,14 @@
 function Document(name) {
     var sheet;
     var file;
+    var req;
     filename = name;
     
     //Public methods declaration
     this.load = load;
     this.loadremote = loadremote;
     this.write = write;
+    this.writeremote = writeremote;
     this.getkeytitle = getkeytitle;
     this.getauthors = getauthors;
     this.addauthor = addauthor;
@@ -161,10 +161,6 @@
 
         outputStream.init(file, 0x04 | 0x08 | 0x20, 420, 0);
 
-        //var serializer = new XMLSerializer();
-        //var xml = serializer.serializeToString(sheet);
-        //var result = outputStream.write( xml, xml.length );
-
        var xml = serialize(sheet.documentElement, 0);
 
        var converter = 
Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
@@ -177,6 +173,75 @@
         outputStream.close();
     }
 
+    //Serialize and upload the QSOS XML file to a remote server
+    function writeremote() {
+        try {
+            
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+        } catch (e) {
+            alert("Permission to save file was denied.");
+        }
+
+       var xml = serialize(sheet.documentElement, 0);
+
+       var converter = 
Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
+               
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
+       converter.charset = "UTF-8";
+       xml = converter.ConvertFromUnicode(xml);
+
+       var stream = Components.classes["@mozilla.org/io/string-input-stream;1"]
+               .createInstance(Components.interfaces.nsIStringInputStream);
+       stream.setData(xml, xml.length);
+
+       var bstream =  
Components.classes["@mozilla.org/network/buffered-input-stream;1"]
+               .getService();
+       bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
+       bstream.init(stream, 1000);
+       bstream.QueryInterface(Components.interfaces.nsIInputStream);
+       var binary = Components.classes["@mozilla.org/binaryinputstream;1"]
+               .createInstance(Components.interfaces.nsIBinaryInputStream);
+       binary.setInputStream(stream);
+
+       req = false;
+        req = new XMLHttpRequest();
+
+       //Set the filename
+       var filename = getqsosappfamily() + "." + getappname() + "." + 
getrelease();
+       if (filename == "..") filename = "upload";
+
+       //Prepare the MIME POST data
+       var boundaryString = 'qsoswriteremote';
+       var boundary = '--' + boundaryString;
+       var requestbody = boundary + '\n' 
+       + 'Content-Disposition: form-data; name="myfile"; filename="' 
+               + filename + '"' + '\n' 
+       + 'Content-Type: text/xml' + '\n' 
+       + '\n'
+       + binary.readBytes(binary.available())
+       + '\n'
+       + boundary;
+
+       //Do the AJAX request
+       req.onreadystatechange = requestdone;
+       req.open('POST', url, true);
+       req.setRequestHeader("Content-type", "multipart/form-data; \
+               boundary=\"" + boundaryString + "\"");
+       req.setRequestHeader("Connection", "close");
+       req.setRequestHeader("Content-length", requestbody.length);
+       req.send(requestbody);
+    }
+
+    //Upload callback
+    function requestdone() {
+       if (req.readyState == 4) {
+               if (req.status == 200) {
+                       result = req.responseText;
+                       alert(result);
+               } else {
+                       alert('There was a problem with the upload.');
+               }
+       }
+    }
+
     //Recursively serialize a XML node in a string
     //node: XML node to serialize
     //depth: depth of recursion (used fo indentation), 0 is used at the 
beginning

Index: editor.js
===================================================================
RCS file: /sources/qsos/qsos/apps/xuleditor/chrome/content/editor.js,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- editor.js   11 Dec 2006 22:54:49 -0000      1.11
+++ editor.js   14 Dec 2006 13:34:44 -0000      1.12
@@ -21,8 +21,6 @@
 ** QSOS XUL Editor
 ** editor.js: functions associated with the editor.xul file
 **
-** TODO:
-**     - Load remote QSOS XML file
 */
 
 //Object "Document" representing data in the QSOS XML file
@@ -260,7 +258,7 @@
 }
 
 //////////////////////////
-//Submenu "File/Save"
+//Submenu "File/Save local file"
 //////////////////////////
 //Saves modifications to the QSOS XML file
 function saveFile() {
@@ -296,6 +294,14 @@
 }
 
 //////////////////////////
+//Submenu "File/Save remote file"
+//////////////////////////
+//Saves modifications to a new QSOS XML file
+function saveRemote() {
+       myDoc.writeremote("http://www.qsos.org/phpviewer/writeremote.php";);
+}
+
+//////////////////////////
 //Submenu "File/Close"
 //////////////////////////
 //Closes the QSOS XML file and resets window

Index: editor.xul
===================================================================
RCS file: /sources/qsos/qsos/apps/xuleditor/chrome/content/editor.xul,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- editor.xul  11 Dec 2006 22:54:49 -0000      1.11
+++ editor.xul  14 Dec 2006 13:34:44 -0000      1.12
@@ -22,6 +22,7 @@
                  <menuitem id="file-open-remote" 
label="&file-open-remote.label;" onclick="checkopenRemoteFile();"/>
                  <menuitem id="file-save" label="&file-save.label;" 
onclick="saveFile();"/>
                  <menuitem id="file-saveas" label="&file-saveas.label;" 
onclick="saveFileAs();"/>
+                 <menuitem id="file-save-remote" 
label="&file-save-remote.label;" onclick="saveRemote();"/>
                  <menuitem id="file-close" label="&file-close.label;"  
onclick="checkcloseFile();"/>
             <menuseparator/>
            <menuitem id="file-exit" label="&file-exit.label;" 
onclick="checkexit();"/>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]