changeset 748:b9785aaab2a4

Bug #1349: PHP returns XML confirmation or error and message. Core responds. Bug #1449 not a bug
author Nicholas Jillings <nicholas.jillings@eecs.qmul.ac.uk>
date Fri, 20 Nov 2015 15:39:01 +0000
parents 6fb0b21d6f85
children 235594325b84
files core.js pythonServer.py save.php
diffstat 3 files changed, 37 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/core.js	Wed Nov 18 11:08:52 2015 +0100
+++ b/core.js	Fri Nov 20 15:39:01 2015 +0000
@@ -674,9 +674,22 @@
 			if (xmlhttp.status != 200 && xmlhttp.readyState == 4) {
 				createProjectSave(null);
 			} else {
-				popup.showPopup();
-				popup.popupContent.innerHTML = null;
-				popup.popupContent.textContent = "Thank you!";
+				if (xmlhttp.responseXML == null)
+				{
+					return createProjectSave(null);
+				}
+				var response = xmlhttp.responseXML.childNodes[0];
+				if (response.getAttribute('state') == "OK")
+				{
+					var file = response.getElementsByTagName('file')[0];
+					console.log('Save OK: Filename '+file.textContent+','+file.getAttribute('bytes')+'B');
+					popup.showPopup();
+					popup.popupContent.innerHTML = null;
+					popup.popupContent.textContent = "Thank you!";
+				} else {
+					var message = response.getElementsByTagName('message')[0];
+					errorSessionDump(message.textContent);
+				}
 			}
 		};
 		xmlhttp.send(file);
--- a/pythonServer.py	Wed Nov 18 11:08:52 2015 +0100
+++ b/pythonServer.py	Fri Nov 20 15:39:01 2015 +0000
@@ -70,7 +70,7 @@
 	self.send_response(200)
 	self.send_header("Content-type", "text/xml")
 	self.end_headers()
-	self.wfile.write('<response><state>OK</state><file>saves/'+curFileName+'</file></response>')
+	self.wfile.write('<response state="OK"><message>OK</message><file>"saves/'+curFileName+'"</file></response>')
 
 class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
 	def do_HEAD(s):
--- a/save.php	Wed Nov 18 11:08:52 2015 +0100
+++ b/save.php	Fri Nov 20 15:39:01 2015 +0000
@@ -1,9 +1,28 @@
 <?php
 	header('Access-Control-Allow-Origin: *');
+	header("Content-type: text/xml");
 	$postText = file_get_contents('php://input');
 	$datetime = date('ymdHis');
 	$xmlfile = "save".$datetime.".xml";
 	$fileHandle = fopen("saves/".$xmlfile, 'w');
-	fwrite($fileHandle, $postText);
+	if ($fileHandle == FALSE)
+	{
+		// Filehandle failed
+		$xml = '<response state="error"><message>Could not open file</message></response>';
+		echo $xml;
+		return;
+	}
+	$wbytes = fwrite($fileHandle, $postText);
+	if ($wbytes == FALSE)
+	{
+		// FileWrite failed
+		$xml = '<response state="error"><message>Could not write file "saves/'.$xmlfile.'"</message></response>';
+		echo $xml;
+		return;
+	}
 	fclose($fileHandle);
+	
+	// Return JSON confirmation data
+	$xml = '<response state="OK"><message>OK</message><file bytes="'.$wbytes.'">"saves/'.$xmlfile.'"</file></response>';
+	echo $xml;
 ?>
\ No newline at end of file