Onboarding guidé systématique + tableau de bord simplifié
Comportement SYSTÉMATIQUE à chaque création de jeu (admin compris), pas une formalité réservée à l'inscription : /onboarding (routes/onboarding/) devient le point d'entrée unique — 4 cartes retournables (survol = explication au dos), défilement horizontal animé vers le nom du jeu. Un admin y repasse à volonté (pas de project_slug dédié, jamais bloqué/ redirigé vers un projet précédent) ; un compte "user" n'en a plus qu'un créé d'office (routes/auth/register_2fa.py), guidé ici à la place. - db/games/game_type_catalog.py : catalogue des 4 types (Quiz/ Embranchement-escape game/RPG/Créer mon jeu de A à Z), _meta['onboarding_type'] décide du "kind" du premier écran créé et si le tableau de bord complet reste accessible. - routes/games/game_dashboard.py, templates/game_dashboard_simple.html : un type restreint (quiz/embranchement/rpg) voit désormais SON tableau de bord (même route que "custom"), rendu en version simplifiée — juste ses écrans en cartes avec un aperçu RÉEL du contenu (scène mise à l'échelle par container query CSS, adaptée à la largeur réelle de la carte). "+ Ajouter un écran" n'y propose pas de choix de type : imposé par le projet (routes/screens/screens_new.py), verrouillé aussi côté serveur. - core/auth_guard.py : plus de blocage de game_dashboard par type — la restriction se fait au rendu, pas à l'accès à la route. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
0f23024882
commit
76a50fa87a
@@ -13,8 +13,42 @@ def game_dashboard(slug):
|
||||
accès direct à chaque élément — la barre de navigation du jeu (voir
|
||||
base.html) permet déjà de sauter directement vers chaque éditeur, cette
|
||||
page sert donc de résumé/point d'entrée plutôt que de répéter les mêmes
|
||||
liens."""
|
||||
liens.
|
||||
|
||||
Onboarding guidé (voir db/games/game_type_catalog.py) : un compte
|
||||
"restreint" (quiz/embranchement/rpg) voit ici une version SIMPLIFIÉE —
|
||||
juste ses écrans, en cartes avec un aperçu de leur contenu, plus un
|
||||
bouton "+ Ajouter un écran" qui ne demande PAS de type (imposé par le
|
||||
projet : "jeu_2d" pour un RPG, "document" pour les autres — voir
|
||||
routes/screens/screens_new.py). Objets/éléments de jeu réutilisables/
|
||||
variables restent réservés à "Créer mon jeu de A à Z", la seule
|
||||
formule pensée pour la puissance complète du moteur."""
|
||||
game = db.game_meta(slug)
|
||||
if db.is_restricted(slug):
|
||||
return _render_simple_dashboard(slug, game)
|
||||
return _render_full_dashboard(slug, game)
|
||||
|
||||
|
||||
def _render_simple_dashboard(slug, game):
|
||||
screen_list = screens.list_screens(slug)
|
||||
previews = {}
|
||||
for s in screen_list:
|
||||
if s["kind"] == "jeu_2d":
|
||||
objects = screens.list_scene_objects(slug, s["id"])
|
||||
for o in objects:
|
||||
o["rendered_html"] = screens.render_scene_object(o)
|
||||
previews[s["id"]] = {"kind": "jeu_2d", "objects": objects}
|
||||
else:
|
||||
previews[s["id"]] = {
|
||||
"kind": "document",
|
||||
"elements": screens.list_elements(slug, s["id"]),
|
||||
}
|
||||
return render_template(
|
||||
"game_dashboard_simple.html", game=game, screen_list=screen_list, previews=previews,
|
||||
)
|
||||
|
||||
|
||||
def _render_full_dashboard(slug, game):
|
||||
definitions = db.list_definitions(slug)
|
||||
# Détail complet (avec ses champs) de chaque objet, pour le panneau
|
||||
# d'édition déplaçable (voir game_dashboard.html) ouvert par le crayon
|
||||
|
||||
Reference in New Issue
Block a user