[Top][All Lists]
[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();"/>