Zum Inhalt

Verwendung im Admin (admin4)

viur-revision liefert eine fertige Vue-3-Komponente für das ViUR-admin4 mit, die die Revisions-Endpunkte des Moduls in eine Klick-Oberfläche verwandelt: eine Schaltfläche Revisionshistorie in der Handler-Leiste, die jede Revision auflistet und Redakteuren erlaubt, eine Revision anzusehen, wiederherzustellen oder zu löschen.

Die Komponente liegt im Ordner admin4/ dieses Repositorys.

Was sie tut

Die Schaltfläche erscheint in der Handler-Leiste eines Moduls und öffnet einen Dialog, der die Endpunkte von RevisionModule ansteuert:

Im Dialog Aufgerufener Endpunkt
Öffnen / Liste GET /<module>/list_revision
Vorschau einer Zeile GET /<module>/view_revision
Wiederherstellen einer Zeile POST /<module>/apply_revision (skey-geschützt)
Löschen einer Zeile POST /<module>/delete_revision (skey-geschützt)

Sie funktioniert sowohl im List-Handler (aktiv, wenn genau eine Zeile ausgewählt ist) als auch im Edit-Handler (nutzt die geöffnete Entität). Die Vorschau rendert jede Bone mit derselben boneLogic wie der List-Handler, sodass relationale und Code-Bones so aussehen wie überall sonst im Admin.

Installation

1. Komponente in den admin4-Build übernehmen

Kopiere revisionhistory.vue in deinen admin4-Quellbaum, z. B. nach src/components/handlerbaractions/revisionhistory.vue.

2. Als Handler-Leisten-Action registrieren

Registriere die Komponente in der App.vue deines Admins unter einem Schlüssel in handlerbar.actions (innerhalb von onMounted):

import RevisionHistory from "./components/handlerbaractions/revisionhistory.vue"

// …
dbStore.state["handlerbar.actions"] = {
  // …deine übrigen Actions…
  revisionhistory: RevisionHistory,
}

3. Am Server-Modul aktivieren

Der Admin zeigt die Schaltfläche nur für Module, deren adminInfo sie anfordert. Füge den Action-Namen zu actions hinzu und deklariere ihn als component- Custom-Action, die auf den in Schritt 2 registrierten Schlüssel zeigt:

from viur.core.prototypes import List
from viur.revision import RevisionModule

class Example(RevisionModule, List):
    adminInfo = {
        # …bestehendes adminInfo…
        "actions": ["revisionhistory"],
        "customActions": {
            "revisionhistory": {
                "action": "component",
                "component": "revisionhistory",
            },
        },
    }

Das ist die gesamte Verdrahtung: actions platziert die Schaltfläche in der Handler-Leiste, customActions[...].component sagt dem Admin, welche registrierte Vue-Komponente gerendert werden soll, und die Komponente spricht mit den Endpunkten, die RevisionModule ohnehin bereitstellt.

Zugriff

Jeder Endpunkt erfordert root oder <moduleName>-manage, die Schaltflächen sind also nur für Benutzer nützlich, die das Modul verwalten dürfen. Wer die Action überhaupt sieht, lässt sich bei Bedarf über den Standard-Schlüssel access an der Custom-Action einschränken.