Added Navigation bit to the top of documents for the categories
[biaweb2.git] / biawebdocumenttree.hpp
index c58a534..c070131 100644 (file)
@@ -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<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());
@@ -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<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));