atr/templates/includes/sidebar.html (145 lines of code) (raw):
<aside class="sidebar">
<div class="sidebar-header">
<a href="{{ as_url(routes.root.index) }}" class="site-title">
<h1>
<span class="apache">A<span class="rest">pache</span></span>
<br />
<span class="trusted">T<span class="rest">rusted</span></span>
<br />
<span class="release">R<span class="rest">elease</span></span>
</h1>
</a>
</div>
<div class="user-section">
{% if current_user %}
<div>
<span>{{ current_user.fullname }}</span>
(<code>{{ current_user.uid }}</code>)
<br />
<a href="#"
onclick="location.href='/auth?logout=/';"
class="logout-link btn btn-sm btn-outline-secondary mt-2">Logout</a>
</div>
{% else %}
<a href="#"
onclick="location.href='/auth?login=' + window.location.pathname;"
class="login-link btn btn-sm btn-secondary">Login</a>
{% endif %}
</div>
<nav>
{% if current_user %}
<h3>Get started</h3>
<ul>
<li>
<i class="bi bi-play-circle"></i>
<a href="{{ as_url(routes.root.index) }}">Select release</a>
</li>
</ul>
{% set unfinished_releases = unfinished_releases_fn(current_user.uid) %}
{% if unfinished_releases %}
{% for project_short_display_name, releases in unfinished_releases.items() %}
<h3>{{ project_short_display_name }}</h3>
<ul>
{% for release in releases %}
<li>
<i class="bi bi-tag"></i>
<a href="{{ release_as_url(release) }}">{{ release.version }}</a>
</li>
{% endfor %}
</ul>
{% endfor %}
{% endif %}
{% endif %}
<h3>Releases</h3>
<ul>
{% if current_user %}
<li>
<i class="bi bi-view-list"></i>
<a href="{{ as_url(routes.release.releases) }}">View releases</a>
</li>
{% endif %}
<li>
<i class="bi bi-download"></i>
{# This path is handled by the frontend proxy server #}
{# https://djlint.com/docs/ignoring-code/ #}
{# djlint:off J018 #} <a href="/downloads/">View downloads</a> {# djlint:on #}
</li>
</ul>
{% if current_user %}
<h3>Public keys</h3>
<ul>
<li>
<i class="bi bi-key"></i>
<a href="{{ as_url(routes.keys.keys) }}">Manage keys</a>
</li>
</ul>
<h3>Browse</h3>
<ul>
<li>
<i class="bi bi-collection"></i>
<a href="{{ as_url(routes.committees.directory) }}">Committees</a>
</li>
<li>
<i class="bi bi-collection"></i>
<a href="{{ as_url(routes.projects.projects) }}">Projects</a>
</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>
<i class="bi bi-book"></i>
<a href="{{ as_url(routes.root.tutorial) }}">Tutorial</a>
</li>
</ul>
{% if is_viewing_as_admin_fn(current_user.uid) %}
<h3>Administration</h3>
<ul>
<li>
<i class="bi bi-database"></i>
<a href="{{ url_for('admin.admin_data') }}"
{% if request.endpoint == 'admin.admin_data' %}class="active"{% endif %}>Browse database</a>
</li>
<li>
<i class="bi bi-list-ul"></i>
<a href="{{ url_for('admin.admin_releases') }}"
{% if request.endpoint == 'admin.admin_releases' %}class="active"{% endif %}>All releases</a>
</li>
<li>
<i class="bi bi-arrow-repeat"></i>
<a href="{{ url_for('admin.admin_projects_update') }}"
{% if request.endpoint == 'admin.admin_projects_update' %}class="active"{% endif %}>Update projects</a>
</li>
<li>
<i class="bi bi-list-task"></i>
<a href="{{ url_for('admin.admin_tasks') }}"
{% if request.endpoint == 'admin.admin_tasks' %}class="active"{% endif %}>Background tasks</a>
</li>
<li>
<i class="bi bi-speedometer2"></i>
<a href="{{ url_for('admin.admin_performance') }}"
{% if request.endpoint == 'admin.admin_performance' %}class="active"{% endif %}>Page performance</a>
</li>
<li>
<i class="bi bi-trash"></i>
<a href="{{ url_for('admin.admin_delete_release') }}"
{% if request.endpoint == 'admin.admin_delete_release' %}class="active"{% endif %}>Delete release</a>
</li>
</ul>
{% endif %}
{% endif %}
{% if current_user and is_admin_fn(current_user.uid) %}
<h3>Admin actions</h3>
<form action="{{ url_for('admin.admin_toggle_view') }}"
method="post"
class="ms-2 mb-4">
<button type="submit" class="btn btn-sm btn-outline-secondary">
{% if not is_viewing_as_admin_fn(current_user.uid) %}
<i class="fa-solid fa-user-shield"></i> View as admin
{% else %}
<i class="fa-solid fa-user-ninja"></i> View as user
{% endif %}
</button>
</form>
{% endif %}
</nav>
</aside>