Move generate_versions to layout template

This commit is contained in:
Franciszek Stachura 2024-07-16 21:39:50 +02:00
parent 5c88c885da
commit 126ddae515
2 changed files with 35 additions and 38 deletions

View file

@ -222,41 +222,6 @@ def get_directories(basedir):
directories.append(filename)
return sorted(directories)
# Generates HTML with a list of project versions, displayed in the sidebar
# versions - usually generated by Query.query('versions')
# url: usually "ident/$ident" or "source/$path", URL of the current page with cmd but without version
# NOTE: "/$project/" is the base URL - see base tag in HTML head
# tag: currently browsed tag
def generate_versions(versions, url, current_tag):
v = ''
b = 1
for topmenu, submenus in versions.items():
v += '<li>\n'
v += '\t<span>'+topmenu+'</span>\n'
v += '\t<ul>\n'
b += 1
for submenu in submenus:
tags = submenus[submenu]
if submenu == tags[0] and len(tags) == 1:
if submenu == current_tag:
v += '\t\t<li class="li-link active"><a href="'+submenu+'/'+url+'">'+submenu+'</a></li>\n'
else:
v += '\t\t<li class="li-link"><a href="'+submenu+'/'+url+'">'+submenu+'</a></li>\n'
else:
v += '\t\t<li>\n'
v += '\t\t\t<span>'+submenu+'</span>\n'
v += '\t\t\t<ul>\n'
for _tag in tags:
_tag_encoded = parse.quote(_tag, safe='')
if _tag == current_tag:
v += '\t\t\t\t<li class="li-link active"><a href="'+_tag_encoded+'/'+url+'">'+_tag+'</a></li>\n'
else:
v += '\t\t\t\t<li class="li-link"><a href="'+_tag_encoded+'/'+url+'">'+_tag+'</a></li>\n'
v += '\t\t\t</ul></li>\n'
v += '\t</ul></li>\n'
return v
# Generates response (status code and optionally HTML) of the `source` route
# q: Query object
# basedir: path to data directory, ex: "/srv/elixir-data"
@ -445,9 +410,12 @@ def generate_source_page(q, basedir, parsed_path):
'family': 'A',
'breadcrumb': '<a class="project" href="'+version+'/source">/</a>',
'versions': generate_versions(q.query('versions'), url, tag),
'title': title,
'versions': q.query('versions'),
'url': url,
'current_tag': tag,
'main': outputBuffer.getvalue(),
}
@ -601,7 +569,10 @@ def generate_ident_page(q, basedir, parsed_path):
'breadcrumb': '<a class="project" href="'+version+'/source">/</a>',
'title': ident+' identifier - '+title_suffix,
'versions': generate_versions(q.query('versions'), url, tag),
'versions': q.query('versions'),
'url': url,
'current_tag': tag,
'main': outputBuffer.getvalue()
}

View file

@ -61,7 +61,33 @@
</ul>
<h3 class="screenreader">Versions</h3>
<ul class="versions">
{{versions}}
{% for topmenu, submenus in versions.items() %}
<li>
<span>{{ topmenu }}</span>
<ul>
{% for submenu, tags in submenus.items() %}
{% if submenu == tags[0] and tags|length == 1 %}
<li class="li-link {{ 'active' if submenu == current_tag else '' }}">
<a href="{{ submenu }}/{{ url }}">{{ submenu }}</a>
</li>
{% else %}
<li>
<span>{{ submenu }}</span>
<ul>
{% for _tag in tags %}
<li class="li-link {{ 'active' if _tag == current_tag else '' }}">
<a href="{{ _tag | urlencode | replace('/', '%2F') }}/{{ url }}">
{{ _tag }}
</a>
</li>
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</nav>
</aside>