Project
Function
Sample CLI
gway web.app render-navbar
References
['qr', 'qr.generate_url', 'resource']
Full Code
def render_navbar(visited, path, current_url=None):
if not cookies_enabled() or len(visited) < 1:
visited = ["Readme=gway/readme"]
links = ""
seen = set()
for entry in reversed(visited):
if "=" not in entry:
continue
title, route = entry.split("=", 1)
if title in seen:
continue
seen.add(title)
links += f'<li><a href="/{route}">{title}</a></li>'
search_box = f'''
<form action="/{path}/help" method="get" class="navbar">
<input type="text" name="topic" placeholder="Search GWAY" class="help" />
</form>
'''
qr_html = ""
if current_url:
qr_url = gw.qr.generate_url(current_url)
qr_html = f'''
<div class="qr">
<p class="qr">QR Code for this page:</p>
<img src="{qr_url}" alt="QR Code" class="navbar-qr" />
</div>
'''
styles_dir = gw.resource("data", "static", "styles")
available_styles = sorted(
f for f in os.listdir(styles_dir)
if f.endswith(".css") and os.path.isfile(os.path.join(styles_dir, f))
)
current_style = request.get_cookie("css") or "default.css"
options = "\n".join(
f'<option value="{s}"{" selected" if s == current_style else ""}>{s[:-4]}</option>'
for s in available_styles
)
style_selector = f'''
<form method="get" class="style-form">
<label for="css-style">Style:</label>
<select id="css-style" name="css" class="style-selector" onchange="this.form.submit()">
{options}
</select>
<noscript><button type="submit">Set</button></noscript>
</form>
'''
return f"<aside>{search_box}<ul>{links}</ul><br>{qr_html}<br>{style_selector}</aside>"