Administration depuis le site : bouton Connexion sur l'accueil
site.toml [administration] adresse : l'accueil affiche un bouton « Connexion » vers l'interface. Celle-ci peut tourner derrière le serveur web du site (rtg interface --proxy --prefixe /admin) : adresses préfixées, mot de passe obligatoire, visiteur identifié par X-Forwarded-For, cookie Secure limité au préfixe quand le site est en HTTPS. Exemples nginx et Apache dans le README. Le bouton Arrêter ne remplace plus le bloc de la tâche en même temps que la relève. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mf2kATMtqVABHSYdxJMnim
This commit is contained in:
1 parent
71779f6f53
commit
4366db94ed
22 files changed
+229
-86
No files matched your search
@@ -16,7 +16,7 @@
|
||||
<tr>
|
||||
<td><code>{{ nom }}</code> <span class="discret">{{ d.km|round|int }} km</span></td>
|
||||
<td>
|
||||
<form class="en-ligne" hx-post="/voyage/date" hx-target="#analyse">
|
||||
<form class="en-ligne" hx-post="{{ base }}/voyage/date" hx-target="#analyse">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}"><input type="hidden" name="fichier" value="{{ nom }}">
|
||||
<input type="date" name="jour" required><button>OK</button>
|
||||
</form>
|
||||
@@ -24,7 +24,7 @@
|
||||
<td>
|
||||
{% set s = suggestions.get(nom) %}
|
||||
{% if s and s[0] %}
|
||||
<button class="petit" hx-post="/voyage/date" hx-target="#analyse"
|
||||
<button class="petit" hx-post="{{ base }}/voyage/date" hx-target="#analyse"
|
||||
hx-vals='{{ {"v": v.chemin, "fichier": nom, "jour": s[0].isoformat()}|tojson }}'
|
||||
title="{{ s[1] }} photo(s) ou vidéo(s) de ce jour prises le long de la trace">Le {{ s[0]|date_longue }} ?</button>
|
||||
{% else %}<span class="discret">pas de suggestion</span>{% endif %}
|
||||
@@ -34,7 +34,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
{% if non_datees|length > 1 %}
|
||||
<form class="en-ligne" hx-post="/voyage/dates-suite" hx-target="#analyse">
|
||||
<form class="en-ligne" hx-post="{{ base }}/voyage/dates-suite" hx-target="#analyse">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}">
|
||||
Ou bien, dans l'ordre des noms, un jour par trace à partir du <input type="date" name="debut" required>
|
||||
<button>Répartir</button>
|
||||
@@ -66,13 +66,13 @@
|
||||
<td><code title="{{ d.fichier }}">{{ d.nom }}</code>{% if d.erreur %} <span class="pastille attention" title="{{ d.erreur }}">illisible</span>{% endif %}</td>
|
||||
<td>{% for j in d.jours %}{{ j|date_courte }}{{ ", " if not loop.last }}{% else %}<span class="discret">—</span>{% endfor %}</td>
|
||||
<td>
|
||||
<form class="en-ligne" hx-post="/voyage/date" hx-target="#analyse">
|
||||
<form class="en-ligne" hx-post="{{ base }}/voyage/date" hx-target="#analyse">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}"><input type="hidden" name="fichier" value="{{ d.nom }}">
|
||||
<input type="date" name="jour" value="{{ d.impose.isoformat() if d.impose else '' }}">
|
||||
<button class="petit">{{ "Changer" if d.impose else "Imposer" }}</button>
|
||||
</form>
|
||||
{% if d.impose %}
|
||||
<button class="petit" hx-post="/voyage/date" hx-target="#analyse"
|
||||
<button class="petit" hx-post="{{ base }}/voyage/date" hx-target="#analyse"
|
||||
hx-vals='{{ {"v": v.chemin, "fichier": d.nom, "jour": ""}|tojson }}'>Annuler</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{% if tache and tache.en_cours %}
|
||||
<a class="bandeau en-cours" href="/tache">⏳ {{ tache.libelle }} · {{ tache.etape }}{% if tache.etape_voyage %} ({{ tache.etape_voyage }}){% endif %}{% if tache.video and tache.video.rang %} · vidéo {{ tache.video.rang[0] }}/{{ tache.video.rang[1] }} ({{ tache.video.pct|int }} %){% endif %}</a>
|
||||
<a class="bandeau en-cours" href="{{ base }}/tache">⏳ {{ tache.libelle }} · {{ tache.etape }}{% if tache.etape_voyage %} ({{ tache.etape_voyage }}){% endif %}{% if tache.video and tache.video.rang %} · vidéo {{ tache.video.rang[0] }}/{{ tache.video.rang[1] }} ({{ tache.video.pct|int }} %){% endif %}</a>
|
||||
{% elif tache %}
|
||||
<a class="bandeau {{ 'ok' if tache.ok else 'echec' }}" href="/tache">{{ "✓" if tache.ok else "⚠️" }} {{ tache.libelle }} : {{ tache.etape|lower }}</a>
|
||||
<a class="bandeau {{ 'ok' if tache.ok else 'echec' }}" href="{{ base }}/tache">{{ "✓" if tache.ok else "⚠️" }} {{ tache.libelle }} : {{ tache.etape|lower }}</a>
|
||||
{% endif %}
|
||||
@@ -3,14 +3,14 @@
|
||||
<h3>Choisir un dossier de {{ libelle }}</h3>
|
||||
<div class="raccourcis">
|
||||
{% for nom, c in raccourcis %}
|
||||
<button class="petit" hx-get="/dossiers?cle={{ cle }}&v={{ v|url }}&chemin={{ c|url }}" hx-target="#fenetre">{{ nom }}</button>
|
||||
<button class="petit" hx-get="{{ base }}/dossiers?cle={{ cle }}&v={{ v|url }}&chemin={{ c|url }}" hx-target="#fenetre">{{ nom }}</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<p class="chemin"><code>{{ chemin }}</code></p>
|
||||
<ul class="liste-dossiers">
|
||||
{% if parent %}<li><a href="#" hx-get="/dossiers?cle={{ cle }}&v={{ v|url }}&chemin={{ parent|url }}" hx-target="#fenetre">⬆︎ Dossier parent</a></li>{% endif %}
|
||||
{% if parent %}<li><a href="#" hx-get="{{ base }}/dossiers?cle={{ cle }}&v={{ v|url }}&chemin={{ parent|url }}" hx-target="#fenetre">⬆︎ Dossier parent</a></li>{% endif %}
|
||||
{% for d in sous %}
|
||||
<li><a href="#" hx-get="/dossiers?cle={{ cle }}&v={{ v|url }}&chemin={{ (chemin.rstrip(sep) ~ sep ~ d)|url }}" hx-target="#fenetre">📁 {{ d }}</a></li>
|
||||
<li><a href="#" hx-get="{{ base }}/dossiers?cle={{ cle }}&v={{ v|url }}&chemin={{ (chemin.rstrip(sep) ~ sep ~ d)|url }}" hx-target="#fenetre">📁 {{ d }}</a></li>
|
||||
{% else %}
|
||||
<li class="vide">Pas de sous-dossier</li>
|
||||
{% endfor %}
|
||||
@@ -19,7 +19,7 @@
|
||||
<span class="{{ 'ok' if nb else 'discret' }}">{{ nb }} fichier{{ 's' if nb > 1 }} de {{ libelle }} ici</span>
|
||||
<span>
|
||||
<button data-fermer>Annuler</button>
|
||||
<button class="principal" data-fermer hx-post="/voyage/sources" hx-target="#sources" hx-swap="outerHTML"
|
||||
<button class="principal" data-fermer hx-post="{{ base }}/voyage/sources" hx-target="#sources" hx-swap="outerHTML"
|
||||
hx-vals='{{ {"v": v, "cle": cle, "action": "ajouter", "chemin": chemin}|tojson }}'>Choisir ce dossier</button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
<div><span class="etiquette">Encodage</span>
|
||||
{{ noms_qualites.get(cfg.video.qualite, cfg.video.qualite) }} · {{ "matériel" if i.encodage.encodeur == "vt" else "processeur" }}
|
||||
<span class="discret">(HEVC CRF {{ i.encodage.crf_hevc }} / H.264 CRF {{ i.encodage.crf_h264 }})</span>
|
||||
<a href="/reglages#video">changer</a></div>
|
||||
<a href="{{ base }}/reglages#video">changer</a></div>
|
||||
</div>
|
||||
@@ -9,7 +9,7 @@
|
||||
{% if l.existe %}<span class="pastille {{ 'ok' if l.nb else 'neutre' }}">{{ l.nb }} fichier{{ 's' if l.nb > 1 }}</span>
|
||||
{% elif l.lien_casse %}<span class="pastille attention">disque débranché ?</span>
|
||||
{% else %}<span class="pastille attention">introuvable</span>{% endif %}
|
||||
<button class="petit" hx-post="/voyage/sources" hx-target="#sources" hx-swap="outerHTML"
|
||||
<button class="petit" hx-post="{{ base }}/voyage/sources" hx-target="#sources" hx-swap="outerHTML"
|
||||
hx-vals='{{ {"v": v.chemin, "cle": cle, "action": "retirer", "chemin": l.source}|tojson }}'>Retirer</button>
|
||||
</li>
|
||||
{% else %}
|
||||
@@ -17,8 +17,8 @@
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="ajout">
|
||||
<button hx-get="/dossiers?cle={{ cle }}&v={{ v.chemin|url }}" hx-target="#fenetre">Choisir un dossier…</button>
|
||||
<form hx-post="/voyage/sources" hx-target="#sources" hx-swap="outerHTML" class="en-ligne">
|
||||
<button hx-get="{{ base }}/dossiers?cle={{ cle }}&v={{ v.chemin|url }}" hx-target="#fenetre">Choisir un dossier…</button>
|
||||
<form hx-post="{{ base }}/voyage/sources" hx-target="#sources" hx-swap="outerHTML" class="en-ligne">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}">
|
||||
<input type="hidden" name="cle" value="{{ cle }}">
|
||||
<input type="hidden" name="action" value="ajouter">
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{% if message %}<div class="erreur">{{ message }}</div>{% endif %}
|
||||
{% if tache %}
|
||||
<div class="tache {{ 'en-cours' if tache.en_cours else ('ok' if tache.ok else 'echec') }}"
|
||||
{% if tache.en_cours %}hx-get="/tache/fragment{{ '?complet=1' if complet }}" hx-trigger="every 1s" hx-swap="outerHTML"{% endif %}>
|
||||
{% if tache.en_cours %}hx-get="{{ base }}/tache/fragment{{ '?complet=1' if complet }}" hx-trigger="every 1s" hx-swap="outerHTML"{% endif %}>
|
||||
<div class="tache-tete">
|
||||
<strong>{{ tache.libelle }}</strong>
|
||||
<span class="etape">{{ "⏳ " if tache.en_cours }}{{ tache.etape }}{% if tache.etape_voyage %} — {{ tache.etape_voyage }}{% endif %}</span>
|
||||
<span class="discret">{{ tache.duree }}</span>
|
||||
{% if tache.en_cours %}
|
||||
<button class="danger petit" hx-post="/tache/arreter" hx-target="closest .tache" hx-swap="outerHTML">Arrêter</button>
|
||||
<button class="danger petit" hx-post="{{ base }}/tache/arreter" hx-swap="none">Arrêter</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if tache.video and tache.video.rang %}
|
||||
|
||||
@@ -4,21 +4,21 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block titre %}{% endblock %} · RTG</title>
|
||||
<link rel="stylesheet" href="/static/rtg.css">
|
||||
<link rel="stylesheet" href="{{ base }}/static/rtg.css">
|
||||
{% block tete %}{% endblock %}
|
||||
<script src="/static/htmx.min.js"></script>
|
||||
<script src="{{ base }}/static/htmx.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<body data-base="{{ base }}">
|
||||
<header class="barre">
|
||||
<a class="logo" href="/">RTG</a>
|
||||
<a class="logo" href="{{ base }}/">RTG</a>
|
||||
<nav>
|
||||
<a href="/">Mes voyages</a>
|
||||
<a href="/reglages">Réglages</a>
|
||||
<a href="/tache">Traitement</a>
|
||||
<a href="/site/" target="_blank">Voir le site ↗</a>
|
||||
<a href="{{ base }}/">Mes voyages</a>
|
||||
<a href="{{ base }}/reglages">Réglages</a>
|
||||
<a href="{{ base }}/tache">Traitement</a>
|
||||
<a href="{{ lien_site }}" target="_blank">Voir le site ↗</a>
|
||||
</nav>
|
||||
<div id="bandeau" hx-get="/tache/bandeau" hx-trigger="load, every 2s"></div>
|
||||
<button class="petit discret-bouton" hx-post="/deconnexion" title="Fermer la session de ce navigateur">Se déconnecter</button>
|
||||
<div id="bandeau" hx-get="{{ base }}/tache/bandeau" hx-trigger="load, every 2s"></div>
|
||||
<button class="petit discret-bouton" hx-post="{{ base }}/deconnexion" title="Fermer la session de ce navigateur">Se déconnecter</button>
|
||||
</header>
|
||||
<main>
|
||||
{% block contenu %}{% endblock %}
|
||||
@@ -26,7 +26,7 @@
|
||||
<div id="messages" aria-live="polite"></div>
|
||||
<div id="fenetre"></div>
|
||||
<footer>RoadTripsGenerator {{ version }} · <code>{{ racine }}</code></footer>
|
||||
<script src="/static/rtg.js"></script>
|
||||
<script src="{{ base }}/static/rtg.js"></script>
|
||||
{% block fin %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
@@ -4,15 +4,15 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Connexion · RTG</title>
|
||||
<link rel="stylesheet" href="/static/rtg.css">
|
||||
<script src="/static/htmx.min.js"></script>
|
||||
<link rel="stylesheet" href="{{ base }}/static/rtg.css">
|
||||
<script src="{{ base }}/static/htmx.min.js"></script>
|
||||
</head>
|
||||
<body class="page-connexion">
|
||||
<main class="connexion">
|
||||
<p class="logo">RTG</p>
|
||||
{% if connecte %}
|
||||
<p>Vous êtes connecté.</p>
|
||||
<p><a class="bouton principal" href="/">Ouvrir l'interface</a></p>
|
||||
<p><a class="bouton principal" href="{{ base }}/">Ouvrir l'interface</a></p>
|
||||
{% else %}
|
||||
<h1>Accès à l'interface</h1>
|
||||
{% if not distant %}
|
||||
@@ -20,7 +20,7 @@
|
||||
elle contient la clé d'accès de cette session{% if mdp %}, ou entrez le mot de passe{% endif %}.</p>
|
||||
{% endif %}
|
||||
{% if mdp %}
|
||||
<form hx-post="/connexion" hx-target="#retour-connexion">
|
||||
<form hx-post="{{ base }}/connexion" hx-target="#retour-connexion">
|
||||
<label>Mot de passe
|
||||
<input type="password" name="mot_de_passe" autocomplete="current-password" required autofocus>
|
||||
</label>
|
||||
@@ -32,6 +32,7 @@
|
||||
<code>rtg mot-de-passe</code>.</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if site %}<p class="aide"><a href="{{ site }}">← Retour au site</a></p>{% endif %}
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
{% block titre %}Nouveau voyage{% endblock %}
|
||||
{% block contenu %}
|
||||
<h1>Nouveau voyage</h1>
|
||||
<form id="formulaire" class="formulaire" hx-post="/nouveau" hx-target="#formulaire" hx-select="#formulaire" hx-swap="outerHTML">
|
||||
<form id="formulaire" class="formulaire" hx-post="{{ base }}/nouveau" hx-target="#formulaire" hx-select="#formulaire" hx-swap="outerHTML">
|
||||
{% if erreur %}<div class="erreur">{{ erreur }}</div>{% endif %}
|
||||
<label>Titre
|
||||
<input name="titre" value="{{ form.titre[0] if form and form.titre else '' }}" placeholder="Été 2027 en Écosse" autofocus>
|
||||
@@ -22,7 +22,7 @@
|
||||
{% endfor %}
|
||||
<label class="choix">Nouvelle rubrique : <input name="groupe_nouveau" placeholder="Balades"></label>
|
||||
</fieldset>
|
||||
<p><button class="principal">Créer le voyage</button> <a href="/">Annuler</a></p>
|
||||
<p><button class="principal">Créer le voyage</button> <a href="{{ base }}/">Annuler</a></p>
|
||||
<p class="aide">Le dossier est créé avec un <code>voyage.toml</code>. Vous indiquerez ensuite où sont les traces, les vidéos et les photos : elles restent où elles sont.</p>
|
||||
</form>
|
||||
{% endblock %}
|
||||
@@ -3,7 +3,7 @@
|
||||
{% block contenu %}
|
||||
<h1>Réglages du site</h1>
|
||||
<p class="aide">Enregistrés dans <code>site.toml</code>. Ils valent pour tous les voyages.</p>
|
||||
<form class="formulaire" hx-post="/reglages" hx-target="#retour-reglages">
|
||||
<form class="formulaire" hx-post="{{ base }}/reglages" hx-target="#retour-reglages">
|
||||
<fieldset>
|
||||
<legend>Site</legend>
|
||||
<label>Titre <input name="titre" value="{{ cfg.titre }}"></label>
|
||||
@@ -60,9 +60,15 @@
|
||||
<textarea name="mymaps" rows="3">{{ cfg.carte_globale.mymaps|join("\n") }}</textarea>
|
||||
<span class="aide">Leurs tracés sont récupérés une fois et ajoutés à la carte de l'accueil, sur fond OpenStreetMap.</span></label>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Administration depuis le site</legend>
|
||||
<label>Adresse de l'interface <input name="administration" value="{{ cfg.administration.adresse }}" placeholder="/admin/">
|
||||
<span class="aide">Si elle est remplie, l'accueil du site affiche un bouton « Connexion » vers cette adresse.
|
||||
L'interface doit alors tourner sur le serveur du site (<code>rtg interface --proxy --prefixe /admin</code>), derrière le serveur web en HTTPS : voir le README.</span></label>
|
||||
</fieldset>
|
||||
<p><button class="principal">Enregistrer</button> <span id="retour-reglages"></span></p>
|
||||
</form>
|
||||
|
||||
<h2>Système</h2>
|
||||
<div hx-get="/systeme" hx-trigger="load"><p class="chargement">Vérification des outils…</p></div>
|
||||
<div hx-get="{{ base }}/systeme" hx-trigger="load"><p class="chargement">Vérification des outils…</p></div>
|
||||
{% endblock %}
|
||||
@@ -3,7 +3,7 @@
|
||||
{% block contenu %}
|
||||
<h1>Traitement</h1>
|
||||
{% if tache %}
|
||||
{% if tache.voyage %}<p><a href="/voyage?v={{ tache.voyage|url }}">← {{ tache.voyage }}</a></p>{% endif %}
|
||||
{% if tache.voyage %}<p><a href="{{ base }}/voyage?v={{ tache.voyage|url }}">← {{ tache.voyage }}</a></p>{% endif %}
|
||||
{% with complet = True %}{% include "_tache.html" %}{% endwith %}
|
||||
{% else %}
|
||||
<p class="vide">Aucun traitement lancé depuis l'ouverture de l'interface.</p>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
{% extends "base.html" %}
|
||||
{% block titre %}{{ v.titre }}{% endblock %}
|
||||
{% block tete %}<link rel="stylesheet" href="/static/leaflet.css"><script src="/static/leaflet.js"></script>{% endblock %}
|
||||
{% block fin %}<script src="/static/editeur.js"></script>{% endblock %}
|
||||
{% block tete %}<link rel="stylesheet" href="{{ base }}/static/leaflet.css"><script src="{{ base }}/static/leaflet.js"></script>{% endblock %}
|
||||
{% block fin %}<script src="{{ base }}/static/editeur.js"></script>{% endblock %}
|
||||
{% block contenu %}
|
||||
<div class="entete-page">
|
||||
<div>
|
||||
<p class="fil"><a href="/">Mes voyages</a> › {{ v.rubrique }}</p>
|
||||
<p class="fil"><a href="{{ base }}/">Mes voyages</a> › {{ v.rubrique }}</p>
|
||||
<h1>{{ v.titre }}</h1>
|
||||
<p class="discret">{{ [periode(v.debut, v.fin), v.moto]|select|join(" · ") }} <code>{{ v.chemin }}</code></p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
{% if v.genere %}<a class="bouton" href="/site/{{ v.chemin }}/index.html" target="_blank">Voir la page ↗</a>{% endif %}
|
||||
{% if v.genere %}<a class="bouton" href="{{ base }}/site/{{ v.chemin }}/index.html" target="_blank">Voir la page ↗</a>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</nav>
|
||||
|
||||
<section class="onglet" id="onglet-journees">
|
||||
<div id="analyse" hx-get="/voyage/analyse?v={{ v.chemin|url }}" hx-trigger="load, sources-modifiees from:body, tache-finie from:body">
|
||||
<div id="analyse" hx-get="{{ base }}/voyage/analyse?v={{ v.chemin|url }}" hx-trigger="load, sources-modifiees from:body, tache-finie from:body">
|
||||
<p class="chargement">Lecture des traces…</p>
|
||||
</div>
|
||||
</section>
|
||||
@@ -71,14 +71,14 @@
|
||||
</section>
|
||||
|
||||
<section class="onglet" id="onglet-infos">
|
||||
<form class="formulaire" hx-post="/voyage/infos" hx-target="find .retour">
|
||||
<form class="formulaire" hx-post="{{ base }}/voyage/infos" hx-target="find .retour">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}">
|
||||
<label>Titre <input name="titre" value="{{ cfg.titre }}"></label>
|
||||
<label>Moto <input name="moto" value="{{ cfg.moto }}" placeholder="facultatif : affichée dans la légende de la carte globale"></label>
|
||||
<p class="aide">Rubrique : <strong>{{ v.rubrique }}</strong> (elle vient du dossier où est rangé le voyage).</p>
|
||||
<p><button class="principal">Enregistrer</button> <span class="retour"></span></p>
|
||||
</form>
|
||||
<form class="formulaire large" hx-post="/voyage/recit" hx-target="find .retour">
|
||||
<form class="formulaire large" hx-post="{{ base }}/voyage/recit" hx-target="find .retour">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}">
|
||||
<label>Récit (<code>voyage.md</code>, en Markdown)
|
||||
<textarea name="recit" rows="18" spellcheck="true">{{ recit }}</textarea>
|
||||
@@ -90,8 +90,8 @@
|
||||
</section>
|
||||
|
||||
<section class="onglet" id="onglet-generer">
|
||||
<div hx-get="/voyage/infos-utiles?v={{ v.chemin|url }}" hx-trigger="load, sources-modifiees from:body, tache-finie from:body"><p class="chargement">Calcul des tailles…</p></div>
|
||||
<form class="formulaire" hx-post="/tache/lancer" hx-target="#tache-zone">
|
||||
<div hx-get="{{ base }}/voyage/infos-utiles?v={{ v.chemin|url }}" hx-trigger="load, sources-modifiees from:body, tache-finie from:body"><p class="chargement">Calcul des tailles…</p></div>
|
||||
<form class="formulaire" hx-post="{{ base }}/tache/lancer" hx-target="#tache-zone">
|
||||
<input type="hidden" name="v" value="{{ v.chemin }}">
|
||||
<label class="choix"><input type="checkbox" name="sans_compression"> Sans encoder les vidéos <span class="aide">(photos, positions et pages seulement)</span></label>
|
||||
<label class="choix"><input type="checkbox" name="force"> Tout refaire, même ce qui est déjà à jour</label>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{% if not site_existe %}
|
||||
<div class="encart">
|
||||
<p><strong>Ce dossier n'est pas encore un site RTG.</strong> Il n'y a pas de <code>site.toml</code> dans <code>{{ racine }}</code>.</p>
|
||||
<p><button class="principal" hx-post="/site/creer">Créer le site dans ce dossier</button></p>
|
||||
<p><button class="principal" hx-post="{{ base }}/site/creer">Créer le site dans ce dossier</button></p>
|
||||
<p class="aide">Pour un autre dossier, relancez avec <code>rtg interface --racine CHEMIN</code>.</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -12,8 +12,8 @@
|
||||
<div class="entete-page">
|
||||
<h1>Mes voyages <span class="compte">{{ nb }}</span></h1>
|
||||
<div class="actions">
|
||||
<a class="bouton principal" href="/nouveau">+ Nouveau voyage</a>
|
||||
<form hx-post="/tache/lancer" hx-target="#tache-zone">
|
||||
<a class="bouton principal" href="{{ base }}/nouveau">+ Nouveau voyage</a>
|
||||
<form hx-post="{{ base }}/tache/lancer" hx-target="#tache-zone">
|
||||
<input type="hidden" name="quoi" value="accueil">
|
||||
<button title="index.html, pages des rubriques et carte globale">Refaire l'accueil</button>
|
||||
</form>
|
||||
@@ -29,7 +29,7 @@
|
||||
<tbody>
|
||||
{% for v in liste %}
|
||||
<tr>
|
||||
<td><a href="/voyage?v={{ v.chemin|url }}"><strong>{{ v.titre }}</strong></a>
|
||||
<td><a href="{{ base }}/voyage?v={{ v.chemin|url }}"><strong>{{ v.titre }}</strong></a>
|
||||
{% if v.moto %}<div class="discret">{{ v.moto }}</div>{% endif %}</td>
|
||||
<td>{{ periode(v.debut, v.fin) }}</td>
|
||||
<td class="num">{{ v.jours or "—" }}</td>
|
||||
@@ -51,7 +51,7 @@
|
||||
{% else %}<span class="pastille attention">à refaire</span>{% endif %}
|
||||
{% if v.a_verifier %}<span class="pastille attention" title="{{ v.a_verifier|join('\n') }}">⚠️ {{ v.a_verifier|length }}</span>{% endif %}
|
||||
</td>
|
||||
<td class="droite">{% if v.genere %}<a href="/site/{{ v.chemin }}/index.html" target="_blank">Voir ↗</a>{% endif %}</td>
|
||||
<td class="droite">{% if v.genere %}<a href="{{ base }}/site/{{ v.chemin }}/index.html" target="_blank">Voir ↗</a>{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
Reference in new issue
Block a user