Autor muss als Entwurf speichern

Das Bludit CMS ist Multiuserfähig und kann drei Rollen verwalten. Es kann sinnvoll sein, die Rolle Autor dazu zu zwingen, Beiträge als Entwurf zu speichern.

Inhalt

Bludit Rollen Admin, Mitarbeiter und Autor

Das CMS Bludit ist in der Lage die Rollen Admin, Mitarbeiter und Autor zu behandeln. Jede dieser Rollen darf Beiträge ungesehen veröffentlichen, das ist eher ungünstig. Sinnvoller ist es, wenn es mindestens eine Rolle im Rechtesystem des Bludit gibt, die zwar Beiträge erstellen darf, jedoch nicht veröffentlichen kann.

Für diesen Zweck lässt sich die Rolle des Autors in zwei Bludit-Controllern leicht anpassen. Der Autor ist die geringste Berechtigung im CMS Bludit.

Neuanlage eines Posts

Für die Neuanlage eines Beitrags ist die Datei:

admin/controllers/new-content.php

Code

zuständig. Dieses PHP Script wird von Bludit CMS gestartet, wenn der User einen ganz neuen Beitrag verfasst. Ab Zeile 23...29 können Sie das folgende Codeschnipsel einfügen:

20  ...
21  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
22
23      // === start: neuer Code ===
23      if ($login->role() == 'author') {
24          $_POST['type'] = 'draft';
25          $syslog->add(array('dictionaryKey'=>'<kbd>Rolle</kbd>','notes'=>'Neuer Entwurf' ));
26          Alert::set('Als <strong>Entwurf</strong> angelegt');
27      }
29      // === ende: neuer Code ===
28  ...

Code

Die Zeile 23 fragt die aktuelle Rolle des angemeldeten Users ab, ist er ein Autor, wird der Post in Zeile 24 den Status draft (Entwurf) versetzt. Die Zeile 25 gibt ein Log-Eintag im Dashboard aus und die Zeile 26 erzeugt eine Hinweismeldung für den Autor. Der Log-Eintrag im Dashboard kann dem Admin helfen, Beiträge von Autoren frei zu geben.

Bearbeiten eines Posts

Für das editieren bestehender Posts ist das PHP-Script:

admin/controllers/edit-content.php

Code

zuständig und muss um das gleiche Codesegment ab Zeile 48...53 ergänzt werden.

39  ...
40  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
41  
42  if ($_POST['type']==='delete') {
43      if (deletePage($_POST['key'])) {
44          Alert::set( $L->g('The changes have been saved') );
45      }
46  } else {
47
48      // === start: neuer Code ===
49      if ($login->role() == 'author') {
50          $_POST['type'] = 'draft';
51          $syslog->add(array('dictionaryKey'=>'<kbd>Rolle</kbd>','notes'=>'Entwurf bearbeitet' ));
52      }
53      // === ende: neuer Code ===
54  ...

Code

Das Codeschnipsel ist im wesentlichen vollkommen identisch mit dem Abschnitt davor, jedoch fehlt der Alert::set(), da im nachfolgenden Code bereits eine Meldung gesetzt wird und das System lediglich die letzte Meldung anzeigt. Wichtiger ist es ein Log für die Anzeige im Journal des Dashboards anzuzeigen.

Mit nur drei Zeilen Code erstellen Sie ein einfaches Freigabeverfahren für die Rolle Autor, in Folge dessen müssen Autoren ihre Beiträge durch die Rolle Mitarbeiter oder die Rolle Admin freigeben lassen. Autoren können Beiträge ausschließlich als Entwurf speichern und bearbeiten.


Oliver Lohse
2023-12-21
Konstanten
post
0