Bestätigungsmeldung beim Löschen von Elementen im Medienmanager

8

Ich möchte eine Bestätigungsnachricht erhalten, wenn ich die Elemente im Medienmanager lösche. Um ein Bild zu löschen, muss ich nur auf das Kreuz oben rechts klicken und das Bild ist verschwunden: Wenn ich einen Fehler mache, schade! Ich habe mir die Optionen des Medienmanagers angesehen, konnte aber nichts sehen, wonach ich suche.

Wie kann ich eine Bestätigungsnachricht oder ein Popup erhalten, in dem eine Bestätigung angefordert wird, bevor der Artikel gelöscht wird?

Vielen dank für Deine Hilfe!

JinSnow
quelle
Ich habe die Antwort mit Anweisungen aktualisiert, wo Sie den Code hinzufügen sollten. Ich habe vergessen, dass die Mediendateien mit einem Iframe angezeigt und über die component.phpAnsicht geladen werden .
Johanpw

Antworten:

8

Sie können Ihrer Admin-Vorlage einige Zeilen jQuery hinzufügen (oder sie mit einem Plugin hinzufügen, das nur für den Admin-Bereich ausgelöst wird):

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

Dadurch wird der Klick auf die Schaltfläche Löschen abgefangen Xund ein Dialogfeld angezeigt.

Bearbeiten:
Die Mediendateien werden mit einem Iframe angezeigt, der wiederum mit dem &tmpl=componentParameter geladen wird. Der obige Code muss daher zur Datei hinzugefügt werden administrator\templates\YOURADMINTEMPLATE\component.php(innerhalb eines <script>Tags).

Das sollte funktionieren :)

johanpw
quelle
Vielen Dank für die Bearbeitung, @Lodder, sondern nach dem jQuery API , .click()ist eine Abkürzung für .on( "click", handler ). Was ist der Unterschied (und was ist "Best Practice") in diesem Fall?
Johanpw
2
Dies .on()ist die empfohlene Methode zum Binden von Ereignissen ab einer bestimmten (kann mich nicht genau erinnern) Version von jQuery. Es benötigt weniger Speicher und ist besser für dynamische Ansätze. Es ist natürlich nicht obligatorisch, aber definitiv jetzt die bevorzugte Methode. Für etwas so Einfaches wie den Code, den Sie geschrieben haben, click()wäre das in Ordnung, aber ich halte die Sache gerne zukunftssicher, nur für den Fall, dass etwas hinzugefügt wird ... + 1 übrigens :)
Lodder
Danke @johanpw für deine Antwort! Ich habe Ihren Code zu Administrator \ templates \ isis \ js \ template.js hinzugefügt, aber er macht nichts. In welche Datei meiner Admin-Vorlage soll ich sie einfügen? Vielen Dank!
JinSnow
2
Um die Antwort von Lodder zu erweitern, verwendet die on () -Methode delegierte Ereignisse. Der Hauptvorteil delegierter Ereignisse wird untergeordneten Elementen hinzugefügt, die dem DOM noch nicht hinzugefügt wurden. Verwenden von $ (document) .on ('click', 'a.delete-item', callbackFunction); garantiert, dass das Klickereignis auch bei dynamisch generierten Inhalten ausgelöst wird, die nicht zum DOM hinzugefügt wurden. Sehr nützlich für AJAX-Websites.
Brian Bolli
Danke für die Erklärungen. Es gibt immer etwas Neues zu lernen.
Johanpw