148 lines
9.4 KiB
HTML
148 lines
9.4 KiB
HTML
{% comment %}
|
|
This file is part of photo21
|
|
Copyright (C) 2022 Amicale des élèves de l'ENS Paris-Saclay
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
{% endcomment %}
|
|
{% load static i18n %}
|
|
<!DOCTYPE html>
|
|
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
|
|
<html lang="{{ LANGUAGE_CODE|default:"en" }}"{% if LANGUAGE_BIDI %} dir="rtl"{% endif %}>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self'">
|
|
<meta http-equiv="Referrer-Policy" content="no-referrer">
|
|
<title>{% block title %}{{ title }}{% endblock title %} - {{ request.site.name }}</title>
|
|
<meta name="description" content="{% trans "The ENS Rennes pictures server." %}">
|
|
<script src="{% static "theme.js" %}"></script>
|
|
<link rel="stylesheet" href="{% static "bootstrap5/css/bootstrap.min.css" %}">
|
|
<link rel="stylesheet" href="{% static "layout.css" %}">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="{% static "favicon-16x16.png" %}">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="{% static "favicon-32x32.png" %}">
|
|
<meta name="theme-color" content="#212529">
|
|
{% block extracss %}{% endblock %}
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-expand-lg bg-body-tertiary py-0">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="{% url 'index' %}">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 16 20">
|
|
<path d="M4.502 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z"/>
|
|
<path d="M14.002 13a2 2 0 0 1-2 2h-10a2 2 0 0 1-2-2V5A2 2 0 0 1 2 3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v8a2 2 0 0 1-1.998 2zM14 2H4a1 1 0 0 0-1 1h9.002a2 2 0 0 1 2 2v7A1 1 0 0 0 15 11V3a1 1 0 0 0-1-1zM2.002 4a1 1 0 0 0-1 1v8l2.646-2.354a.5.5 0 0 1 .63-.062l2.66 1.773 3.71-3.71a.5.5 0 0 1 .577-.094l1.777 1.947V5a1 1 0 0 0-1-1h-10z"/>
|
|
</svg>
|
|
{{ request.site.name }}
|
|
</a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
{% if not request.guest_mode %}
|
|
<li class="nav-item">
|
|
{% url 'photologue:pl-gallery-archive' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">{% trans 'Galleries' %}</a>
|
|
</li>
|
|
{% if perms.photologue.add_gallery %}
|
|
<li class="nav-item">
|
|
{% url 'photologue:pl-gallery-upload' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">{% trans 'Upload' %}</a>
|
|
</li>
|
|
{% endif %}
|
|
{% if request.user.is_staff %}
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{% url 'admin:index' %}">{% trans 'Manage' %}</a>
|
|
</li>
|
|
{% endif %}
|
|
{% endif %}
|
|
</ul>
|
|
<ul class="navbar-nav">
|
|
{% get_available_languages as LANGUAGES %}
|
|
<li class="nav-item dropdown">
|
|
<button class="btn nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
|
{{ LANGUAGE_CODE|upper }}
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-end">
|
|
{% for lang_code, lang_name in LANGUAGES %}
|
|
<li>
|
|
<button class="dropdown-item{% if lang_code == LANGUAGE_CODE %} active{% endif %}" type="button" data-lang="{{ lang_code }}">
|
|
{{ lang_name }}
|
|
</button>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</li>
|
|
{% if request.user.is_authenticated %}
|
|
<li class="nav-item">
|
|
{% url 'account_email' as url %}
|
|
<a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person" viewBox="0 0 16 16">
|
|
<path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z"/>
|
|
</svg>
|
|
{% trans "Account" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{% url 'account_logout' %}">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-right" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z"/>
|
|
<path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/>
|
|
</svg>
|
|
{% trans "Log out" %}
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{% url 'account_login' %}">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-right" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0v-2z"/>
|
|
<path fill-rule="evenodd" d="M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/>
|
|
</svg>
|
|
{% trans "Log in" %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{% url 'account_signup' %}">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-plus" viewBox="0 0 16 16">
|
|
<path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z"/>
|
|
<path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5z"/>
|
|
</svg>
|
|
{% trans "Sign up" %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container my-3">
|
|
{% for message in messages %}
|
|
<div class="alert {{ message.tags }} alert-dismissible" role="alert" >
|
|
{{ message }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endfor %}
|
|
{% block content %}
|
|
<p>Default content...</p>
|
|
{% endblock %}
|
|
</main>
|
|
<footer>
|
|
<p class="small text-center text-muted mt-1">
|
|
{% if request.user.is_authenticated %}
|
|
{% trans "Connected as" %} <code>{{ request.user.username }}</code> ·
|
|
{% endif %}
|
|
<a class="text-reset" href="https://git.sinfonie.org/sinfonie/photo26">{% trans "Source code" %}</a>
|
|
</p>
|
|
</footer>
|
|
<form id="lang-form" action="{% url 'set_language' %}" method="post" hidden>
|
|
{% csrf_token %}
|
|
<input type="hidden" name="language" id="lang-input">
|
|
<input type="hidden" name="next" value="{{ request.path }}">
|
|
</form>
|
|
|
|
<script src="{% static "lang-select.js" %}"></script>
|
|
<script src="{% static "bootstrap5/js/bootstrap.bundle.min.js" %}"></script>
|
|
<script src="{% url 'javascript-catalog' %}"></script>
|
|
{% block extrajs %}{% endblock %}
|
|
</body>
|
|
</html>
|