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.