Feature summary (what you would like to be able to do and where):
- Make OutputPage stores the data of the navigation bar.
- Create OutputPage::addNavigationBar(…) function to store the data.
- Make SpecialPage::outputHeader() renders the navigation bar using the data.
- Make Skin::getTemplateData() provides the data of the navigation bar. And implement features and flags for making sure the navigation bar is not duplicated.
- (Maybe another task) Provide a parser function that allows editors on the wiki to add a navigation bar to a general wiki article.
Use case(s) (list the steps that you performed to discover that problem, and describe the actual underlying problem which you want to solve. Do not describe only a solution):
Some special pages provide the navigation bar(links) on the top of the page, under the title.
Those pages create links and append those to the subtitle of the page. I don't know why the 'subtitle' was named, but if it just means the position, I think it is worth splitting some function of it based on the role.
Benefits (why should this be implemented?):
- Code duplications would be reduced and the same user experience over multiple special pages would be provided.
- The core and extension developers could use SpecialPage::addNavigationBar(…) instead of creating from scratch.
- The skin developers could acquire more flexibility over navigation bar render.
- (Maybe another task) The template editors could provide the same navigation page experience for Template:Sidebar.