diff --git a/static/js/quests/quest-editor.js b/static/js/quests/quest-editor.js index ce52df40..452def22 100644 --- a/static/js/quests/quest-editor.js +++ b/static/js/quests/quest-editor.js @@ -1,13 +1,15 @@ // ---------- Éditeur de quêtes ---------- // Onglet "🗺️ Quêtes" à côté de "🧩 Collision" (templates/scene_edit.html, // jamais une page à part) : une LISTE (mêmes tableau/lignes que l'onglet -// "📣 Événements") plutôt qu'une grille de cartes, chaque ligne portant -// toutes les infos de la quête + un clic dessus ouvrant la modale -// d'arbre de dialogue. Cette même modale est aussi ouverte depuis -// l'assistant "+ Action" de l'éditeur de collision (voir -// static/js/scenes/collision-rules-editor.js) quand l'auteur choisit -// "Déclencher une quête" — créée dynamiquement (ensureQuestDialogueModal) -// plutôt que dupliquée dans deux endroits. +// "📣 Événements") plutôt qu'une grille de cartes. Un clic sur une ligne +// ouvre la modale de FICHE (titre/objectif/récompense/statut/résultat — +// "je crée"), qui ouvre à son tour, sur un bouton dédié, la modale +// PLEIN ÉCRAN d'arbre de dialogue ("j'ajoute les dialogues") — deux +// étapes séparées, jamais le même formulaire. Les deux modales sont +// aussi ouvertes depuis l'assistant "+ Action" de l'éditeur de collision +// (voir static/js/scenes/collision-rules-editor.js) quand l'auteur +// choisit "Déclencher une quête" — créées dynamiquement (ensureQuest*Modal) +// plutôt que dupliquées dans deux endroits. // // Une quête (voir db/quests/) : id, title, objectif, recompense_score, // status (nouvelle/en_cours/terminee — statut COURANT, informatif), @@ -32,7 +34,7 @@ function questById(questId) { function questListRowHtml(quest) { var resultatHtml = quest.resultat ? '' + QUEST_RESULT_LABELS[quest.resultat] + '' : '—'; return ( - '' + + '' + '' + (quest.title || '').replace(/' + '' + (quest.objectif ? quest.objectif.replace(/—') + '' + '🏆 +' + (quest.recompense_score || 0) + '' + @@ -68,7 +70,7 @@ function createQuestFromListPage() { .then(function (json) { QUESTS.unshift(json.quest); renderQuestListPage(); - openQuestDialogueModal(json.quest.id); + openQuestFieldsModal(json.quest.id); }); } @@ -82,22 +84,28 @@ function questDeleteFromList(questId) { }); } -// ---------- Modale "arbre de dialogue" ---------- -// Créée une seule fois (au premier appel), réutilisée ensuite — partagée -// entre la page dédiée et l'assistant "+ Action" de l'éditeur de -// collision, jamais dupliquée dans les templates. +// ---------- Deux modales distinctes ---------- +// 1. #questFieldsModal (taille normale) : "je crée" — titre/objectif/ +// récompense/statut/résultat, + un bouton qui ouvre... +// 2. #questDialogueModal (PLEIN ÉCRAN) : "j'ajoute les dialogues" — les +// 3 colonnes de répliques, rien d'autre. Étapes séparées demandées +// explicitement par l'utilisateur (pas un seul gros formulaire). +// Créées une seule fois chacune (au premier appel), réutilisées ensuite — +// partagées avec l'assistant "+ Action" de l'éditeur de collision, +// jamais dupliquées dans les templates. var _questModalOnUse = null; +var _questModalCurrentId = null; -function ensureQuestDialogueModal() { - var modal = document.getElementById('questDialogueModal'); +function ensureQuestFieldsModal() { + var modal = document.getElementById('questFieldsModal'); if (modal) return modal; modal = document.createElement('div'); modal.className = 'modal'; - modal.id = 'questDialogueModal'; + modal.id = 'questFieldsModal'; modal.innerHTML = - '' + - '