Pesan konfirmasi saat menghapus item di manajer media

8

Saya ingin memiliki pesan konfirmasi ketika saya menghapus item yang manajer media. Untuk saat ini, untuk menghapus gambar, saya hanya perlu mengklik tanda silang kanan atas dan gambar itu hilang: jika saya melakukan kesalahan, terlalu buruk! Saya melihat ke opsi manajer media tetapi saya tidak bisa melihat apa pun seperti apa yang saya cari.

Bagaimana saya bisa mendapatkan pesan konfirmasi atau popup yang akan meminta konfirmasi sebelum menghapus item?

Terima kasih banyak atas bantuan Anda!

JinSnow
sumber
Saya telah memperbarui jawabannya dengan instruksi ke mana Anda harus menambahkan kode. Saya lupa bahwa file media ditampilkan menggunakan Iframe, dan dimuat menggunakan component.phptampilan.
johanpw

Jawaban:

8

Anda dapat menambahkan beberapa baris jQuery ke templat admin Anda (atau menambahkannya menggunakan plugin yang hanya diaktifkan untuk area admin):

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

Itu akan menangkap klik pada tombol hapus Xdan menampilkan kotak dialog.

Sunting:
File media ditampilkan menggunakan Iframe, yang pada gilirannya dimuat menggunakan &tmpl=componentparameter. Karena itu kode di atas harus ditambahkan ke file administrator\templates\YOURADMINTEMPLATE\component.php(di dalam <script>tag).

Itu seharusnya bekerja :)

johanpw
sumber
Terima kasih atas hasil editnya, @Lodder, tetapi menurut jQuery API , .click()adalah jalan pintas untuk .on( "click", handler ). Apa bedanya (dan apa "praktik terbaik") dalam kasus ini?
johanpw
2
Ini .on()adalah cara yang disarankan untuk melakukan penjilidan acara pada versi jQuery tertentu (tidak ingat persis mana). Ini menggunakan lebih sedikit memori dan lebih baik ketika untuk pendekatan dinamis. Ini tentu saja tidak wajib, tetapi jelas sekarang metode yang disukai. Untuk sesuatu yang sederhana seperti kode yang Anda tulis, maka click()akan baik-baik saja, tapi saya suka menyimpan bukti masa depan hanya memetikan apa pun yang dapat ditambahkan ke dalamnya ... +1 by the way :)
Lodder
Terima kasih @johanpw atas jawaban Anda! Saya telah menambahkan kode Anda ke administrator \ templates \ isis \ js \ template.js tetapi tidak melakukan apa-apa. Di file mana dari template admin saya saya harus menambahkannya? Terima kasih!
JinSnow
2
Untuk memperluas jawaban Lodder, metode on () menggunakan acara yang didelegasikan. Manfaat utama yang didelegasikan acara akan ditambahkan ke elemen anak yang belum ditambahkan ke DOM. Menggunakan $ (dokumen) .on ('klik', 'a.delete-item', callbackFunction); menjamin acara klik akan diaktifkan bahkan pada konten yang dihasilkan secara dinamis yang tidak ditambahkan ke DOM. Sangat berguna untuk situs web AJAX yang berat.
Brian Bolli
Terima kasih atas penjelasannya. Selalu ada sesuatu yang baru untuk dipelajari.
johanpw