Flowdeck 7.85.3 — HUB-21 : consommation des réglages généraux du Hub (bannière + drapeau recherche_partout)
FlowDeck CI / test (push) Failing after 0s
FlowDeck CI / docker (push) Skipped
FlowDeck CI / lint (pull_request) Failing after 1s
FlowDeck CI / test (pull_request) Failing after 1s
FlowDeck CI / docker (pull_request) Skipped
FlowDeck CI / lint (push) Failing after 11s

This commit is contained in:
Spark
2026-11-06 16:57:05 +00:00
parent e6f5cff870
commit 463dd7b752
11 changed files with 512 additions and 4 deletions
+28
View File
@@ -150,6 +150,34 @@
</head>
<body hx-headers='{"X-CSRF-Token":{{ csrf_token() | tojson }}}'{% if embed_mode %} class="embed-mode"{% else %} class="has-draco-bar"{% endif %}>
{% if not embed_mode %}{% include "_draco_bar.html" %}{% endif %}
{% if not embed_mode %}{% set _banniere_hub = banniere_hub() %}{% if _banniere_hub %}
<div class="banniere-hub" id="banniere-hub" role="status" hidden>
<span class="banniere-hub-texte">{{ _banniere_hub }}</span>
<button type="button" class="banniere-hub-fermer" id="banniere-hub-fermer" aria-label="Masquer la bannière" title="Masquer pour cette session du navigateur">×</button>
</div>
<script nonce="{{ csp_nonce() }}">
/* Bannière d'annonce des réglages généraux du Hub (HUB-21) :
masquage par l'utilisateur pour la session du navigateur —
sessionStorage, valeur = texte de la bannière (une nouvelle
annonce réapparaît donc toujours). La consultation du Hub se
fait côté serveur (app.services.hub_reglages) ; le texte est
échappé par l'autoescape Jinja. Sans JS, le bandeau reste
masqué (attribut hidden). */
(function () {
var bandeau = document.getElementById("banniere-hub");
if (!bandeau) return;
var texte = {{ _banniere_hub | tojson }};
try {
if (sessionStorage.getItem("flowdeck_banniere_masquee") === texte) return;
} catch (e) { /* stockage indisponible : on affiche */ }
bandeau.hidden = false;
document.getElementById("banniere-hub-fermer").addEventListener("click", function () {
bandeau.hidden = true;
try { sessionStorage.setItem("flowdeck_banniere_masquee", texte); } catch (err) { /* tant pis */ }
});
})();
</script>
{% endif %}{% endif %}
<div class="app-layout" x-data="appState()" x-cloak>
<!-- ═══════════ MOBILE SIDEBAR OVERLAY ═══════════ -->