1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // $Id$
- /**
- * @file
- * TOC builder for advanced_help pages
- *
- * @copyright Ouest Systèmes Informatiques (OSInet)
- *
- * @license Licensed under the General Public License version 2 and later.
- */
- /**
- * Build a TOC div from the Hn elements in a given context
- *
- * Extract the H[1-7] list in DOM order manually: with jQuery < 1.4,
- * neither $('h1, h2...') nor .add() return in DOM order, hence the use
- * of filter() on a * selector instead.
- *
- * @return jQuery
- * A list of the headings in the page
- */
- function buildToc() {
- var contextSelector = 'div.advanced-help-topic';
- var context = $(contextSelector);
- var elements = $('*', contextSelector).filter(function (index) {
- return ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7'].indexOf(this.nodeName) != -1;
- });
- /**
- * Only build the toc if there 2 headings or more in the page
- */
- if (elements.length <= 1) {
- return;
- }
- // Build the headings list
- var list = "<ul>\n";
- elements.each(function() {
- list += '<li class="' + this.nodeName.toLowerCase() + '">'
- + $(this).text() + "</li>\n";
- })
- list += "</ul>\n";
- // Avoid creating multiple TOCs if this function is called several times
- $('div.ah-toc', context).remove();
-
- // @TODO use a theme function
- context.prepend('<div class="ah-toc"><center>Contents</center></div>');
- $('div.ah-toc').append(list);
- return elements;
- }
- $(buildToc);
|