Login / Status
developer.Resource
Home . Documentation . Document Library . Tutorials
Sponsors
hosted by punkt.deTYPO3 and Open Source Magazine

1.13. Ein einfacher News-Workflow

Manchmal benötigen Sie einfach mehr, als nur einzelne Rechte an Benutzer zu vergeben, die bestimmte Teile der Website bearbeiten. Sie benötigen vielleicht einen bestimmten Kreislauf, in dem die Aufgabe, Inhalte zu erstellen, an einen Benutzer gegeben wird, dieser seine Arbeit aber nicht veröffentlichen kann, ohne dass sie von jemandem begutachtet wurde, der für das Veröffentlichen von Inhalten verantwortlich ist. Einen solchen Genehmigungskreislauf verwirklichen Sie mit Workflows. In anderen Fällen kann dies auch ein sinnvoller Weg sein, um gemeinsam an Inhalten zu arbeiten, weil Sie diese innerhalb der Arbeitsgruppe hin- und zurückschicken können.

Wie sieht das nun in der Praxis aus? Auf der "FC Bigfeet" Site finden Sie bereits einen einfachen Workflow. Er wurde so entworfen, dass ein Benutzer namens "news" die Aufgabe erhält (To-Do-Eintrag), einen News-Eintrag für die Website zu erstellen. Wenn er dies getan hat, schickt der die To-Do Aufgabe zurück an den Absender, der den Inhalt überprüfen wird und - wenn alles in Ordnung ist - den Prozess finalisiert, was bedeutet, dass er automatisch in das News Archiv verschoben und womöglich auch auf der Startseite angezeigt wird!

Lassen Sie uns zunächst einen Blick auf den Benutzer "news" werfen. Melden Sie sich dafür als Benutzer "news" an (Passwort: "football"):

Sie waren gewohnt, das Page Modul und einige andere Dinge vorzufinden - aber für den "news" Benutzer wurde nur das Task Center Modul eingerichtet! Das reicht auch völlig aus, denn er muss lediglich den Posteingang seiner Aufgaben überprüfen. Dieser ist im Moment leer, ihm wurde also noch keine Aufgabe übertragen.

Einen neuen Workflow-Prozess starten

In Ordnung, melden Sie sich wieder ab und kehren Sie zum Backend als "admin" zurück. Sie starten nun einen neuen Workflow-Prozess, in dem Sie dem Benutzer "news" eine Aufgabe zuteilen.

Aufgaben erstellen

Auf geht's zum Task Center Modul! Klicken Sie auf "Tasks"...

... und erstellen einen neuen Workflow. Es gibt bisher nur eine Art von Workflows (Sie werden später noch sehen, wie Sie andere Workflows einrichten):

Nun müssen Sie noch ein Formular ausfüllen:

Das wichtigste ist, dass Sie ein Ziel für die Aufgabe festlegen (#1). Dies kann entweder eine Gruppe oder ein bestimmter Benutzer sein. Wir haben wie geplant den Benutzer "news" gewählt. Ein Titel (#2) und eine Beschreibung (#4) könnte auch nicht schaden - es ist die einzige Aufgabenbeschreibung, die der Ziel Benutzer sehen wird - deshalb sorgen Sie dafür, dass er weiß, was er tun soll, wenn er Sie liest. Die Deadline (#3) für die Aufgabe wird Ihnen später helfen, den Überblick über Aufgaben zu halten, die den vereinbarten Zeitraum überschreiten (natürlich hoffentlich keine).

Schließlich können Sie dafür sorgen, dass der Ziel-Benutzer eine Email (#5) erhält, wenn Sie auf den "Create"-Button klicken - sinnvoll, wenn der Ziel-Benutzer kein TYPO3-Junkie ist, der ständig angemeldet ist, in dem Fall ist es eine gute Idee, ihm eine Mail zu schicken! (Dazu muss die PHP-Funktion mail() funktionieren!).

Nach dem Erstellen der Aufgabe, landen Sie wieder in der Übersicht über die To-Do Elemente:

Die "Outgoing To-Do items" sind diejenigen, die Sie erstellt haben und auf eine Bearbeitung durch jemand anderen warten. In diesem Fall vom Benutzer "news".

Klicken Sie auf den Titel, wenn Sie sich die Details ansehen möchten:

Wie Sie sehen können, sind dort alle Informationen untergebracht. Bisher wurde vom Benutzer "news" noch kein Status angelegt.

Eine Aufgabe annehmen

Melden Sie sich als Benutzer "news" an:

Tipp: Wenn Sie ein neues Browser Fenster des Internet Explorers über das Icon auf Ihrem Desktop starten (und nicht STRG+N benutzen), können Sie sich als ein anderer Benutzer - dem "news" Benutzer - anmelden und haben dann zwei Fenster mit unterschiedlichen Benutzern. Dies funktioniert deshalb, weil der Internet Explorer keine Cookies zwischen diesen beiden Fenstern teilt.

Im Task Center wird der Benutzer "news" folgendes sehen:

Gut. Die Aufgabe "News" ist da! Klicken Sie in den linken Frame. Dort werden Sie die gleichen Details sehen, die Sie vorher als Benutzer "admin" gesehen haben:

Als Benutzer "news" wählen Sie nun im Feld "Add Status" den Punkt "Begin task now" und schreiben eine Status Notiz wie "OK!" und schicken das Formular ab.

Jetzt sehen Sie ein Formular für den News-Beitrag:

Dieses Element wurde sofort erstellt als Sie den Status auf "Begin task now" gesetzt haben. Es ist jetzt mit der Aufgabe verknüpft und alles was Sie tun müssen, ist ein wenig Inhalt einzugeben. Wenn Sie dies getan haben, klicken Sie (meinen Lieblingsbutton, Anm. d. Übers.) "Speichere mir das Dokument und schließe dann das Fenster" und Sie landen wieder im Task Center. Wenn Sie nun noch einmal auf den Titel des To-Do-Eintrages klicken, können Sie die aktualisierten Details sehen:

Wie Sie sehen, wurde der Beitrag hier angeheftet, und wenn Sie auf den Bleistift klicken, können Sie ihn wieder bearbeiten - bis Sie soweit sind, dem Benutzer "admin" mitzuteilen, dass alles erledigt ist!

Wenn der Beitrag bearbeitet wurde und (Ihrer Meinung nach) bereit für die Veröffentlichung ist, setzen Sie den Status auf "Pass on to another user/group" (den hätten Sie auch dafür verwenden können, um die Aufgabe auf einen anderen Kollegen abzuwälzen!), wählen den Empfänger (in diesem Fall den Absender der Aufgabe) , fügen falls nötig eine Notiz hinzu und klicken auf "Send new status".

Ihre To-Do Liste ist nun leer und wartet auf die nächste Aufgabe.

Den Workflow finalisieren

Wieder als "admin" angemeldet sehen Sie, dass die To-Do Aufgabe an Sie zurückgeschickt wurde:

Wenn Sie auf den Titel klicken, sehen Sie die Details. Klicken Sie also auf den Bleistift, um den Inhalt zu begutachten:

Davon abgesehen, dass Sie nun den Inhalt überprüfen sollten Sie sich überlegen, ob dieser Beitrag eine Veröffentlichung auf der Startseite wert ist. Dieses Feld konnte der Benutzer "news" nicht sehen - es ist ein excludeField.

Wenn Sie mit Ihrem Beitrag zufrieden sind, können Sie den Workflow abschliessen, indem Sie "Finalize workflow" in der "Add Status" Auswahlliste auswählen:

Das war's. Dieser Schritt hat den News-Beitrag schließlich in das News Archiv befördert und auf die Startseite gesetzt:

"Fertig"

Zum Schluss müssen Sie das To-Do Element nur noch in den Mülleimer werfen: Wählen Sie einfach "Done" aus und führen Sie "Delete marked To-Do items" aus:

Einen Workflow konfigurieren

Ein Workflow wie der, den wir gerade durchgegangen sind wird als Datensatz in der Wurzel des Page Trees definiert. Wie bei allen Einträgen in der Wurzel des Page Trees müssen Sie dazu Administrator-Rechte haben:

Ein solcher Eintrag enthält folgende Felder:

Abgesehen von einem eindeutigen Titel und einer Beschreibung (#1) definiert dieser Eintrag als erstes und wichtigstes, aus welcher Tabelle (#2) die TYPO3-Elemente erzeugt werden sollen! Das bedeutet, dass das Workflow-System nicht nur für den Erstellungsprozess von Seiten und Page Content Elementen, sondern für alle Elemente verwendet werden kann!

Natürlich sind in dieser Hinsicht einige Tabellen in dieser Liste interessanter als andere, aber das Prinzip ist allen gemein. Ganz wie Sie möchten.

Die "Entwurfsseite"

Das nächste Prinzip immenser Wichtigkeit ist die "Draft Page" (#3).

Der sysFolder "News items draft page" wurde als ein sicherer Bereich angelegt, in der der Benutzer "news" erstellen kann was auch immer er möchte, ohne dabei jemandem etwas zu tun. Der sysFolder fungiert als Draft Page. Wenn der Benutzer "news" den Status "Begin task now" setzt, wird der News-Beitrag in diesem Ordner angelegt!

Der Beitrag bleibt solange in diesem Ordner, bis der Workflow-Prozess von seinem Absender finalisiert wird - er wird dann hier entfernt und auf der "News" Seite eingefügt - wie das "Move to page when finalizing"-Feld (#6) offensichtlich zeigt.

Zielgruppen und Chefredakteure

Zwischen der Entwurfseite (Draft Page) und der endgültigen Seite stossen Sie auf die Felder, die die Rechte für den Workflow setzen. Über "Target groups for workflow" legen Sie fest, welche Benutzer welche Aufgaben bekommen können um ein entsprechendes Element zu erstellen. In diesem Fall dürfen nur Benutzer der Gruppe "News editor" Aufgaben entgegennehmen.

Der Workflow in unserem Fall ist ein einfaches "[Redakteur] -> [Autor] -> [Redakteur]"-Schema. In manchen Fällen soll aber vielleicht noch eine dritte Person involviert werden. So könnten Sie einen Ablauf wie etwa "[Redakteur] -> [Autor] -> [Chefredakteur] -> [Redakteur]" anlegen. Wenn dies der Fall ist, können Sie die Beziehung zu einem Chefredakteur in Feld #5 erzeugen.

Schließlich bewirkt das Flag "Unhide when finalizing", dass der Finalisierungs-Prozess den neuen Beitrag versteckt oder öffentlich macht.

Haben wir noch etwas vergessen? Ach ja, das "Groups allowed to assign workflow"-Feld - da haben wir noch nicht drüber gesprochen. Also lehnen wir uns zurück (oder ich zumindest) und lassen das nette kleine "?" Symbol die Erklärung übernehmen:

Sie wissen schon...!

Voraussetzungen

Damit dieser Workflow funtkioniert - zumindest was die Rechte des Benutzers "news" angeht - müssen Sie noch einige Dinge sicherstellen.

Die Mitglieder-Gruppe

Der Benutzer "news" ist Mitglied der Gruppe "News editor". Für diese Gruppe wurden die "Access Lists" aktiviert, genauso wie in der Gruppe "GENERAL", die wir schon kennengelernt haben. Natürlich sind die Einstellungen hier aber anders:

Wie Sie etwas weiter unten sehen sind nur die Module "User" und "Task Center" aktiv, die Tabelle "News" ist die einzige, die für die Bearbeitung freigegeben wurde, und die "Allowed Excludefields" sind natürlich auf die Anforderungen der Tabelle "News" abgestimmt:

Die Rechte der Draft Page

Die müssen natürlich ebenfalls richtig gesetzt sein. In diesem Fall - weil wir Elemente auf einer Seite erzeugen - können wir das mit den folgenden Einstellungen erledigen (siehe unten); die Gruppe "News editor" als Besitzer mit der Berechtigung, neuen Seiteninhalt zu erzeugen:

Der DB Mount

Außerdem muss der DB Mount gesetzt werden - auch wenn kein Page Tree für den Benutzer "news" verfügbar sein soll:

Das liegt daran, dass TYPO3s Rechtesystem sogar überprüft, ob eine Seite, in der ein neues Element erzeugt wird, innerhalb des DB Mounts des Benutzers liegt.

To-Do Liste für den Workflow

Für uns selbst haben wir ebenfalls eine kleine To-Do Liste für die weitere Entwicklung des Workflow-Systems in TYPO3. Die offensichtlichste Anforderung ist die Möglichkeit, ein bestehendes Element zurück in den Workflow zu holen. Das geht bisher noch nicht. Oder es wurde bereits umgesetzt, während ich dieses Tutorial schreibe. In dem Fall erinnern Sie mich bitte, dass ich diesen Hinweis entferne... :-) (und mich auch, für die deutsche Version, Anm. d. Übers. ;-)