FIx pour Babele 2.8.X
Validation JSON / validate (push) Successful in 17s
Release Creation / build (release) Successful in 58s

This commit is contained in:
2026-04-27 23:58:55 +02:00
parent df1e0b9952
commit 0d20d76db0
53 changed files with 9322 additions and 9028 deletions
+51
View File
@@ -399,6 +399,15 @@ export default class InnRoller {
message += `</div>`;
}
message += `</div>`;
// Bouton pour enregistrer dans le journal "Menus"
message += `<div class="inn-journal-action" style="margin-top:8px;text-align:right">`;
message += `<button type="button" class="inn-journal-btn" data-action="saveMenuToJournal"`;
message += ` data-menu-name="${menuName}">`;
message += `<i class="fas fa-book"></i> Enregistrer dans le journal "Menus"`;
message += `</button>`;
message += `</div>`;
message += `</div>`;
await ChatMessage.create({
@@ -407,4 +416,46 @@ export default class InnRoller {
whisper: ChatMessage.getWhisperRecipients("GM")
});
}
/**
* Enregistre le contenu d'un menu dans le journal FoundryVTT "Menus"
* @param {String} menuName - Nom du menu (ex: "Menu Commun")
* @param {String} content - HTML complet du message de tchat
*/
static async saveMenuToJournal(menuName, content) {
if (!game.user.isGM) {
ui.notifications.warn("Seul le MJ peut enregistrer dans le journal.");
return;
}
const journalName = "Menus";
let journal = game.journal.find(j => j.name === journalName);
if (!journal) {
journal = await JournalEntry.create({ name: journalName });
}
// Supprimer le bouton du contenu avant de l'enregistrer
const parser = new DOMParser();
const doc = parser.parseFromString(content, 'text/html');
doc.querySelectorAll('.inn-journal-action').forEach(el => el.remove());
const cleanContent = doc.body.innerHTML;
const now = new Date();
const dateStr = now.toLocaleDateString('fr-FR');
const pageName = `${menuName} (${dateStr})`;
await journal.createEmbeddedDocuments("JournalEntryPage", [{
name: pageName,
type: "text",
text: {
content: cleanContent,
format: CONST.JOURNAL_ENTRY_PAGE_FORMATS.HTML
}
}]);
// Ouvrir le journal sur la nouvelle page
const page = journal.pages.find(p => p.name === pageName);
journal.sheet.render(true, { pageId: page?.id });
ui.notifications.info(`Menu "${menuName}" enregistré dans le journal.`);
}
}
+17 -1
View File
@@ -18,7 +18,15 @@ export function initInn() {
// Enregistrer la commande dans le système WFRP4e si disponible
if (game.wfrp4e?.commands) {
console.log("Inn: Enregistrement de la commande /auberge");
// Patch warhammer-lib 3.0.2 bug: parseArgs crashes when no args provided
// (match.groups.args is undefined when user types command without arguments)
if (game.wfrp4e.commands.parseArgs && !game.wfrp4e.commands._parseArgsPatched) {
const _origParseArgs = game.wfrp4e.commands.parseArgs.bind(game.wfrp4e.commands);
game.wfrp4e.commands.parseArgs = function(command, text) {
return _origParseArgs(command, text ?? "");
};
game.wfrp4e.commands._parseArgsPatched = true;
}
game.wfrp4e.commands.add({
auberge: {
description: "Jets sur les tables d'auberge (FR)",
@@ -89,5 +97,13 @@ export function initInn() {
ui.notifications.warn("Seul le MJ peut utiliser les tables d'auberge.");
}
});
// Bouton "Enregistrer dans le journal Menus"
html.find('button[data-action="saveMenuToJournal"]').click(async (event) => {
event.preventDefault();
const btn = event.currentTarget;
const menuName = btn.dataset.menuName;
await InnRoller.saveMenuToJournal(menuName, message.content);
});
});
}