Mensagem de confirmação ao excluir itens no gerenciador de mídia

8

Gostaria de receber uma mensagem de confirmação quando excluir os itens do gerenciador de mídia. Por enquanto, para excluir uma imagem, basta clicar na cruz superior direita e a imagem desaparece: se eu cometer um erro, muito ruim! Examinei as opções do gerenciador de mídia, mas não consegui ver nada como o que estou procurando.

Como obter uma mensagem de confirmação ou um pop-up que solicita uma confirmação antes de excluir o item?

Muito obrigado por sua ajuda!

JinSnow
fonte
Atualizei a resposta com instruções sobre onde você deve adicionar o código. Esqueci que os arquivos de mídia são exibidos usando um Iframe e carregados usando a component.phpexibição.
johanpw

Respostas:

8

Você pode adicionar algumas linhas de jQuery ao seu modelo de administrador (ou adicioná-lo usando um plug-in que é acionado apenas para a área de administração):

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

Isso irá capturar o clique no botão excluir Xe exibir uma caixa de diálogo.

Editar:
os arquivos de mídia são exibidos usando um Iframe, que por sua vez é carregado usando o &tmpl=componentparâmetro O código acima deve, portanto, ser adicionado ao arquivo administrator\templates\YOURADMINTEMPLATE\component.php(dentro de uma <script>tag).

Isso deve funcionar :)

johanpw
fonte
Obrigado pela edição, @Lodder, mas de acordo com a API do jQuery , .click()é um atalho para .on( "click", handler ). Qual é a diferença (e qual é a "melhor prática") nesse caso?
johanpw
2
Essa .on()é a maneira recomendada de vincular eventos a partir de uma versão específica (não me lembro exatamente) do jQuery. Ele usa menos memória e é melhor para abordagens dinâmicas. É claro que não é obrigatório, mas definitivamente agora é o método preferido. Para algo tão simples quanto o código que você escreveu, click()seria ótimo, mas eu gosto de manter as coisas à prova de futuro, apenas no caso de que algo possa ser adicionado a ele ... + 1 por sinal :) +
Lodder
Obrigado @johanpw pela sua resposta! Adicionei seu código ao administrator \ templates \ isis \ js \ template.js, mas ele não está fazendo nada. Em qual arquivo do meu modelo de administrador devo adicioná-lo? Obrigado!
JinSnow
2
Para expandir a resposta de Lodder, o método on () usa eventos delegados. O benefício principal que está sendo delegado será adicionado aos elementos filhos ainda não adicionados ao DOM. Usando $ (document) .on ('clique', 'a.delete-item', callbackFunction); garante que o evento click será acionado mesmo em conteúdo gerado dinamicamente e não adicionado ao DOM. Muito útil para sites pesados ​​AJAX.
Brian Bolli
Obrigado pelas explicações. Sempre há algo novo para aprender.
Johanpw