Flowdeck 7.84.13 : barre v0.3.0 — liens Hub du menu compte, URL Hub résolue comme les sœurs (draco_urls)

This commit is contained in:
Spark
2026-11-04 21:45:14 +00:00
parent 0464f6156e
commit 08e912d56f
5 changed files with 116 additions and 19 deletions
+2
View File
@@ -157,6 +157,7 @@ class Settings(BaseSettings):
# TIKTAK_URL=https://tiktak-dev.dracodev.net
# KANBANTE_URL=https://kanbante-dev.dracodev.net
# SHAARIT_URL=https://shaarit-dev.dracodev.net
# HUB_URL=https://hub-dev.dracodev.net
# FLOWDECK_URL=https://flowdeck-dev.dracodev.net
draco_sso_url: str = "https://og.dracodev.net" # ObsiGate (émettrice SSO)
# ── Coffre ObsiGate, côté consommateur Flowdeck (Phase 4, issue #22) ──
@@ -170,6 +171,7 @@ class Settings(BaseSettings):
tiktak_url: str = "https://tiktak.dracodev.net"
kanbante_url: str = "https://kanbante.dracodev.net"
shaarit_url: str = "https://shaarit.dracodev.net"
hub_url: str = "https://hub.dracodev.net"
# URL publique de CETTE instance ; vide = dérivée de
# OAUTH_REDIRECT_URI, puis d'APP_BASE_URL (si non locale), puis du
# nom officiel.
+12 -1
View File
@@ -98,6 +98,7 @@ OFFICIELLES = {
"kanbante": "https://kanbante.dracodev.net",
"shaarit": "https://shaarit.dracodev.net",
"flowdeck": "https://flowdeck.dracodev.net",
"hub": "https://hub.dracodev.net",
"gitea": "https://git.dracodev.net",
}
@@ -123,6 +124,7 @@ _SLUGS_SOEURS = {
"tiktak": "tiktak",
"kanbante": "kanbante",
"shaarit": "shaarit",
"hub": "hub",
}
# Hôte de l'agent : agent<SUFFIXE>.dracodev.net (SUFFIXE = ``-dev``…).
@@ -133,7 +135,7 @@ _MOTIF_HOTE_AGENT = re.compile(r"^agent(-[a-z0-9-]+)?\.dracodev\.net$")
# de TOUTE l'installation — jamais un suffixe inventé depuis un
# hôte arbitraire : hors motif (autre domaine, LAN, IP), None.
_MOTIF_HOTE_PUBLIC = re.compile(
r"^(og|flowdeck|tiktak|kanbante|agent)(-[a-z0-9-]+)?\.dracodev\.net$")
r"^(og|flowdeck|tiktak|kanbante|agent|hub)(-[a-z0-9-]+)?\.dracodev\.net$")
# Slugs pour la résolution par l'hôte de la requête (l'agent inclus).
_SLUGS_TOUTES = {**_SLUGS_SOEURS, "agent": "agent"}
@@ -282,6 +284,14 @@ def shaarit_url() -> str:
return _resoudre_soeur("SHAARIT_URL", "shaarit_url", "shaarit")
def hub_url() -> str:
"""Hub (barre v0.3.0, HUB-1) : même résolution que les sœurs —
il n'a pas d'onglet, sa base sert les liens du menu compte
(Télécharger, À Propos, Aides, Profil) via ``urls.hub`` de la
configuration de la barre."""
return _resoudre_soeur("HUB_URL", "hub_url", "hub")
def gitea_url() -> str:
return _resoudre("GITEA_URL", "gitea_url", "gitea")
@@ -366,6 +376,7 @@ def toutes() -> dict[str, str]:
"kanbante": kanbante_url(),
"shaarit": shaarit_url(),
"flowdeck": flowdeck_url(),
"hub": hub_url(),
"gitea": gitea_url(),
}
+12 -3
View File
@@ -1,8 +1,11 @@
{# Barre d'apps commune dracodev — Fusion ACC-1.1 (issue #17).
Snippet FIGÉ vendangé depuis Projets/dracodev-commons v0.2.0
(ui/barre-apps/, commit 70c837a de la branche
shaarit-phase3-barre-contrats) : ne pas modifier la structure ici ;
Snippet FIGÉ vendangé depuis Projets/dracodev-commons v0.3.0
(ui/barre-apps/, branche hub-menu-compte-v0-3-0 de la PR commons
#9 — HUB-1, fusion #115) : ne pas modifier la structure ici ;
toute évolution passe par une nouvelle version de commons.
v0.3.0 : menu compte — liens Hub Télécharger / À Propos / Aides
et Profil devenu lien (base draco_urls().hub passée en urls.hub
de la configuration ci-dessous) ; « Déconnexion » reste relayée.
CSS/JS : /static/css/draco-barre.css, /static/js/vendor/draco-barre.js.
v7.82.0 (dev/prod) : les href des onglets ne sont plus figés —
l'hôte les injecte depuis sa config (draco_urls(), noms officiels
@@ -105,6 +108,12 @@
repli si le module ne charge pas). */
window.DRACO_BAR_CONFIG = {
current: "flowdeck",
/* Barre v0.3.0 (HUB-1) : le Hub n'a pas d'onglet — sa base
(draco_urls().hub : HUB_URL explicite, hôte de la requête,
dérivation par l'agent, défaut officiel) alimente les
liens du menu compte (Télécharger, À Propos, Aides,
Profil) via urls.hub. */
urls: { hub: "{{ draco_urls().hub }}/" },
domain: (function () { try { return localStorage.getItem("draco_domain") || "pro"; } catch (e) { return "pro"; } })(),
counts: {},
onAction: function (act, el) {