Messaggio di conferma quando si eliminano elementi in Media Manager


8

Vorrei ricevere un messaggio di conferma quando elimino gli elementi da Media Manager. Per ora, per eliminare un'immagine, devo solo fare clic sulla croce in alto a destra e l'immagine scompare: se commetto un errore, peccato davvero! Ho esaminato le opzioni di Media Manager ma non sono riuscito a vedere nulla come quello che sto cercando.

Come posso ottenere un messaggio di conferma o un popup che chiederà una conferma prima di eliminare l'elemento?

Grazie mille per il vostro aiuto!


Ho aggiornato la risposta con le istruzioni su dove aggiungere il codice. Ho dimenticato che i file multimediali vengono visualizzati utilizzando un Iframe e caricati utilizzando la component.phpvista.
johanpw,

Risposte:


8

È possibile aggiungere alcune righe di jQuery al modello di amministrazione (o aggiungerlo utilizzando un plug-in che viene attivato solo per l'area di amministrazione):

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

Ciò catturerà il clic sul pulsante Elimina Xe visualizzerà una finestra di dialogo.

Modifica:
i file multimediali vengono visualizzati utilizzando un Iframe, che a sua volta viene caricato utilizzando il &tmpl=componentparametro. Il codice sopra deve quindi essere aggiunto al file administrator\templates\YOURADMINTEMPLATE\component.php(all'interno di un <script>tag).

Dovrebbe funzionare :)


Grazie per la modifica, @Lodder, ma secondo l' API jQuery , .click()è una scorciatoia per .on( "click", handler ). Qual è la differenza (e quali sono le "migliori pratiche") in questo caso?
johanpw,

2
Questo .on()è il modo consigliato per eseguire l'associazione di eventi a partire da una versione particolare (non ricordo esattamente) di jQuery. Utilizza meno memoria ed è migliore quando si tratta di approcci dinamici. Naturalmente non è obbligatorio, ma sicuramente ora il metodo preferito. Per qualcosa di così semplice come il codice che hai scritto, allora click()andrebbe bene, ma mi piace tenere le cose a prova di futuro solo nel caso in cui qualcosa possa essere aggiunto ad esso ... + 1 a proposito :)
Lodder

Grazie @johanpw per la tua risposta! Ho aggiunto il tuo codice all'amministratore \ templates \ isis \ js \ template.js ma non sta facendo nulla. In quale file del mio modello di amministratore dovrei aggiungerlo? Grazie!
JinSnow

2
Per espandere la risposta di Lodder, il metodo on () utilizza eventi delegati. Il vantaggio principale derivante dagli eventi delegati verrà aggiunto agli elementi figlio non ancora aggiunti al DOM. Utilizzo di $ (document) .on ('click', 'a.delete-item', callbackFunction); garantisce che l'evento click si attiverà anche su contenuti generati dinamicamente non aggiunti al DOM. Molto utile per i siti Web pesanti AJAX.
Brian Bolli,

Grazie per le spiegazioni C'è sempre qualcosa di nuovo da imparare.
johanpw,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.