Сообщение с подтверждением при удалении элементов в медиа-менеджере

8

Я хотел бы получить подтверждающее сообщение, когда я удаляю элементы медиа-менеджера. На данный момент, чтобы удалить изображение, мне просто нужно нажать на правый верхний крестик, и изображение исчезнет: если я ошибусь, что ж, очень плохо! Я просмотрел параметры медиа-менеджера, но ничего не увидел, например, что я ищу.

Как я могу получить подтверждающее сообщение или всплывающее окно с запросом подтверждения перед удалением элемента?

Большое спасибо за вашу помощь!

JinSnow
источник
Я обновил ответ с инструкциями относительно того, где вы должны добавить код. Я забыл, что медиа-файлы отображаются с помощью Iframe, и загружаются с использованием component.phpпредставления.
Johanpw

Ответы:

8

Вы можете добавить несколько строк jQuery в свой шаблон администратора (или добавить его с помощью плагина, который запускается только для области администратора):

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

Это поймает щелчок на кнопке удаления Xи отобразит диалоговое окно.

Редактировать:
мультимедийные файлы отображаются с использованием Iframe, который, в свою очередь, загружается с использованием &tmpl=componentпараметра. Поэтому приведенный выше код необходимо добавить в файл administrator\templates\YOURADMINTEMPLATE\component.php(внутри <script>тега).

Это должно работать :)

johanpw
источник
Спасибо за редактирование, @Lodder, но в соответствии с API JQuery , .click()это ярлык для .on( "click", handler ). Какая разница (и какова «лучшая практика») в этом случае?
Johanpw
2
.on()Является рекомендуемым способом сделать событие связывания от конкретной (не помню , какой именно) версии JQuery. Он использует меньше памяти и лучше, когда для динамических подходов. Это не обязательно обязательно, но определенно сейчас предпочтительный метод. Для чего-то столь же простого, как код, который вы написали, тогда click()было бы просто замечательно, но я бы хотел, чтобы в будущем все было просто, если что-нибудь может быть добавлено к нему ... + 1, кстати :)
Lodder
Спасибо @johanpw за ваш ответ! Я добавил ваш код в administrator \ templates \ isis \ js \ template.js, но он ничего не делает. В каком файле моего админ-шаблона я должен его добавить? Спасибо!
JinSnow
2
Чтобы расширить ответ Лоддера, метод on () использует делегированные события. Основные преимущества делегируемых событий будут добавлены к дочерним элементам, которые еще не добавлены в DOM. Использование $ (document) .on ('click', 'a.delete-item', callbackFunction); гарантирует, что событие click будет срабатывать даже для динамически генерируемого контента, не добавленного в DOM. Очень полезно для тяжелых сайтов AJAX.
Брайан Болли
Спасибо за объяснения. Всегда есть что-то новое для изучения.
Johanpw