Skip to content

MelisSmallBusiness

Erweiterung für Redaktionsteams des CMS — Benutzerrollen, ein Freigabe-Workflow, Versionierung von Seiten, Kommentare und Seitensperren, dazu eine TinyMCE-Medienbibliothek, bereitgestellt über das React-Backoffice. Paket melisplatform/melis-small-business.

Zweck

MelisSmallBusiness ergänzt den CMS-Seiteneditor um Werkzeuge für die Zusammenarbeit in kleinen Teams. Es bewahrt Versionen veröffentlichter Seiten auf (einen früheren Zustand wiederherstellen/anzeigen), steuert einen Inhalts-Workflow, bei dem eine Redakteurin die Freigabe anfragt und eine Prüferin sie erteilt oder ablehnt, hängt Kommentare an Seiten an, verhindert über eine Seitensperre, dass zwei Benutzer dieselbe Seite gleichzeitig bearbeiten, verwaltet ein eigenes Werkzeug für Benutzerrollen und liefert eine TinyMCE-basierte Medienbibliothek (MoxieManager) mit. Die Geschäftslogik bleibt serverseitig (Laminas-Dienste, CMS-Editor-Ereignisse); in v6 besteht die gesamte für Benutzer sichtbare Oberfläche aus einer Reihe von React-Bricks und modularen Beiträgen.

Aktivierung

Dies ist ein Standard-Laminas-Modul. Fügen Sie es zu config/melis.module.load.php hinzu:

php
return [
    // …
    'MelisSmallBusiness',
];

Es hängt von melis-core, melis-engine, melis-front und melis-cms ab, und seine Tabellen werden per dbdeploy erstellt (extra.dbdeploy = true). Jede der nachstehenden React-Oberflächen erscheint nur, wenn das Modul aktiv ist (Brick-Ermittlung über GET /melis/react-api/react-modules).

React-Oberflächen

Im React-Backoffice (/melis-react) liefert das Modul zwei Bricks und zwei modulare Beiträge ohne eigene Route mit.

OberflächeArtRoute / Host
Benutzerrollen (smallbusiness)native Voll-React-Oberfläche (Umschalter Neu/Alt)/melis-core/user-roles
Medienbibliothek (smallbusiness-medialib)iframe-Brick (MoxieManager)/melis-cms/media-library
Workflow-Modalgemeinsames Modal (window.__melisWorkflowModal)gerendert von News / Blog / CMS-Seiteneditor / Newsletter + Dashboard-Widget
Versionierung / Kommentare / SperreReiter + Banner im CMS-Seiteneditorbeigetragen zum Capability-Knoten meliscms_page
Rolle im Werkzeug „Benutzer“Spalte/Filter/Auswahl „Rolle“Host-Werkzeug „Benutzer“, gesteuert über useModuleActive('MelisSmallBusiness')

public/ui-react/brick.manifest.json deklariert beide Bricks; ui-react/src/brick.tsx registriert sie und veröffentlicht das Workflow-Modal als globale Window-Variable, sodass andere Bricks eine einzige gemeinsame Implementierung rendern können.

Werkzeug „Benutzerrollen“

Wo: Seitenleiste → MelisCore → User Roles (/melis-core/user-roles).

Eine Rolle ist ein benanntes Berechtigungsprofil, das einmal gespeichert (melis_core_user_role) und vielen Benutzern zugewiesen wird. Die Liste zeigt jede Rolle mit KPI-Karten (Rollen / Zugewiesen), Suche, einem Spaltenmanager, Export und einem Umschalter Neu / Alt (Alt = das klassische Werkzeug in einem iframe). Jede Zeile (ID, Name, Erstellt, Anzahl Benutzer) verfügt über Aktionen zum Bearbeiten/Löschen; eine Rolle, die Benutzern zugewiesen ist, kann nicht gelöscht werden.

Rollenliste im React-Backoffice

Das Bearbeiten einer Rolle öffnet einen Unterreiter mit einem Feld Role name und einem Baum Access rights, der den Berechtigungsbaum des Werkzeugs „Benutzer“ widerspiegelt (nach Bereich gruppierte TOOLS, pro Werkzeug List/Create/Edit/Delete/Export, dazu die Bereiche Pages und Dashboard-Plugins). Speichern persistiert den Namen und das urole_rights-XML.

Rolleneditor und sein Berechtigungsbaum

WARNING

Das Schreiben des Berechtigungs-XML einer Rolle erfordert einen Plattformadministrator (usr_admin); ein Nicht-Administrator, der eine Rolle bearbeitet, erhält beim Schreiben der Berechtigungen einen 403. Dies blockiert einen Weg zur Rechteausweitung (eine Rolle mit allen Rechten fälschen und sie sich anschließend selbst zuweisen). Der Name der Rolle kann von jedem geändert werden, der über das Recht edit des Werkzeugs verfügt.

Rolle im Werkzeug „Benutzer“

Wenn das Modul aktiv ist, erhält das MelisCore-Werkzeug Benutzer eine Spalte + Filter Rolle in der Liste und eine Auswahl Rolle im Benutzerformular (neben Status und Rechten). Das Dropdown wird gespeist von GET /melis/react-api/roles (der Auswahlliste von MelisCore); beim Speichern injiziert ein Listener die Fähigkeiten der Rolle erneut, damit sie nicht verloren gehen.

Benutzerformular mit der Auswahl „Rolle“

Medienbibliothek

Wo: Seitenleiste → MelisCms → Media library (/melis-cms/media-library).

Der erweiterte TinyMCE- / MoxieManager-Dateibrowser: Ordner links, Dateien rechts (Name, Größe, Typ, Datum), mit Erstellen, Hochladen, Listen-/Rasteransicht, Sortieren, Filtern und Verknüpfungen für Favoriten/Verlauf/ Hochgeladen. Die React-Seite ist eine dünne Hülle, die ein iframe über den gesamten Reiter zum älteren MoxieManager rendert (/melis/MelisSmallBusiness/js/tinyMCE/moxiemanager/index.php?lang=xx), sodass das Verhalten identisch mit dem klassischen Werkzeug ist — es besitzt keine eigene react-api.

Medienbibliothek — MoxieManager-Browser in einem React-Reiter

Workflow (Seitenfreigabe)

Der Workflow ermöglicht es einer Redakteurin, eine Freigabe anzufragen, und einer prüfenden Person, zu antworten. Das gleiche Modal öffnet sich aus dem CMS-Seiteneditor (Schaltfläche Workflow), den News- und Blog-Editoren sowie dem Dashboard- Widget. Es ist generisch über den Elementtyp — PAGE, NEWS, BLOG.

Wählen Sie unter Ask for validation eine Rolle, um alle Personen mit dieser Rolle zu benachrichtigen, oder „1 person only“, um ein Dropdown Benutzer einzublenden und eine einzelne Person anzusprechen, und dann Send request.

Workflow-Modal — eine einzelne Person anfragen

Der Reiter History des Modals listet jede Anfrage und Antwort auf (Datum, Status, An/Rolle, Von, Aktion). Eine Empfängerin einer offenen Anfrage erhält Schaltflächen Validate / Refuse und kann eine Notiz anhängen.

Workflow-Modal — Verlauf mit Validate/Refuse

Das Dashboard des Backoffice zeigt ein Workflow-Widget, das Anfragen auflistet, aufgeteilt in Users' demands / My demands mit den Unterreitern PAGE / NEWS; jede Zeile zeigt eine Status-Plakette (VALIDATED / REFUSED / Demand) und bietet Inline-Aktionen zum Freigeben (✓) / Ablehnen (✗) sowie zur Vorschau von an Sie gerichteten Anfragen.

Dashboard-Workflow-Widget

Versionierung & Kommentare (CMS-Seiteneditor)

Das Öffnen einer Seite im CMS-Editor fügt nach den nativen Reitern zwei SmallBusiness-Reiter hinzu:

  • Versionierung — eine seitenweise Liste der Momentaufnahmen der Seite (Nr., Name, Geändert am, Von) mit View / Restore / Rename pro Zeile. Bei jeder Veröffentlichung wird eine Momentaufnahme erstellt.

    Seiteneditor — Reiter „Versionierung“

  • Kommentare — die Aktivitäts-Zeitleiste der Seite, die Benutzerkommentare und Workflow-Ereignisse mischt (neueste zuerst), mit einem Feld „Add a comment“.

    Seiteneditor — Reiter „Kommentare“

Ein Banner Seitensperre + eine Schaltfläche Unlock erscheinen, wenn ein anderer Benutzer die Sperre der Seite hält.

react-api-Endpunkte

Alle unter /melis/react-api/…, Vertrag { success, data, error }. Die Controller befinden sich in diesem Modul (config/react-api.php + src/Controller/MelisReactApi*Controller.php).

ControllerBasis-RoutenSchutz
MelisReactApiRoleControllerGET /user-roles, /user-roles/stats, /user-roles/:id; POST /user-roles/save; DELETE /user-roles/delete/:idZugriff melissb_tool_userrole + Capability (Schreiben des Rechte-XML = nur Administrator)
MelisReactApiWorkflowControllerGET /workflow/roles, /workflow/users, /workflow/history; POST /workflow/asknur authentifiziert
MelisReactApiPageVersioningControllerGET /cms-page/versioningnur authentifiziert
MelisReactApiPageCommentsControllerGET /cms-page/comments, /cms-page/timeline; POST /cms-page/comments/savenur authentifiziert
MelisReactApiPageLockControllerGET /cms-page/lock; POST /cms-page/unlocknur authentifiziert

Workflow-Mutationen verwenden die bewährten älteren Endpunkte anstelle der react-api wieder: GET /melis/MelisSmallBusiness/MelisWorkflow/saveWorkflowActions (Validate / Refuse) und POST /melis/MelisSmallBusiness/MelisWorkflow/addWorkflowComments (eine Notiz hinzufügen). Der Kommentartext wird beim Speichern per HTMLPurifier bereinigt.

Capabilities

config/react.capabilities.php trägt die Schaltfläche und die Reiter des Seiteneditors unter dem gemeinsamen Schlüssel meliscms_page bei, der zu MelisCms gehört (zusammengeführt, sodass MelisCms nichts von SB wissen muss):

ArtSchlüsselBeschriftung
actionworkflowSchaltfläche Workflow
actionunlockSchaltfläche Unlock
tabmelissb_page_versioningReiter Versionierung
tabmelissb_page_commentsReiter Kommentare

CmsPage.tsx filtert diese Reiter / blendet diese Schaltflächen über useCaps('meliscms_page').can(cap) aus. Das Werkzeug „Rollen“ selbst ist unter melissb_tool_userrole verschlüsselt und die Medienbibliothek unter melissb_medialib.

Datenbanktabellen

Erstellt durch install/dbdeploy/126618_melis_sb_install.sql.

TabelleRolle
melis_sb_page_versioningArchivierte Kopien veröffentlichter Seiten (Grundlage des Reiters „Versionierung“).
melis_sb_workflowWorkflow-Datensätze pro Element.
melis_sb_workflow_eventsWorkflow-Ereignisse (anfragen / freigeben / ablehnen).
melis_sb_page_commentAn eine Seite angehängte Kommentare (Kommentartyp 1 = PAGE, 2 = WORKFLOW).
melis_sb_page_comment_typeKommentartypen.
melis_sb_page_lockedAktive Seitensperren (welcher Benutzer welche Seite bearbeitet).
melis_core_user_roleBenannte Rollen (urole_id, urole_name, urole_creation_date, urole_rights-XML).

Wichtige Dienste

Dienst-AliasRolle
MelisEnginePageDas Modul überschreibt den Seitendienst der Engine mit MelisSBPageService; auf der Route für die Versionsvorschau gibt es den versionierten Baum aus melis_sb_page_versioning zurück, andernfalls verhält es sich wie das übergeordnete Element.
MelisSBPageCommentServiceSeitenkommentare: getPageComments() / setPageComments().

WARNING

Indem dieses Modul MelisEnginePage mit einer eigenen Klasse aliasiert, ersetzt es den Seitendienst des Kerns für die gesamte Anwendung, solange es aktiviert ist. Behalten Sie dies bei der Reihenfolge der Module im Hinterkopf.

Der Workflow versendet drei Backoffice-E-Mails (app.emails.php): WF_DEMAND, WF_VALIDATED, WF_REFUSED (Tags USER_TO, USER_FROM, TYPE, DETAILS).

Wichtige Dateien

BelangPfad
Modul-Bootstrap & Listenersrc/Module.php, src/Listener/
react-api-Routen + Invokablesconfig/react-api.php
react-api-Controllersrc/Controller/MelisReactApi{Role,Workflow,PageVersioning,PageComments,PageLock}Controller.php
Capabilities-Beitragconfig/react.capabilities.php
Seitendienst (Engine-Override)src/Service/MelisSBPageService.php
Kommentardienstsrc/Service/MelisSBPageCommentService.php
React-Bricks (Quelle)ui-react/src/ (brick.tsx, UserRolePage.tsx, MediaLibraryPage.tsx, WorkflowModal.tsx, RolesRightsTree.tsx)
Gebautes Bundlepublic/ui-react/brick.js + brick.manifest.json
Installations-SQLinstall/dbdeploy/126618_melis_sb_install.sql