// 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<SideBar> 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());
// 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);
}
// 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<NavigationBit> 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));