Merge pull request #403 from kiwix/rgaudin/no-taskbar

Prevent taskbar and blocker at article level
This commit is contained in:
Kelson 2020-08-07 11:55:09 +02:00 committed by GitHub
commit 66563d93cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 4 deletions

View File

@ -963,7 +963,7 @@ Response InternalServer::handle_content(const RequestContext& request)
printf("mimeType: %s\n", response.get_mimeType().c_str()); printf("mimeType: %s\n", response.get_mimeType().c_str());
} }
if (response.get_mimeType().find("text/html") != string::npos) if ( startsWith(response.get_mimeType(), "text/html") )
response.set_taskbar(bookName, reader->getTitle()); response.set_taskbar(bookName, reader->getTitle());
return response; return response;

View File

@ -127,8 +127,8 @@ std::string render_template(const std::string& template_str, kainjow::mustache::
void Response::introduce_taskbar() void Response::introduce_taskbar()
{ {
if (! m_withTaskbar) if ( !m_withTaskbar || !contentDecorationAllowed() )
// Taskbar is globally disabled. // Taskbar either globally disabled or not allowed for this type
return; return;
kainjow::mustache::data data; kainjow::mustache::data data;
data.set("root", m_root); data.set("root", m_root);
@ -152,6 +152,8 @@ void Response::introduce_taskbar()
void Response::inject_externallinks_blocker() void Response::inject_externallinks_blocker()
{ {
if ( !contentDecorationAllowed() )
return;
kainjow::mustache::data data; kainjow::mustache::data data;
data.set("root", m_root); data.set("root", m_root);
auto script_tag = render_template(RESOURCE::templates::external_blocker_part_html, data); auto script_tag = render_template(RESOURCE::templates::external_blocker_part_html, data);
@ -169,6 +171,12 @@ Response::can_compress(const RequestContext& request) const
&& (m_content.size() > KIWIX_MIN_CONTENT_SIZE_TO_DEFLATE); && (m_content.size() > KIWIX_MIN_CONTENT_SIZE_TO_DEFLATE);
} }
bool
Response::contentDecorationAllowed() const
{
return m_mimeType.find(";raw=true") == std::string::npos;
}
MHD_Response* MHD_Response*
Response::create_error_response(const RequestContext& request) const Response::create_error_response(const RequestContext& request) const
{ {
@ -189,7 +197,7 @@ Response::create_raw_content_mhd_response(const RequestContext& request)
if (m_addTaskbar) { if (m_addTaskbar) {
introduce_taskbar(); introduce_taskbar();
} }
if ( m_blockExternalLinks ) { if ( m_blockExternalLinks && startsWith(m_mimeType, "text/html") ) {
inject_externallinks_blocker(); inject_externallinks_blocker();
} }

View File

@ -71,6 +71,7 @@ class Response {
void inject_externallinks_blocker(); void inject_externallinks_blocker();
bool can_compress(const RequestContext& request) const; bool can_compress(const RequestContext& request) const;
bool contentDecorationAllowed() const;
private: // functions private: // functions
MHD_Response* create_mhd_response(const RequestContext& request); MHD_Response* create_mhd_response(const RequestContext& request);