hgweb: support rendering sub-topic indexes
If the requested topic name is the name of a sub-topic, we now render
an index of topics within that sub-topic.
--- a/mercurial/hgweb/webcommands.py Wed Dec 30 17:26:33 2015 -0700
+++ b/mercurial/hgweb/webcommands.py Wed Dec 30 17:34:51 2015 -0700
@@ -1256,6 +1256,19 @@
return tmpl('helptopics', topics=topics, earlycommands=earlycommands,
othercommands=othercommands, title='Index')
+ # Render an index of sub-topics.
+ if topicname in helpmod.subtopics:
+ topics = []
+ for entries, summary, _doc in helpmod.subtopics[topicname]:
+ topics.append({
+ 'topic': '%s.%s' % (topicname, entries[0]),
+ 'basename': entries[0],
+ 'summary': summary,
+ })
+
+ return tmpl('helptopics', topics=topics, title=topicname,
+ subindex=True)
+
u = webutil.wsgiui()
u.verbose = True
try:
--- a/tests/test-help.t Wed Dec 30 17:26:33 2015 -0700
+++ b/tests/test-help.t Wed Dec 30 17:34:51 2015 -0700
@@ -2631,6 +2631,82 @@
</html>
+Sub-topic indexes rendered properly
+
+ $ get-with-headers.py 127.0.0.1:$HGPORT "help/internals"
+ 200 Script output follows
+
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
+ <head>
+ <link rel="icon" href="/static/hgicon.png" type="image/png" />
+ <meta name="robots" content="index, nofollow" />
+ <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+ <script type="text/javascript" src="/static/mercurial.js"></script>
+
+ <title>Help: internals</title>
+ </head>
+ <body>
+
+ <div class="container">
+ <div class="menu">
+ <div class="logo">
+ <a href="https://mercurial-scm.org/">
+ <img src="/static/hglogo.png" alt="mercurial" /></a>
+ </div>
+ <ul>
+ <li><a href="/shortlog">log</a></li>
+ <li><a href="/graph">graph</a></li>
+ <li><a href="/tags">tags</a></li>
+ <li><a href="/bookmarks">bookmarks</a></li>
+ <li><a href="/branches">branches</a></li>
+ </ul>
+ <ul>
+ <li><a href="/help">help</a></li>
+ </ul>
+ </div>
+
+ <div class="main">
+ <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
+ <form class="search" action="/log">
+
+ <p><input name="rev" id="search1" type="text" size="30" /></p>
+ <div id="hint">Find changesets by keywords (author, files, the commit message), revision
+ number or hash, or <a href="/help/revsets">revset expression</a>.</div>
+ </form>
+ <table class="bigtable">
+ <tr><td colspan="2"><h2><a name="main" href="#topics">Topics</a></h2></td></tr>
+
+ <tr><td>
+ <a href="/help/internals.bundles">
+ bundles
+ </a>
+ </td><td>
+ container for exchange of repository data
+ </td></tr>
+ <tr><td>
+ <a href="/help/internals.changegroups">
+ changegroups
+ </a>
+ </td><td>
+ representation of revlog data
+ </td></tr>
+
+
+
+
+
+ </table>
+ </div>
+ </div>
+
+ <script type="text/javascript">process_dates()</script>
+
+
+ </body>
+ </html>
+
+
$ killdaemons.py
#endif