Files
Forge-Engine/templates/game_dashboard.html
T
william 2bb0c253f9 Fix object-form breaking on repeat pjax visits, and stray autofill in game rename field
object_form.js declared top-level const bindings, which pjax replays verbatim on every visit — the second visit threw "already declared" and silently broke "Ajouter un champ"/"Créer l'objet". Wrapped it in an IIFE. Also renamed the generic name="name" rename-game field to name="game_name" with autocomplete off, since browsers were autofilling it with unrelated previously-typed values.
2026-08-24 09:21:19 +02:00

62 lines
2.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "base.html" %}
{% block title %}{{ game.name }} — Forge Engine{% endblock %}
{% block breadcrumb %}<span class="crumb">{{ game.name }}</span>{% endblock %}
{% block content %}
<h1>{{ game.name }}</h1>
<p class="hint">Base de données : projects/{{ game.slug }}/game.db</p>
<div class="fieldRow" style="margin:14px 0;">
<a class="listRow rowLink" style="flex:1;" href="{{ url_for('screens_list', slug=game.slug) }}">
<div class="rowTitle">🖥️ Écrans du jeu</div>
<div class="rowSub">Créer et enchaîner les écrans jouables (accueil, formulaires, scènes...)</div>
</a>
<a class="listRow rowLink" style="flex:1;" href="{{ url_for('element_types', slug=game.slug) }}">
<div class="rowTitle">🧩 Éléments de jeu</div>
<div class="rowSub">Catalogue réutilisable (Personnage, Outil, IA...)</div>
</a>
<a class="listRow rowLink" style="flex:1;" href="{{ url_for('game_play', slug=game.slug) }}" target="_blank">
<div class="rowTitle">▶️ Jouer</div>
<div class="rowSub">Aperçu jouable du jeu</div>
</a>
</div>
<a class="listRow rowLink" href="{{ url_for('object_new', slug=game.slug) }}">
<div class="rowTitle">➕ Définir un nouvel objet</div>
<div class="rowSub">Comme une table de base de données : un nom, et des champs typés</div>
</a>
<h2>Objets définis</h2>
{% if definitions %}
<div class="list">
{% for d in definitions %}
<div class="listRow listRowFlex">
<a class="rowLink" href="{{ url_for('object_view', slug=game.slug, definition_id=d.id) }}">
<div class="rowTitle">{{ d.name }}</div>
<div class="rowSub">table SQL : {{ d.table_name }}</div>
</a>
<div class="rowActions">
<a class="smallBtn" href="{{ url_for('object_edit', slug=game.slug, definition_id=d.id) }}" title="Modifier cet objet">✏️</a>
</div>
</div>
{% endfor %}
</div>
{% else %}
<p class="hint">Aucun objet défini pour l'instant — un objet, c'est comme une table de base de données : un nom, et des champs typés.</p>
{% endif %}
<div class="dangerZone">
<h3>Paramètres du jeu</h3>
<form method="post" action="{{ url_for('game_rename', slug=game.slug) }}" class="fieldRow" style="align-items:flex-end;">
<div>
<label for="rename">Renommer le jeu</label>
<input type="text" id="rename" name="game_name" value="{{ game.name }}" required autocomplete="off">
</div>
<button type="submit">Renommer</button>
</form>
<form method="post" action="{{ url_for('game_delete', slug=game.slug) }}" style="margin-top:12px;"
onsubmit="return confirm('Supprimer définitivement le jeu « {{ game.name }} », son dossier et sa base de données ? Cette action est irréversible.');">
<button type="submit" class="danger">🗑️ Supprimer ce jeu</button>
</form>
</div>
{% endblock %}