From 036d5a2e88232e966cfd0cc82277d5fba13e71ff Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 4 May 2016 14:25:50 +0200 Subject: Add upload button for save + move save/download button --- index.xhtml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.xhtml b/index.xhtml index 6627ec5..5e0752a 100644 --- a/index.xhtml +++ b/index.xhtml @@ -33,8 +33,6 @@
- -
@@ -90,7 +88,11 @@ -- cgit v1.2.3-54-g00ecf From 40b0d42dee76bc62517801aa746371a9ce2895a1 Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 4 May 2016 14:26:57 +0200 Subject: Now possible to add format to sendMessage() strings --- inc/messages.inc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/inc/messages.inc b/inc/messages.inc index 4938fa1..7b952b8 100644 --- a/inc/messages.inc +++ b/inc/messages.inc @@ -14,18 +14,19 @@ $messages = array( "gamesave_delete_success" => "Game save successfully removed from server", ); -function sendMessage($type, $msg) { +function sendMessage($type, $msg, $fmt = null) { global $messages; $text = $messages[$msg]; + if($fmt) $text = vsprintf($text, $fmt); echo json_encode(array($type => $text)); } -function sendError($msg) { - sendMessage("error", $msg); +function sendError($msg, $fmt = null) { + sendMessage("error", $msg, $fmt); } -function sendInfo($msg) { - sendMessage("info", $msg); +function sendInfo($msg, $fmt = null) { + sendMessage("info", $msg, $fmt); } ?> -- cgit v1.2.3-54-g00ecf From 9ce1da5147b3df01812687562faca80623b27a38 Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 4 May 2016 14:27:35 +0200 Subject: Receive uploaded savegame from PHP --- inc/messages.inc | 3 +++ inc/savegame.inc | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/inc/messages.inc b/inc/messages.inc index 7b952b8..d08331a 100644 --- a/inc/messages.inc +++ b/inc/messages.inc @@ -12,6 +12,9 @@ $messages = array( "gamesave_not_found" => "Couldn't find the specified save file.", "gamesave_delete_fail" => "Couldn't delete the specified save file.", "gamesave_delete_success" => "Game save successfully removed from server", + + "upload_fail" => "Could not upload save file.", + "upload_success" => "Save file uploaded successfully: %s", ); function sendMessage($type, $msg, $fmt = null) { diff --git a/inc/savegame.inc b/inc/savegame.inc index 1fa95b0..8772585 100644 --- a/inc/savegame.inc +++ b/inc/savegame.inc @@ -89,4 +89,24 @@ function loadSave() { $_SESSION = array(); // drop current game parseSave($xml, $_SESSION); } + +function uploadSave() { + $fname = basename($_FILES['savefile']['name']); + $src = $_FILES['savefile']['tmp_name']; + + libxml_use_internal_errors(true); // Ignore errors when loading the received file + $xml = simplexml_load_file($src); + libxml_use_internal_errors(false); + if(!$xml) { + sendError("upload_fail"); + return; + } + $table = array(); + parseSave($xml, $table); // Parse received file + + $save = new SimpleXMLElement(""); + genXML($table, $save); // Regenerate it + if($save->asXML(SAVEDIR."/".$fname)) sendInfo("upload_success", array($fname)); + else sendError("upload_error"); +} ?> -- cgit v1.2.3-54-g00ecf From 80f61cc5216fe020f82fc303317e4098acb5d21d Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 4 May 2016 14:27:59 +0200 Subject: AJAX upload file --- js/savegame.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/js/savegame.js b/js/savegame.js index 4a08f91..d5a9ba1 100644 --- a/js/savegame.js +++ b/js/savegame.js @@ -24,7 +24,9 @@ function loadSave() { } function downloadSave() { - window.open("craftmine.php?op=downSave&filename="+getCheckedSave(), "_blank"); + var filename = getCheckedSave(); + if(filename == -1) downGame(); + else window.open("craftmine.php?op=downSave&filename="+getCheckedSave(), "_blank"); } function deleteSave() { @@ -40,3 +42,18 @@ function saveGame() { function downGame() { window.open("craftmine.php?op=downSave", "_blank"); } + +function uploadSave() { + var selectedFile = document.getElementById("selectedFile"); + if(selectedFile.files[0].size > 2000000) { + showError("File is too big."); + return; + } + + var form = new FormData(); // Doesn't work with IE < 10 (and Opera Mini), but, as always, who cares? + form.append("savefile", selectedFile.files[0]); + + sendRequest("upload.php", form, function(ret) { + console.log(ret); + }, true); +} -- cgit v1.2.3-54-g00ecf From 3a8e674e0cba99d32cdd012ac9ac593f27c9a35c Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 4 May 2016 14:28:20 +0200 Subject: PHP front page for upload --- upload.php | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 upload.php diff --git a/upload.php b/upload.php new file mode 100644 index 0000000..a6e1637 --- /dev/null +++ b/upload.php @@ -0,0 +1,6 @@ + -- cgit v1.2.3-54-g00ecf From ec7771705d62d09fcd142c87f4941604f31c1d76 Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 4 May 2016 14:32:49 +0200 Subject: Don't send content-type when uploading file + update saves list when loading page --- js/craftmine.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/craftmine.js b/js/craftmine.js index 92fa45a..4e6490f 100644 --- a/js/craftmine.js +++ b/js/craftmine.js @@ -5,10 +5,10 @@ data = { level: 1 } -function sendRequest(url, params, callback) { +function sendRequest(url, params, callback, isFile) { var xhr = new XMLHttpRequest(); xhr.open("POST", url); - xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + if(!isFile) xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == "200") { var data = JSON.parse(xhr.responseText); @@ -63,5 +63,6 @@ function updateMine() { function init() { initCraftMine(); changeTab(); + listSaves(); window.setInterval(updateMine, 1000); } -- cgit v1.2.3-54-g00ecf