From 98d2d9833d04a88d2e1b1f6f92668190d8d36195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Wed, 7 Apr 2010 04:55:32 +0200 Subject: Javascript to generate TOCs --- helper.py | 4 ++++ static/js/toc.js | 31 +++++++++++++++++++++++++++++++ templates/page.mako | 26 +++++++++++++++++++++++++- templates/pages/translating.mako | 3 +++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 static/js/toc.js diff --git a/helper.py b/helper.py index e0d6aad..ec7950b 100644 --- a/helper.py +++ b/helper.py @@ -7,3 +7,7 @@ def appdir (*args): def url (path): return "\"%s\"" % web.url(path) + +def toJS (ls): + ls = ("'%s':'%s'" % x for x in ls) + return "{ %s }" % ", ".join(ls) diff --git a/static/js/toc.js b/static/js/toc.js new file mode 100644 index 0000000..5fbba70 --- /dev/null +++ b/static/js/toc.js @@ -0,0 +1,31 @@ +function createToc(pages) { + var tdiv = document.getElementById("toc"); + if (tdiv) + { + var a = tdiv.appendChild(document.createElement('span')); + // a.onclick = showhideToc; + a.id = 'contentheader'; + a.innerHTML = 'Contents'; + + var ldiv = tdiv.appendChild(document.createElement('ul')); + ldiv.id = 'innertoc'; + + for (key in pages) { + var link = ldiv.appendChild(document.createElement('li')).appendChild(document.createElement('a')); + link.innerHTML = pages[key]; + link.className = 'tocLink'; + link.href = '#' + key; + } + + // showhideToc(); + } +} + +var TocState = 'none'; + +function showhideToc() { + TocState = (TocState == 'none') ? 'block' : 'none'; + var newText = (TocState == 'none') ? 'show page contents' : 'hide page contents'; + document.getElementById('contentheader').innerHTML = newText; + document.getElementById('innertoc').style.display = TocState; +} diff --git a/templates/page.mako b/templates/page.mako index 264ddee..49671ff 100644 --- a/templates/page.mako +++ b/templates/page.mako @@ -1,5 +1,6 @@ <%! title = "" + uses_menu = False %> <%inherit file="/root.mako" /> @@ -7,6 +8,29 @@

${self.attr.title}

${next.body()} +% if self.attr.uses_menu: + +% endif + + +<%def name="style()"> + ${parent.style()} + + + <%def name="h2()"> -

» ${caller.body()}

+ <% + if self.attr.uses_menu: + c = capture(caller.body) + name = c.replace(" ", "_").lower() + mlist = getattr(self.attr, "mlist", []) + mlist.append((str(name), str(c))) + + self.attr.mlist = mlist + else: + name = "#" + %> +

» ${caller.body()}

diff --git a/templates/pages/translating.mako b/templates/pages/translating.mako index 6e76b33..2135480 100644 --- a/templates/pages/translating.mako +++ b/templates/pages/translating.mako @@ -1,5 +1,6 @@ <%! title = "Translation Guide" + uses_menu = True %> <%inherit file="/page.mako" /> @@ -7,6 +8,8 @@ Portato supports native languages. Nevertheless the translations into these languages have to be created. This page shows how to add a new translation or how to extend an existing translation.

+
+ <%self:h2>Short introduction about NLS in Linux

All translatable strings of a program are listed in a *.pot file. For each translation a single $LANG.po file is created, which holds each translatable string and the corresponding translation. During installation these po-files are compiled into .mo files, which are then used to get the translations during runtime. -- cgit v1.2.3