From da229dd84c5761f80b16c25edba7bfb738fc835f Mon Sep 17 00:00:00 2001
From: Alexander Tkachev
Date: Tue, 19 Jul 2016 13:41:25 +0600
Subject: [PATCH] CLOUD: Add "ajax" parameter for "/create" and "/upload"
If it's set, these redirect to "/filesAJAX" instead of "/files".
---
.../handlers/createdirectoryhandler.cpp | 4 +++-
.../sdl_net/handlers/filesajaxpagehandler.cpp | 14 ++++++++++++++
.../sdl_net/uploadfileclienthandler.cpp | 8 +++++---
backends/networking/wwwroot.zip | Bin 241872 -> 241963 bytes
backends/networking/wwwroot/.filesAJAX.html | 7 ++++---
5 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp b/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
index 97d75fcf144..fc02b643c12 100644
--- a/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
+++ b/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
@@ -85,7 +85,9 @@ void CreateDirectoryHandler::handle(Client &client) {
client.queryParameter("path").c_str(),
_("Back to parent directory")
),
- "/files?path=" + LocalWebserver::urlEncodeQueryParameterValue(client.queryParameter("path"))
+
+ (client.queryParameter("ajax") == "true" ? "/filesAJAX?path=" : "/files?path=") +
+ LocalWebserver::urlEncodeQueryParameterValue(client.queryParameter("path"))
);
}
diff --git a/backends/networking/sdl_net/handlers/filesajaxpagehandler.cpp b/backends/networking/sdl_net/handlers/filesajaxpagehandler.cpp
index 17be7faad2e..df4482166a7 100644
--- a/backends/networking/sdl_net/handlers/filesajaxpagehandler.cpp
+++ b/backends/networking/sdl_net/handlers/filesajaxpagehandler.cpp
@@ -33,6 +33,19 @@ FilesAjaxPageHandler::FilesAjaxPageHandler() {}
FilesAjaxPageHandler::~FilesAjaxPageHandler() {}
+namespace {
+Common::String encodeDoubleQuotesAndSlashes(Common::String s) {
+ Common::String result = "";
+ for (uint32 i = 0; i < s.size(); ++i)
+ if (s[i] == '"') {
+ result += "\\\"";
+ } else if (s[i] == '\\') {
+ result += "\\\\";
+ } else result += s[i];
+ return result;
+}
+}
+
void FilesAjaxPageHandler::handle(Client &client) {
// load stylish response page from the archive
Common::SeekableReadStream *const stream = HandlerUtils::getArchiveFile(FILES_PAGE_NAME);
@@ -55,6 +68,7 @@ void FilesAjaxPageHandler::handle(Client &client) {
replace(response, "{index_of}", _("Index of "));
replace(response, "{loading}", _("Loading..."));
replace(response, "{error}", _("Error occurred"));
+ replace(response, "{start_path}", encodeDoubleQuotesAndSlashes(path));
LocalWebserver::setClientGetHandler(client, response);
}
diff --git a/backends/networking/sdl_net/uploadfileclienthandler.cpp b/backends/networking/sdl_net/uploadfileclienthandler.cpp
index 7cbb11874c5..7e93573ca5d 100644
--- a/backends/networking/sdl_net/uploadfileclienthandler.cpp
+++ b/backends/networking/sdl_net/uploadfileclienthandler.cpp
@@ -159,9 +159,11 @@ void UploadFileClientHandler::handleBlockContent(Client *client) {
_("Uploaded successfully!"),
client->queryParameter("path").c_str(),
_("Back to parent directory")
- ),
- "/files?path=" + LocalWebserver::urlEncodeQueryParameterValue(client->queryParameter("path"))
- );
+ ),
+
+ (client->queryParameter("ajax") == "true" ? "/filesAJAX?path=" : "/files?path=") +
+ LocalWebserver::urlEncodeQueryParameterValue(client->queryParameter("path"))
+ );
_state = UFH_STOP;
return;
}
diff --git a/backends/networking/wwwroot.zip b/backends/networking/wwwroot.zip
index 7e539695898dd8f8f270b2ba9c60a7c7d3759f2d..6f821d90909c8d6fabd12d555a59615bffea032b 100644
GIT binary patch
delta 251
zcmccckZ<)Pz71
zib_*A&*$c3zPe?a#u1lWG3h573-TzElB7yyDHSl9pn
delta 173
zcmZ4ei0{Hfz71`ns{mlwO
zOIVvPi??4EXKcSL&b0lqIP=_TXd0*2tz-6O?3;dO9kT_a{B+j!%qEPprdzFNwqSIb
zUc8>!l8sW=n=%Sbf3Tj}lIhXP>CzjREg2V258c3Q#h5jH0*F$cetHA5CDXe#
R)7dsM%d=fr%gn&Q007V{create_directory_desc}