Doxygen Separate Navigation/Hierarchy Page - doxygen

I'm setting up Doxygen in my codebase and want to use the Markdown support to produce a number of different 'how to' and 'design' types page in a logical hierarchy, e.g.
index.md
design/
architecture.md
database.md
how-to/
build.md
restore-backups.md
...etc...
Using the Markdown support, I can give labels to each page and then use those to link to other pages and create a page hierarchy, e.g.
Design {#design}
======
This section contains design documentation.
#subpage architecture
#subpage database
The problem I've got is that this means every level in the hierarchy needs to define which pages are its sub-pages. This litters the documentation with lots of links which I don't really need. When the hierarchy gets 3+ levels deep you end up with lots of dummy pages which only exist to define the subpages.
My question is, is it possible to define the entire navigation hierarchy in one external page so that I only have one place to define and update when new pages are added? Something like:
Navigation {#navigation}
=========
This page defines the navigation tree for the whole project.
#page design
#subpage architecture
#subpage database
#page how-to
#subpage build
... etc ...

Related

MVC 5 Use a shared header and footer layout across a site that loads different models on each page

I am trying to create a universal layout across my site. The layout is made up of the header and footer from 2 separate files. I have a file for the header called _LayoutHeader.cshtml and a file for the footer called _LayoutFooter.cshtml. I want all the pages to use this layout so that I do not continue to have repetitive code like writing the navigation menu and scripts that are in the head section and footer sections over and over on each page.
I load the header on all my pages by using the following at the top of the pages.
#RenderPage("~/Views/Shared/_Partials_and_Views/_LayoutHeader.cshtml")
The footer is loaded like this by me calling it at the bottom of all the pages.
#RenderPage("~/Views/Shared/_Partials_and_Views/_LayoutFooter.cshtml")
The _LayoutHeader.cshtml file contains the dropdown navigation with all the required links and all the CSS references, bootstrap references, scripts for APis that are involved as well as valuable SEO tags like description, title, index follow and no follow etc....
The _LayoutFooter.cshtml file contains more links that also navigate to different pages depending on where in the app you are clicking it from. If my client A clicks on his link called Files, he will see different content from my Client B and Client C that also click on their links called Files. So I use models to handle these clicks on those links.
These 2 files also include the call to a model that is used across the site.
#model MultiCMS.Models.tblClient .
There are some pages though that use a different model like this one:
#model MultiCMS.Models.tblProducts
How am I able to use that layout (the header and the footer combination mentioned above) on pages that call a different model on? By "model" I mean I am using entity framework and in order for me to load the data that I need on each page. I call these models at the top of the page to grab and display the data.
The issue I am having is that when I am trying to use that combo of the 2 layout files, its failing on the pages that are not using #model ClientsApp.Models.tblClient. Like in the case of the pages that use #model MultiCMS.Models.tblProducts it fails but works on other pages that use #model MultiCMS.Models.tblClient .
Error:
The model item passed into the dictionary is of type 'System.Data.Entity.DynamicProxies.tblProducts_A96074721A46B7C99112D6FEA49F0762848C8', but this dictionary requires a model item of type 'MultiCMSApp.Models.tblClient'. If I want to use the same layout on all the pages but some have different models than the layout pages what do I do ?
This is a web application built on asp.net MVC 5.

Design Dialogs for different locales in a multi-locale site

How to change design dialog content in specific locale?Example the design specific constructs that would be different accross locales were logo, branding elements etc... Please suggest various alternatives and best approaches?
Design dialog are not locale or site specific in case of multisites rolled out on same instance of AEM. Design dialog properties gets stored on template/component basis in designs (/etc/designs/<your-site>/jcr:content/<path/page component name>/<component>). You can look at the sample for geometrixx site # /etc/designs/geometrixx/jcr:content/page/logo
For the scenarios where in the content/imagery that needs to change per site/locales you should use normal dialogs.
For components like header and footer which needs to stay consistent across site and usually the requirement is that they should be authored once and not be edited every time a new page is created, you could use iparsys component for the inheritance of these sections to pages in the hierarchy. This would require the inheritance system to be setup on a base page/template from which other templates extend so that inheritance get extended to all templates.

How to change the website look and feel by changing the design location under page properties

I have a requirement where I have 2 clientlibs having different CSS files for my website. The business author should be capable of switching the website look and feel by just changing the path of the design under page properties. While I am able to achieve that requirement by changing the clientlib categories name referred in my JSP of base template of my site, can the same thing be achieved by the business author without actually performing a code level change? Basically, he should be able to select the design path present under the page properties section, and selecting a different design should change the look and feel of the website. Please let me know how this can be achieved.
Note: I have placed my clientlibs under /etc/design/proj-name/ path
The foundation page component is designed to include css link in the head if a file called static.css is present under the design. It's done through the design object.
If you have different css in the static.css file under different designs then the look and feel will change with the design. However you will be stuck with one file and cannot leverage the utility of client libs.
This adobe doc suggest's doing something like this for css and related images
<%= currentDesign.getPath() + "/static/img/icon.gif %>
Data from design dialogs is stored under the design , swapping designs to change look and feel will cause data inconsistencies too.
Why not add a selection widget to the page and use it's value to selectively include different client lib categories instead of relying on the design.

CQ: Content centric OR page centric?

I have a query regarding CQ. Your reply will really make the difference to my understanding.
In other CMS like Vignette, content authors create the contents separately (not directly on the page) for ex. products details and then those contents are iterated / processed to display on the page. But in CQ, the scenario is other way round. Authors directly create the content on the page. Now if same content is needed on other page, how will that be re-used ?
Regards,
Ronak
Content can be reused across pages via Reference components. From the docs:
The Reference component lets you reference text in another part of a
CQ based website (within the current instance). The referenced
paragraph will then appear as if it was on the current page. Instead
of referencing a specific paragraph, the path can also be modified to
specify an entire [paragraph-system]...
There are some other techniques for sharing content and reference data across pages, including inheritance and "data components," described in this SO Q&A.

Doxygen navigation path (breadcrumbs) instructions & group table of content

I'm trying to achieve the same functionality as Qt is having for their documentation with navigation path working same as Windows 7-8 (maybe also vista) i.e. showing whole path from root (module M) to component C and class X. M->C->X
Good example:
http://doc.qt.io/qt-4.8/qnetworksession.html
Must I put some kind of doxygen tags for root and it's child's their subchild's? I checked all the doxygen tags without seeing anything related to navigation path.
I am working with doxygen 1.8.7 which generates navigation path in footer, but everything i click is being displayed as root. Also, how can i put navigation on top of the page/header?
And is it possible to have group table of content displayed? I am having separated model.dox file for each module, which defines new group and contains sections/subsections. Any ideas why table of contents isn't displayed? Everything works well on (main) page using \mainpage \page tag.
Example of my group:
/*! \defgroup module1 CommonModule
*
* \tableofcontents
*
* Module description ..
* \section first Init
*/
Update 14.7.2014:
Didn't realize Qt documentation is build using qdoc tool, not doxygen so Edit section can be ignored. Questions still remain the same. From what I've experienced it is impossible to group pages and groups together therefor making it impossible to generate module page with list of all classes/namespaces/enums etc. Hopefully I am wrong.
Update 11.9.2014:
Page can not contain autogenerated list of all classes/namespaces/enums etc.
Doxygen navigation only shows file path when browsing over file list which isn't that useful since i am mostly browsing the documentation by class/namespace not by file and wish to have file list generation disabled.
Edit:
From checking Qt documentation (source) i see that Qt modules are all doxygen pages and modules page is manually written and not auto generated by doxygen since they probably couldn't get module description with table of content using \defgroup. Will do he same if needed.
Navigation path on the other hand is still a big mystery, they might have used some kind of internal scripting as i see custom tags such as \nextpage. It's strange how it's so difficult to find anything related to doxygen navigation on google!