summaryrefslogtreecommitdiff
path: root/doc/conf.py
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2014-09-04 14:40:20 +0200
committerXavier Morel <xmo@openerp.com>2014-09-04 14:43:55 +0200
commitbb007dd04097bd3132cafea8f393c0d9bbfdeb7f (patch)
tree594582a964dd4c7854d72982703bfd6413bc0a31 /doc/conf.py
parent39208e1f42e058175995e07279d1a13a9377e484 (diff)
[ADD] support for a version switcher in odoo theme thing
needs beauty input
Diffstat (limited to 'doc/conf.py')
-rw-r--r--doc/conf.py33
1 files changed, 30 insertions, 3 deletions
diff --git a/doc/conf.py b/doc/conf.py
index a55a48c0a96..f563a28cf1c 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -177,13 +177,40 @@ def setup(app):
app.connect('html-page-context', canonicalize)
app.add_config_value('canonical_root', None, 'env')
app.add_config_value('canonical_branch', 'master', 'env')
+
+ app.connect('html-page-context', versionize)
+ app.add_config_value('versions', '', 'env')
+
def canonicalize(app, pagename, templatename, context, doctree):
+ """ Adds a 'canonical' URL for the current document in the rendering
+ context. Requires the ``canonical_root`` setting being set. The canonical
+ branch is ``master`` but can be overridden using ``canonical_branch``.
+ """
if not app.config.canonical_root:
return
- context['canonical'] = "{canonical_url}{canonical_branch}/{canonical_page}".format(
- canonical_url=app.config.canonical_root,
- canonical_branch=app.config.canonical_branch,
+ context['canonical'] = _build_url(
+ app.config.canonical_root, app.config.canonical_branch, pagename)
+
+def versionize(app, pagename, templatename, context, doctree):
+ """ Adds a version switcher below the menu, requires ``canonical_root``
+ and ``versions`` (an ordered, space-separated lists of all possible
+ versions).
+ """
+ if not (app.config.canonical_root and app.config.versions):
+ return
+
+ context['versions'] = [
+ (vs, _build_url(app.config.canonical_root, vs, pagename))
+ for vs in app.config.versions.split(',')
+ if vs != app.config.version
+ ]
+
+def _build_url(root, branch, pagename):
+ return "{canonical_url}{canonical_branch}/{canonical_page}".format(
+ canonical_url=root,
+ canonical_branch=branch,
canonical_page=(pagename + '.html').replace('index.html', '')
.replace('index/', ''),
)
+