X-Git-Url: https://harishankar.org/repos/?p=biaweb2.git;a=blobdiff_plain;f=biawebdocumenttree.hpp;fp=biawebdocumenttree.hpp;h=447a5c78996844a97d36cd3580dca805521d1e7c;hp=70471f3d16a6ff886159a9651bcc5824cf245b3b;hb=e16a6540bdbe09d54677caae65e16598c1da2538;hpb=c3f6c1be3a72da00b32eef61b9a4a381a76880eb diff --git a/biawebdocumenttree.hpp b/biawebdocumenttree.hpp index 70471f3..447a5c7 100644 --- a/biawebdocumenttree.hpp +++ b/biawebdocumenttree.hpp @@ -12,6 +12,7 @@ #include "biawebutil.hpp" #include "biawebdoclist.hpp" #include "biawebtemplate.hpp" +#include "biawebrss.hpp" // class to implement a document tree - both with or without subtrees namespace biaweb { @@ -196,8 +197,7 @@ namespace biaweb { item1.set_item_url (this->stub_hierarchy() + "index.html"); bar1.get()->add_sidebar_item (item1); } - index.get()->add_side_bar (*bar1.get()); - + // create a sidebar for the child levels if there are children std::unique_ptr bar2 (new SideBar ()); bar2.get()->set_title (tpl->get_stringbit (SUB_CAT) + this->title); @@ -209,7 +209,6 @@ namespace biaweb { tree.stub + "/" + "index.html"); bar2.get()->add_sidebar_item (item); } - index.get()->add_side_bar (*bar2.get()); // create the path and then the index file std::filesystem::create_directories (filepath); @@ -235,7 +234,20 @@ namespace biaweb { par1 = par1->parent; } + // rss feed + std::unique_ptr feed (new RSSFeed ()); + feed.get()->set_pub_date (index.get()->get_creation_date()); + + // iterate through the documents and generate the document for (Document doc : this->docs) { + // Add the document to RSS feed + RSSFeedItem fitem (doc.get_title(), doc.get_meta_desc (), + urlpath + doc.get_filename() + ".html", + doc.get_creation_date()); + // If the items don't exceed max size of RSS feed + if (feed.get()->get_num_items() <= MAX_RSS_FEED) + feed.get()->add_rss_item (fitem); + // Add the document to the document list DocListItem item (doc.get_title(), urlpath + doc.get_filename() + ".html", doc.get_creation_date(), doc.get_modified_date (), @@ -249,6 +261,23 @@ namespace biaweb { doc.output_to_html (tpl, filepath); } + // output the rss feed + feed.get()->output_to_html (tpl, filepath); + + // add the side bars + index.get()->add_side_bar (*bar1.get()); + index.get()->add_side_bar (*bar2.get()); + + // sidebar for RSS feed + // if there are are items in the feed add the link + if (feed.get()->get_num_items () > 0) { + std::unique_ptr bar3 (new SideBar ()); + bar3.get()->set_title (tpl->get_stringbit (SUBSCRIBE)); + bar3.get()->add_sidebar_item ( + GenericLinkItem (tpl->get_stringbit(RSS_FEED), urlpath + "/feed.xml")); + index.get()->add_side_bar (*bar3.get()); + } + // add the navigation bit index.get()->set_navigation_bit (*navbit.get()); // index should contain the summary followed by the article list