Mensaje de confirmación al eliminar elementos en el administrador de medios

8

Me gustaría recibir un mensaje de confirmación cuando elimine los elementos del administrador de medios. Por ahora, para eliminar una imagen, solo tengo que hacer clic en la cruz superior derecha y la imagen desaparece: si me equivoco, ¡qué pena! Miré las opciones del administrador de medios pero no pude ver nada como lo que estaba buscando.

¿Cómo podría obtener un mensaje de confirmación o una ventana emergente que solicitará una confirmación antes de eliminar el elemento?

¡Muchas gracias por tu ayuda!

JinSnow
fuente
He actualizado la respuesta con instrucciones sobre dónde debe agregar el código. Olvidé que los archivos multimedia se muestran usando un Iframe y se cargan usando la component.phpvista.
johanpw

Respuestas:

8

Puede agregar unas pocas líneas de jQuery a su plantilla de administración (o agregarla usando un complemento que se active solo para el área de administración):

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

Eso captará el clic en el botón Eliminar Xy mostrará un cuadro de diálogo.

Editar:
los archivos multimedia se muestran con un Iframe, que a su vez se carga con el &tmpl=componentparámetro. Por lo tanto, el código anterior debe agregarse al archivo administrator\templates\YOURADMINTEMPLATE\component.php(dentro de una <script>etiqueta).

Eso debería funcionar :)

johanpw
fuente
Gracias por la edición, @Lodder, pero de acuerdo con la API jQuery , .click()es un acceso directo para .on( "click", handler ). ¿Cuál es la diferencia (y cuál es la "mejor práctica") en este caso?
johanpw
2
Esta .on()es la forma recomendada de hacer un enlace de eventos a partir de una versión particular (no recuerdo exactamente) de jQuery. Utiliza menos memoria y es mejor cuando se utilizan enfoques dinámicos. Por supuesto, no es obligatorio, pero definitivamente ahora es el método preferido. Para algo tan simple como el código que ha escrito, entonces click()estaría bien, pero me gusta mantener la prueba del futuro solo en caso de que se pueda agregar algo ... + 1 por cierto :)
Lodder
Gracias @johanpw por tu respuesta! He agregado su código a administrador \ templates \ isis \ js \ template.js pero no está haciendo nada. ¿En qué archivo de mi plantilla de administrador debo agregarlo? ¡Gracias!
JinSnow
2
Para ampliar la respuesta de Lodder, el método on () utiliza eventos delegados. El beneficio principal de los eventos delegados se agregará a elementos secundarios que aún no se han agregado al DOM. Usando $ (document) .on ('click', 'a.delete-item', callbackFunction); garantiza que el evento click se disparará incluso en contenido generado dinámicamente que no se haya agregado al DOM. Muy útil para sitios web pesados ​​de AJAX.
Brian Bolli
Gracias por las explicaciones Siempre hay algo nuevo que aprender.
johanpw