admPanel (Content im FE bearbeiten)

Mit dem admPanel habt Ihr die Möglichkeit die Inhalte Eurer Webseite direkt im Frontend zu bearbeiten.

Damit das auch sauber funktioniert müssen ein paar Vorkehrungen getroffen werden. Dazu habe ich mich auf die Suche gemacht und folgende Zeilen in der index_ts.php gefunden:

if (is_object($BE_USER) && $BE_USER->isAdminPanelVisible() && $TSFE->beUserLogin) {
    echo $BE_USER->displayAdminPanel();
}

Demnach muss der aktuelle User ein Objekt der Backenduser und angemeldet sein und das admPanel muss "sichtbar" sein. Ich habe "sichtbar" extra in Anführungszeichen gesetzt, weil hier die Wortwahl etwas verwirrend ist, denn die Funktion dahinter schaut so aus:

public function isAdminPanelVisible() {
    return ($this->extAdmEnabled && !$this->extAdminConfig['hide'] && $GLOBALS['TSFE']->config['config']['admPanel']);
}

Dieser Funktion nach bedeutet das "visible" wohl eher "überprüfe, ob alle Vorkehrungen zum Anzeigen des admPanels getroffen wurden". Um diese zu erfüllen müssen wir die Benutzung des admPanels erst mal im TS Setup aktivieren:

config.admPanel = 1

Wenn Ihr im Backend angemeldet seid und Euch als Admin-User eingerichtet habt, dann solltet Ihr das Adminpanel im Frontend schon sehen (siehe Bild), denn in der Datei class.t3lib_userauthgroup.php steht Folgendes:

if ($this->isAdmin())    {
    $this->TSdataArray[]=$this->addTScomment('"admin" user presets:').'
        admPanel.enable.all = 1
        options.shortcutFrame = 1
    ';
    if (t3lib_extMgm::isLoaded('sys_note'))    {
        $this->TSdataArray[]='
            // Setting defaults for sys_note author / email...
            TCAdefaults.sys_note.author = '.$this->user['realName'].'
            TCAdefaults.sys_note.email = '.$this->user['email'].'
        ';
    }
}

Demnach haben alle Backendbenutzer mit Adminrechten Einsicht auf alle Module und Funktionen des admPanels.

feedit

feedit ist eine Systemextension von TYPO3 und wird mit jeden TYPO3-Paket direkt mitgeliefert. Ihr braucht sie nur noch im Extension-Manager zu aktivieren.

Ohne feedit funktioniert das admPanel zwar, aber Ihr könnt den Inhalt nicht im Frontend bearbeiten. Alle anderen Funktionen wie "Seiteneigenschaften bearbeiten", "Vorschau", "Cache" und "Listenansicht" lassen sich auch ohne feedit bearbeiten.

Installiert Euch die Systemextension feedit, klappt die Karte "Eingabe" auf, setzt die Checkboxen wie hier im Bild und Euer Seiteninhalt lässt sich nun auch im Frontend mit Hilfe der neu hinzugekommenen Symbole bearbeiten, verschieben und löschen.

admPanel und nicht Adminuser

Nach dem Eintrag von config.admPanel = 1 im TS Setup ist das admPanel für nicht Adminuser zwar aktiv aber im Fronend noch nicht sichtbar. Das hat was mit Sicherheit zu tun und muss für jedes Modul einzeln oder alle Module auf einmal für den jeweiligen Benutzer oder Benutzergruppe sichbar gemacht werden.

Folgende Module werden in der TYPO3-Dokumentation genannt:

  • preview (verborgene Inhalte/Vorschau zu Zeitpunkt x)
  • cache
  • publish
  • edit (SysExt: feedit sollte geladen sein)
  • tsdebug
  • info

Hinweis

Alle nun folgenden Einstellungen werden entweder in der TSconfig des Backendbenutzers oder in der Backendbenutzergruppe eingetragen. Nicht aber im TS Setup. Dort gibt es zwar auch das Objekt admPanel und laut Doku soll es auch alle ADMPANEL-Eigenschaften besitzen, aber nach sämtlichen Tests und Rumsucherei habe ich herausgefunden, dass dem nicht so ist. Eigenschaften, die hier gesetzt werden haben keine Auswirkung.

Vorschau und Bearbeiten erlauben

Tragt dazu Folgendes in den TSconfig-Bereich des Users oder der Gruppe ein.

admPanel.enable.preview = 1
admPanel.enable.edit = 1

Wenn Ihr diese beiden Zeilen in den TSconfig-Bereich einer Backendusergruppe eingetragen habt und wollt nun ein paar Backendusern aber verbieten das admPanel zu verwenden, dann könnt Ihr dies mit folgendem Eintrag in die TSconfig der jeweiligen Backenduser erreichen:

admPanel.hide = 1

admPanel extrem

Normalerweise reichen die hier genannten Infomationen völlig aus. Nur selten oder in wirklich großen Webseiten werden wohl die folgenden Infomationen benötigt. Deshalb auch der Titel "extrem" :-)

Alle Einstellungen wie z.B. "ist die Checkbox zum Anzeigen der Edit-Symbole angeklickt oder nicht" werden in der Spalte "uc" des jeweiligen Backendusers (be_users) abgespeichert. Heißt: Wenn Ihr eine Checkbox angeklickt habt, Euch abmeldet und irgendwann wieder anmeldet, dann ist die gewählte Checkbox immer noch aktiviert.

Jetzt kommt die Eigenschaft "override" hinzu. Diese Option überschreibt nun Eure gemachten Einstellungen im admPanel respektive die Daten aus dem Feld "uc". Heißt: Wenn Ihr in der TSconfig mit override arbeitet, dann ist die gewählte Eigenschaft immer aktiv (nur aktivierbar...nicht aber deaktivierbar)...egal ob im admPanel ein Haken drin ist oder nicht. Dazu habe ich folgenden Codeschnipsel in der class.tslib_adminpanel.php gefunden:

if ($GLOBALS['BE_USER']->extAdminConfig['override.'][$pre . '.'][$val] && $val) {
    return $GLOBALS['BE_USER']->extAdminConfig['override.'][$pre . '.'][$val];
}
if ($GLOBALS['BE_USER']->extAdminConfig['override.'][$pre]) {
    return $GLOBALS['BE_USER']->extAdminConfig['override.'][$pre];
}

Ihr seht hier, dass die if-Anweisungen nur dann ausgeführt werden, denn der gesuchte Wert ein true bzw. 1 wieder gibt. Hier liegt der Grund, warum Ihr mit override bestimmte Optionen nicht grundsätzlich abschalten könnt.

Schauen wir uns mal folgende TSconfig an:

admPanel.override.edit.displayFieldIcons = 1
admPanel.override.edit.displayIcons = 1

Im Bild oben rechts könnt Ihr nun sehen, dass die Symbole zum Bearbeiten der Contentelemente trotz der deaktivierten Checkboxen im admPanel verfügbar sind.

Jetzt könnte man denken: "Ja hey...jetzt wo die Symbole zum Bearbeiten doch grundsätzlich da sind, wozu brauch ich dann noch das admPanel?" Richtig gedacht und deshalb ändern wir das TSconfig mal um in:

admPanel.override.edit.displayFieldIcons = 1
admPanel.override.edit.displayIcons = 1
admPanel.hide = 1

Das admPanel ist verschwunden, die Funktionen zum Bearbeiten des Inhalts sind aber weiterhin verfügbar.

Welche Funktionen pro Kategorie (edit, preview, ...) verfügbar sind schaut Ihr Euch am besten direkt im Quellcode an. Ich empfehle hier das Firebug-AddOn für den Firefox. Einfach auf die gewünschte Option klicken und Ihr erhaltet zum Beispiel folgenden HTML-Code:

<input type="checkbox" checked="checked" value="1" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]">

Der erste Teil des Namens "preview_showHiddenPages" gibt Euch die Kategorie (hier: preview) und der zweite Teil die Option wieder (hier: showHiddenPages). Demnach muss im TSconfig folgendes eingetragen werden:

admPanel.override.preview.showHiddenPages = 1

Noch ein letztes Beispiel

admPanel.override.preview.showHiddenRecords = 1
admPanel.override.edit.displayFieldIcons = 1
admPanel.override.edit.displayIcons = 1
admPanel.hide = 1

Das admPanel ist versteckt, aber Ihr habt die Symbole zum Bearbeiten des Inhalts und Ihr könnt verborgene Datensätze editieren. Das ist auch der Grund warum auf der Webseite nun "Preview" erscheint...denn Ihr seht nun nicht mehr das 1zu1-Abbild der originalen Webseite