diff --git a/beesgospel/models.py b/beesgospel/models.py index e4fdcfb..8e32786 100644 --- a/beesgospel/models.py +++ b/beesgospel/models.py @@ -122,3 +122,7 @@ class ChantDoc(models.Model): def __str__(self): return f"Document {self.titre} pour le chant {self.chant}" + + @property + def fichier_son(self): + return self.fichier and self.fichier.name.endswith((".m4a", ".mp3", ".wav")) diff --git a/beesgospel/static/css/main.css b/beesgospel/static/css/main.css index f9c0a9c..cf13da3 100644 --- a/beesgospel/static/css/main.css +++ b/beesgospel/static/css/main.css @@ -127,3 +127,8 @@ tr.editable:hover .edit-button, tr.editable:hover .delete-button { display: inli height: 100%; } table.table-chants th.boutons { width: 3em; } +#modal_sound .modal-content { + background-color: #333; + color: white; +} +img.fichier_son { cursor: pointer; } diff --git a/beesgospel/static/js/main.js b/beesgospel/static/js/main.js index 3ec05b6..032b1a3 100644 --- a/beesgospel/static/js/main.js +++ b/beesgospel/static/js/main.js @@ -11,7 +11,19 @@ window.addEventListener('DOMContentLoaded', () => { let resp = confirm("Voulez-vous vraiment supprimer cette ligne ?"); if (!resp) { ev.preventDefault(); ev.stopImmediatePropagation(); } }); - + attachHandlerSelector(document, 'img.fichier_son', 'click', (ev) => { + const soundModal = document.getElementById('modal_sound'); + soundModal.querySelector("audio").src = ev.target.dataset.path; + soundModal.querySelector("#download-link").href = ev.target.dataset.path; + const myModal = new bootstrap.Modal(soundModal); + myModal.show(); + }); + attachHandlerSelector(document, '#modal_sound', 'hidden.bs.modal', (ev) => { + const audio = ev.target.querySelector("audio"); + audio.pause(); // Stop playing + audio.currentTime = 0; + audio.src = ""; + }) const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]') const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)) }) diff --git a/templates/membres/liste_chants.html b/templates/membres/liste_chants.html index 83de253..b27553b 100644 --- a/templates/membres/liste_chants.html +++ b/templates/membres/liste_chants.html @@ -10,7 +10,9 @@