Message de confirmation lors de la suppression d'éléments dans le gestionnaire de médias


8

Je souhaite recevoir un message de confirmation lorsque je supprime les éléments du gestionnaire multimédia. Pour l'instant, pour supprimer une image, il me suffit de cliquer sur la croix en haut à droite et l'image disparaît: si je me trompe, tant pis! J'ai examiné les options du gestionnaire de médias, mais je n'ai rien vu de tel que ce que je recherche.

Comment puis-je obtenir un message de confirmation ou une fenêtre contextuelle qui demandera une confirmation avant de supprimer l'élément?

Merci beaucoup pour votre aide!


J'ai mis à jour la réponse avec des instructions sur l'endroit où vous devez ajouter le code. J'ai oublié que les fichiers multimédias sont affichés à l'aide d'un Iframe et chargés à l'aide de la component.phpvue.
johanpw

Réponses:


8

Vous pouvez ajouter quelques lignes de jQuery à votre modèle d'administration (ou l'ajouter à l'aide d'un plugin qui se déclenche uniquement pour la zone d'administration):

jQuery("a.delete-item").on('click', function(e){
    if (confirm("Do you want to delete this image?") != true) {
        e.preventDefault();
    }
});

Cela va attraper le clic sur le bouton Supprimer Xet afficher une boîte de dialogue.

Modifier:
les fichiers multimédias sont affichés à l'aide d'un Iframe, qui à son tour est chargé à l'aide du &tmpl=componentparamètre. Le code ci-dessus doit donc être ajouté au fichier administrator\templates\YOURADMINTEMPLATE\component.php(à l'intérieur d'une <script>balise).

Cela devrait fonctionner :)


Merci pour la modification, @Lodder, mais selon l' API jQuery , .click()est un raccourci pour .on( "click", handler ). Quelle est la différence (et quelle est la "meilleure pratique") dans ce cas?
johanpw

2
Il .on()s'agit de la méthode recommandée pour effectuer la liaison d'événements à partir d'une version particulière (je ne me souviens pas exactement de laquelle) de jQuery. Il utilise moins de mémoire et est meilleur pour les approches dynamiques. Ce n'est bien sûr pas obligatoire, mais c'est maintenant la méthode préférée. Pour quelque chose d'aussi simple que le code que vous avez écrit, ce click()serait parfait, mais j'aime garder la chose à l'épreuve du temps au cas où quelque chose pourrait y être ajouté ... + 1 en passant :)
Lodder

Merci @johanpw pour votre réponse! J'ai ajouté votre code à administrator \ templates \ isis \ js \ template.js mais il ne fait rien. Dans quel fichier de mon modèle d'administration je suis censé l'ajouter? Merci!
JinSnow

2
Pour développer la réponse de Lodder, la méthode on () utilise des événements délégués. Le principal avantage des événements délégués sera ajouté aux éléments enfants non encore ajoutés au DOM. Utilisation de $ (document) .on ('click', 'a.delete-item', callbackFunction); garantit que l'événement click se déclenchera même sur le contenu généré dynamiquement non ajouté au DOM. Très utile pour les sites Web lourds AJAX.
Brian Bolli

Merci pour les explications. Il y a toujours quelque chose de nouveau à apprendre.
johanpw
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.