From da229dd84c5761f80b16c25edba7bfb738fc835f Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Tue, 19 Jul 2016 13:41:25 +0600 Subject: CLOUD: Add "ajax" parameter for "/create" and "/upload" If it's set, these redirect to "/filesAJAX" instead of "/files". --- .../sdl_net/handlers/createdirectoryhandler.cpp | 4 +++- .../sdl_net/handlers/filesajaxpagehandler.cpp | 14 ++++++++++++++ .../networking/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(-) (limited to 'backends/networking') diff --git a/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp b/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp index 97d75fcf14..fc02b643c1 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 17be7faad2..df4482166a 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 7cbb11874c..7e93573ca5 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 7e53969589..6f821d9090 100644 Binary files a/backends/networking/wwwroot.zip and b/backends/networking/wwwroot.zip differ diff --git a/backends/networking/wwwroot/.filesAJAX.html b/backends/networking/wwwroot/.filesAJAX.html index 16a4b5417d..d648466d2c 100644 --- a/backends/networking/wwwroot/.filesAJAX.html +++ b/backends/networking/wwwroot/.filesAJAX.html @@ -19,13 +19,14 @@
{create_directory_desc}
{upload_file_desc}
-