X-Git-Url: https://harishankar.org/repos/?p=biaweb2.git;a=blobdiff_plain;f=biawebdocumenttree.hpp;fp=biawebdocumenttree.hpp;h=c07013144f1e53aeb7176e7739ceab83a0f8546a;hp=c58a534ec29fc87fcd8b19195883b5c0b9c6bc89;hb=a302a25538bc69491c4844ef065c6b50e098387a;hpb=26b38b4a38c24955293a7144f1e1d74676601caf diff --git a/biawebdocumenttree.hpp b/biawebdocumenttree.hpp index c58a534..c070131 100644 --- a/biawebdocumenttree.hpp +++ b/biawebdocumenttree.hpp @@ -181,14 +181,15 @@ namespace biaweb { // Create a link to the index page and // If this tree has a parent, create a sidebar link to the level up std::unique_ptr bar1 (new SideBar()); - SideBarItem item0; - item0.set_sidebar_text (INDEX); - item0.set_sidebar_url (urlpath + "index.html"); + GenericLinkItem item0; + bar1.get()->set_title (NAVIGATE); + item0.set_item_text (INDEX); + item0.set_item_url (urlpath + "index.html"); bar1.get()->add_sidebar_item (item0); if (this->get_parent() != nullptr) { - SideBarItem item1; - item1.set_sidebar_text (GO_UP); - item1.set_sidebar_url (this->stub_hierarchy() + "index.html"); + GenericLinkItem item1; + item1.set_item_text (GO_UP); + item1.set_item_url (this->stub_hierarchy() + "index.html"); bar1.get()->add_sidebar_item (item1); } index.get()->add_side_bar (*bar1.get()); @@ -200,7 +201,7 @@ namespace biaweb { // we use site relative URLs that rely on the base href tag // so for biaweb generated sites, the base href tag should be // used in the main template - SideBarItem item (tree.get_title(), urlpath + + GenericLinkItem item (tree.get_title(), urlpath + tree.stub + "/" + "index.html"); bar2.get()->add_sidebar_item (item); } @@ -215,16 +216,36 @@ namespace biaweb { // sort the documents as per creation time and then add the document // links - newest documents should appear above older ones. sort_documents_creation_time (); + + // create the navigation bit + std::shared_ptr navbit (new NavigationBit ()); + auto par1 = this; + // get the link to each level in the hierarchy and add it as + // an inline list + while (par1 != nullptr) { + if (par1->parent != nullptr) + navbit.get()->add_link_item (GenericLinkItem(par1->stub, + par1->stub_hierarchy() + par1->stub + "/index.html")); + else + navbit.get()->add_link_item (GenericLinkItem(HOME, "index.html")); + par1 = par1->parent; + } + for (Document doc : this->docs) { DocListItem item (doc.get_title(), urlpath + doc.get_filename() + ".html", doc.get_creation_date(), doc.get_modified_date ()); article_list.get()->add_document_item (item); - // output the document also, add the side bars + // output the document also, add the navigation bit and side bars + + doc.set_navigation_bit (*navbit.get()); doc.add_side_bar (*bar1.get()); doc.add_side_bar (*bar2.get()); doc.output_to_html (templatedir, filepath); } + + // add the navigation bit + index.get()->set_navigation_bit (*navbit.get()); // index should contain the summary followed by the article list index.get()->set_content (this->summary + article_list.get()->to_html(templatedir));