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>