diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/weblog/weblog.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/plugins/weblog/weblog.cpp b/plugins/weblog/weblog.cpp index 92162db..7ace0fb 100644 --- a/plugins/weblog/weblog.cpp +++ b/plugins/weblog/weblog.cpp @@ -238,13 +238,18 @@ namespace { class HtmlPage { - static const std::string header; - static const std::string footer; - + std::function<std::string(const std::string& key)>& mGetRequestParam; std::string mContents; + std::string mHeader; + const std::string mFooter; public: - HtmlPage(std::string s = ""s): mContents(s) + HtmlPage(std::function<std::string(const std::string& key)>& GetRequestParam, + std::string s = ""s) + : mGetRequestParam(GetRequestParam) + , mContents(s) + , mHeader("<!DOCTYPE html><html><head><meta charset=\"utf-8\"/></head><body>") + , mFooter("<br/><br/><br/><a href=\"" + mGetRequestParam("plugin_path") + "/impressum.html\">Impressum, Datenschutzerklärung</a></body></html>") { } @@ -256,19 +261,16 @@ namespace { operator std::string() const { - return header + mContents + footer; + return mHeader + mContents + mFooter; } }; - - const std::string HtmlPage::header{"<!DOCTYPE html><html><head><meta charset=\"utf-8\"/></head><body>"}; - const std::string HtmlPage::footer{"<br/><br/><br/><a href=\"impressum.html\">Impressum, Datenschutzerklärung</a></body></html>"}; std::string generateIndexPage(fs::path& path, std::function<std::string(const std::string& key)>& GetRequestParam, std::function<plugin_interface_setter_type>& SetResponseHeader) { try { - HtmlPage htmlPage{"<h1>"s + GetRequestParam("WEBLOG_NAME") + "</h1>"s}; + HtmlPage htmlPage{GetRequestParam, "<h1>"s + GetRequestParam("WEBLOG_NAME") + "</h1>"s}; fs::path link{ GetRequestParam("rel_target")}; @@ -292,6 +294,7 @@ namespace { } std::string generateArticlePage(fs::path& path, + std::function<std::string(const std::string& key)>& GetRequestParam, std::function<plugin_interface_setter_type>& SetResponseHeader) { try { @@ -309,7 +312,7 @@ namespace { if (it != metaData.end() && it->second == "text/plain") data = verbatimText(data); - HtmlPage htmlPage{"<h1>"s + metaData.at("Subject") + "</h1>"s + metaData.at("Date") + "<br/><br/>"s + data}; + HtmlPage htmlPage{GetRequestParam, "<h1>"s + metaData.at("Subject") + "</h1>"s + metaData.at("Date") + "<br/><br/>"s + data}; return htmlPage; } catch (const std::exception& ex) { @@ -381,7 +384,7 @@ std::string weblog_plugin::generate_page( return generateIndexPage(path, GetRequestParam, SetResponseHeader); if (is_article_page(rel_target, path)) - return generateArticlePage(path, SetResponseHeader); + return generateArticlePage(path, GetRequestParam, SetResponseHeader); if (is_index_file(rel_target, path) || is_article_file(rel_target, path)) return generateStaticFile(path, SetResponseHeader); |