From ae1bf390235aa524be90f1bd7d57cdfa56d73ef2 Mon Sep 17 00:00:00 2001
From: Veloman Yunkan
Date: Sun, 30 Jan 2022 17:00:21 +0400
Subject: [PATCH] Got rid of static/templates/no_search_result.html
The "Fulltext search unavailable" error page is now generated using the
static/templates/error.html template. Also added two test cases checking
that error page.
---
src/server/internalServer.cpp | 17 +++++++++++------
static/resources_list.txt | 1 -
static/skin/search_results.css | 2 +-
static/templates/no_search_result.html | 15 ---------------
test/server.cpp | 12 ++++++++++++
5 files changed, 24 insertions(+), 23 deletions(-)
delete mode 100644 static/templates/no_search_result.html
diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp
index 05c2d559c..8d1b5027a 100644
--- a/src/server/internalServer.cpp
+++ b/src/server/internalServer.cpp
@@ -447,6 +447,11 @@ std::string noSuchBookErrorMsg(const std::string& bookName)
return "No such book: " + bookName;
}
+std::string noSearchResultsMsg()
+{
+ return "The fulltext search engine is not available for this content.";
+}
+
} // unnamed namespace
std::unique_ptr InternalServer::handle_suggest(const RequestContext& request)
@@ -591,12 +596,12 @@ std::unique_ptr InternalServer::handle_search(const RequestContext& re
} catch(std::runtime_error& e) {
// Searcher->search will throw a runtime error if there is no valid xapian database to do the search.
// (in case of zim file not containing a index)
- auto data = get_default_data();
- data.set("pattern", encodeDiples(searchInfo.pattern));
- auto response = ContentResponse::build(*this, RESOURCE::templates::no_search_result_html, data, "text/html; charset=utf-8");
- response->set_code(MHD_HTTP_NOT_FOUND);
- response->set_taskbar(searchInfo.bookName, archive.get());
- return std::move(response);
+ return HTTPErrorHtmlResponse(*this, request, MHD_HTTP_NOT_FOUND,
+ "Fulltext search unavailable",
+ "Not Found",
+ m_root + "/skin/search_results.css")
+ + noSearchResultsMsg()
+ + TaskbarInfo(searchInfo.bookName, archive.get());
}
diff --git a/static/resources_list.txt b/static/resources_list.txt
index 7444c48ae..15275ad19 100644
--- a/static/resources_list.txt
+++ b/static/resources_list.txt
@@ -34,7 +34,6 @@ skin/fonts/Roboto.ttf
skin/block_external.js
skin/search_results.css
templates/search_result.html
-templates/no_search_result.html
templates/error.html
templates/index.html
templates/suggestion.json
diff --git a/static/skin/search_results.css b/static/skin/search_results.css
index 8fb0a84b1..9fc107e9c 100644
--- a/static/skin/search_results.css
+++ b/static/skin/search_results.css
@@ -18,7 +18,7 @@ a:hover {
text-decoration: underline
}
-.header {
+h1 {
font-size: 120%;
}
diff --git a/static/templates/no_search_result.html b/static/templates/no_search_result.html
deleted file mode 100644
index baa7aa2c7..000000000
--- a/static/templates/no_search_result.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Fulltext search unavailable
-
-
-
-
-
- There is no article with the title "{{pattern}}"
- and the fulltext search engine is not available for this content.
-
-
-
diff --git a/test/server.cpp b/test/server.cpp
index de36057cd..d4056dda0 100644
--- a/test/server.cpp
+++ b/test/server.cpp
@@ -686,6 +686,18 @@ TEST_F(ServerTest, 404WithBodyTesting)
Cannot find content entry invalid-article
)" },
+
+ { /* url */ "/ROOT/search?content=poor&pattern=whatever",
+ expected_page_title=="Fulltext search unavailable" &&
+ expected_css_url=="/ROOT/skin/search_results.css" &&
+ book_name=="poor" &&
+ book_title=="poor" &&
+ expected_body==R"(
+ Not Found
+
+ The fulltext search engine is not available for this content.
+
+)" },
};
for ( const auto& t : testData ) {