- index.html ("Mes jeux") : le <h1> nu est remplacé par l'en-tête de page
compact du §5 (.dashPanelHeader, déjà utilisé ailleurs pour ce
patron) — titre + badge du nombre de jeux (.forge-badge) sur une seule
ligne. Pas de second CTA : le formulaire de création reste dans sa
colonne dédiée, un bouton de plus ferait doublon.
- game_dashboard.html : ajout du même en-tête, absent jusqu'ici (la page
démarrait directement sur la barre d'onglets) — nom du jeu + chemin du
dossier, pour savoir sur quel jeu on se trouve sans avoir à regarder
l'URL.
- styles/forge-custom.scss : .content-objectEdit > h1/.hint/form/
.warningBanner (règle qui fige la hauteur des enfants directs non
extensibles dans la mise en page flex de l'accueil) étendue à
.dashPanelHeader, qui remplace maintenant le <h1> direct.
- profile.html : déjà conforme (rayons de boîte/bouton, danger tokenisé)
depuis le passage global des tokens en Phase A — aucun changement
supplémentaire nécessaire.
197 tests toujours verts ; vérification ciblée (fixture jetable, supprimée
ensuite) confirmant l'en-tête et le JS du tableau de bord.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
52 lines
2.1 KiB
HTML
52 lines
2.1 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Forge Engine — Mes jeux{% endblock %}
|
|
{% block content_class %}content-wide content-objectEdit{% endblock %}
|
|
{% block body_class %}objectEditBody{% endblock %}
|
|
{% block content %}
|
|
<div class="dashPanelHeader">
|
|
<h2 class="title is-4 mb-0">Mes jeux</h2>
|
|
<span class="forge-badge">{{ games|length }} jeu{{ 's' if games|length != 1 else '' }}</span>
|
|
</div>
|
|
|
|
<div class="twoCol">
|
|
<div class="colLeft">
|
|
<h2>Créer un jeu</h2>
|
|
<form method="post" action="{{ url_for('games_new') }}" class="card">
|
|
<div class="formField">
|
|
<label for="name">Nom du nouveau jeu</label>
|
|
<input type="text" id="name" name="name" placeholder="ex. CyberQuest RGPD" required>
|
|
</div>
|
|
<div class="actionsRow"><button type="submit" class="primary">+ Créer le jeu</button></div>
|
|
<p class="hint" style="margin-top:6px;">Crée un dossier avec index.html / index.css / index.js reliés entre eux, et une base de données dédiée à ce jeu.</p>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="colRight">
|
|
<h2>Jeux existants</h2>
|
|
{% if games %}
|
|
<div class="fieldsTableWrap">
|
|
<table class="table is-fullwidth is-hoverable fieldsTable">
|
|
<thead><tr><th>Nom</th><th>Dossier</th><th></th></tr></thead>
|
|
<tbody>
|
|
{% for g in games %}
|
|
<tr>
|
|
<td><a href="{{ url_for('game_dashboard', slug=g.slug) }}">{{ g.name }}</a></td>
|
|
<td class="has-text-grey">projects/{{ g.slug }}/</td>
|
|
<td class="fieldsTableActions">
|
|
<form method="post" action="{{ url_for('game_delete', slug=g.slug) }}"
|
|
onsubmit="return confirm('Supprimer définitivement le jeu « {{ g.name }} » et tout son contenu (dossier + base de données) ?');">
|
|
<button type="submit" class="button is-small is-danger" title="Supprimer ce jeu">🗑️</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% else %}
|
|
<p class="hint">Aucun jeu pour l'instant — crée le premier à gauche.</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|