Allow to delete contests
All checks were successful
CI / scan_ruby (push) Successful in 21s
CI / scan_js (push) Successful in 15s
CI / lint (push) Successful in 16s
CI / test (push) Successful in 40s

This commit is contained in:
sto
2026-03-11 09:33:35 +01:00
parent 54cd8cdcb0
commit 8dc45a2ca2
5 changed files with 32 additions and 2 deletions

View File

@@ -0,0 +1,18 @@
.modal id="#{modal_id}" tabindex=-1 style="position:fixed; background-color: rgba(0, 0, 0, 0.5)"
.modal-dialog.modal-dialog-centered
.modal-content style="background-color: white;width: 100%"
.modal-header
.modal-title
= modal_title
button.btn-close type="button" id="#{modal_id}_close"
.modal-body
= modal_text
.modal-footer
= link_to t("helpers.buttons.confirm"), path, data: { turbo_method: :delete }, class: "btn btn-danger"
javascript:
document.getElementById("#{modal_id}_close").addEventListener('click', (e) => {
document.getElementById("#{modal_id}").style.display = "none";
})
document.getElementById("#{modal_id}_button").addEventListener('click', (e) => {
document.getElementById("#{modal_id}").style.display = "block";
})

View File

@@ -27,7 +27,6 @@
= t("contests.scoreboard.hide_offline") = t("contests.scoreboard.hide_offline")
javascript: javascript:
document.getElementById('offline').addEventListener('change', (e) => { document.getElementById('offline').addEventListener('change', (e) => {
console.log('changed');
if (e.target.checked) addParam('hide_offline', e.target.checked); if (e.target.checked) addParam('hide_offline', e.target.checked);
else removeParam('hide_offline'); else removeParam('hide_offline');
}) })

View File

@@ -32,3 +32,6 @@
.row.mt-4 .row.mt-4
.col .col
= form.submit t("helpers.buttons.update"), class: "btn btn-primary" = form.submit t("helpers.buttons.update"), class: "btn btn-primary"
button.btn.btn-danger.ms-3 type="button" id="contest_deletion_modal_button"
= t("contests.modals.destroy.button")
= render "modal", path: contest_path(@contest), modal_title: t("contests.modals.destroy.title", contest: @contest.name), modal_text: t("contests.modals.destroy.text", contest: @contest.name), modal_id: "contest_deletion_modal"

View File

@@ -202,6 +202,11 @@ en:
title: Welcome %{username}! title: Welcome %{username}!
manage_contests: Manage my contests manage_contests: Manage my contests
new_contest: Create a new contest new_contest: Create a new contest
modals:
destroy:
button: Delete contest
text: You are about to delete the contest %{contest} and all its related data (participants, puzzles, ...). This action is non reversible, are you sure to want to proceed?
title: Deletion of contest %{contest}
nav: nav:
categories: Participant categories categories: Participant categories
categories_description: Once you add categories, you will be able to assign them to participants on their profiles, and a filter for categories will be available on the public scoreboard categories_description: Once you add categories, you will be able to assign them to participants on their profiles, and a filter for categories will be available on the public scoreboard

View File

@@ -173,6 +173,11 @@ fr:
title: Bienvenue %{username} ! title: Bienvenue %{username} !
manage_contests: Mes concours de puzzle manage_contests: Mes concours de puzzle
new_contest: Créer un nouveau concours new_contest: Créer un nouveau concours
modals:
destroy:
button: Supprimer le concours
text: Tu t'apprête à supprimer le concours %{contest} et toutes ses données liées (participant.e.s, puzzles, ...). Cette action est définitive et non-réversible, es-tu sûr.e de vouloir procéder ?
title: Suppression du concours %{contest}
nav: nav:
categories: Catégories de participant.e.s categories: Catégories de participant.e.s
categories_description: Après avoir ajouté des catégories, elles pourront être attributées aux participant.e.s sur leurs profils, et un filtre sera disponible sur le classement public categories_description: Après avoir ajouté des catégories, elles pourront être attributées aux participant.e.s sur leurs profils, et un filtre sera disponible sur le classement public