X-Git-Url: https://harishankar.org/repos/?p=biaweb2.git;a=blobdiff_plain;f=biawebdoclist.hpp;h=8995c3c09f0d30c865beff327f5fe2151391410e;hp=547664a12be50fefe331e4dedd29a25aec88ebfd;hb=HEAD;hpb=26b38b4a38c24955293a7144f1e1d74676601caf diff --git a/biawebdoclist.hpp b/biawebdoclist.hpp index 547664a..8995c3c 100644 --- a/biawebdoclist.hpp +++ b/biawebdoclist.hpp @@ -10,6 +10,7 @@ #include #include "biawebstrings.hpp" #include "biawebdocument.hpp" +#include "biawebtemplate.hpp" // to implement a list of items (documents) with creation/modified date/time display namespace biaweb { @@ -19,62 +20,52 @@ namespace biaweb { // Just the required fields to build the item std::string title; std::string url; + std::string desc; std::time_t ctime; std::time_t mtime; public: - DocListItem (std::string title, std::string url, - std::time_t ctime, std::time_t mtime ) { - this->title = escape_html (title); - this->url = url; - this->ctime = ctime; - this->mtime = mtime; + DocListItem (Document *doc, std::string urlpath) { + this->title = doc->get_title (); + this->url = urlpath + doc->get_filename() + ".html"; + this->ctime = doc->get_creation_date (); + this->mtime = doc->get_modified_date (); + this->desc = doc->get_meta_desc (); + } + + std::string get_desc () { + return this->desc; } std::time_t get_mtime() { return this->mtime; } - void set_mtime(std::time_t mtime) { - this->mtime = mtime; - } + std::time_t get_ctime() { return this->ctime; } - void set_ctime(std::time_t ctime) { - this->ctime = ctime; - } std::string get_url() { return this->url; } - void set_url(std::string url) { - this->url = url; - } - std::string get_title() { return this->title; } - void set_title(std::string title) { - this->title = escape_html (title); - } // output to HTML vide the template - std::string to_html (std::string templatedir); + std::string to_html (Template *t); }; // output to HTML vide the template - std::string DocListItem::to_html (std::string templatedir) { - std::ifstream templ (templatedir + "/doclistitem.tpl.html"); - std::string templstr ((std::istreambuf_iterator (templ)), - (std::istreambuf_iterator ()) ); - templ.close (); - + std::string DocListItem::to_html (Template *t) { + std::string templstr = t->get_doclistitem_tpl (); std::tm c, m; c = *std::localtime (&this->ctime); m = *std::localtime (&this->mtime); std::string outputhtml = fmt::format (templstr, fmt::arg("url", this->url), - fmt::arg("doctitle", this->title), + fmt::arg("doctitle", this->title), + fmt::arg("desc", this->desc), fmt::arg("cdate", c), fmt::arg("mdate", m)); @@ -88,29 +79,25 @@ namespace biaweb { std::list items; public: void set_title (std::string title) { - this->title = escape_html (title); + this->title = title; } // add a document item void add_document_item (DocListItem docitem) { this->items.insert (this->items.cend(), docitem); } // render to HTML from a template - std::string to_html (std::string templatedir); + std::string to_html (Template *t); }; - std::string DocList::to_html (std::string templatedir) { - std::ifstream templ (templatedir + "/doclist.tpl.html"); - std::string templstr ( (std::istreambuf_iterator (templ) ), - (std::istreambuf_iterator ())); - - templ.close (); + std::string DocList::to_html (Template *t) { + std::string templstr = t->get_doclist_tpl (); std::string outputhtml = ""; // if the number of elements is non zero if (this->items.size () != 0) { std::string docitems = ""; for (DocListItem item : this->items) - docitems += item.to_html (templatedir); + docitems += item.to_html (t); outputhtml = fmt::format (templstr, fmt::arg ("title", this->title),