diff --git a/static/resources_list.txt b/static/resources_list.txt
index 702918fc..15d0624d 100644
--- a/static/resources_list.txt
+++ b/static/resources_list.txt
@@ -2,6 +2,7 @@ skin/caret.png
skin/bittorrent.png
skin/magnet.png
skin/404.svg
+skin/blocklink.svg
skin/feed.svg
skin/langSelector.svg
skin/download.png
diff --git a/static/skin/blocklink.svg b/static/skin/blocklink.svg
new file mode 100644
index 00000000..03e306af
--- /dev/null
+++ b/static/skin/blocklink.svg
@@ -0,0 +1 @@
+
diff --git a/static/skin/error.css b/static/skin/error.css
index 8db79f71..efdaa732 100644
--- a/static/skin/error.css
+++ b/static/skin/error.css
@@ -62,6 +62,12 @@ header, .intro {
word-break: break-all;
}
+.intro a, .intro a:active, .intro a:visited {
+ color: #00b4e4;
+ text-decoration: none;
+ word-break: break-all;
+}
+
.advice {
width: 80%;
margin: auto;
diff --git a/static/templates/captured_external.html b/static/templates/captured_external.html
index e3dc8655..54e1f972 100644
--- a/static/templates/captured_external.html
+++ b/static/templates/captured_external.html
@@ -1,14 +1,27 @@
-
-
-
- External link blocked
-
-
-External link blocked
-This instance of Kiwix protects you from accidentally going to external (out-of ZIM) links.
-If you intend to go to such locations, please click the link below.
-Go to {{ source }}
-
-
+
+
+
+
+ External Link Detected
+
+
+
+
+
+
+
+ External Link Detected
+ You are about to leave Kiwix's ZIM reader to go online to
+ {{ source }}
+
+
+ The link you're trying to access is not part of your offline package and requires an internet connection.
+ If you can go online, you can attempt to open the link.
+ You can otherwise return to your ZIM's offline content by using your browser's back button.
+
+
diff --git a/test/server.cpp b/test/server.cpp
index bdfd9f4d..fd6486a6 100644
--- a/test/server.cpp
+++ b/test/server.cpp
@@ -59,7 +59,7 @@ const ResourceCollection resources200Compressible{
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/autoComplete/css/autoComplete.css" },
{ STATIC_CONTENT, "/ROOT%23%3F/skin/autoComplete/css/autoComplete.css?cacheid=f2d376c4" },
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/error.css" },
- { STATIC_CONTENT, "/ROOT%23%3F/skin/error.css?cacheid=c49d1586" },
+ { STATIC_CONTENT, "/ROOT%23%3F/skin/error.css?cacheid=b3fa90cf" },
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/i18n.js" },
{ STATIC_CONTENT, "/ROOT%23%3F/skin/i18n.js?cacheid=071abc9a" },
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/index.css" },
@@ -114,6 +114,8 @@ const ResourceCollection resources200Uncompressible{
{ STATIC_CONTENT, "/ROOT%23%3F/skin/bittorrent.png?cacheid=4f5c6882" },
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/blank.html" },
{ STATIC_CONTENT, "/ROOT%23%3F/skin/blank.html?cacheid=6b1fa032" },
+ { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/blocklink.svg" },
+ { STATIC_CONTENT, "/ROOT%23%3F/skin/blocklink.svg?cacheid=bd56b116" },
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/caret.png" },
{ STATIC_CONTENT, "/ROOT%23%3F/skin/caret.png?cacheid=22b942b4" },
{ DYNAMIC_CONTENT, "/ROOT%23%3F/skin/download.png" },
@@ -345,9 +347,15 @@ R"EXPECTEDRESULT(
- window.KIWIX_RESPONSE_TEMPLATE = "<!DOCTYPE html>\n<html>\n <head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n <title>{{PAGE_TITLE}}</title>\n <link type="text/css" href="{{root}}/skin/error.css?cacheid=c49d1586" rel="Stylesheet" />\n{{#KIWIX_RESPONSE_DATA}} <script>\n window.KIWIX_RESPONSE_TEMPLATE = "{{KIWIX_RESPONSE_TEMPLATE}}";\n window.KIWIX_RESPONSE_DATA = {{{KIWIX_RESPONSE_DATA}}};\n </script>{{/KIWIX_RESPONSE_DATA}}\n </head>\n <body>\n <header>\n <img src="{{root}}/skin/404.svg?cacheid=b6d648af"\n alt="{{404_img_text}}"\n aria-label="{{404_img_text}}"\n title="{{404_img_text}}">\n </header>\n <section class="intro">\n <h1>{{PAGE_HEADING}}</h1>\n <p>{{path_was_not_found_msg}}</p>\n <p><code>{{url_path}}</code></p>\n </section>\n <section class="advice">\n <p>{{advice.p1}}</p>\n <p class="list-intro">{{advice.p2}}</p>\n <ul>\n <li>{{advice.p3}}</li>\n <li>{{advice.p4}}</li>\n </ul>\n <p>{{advice.p5}}</p>\n </section>\n </body>\n</html>\n";
+R"EXPECTEDRESULT(
+ window.KIWIX_RESPONSE_TEMPLATE = "<!DOCTYPE html>\n<html>\n <head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n <title>{{PAGE_TITLE}}</title>\n <link type="text/css" href="{{root}}/skin/error.css?cacheid=b3fa90cf" rel="Stylesheet" />\n{{#KIWIX_RESPONSE_DATA}} <script>\n window.KIWIX_RESPONSE_TEMPLATE = "{{KIWIX_RESPONSE_TEMPLATE}}";\n window.KIWIX_RESPONSE_DATA = {{{KIWIX_RESPONSE_DATA}}};\n </script>{{/KIWIX_RESPONSE_DATA}}\n </head>\n <body>\n <header>\n <img src="{{root}}/skin/404.svg?cacheid=b6d648af"\n alt="{{404_img_text}}"\n aria-label="{{404_img_text}}"\n title="{{404_img_text}}">\n </header>\n <section class="intro">\n <h1>{{PAGE_HEADING}}</h1>\n <p>{{path_was_not_found_msg}}</p>\n <p><code>{{url_path}}</code></p>\n </section>\n <section class="advice">\n <p>{{advice.p1}}</p>\n <p class="list-intro">{{advice.p2}}</p>\n <ul>\n <li>{{advice.p3}}</li>\n <li>{{advice.p4}}</li>\n </ul>\n <p>{{advice.p5}}</p>\n </section>\n </body>\n</html>\n";
+
)RAWSTRINGLITERAL" + t[0] + R"RAWSTRINGLITERAL(
-
+