TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

fe_adminLib.inc

Dateien

Datei

Beschreibung

fe_adminLib.inc

Hauptklasse, die benutzt wird, um die Frontend-Verwaltungsformulare anzuzeigen.
Kann von einem »USER_INT-Inhaltsobjekt durch userFunc = user_feAdmin->init aufgerufen werden. Siehe static_templates für Beispiele.
ANMERKUNG: Der Gebrauch des »USER_INT ermöglicht es dem Skript, unabhängig von Seiten-Cache zu arbeiten.

fe_admin_dmailsubscrip.tmpl

Beispiel-Designvorlage für das Abonnieren von Newslettern in der tt_address-Tabelle. Diese Designvorlage wird auch vom static_template plugin.feadmin.dmailsubscription verwendet.

fe_admin_fe_users.tmpl

Beispiel-Designvorlage für das Anlegen neuer Frontendbenutzer (fe_users). Diese Designvorlage wird auch vom static_template plugin.feadmin.fe_users benutzt.

Beschreibung

Diese Klasse wird benutzt, um im Frontend Formulare für die von Backend unabhängige (TBE) Datenbankverwaltung zu erzeugen. Sie werden diese Klasse vielleicht benutzen wollen, wenn Frontend-Benutzer Datenbankinhalte verändern können sollen.

Die Authentifizierung funktioniert entweder über den fe_user-Login, in welchem Fall die Datensätze mit der fe_user_uid gekennzeichnet werden, sodass jeder Datensatz einem bestimmten fe_user zugeordnet werden kann.
Die andere Authentifizierugsoption ist eine Email-Authentifizierung. In diesem Fall haben Sie Zugriff auf einen Datensatz, wenn in einem bestimmten Feld Ihre Email-Adresse gefunden wird. Bei der fe_user-Authentifizierung können Sie, wenn Sie eingeloggt sind, ein Menü mit editierbaren Datensätzen anzeigen. Bei der Email-Authentifizierung können Sie anfragen, dass eine Email an Ihre Adresse gesandt wird. Diese Email enthält eine Liste aller verfügbaren Datensätze.

Das System basiert komplett auf HTML-Designvorlagen, die Sie selbst entwerfen müssen, es gibt also etwas Designarbeit zu leisten. Andererseits habe Sie so bei der Gestaltung Ihrer Formulare völlige Freiheit.

Beispiel

Siehe die static_templates plugin.feadmin.* für verschiedene Beispiele. Sie können Sie vorkonfiguriert auf der Typo3 Testseite testen.

Statisches Template

plugin.feadmin.*

Eingehende GET- oder POST-Variablen

Name

Beschreibung

cmd

Anweisung

preview

Vorschau-Option

backURL

Zurück-URL

rU

Datensatz-UID

aC

Authentifizierungscode

fD

Fixe Daten (Array von Feldern)

FE

Datenarray der Frontendbearbeitung, Syntax: FE[Tabellenname][Feldname] = Wert

fe_adminLib.inc-Eigenschaften

Eigenschaft

Datentyp

Beschreibung

Standard

templateFile

resource

Die Designvorlagendatei, siehe Beispiele in media/scripts/fe_user_admin.tmpl.

templateContent

String

Alternativ können Sie in dieser Eigenschaft den Inhalt der Designvorlage direkt angeben.

table

Tabellenname

Die zu bearbeitende Tabelle.

ANMERKUNG: Die Liste von Feldern, die schlußendlich wirklich bearbeitet werden dürfen, werden unter dem Schlüssel ["feInterface"]["fe_admin_fieldList"] in der TCA für jede infrage kommende Tabelle gespeichert. Für ein Beispiel, siehe die Tabellendefinition für fe_users, die ein gutes Beispiel ist.

defaultCmd

String

Gibt an, welche Aktion standardmäßig durchgeführt werden soll (wenn &cmd... beim Seitenaufruf nicht gesetzt ist).

clearCacheOfPages

[Integerliste]

Dies ist eine Liste von Seiten-IDs, deren Cache bei jeder erfolgreich durchgeführten Operation, sei es nun CREATE, EDIT oder DELETE, gelöscht werden soll.

debug

Boolean

Wenn diese Eigenschaft gesetzt ist, werden von fe_adminLib Debug-Informationen ausgegeben, die helfen, Fehler zu finden.

Aktionen

edit

Boolean / actionObject

Wenn diese Eigenschhaft gesetzt ist, ist das Bearbeiten von Datensätzen grundsätzlich erlaubt. Sie müssen allerdings noch folgendes angeben:

.fields (Liste von Feldnamen) gibt an, welche Felder bearbeitet werden dürfen. Jedes Feld in dieser Liste muss auch unter dem Schlüssel ["feInterface"]["fe_admin_fieldList"] im TCA-Array gefunden werden, wo letztendlich alle Felder gespeichert sind, die überhaupt durch fe_adminLib bearbeitet werden dürfen.

.overrideValues.[Feldname] (String) gibt Werte für bestimmte Felder an, die die eingehenden Daten vom Formular auf jeden Fall überschreiben. Das Überschreiben der Werte erfolgt, nachdem die eingehenden Werte von der ».parseValues-Eigenschaft von fe_adminLib geparst wurden, aber vor der Auswertung durch .required und .evalValues. Dies könnte zum Beispiel nützlich sein, wenn Sie einen bearbeiteten Datensatz verstecken wollen, weil Sie ihn erst kontrollieren wollen.

.required (Liste von Feldnamen, Teilmenge von .fields) gibt an, für welche Felder eine Eingabe erforderlich ist, damit die Aktion erfolgreich durchgeführt wird. Bei den hier angegebenen validen Feldern wird in der Designvorlage der Subpart ###SUB_REQUIREd_FIELD_[Feldname]### entfernt, wenn die Auswertung ergibt, dass für diese Felder Werte vonhanden sind.

.evalValues.[Feldname] (Liste von eval-Codes) gibt spezifische Auswertungsangaben für die individuellen Felder des Formulares an. Siehe unten.

.preview (Boolean) ermöglicht eine Voransicht der übermittelten Daten. Dies erfordert, dass in der Designvorlagendatei eine Vorlage für eine Vorschau gefunden wird. Siehe unten für die Markernamen der Subparts.

.menuLockPid (Boolean) beschränkt das Menü der editierbaren Datensätze auf diese angegebene PID.

.userFunc_afterSave (Funktionsname) wird nach dem Speichern des Datensatzes aufgerufen. Der überlieferte Inhalt ist ein Array, der die derzeitigen (und vorigen) Werte des Datensatzes enthält.

create

Boolean / actionObject

Das Gleiche wie ».edit, wenn nicht anders angegeben. Zusätzlich gibt es folgende Parameter:

.noSpecialLoginForm (Boolean) Wenn diese Eigenschaft gesetzt ist, sicht fe_adminLib NICHT nach dem Subpart-Marker TEMPLATE_CREATE_LOGIN, sondern immer nach TEMPLATE_CREATE

.defaultValues.[Feldname] (String) Wie .overrideValues, allerdings setzt diese Eigenschaft die Vorgabewerte wenn das Formular zum ersten Mal angezeigt wird.

delete

Boolean

Gibt an, ob Datensätze gelöscht werden dürfen. Es ist immer noch eine gewöhnliche Authentifikation erforderlich. Durch das Setzen der Variable .preview ermöglichen Sie eine Vorschau vor dem eigentlichen Löschen.

infomail

Boolean

Infomails sind Textmails, die auf Designvorlagen aus der Vorlagendatei basieren. Sie könnten benutzt werden, um zum Beispiel einem Benutzer ein vergessenes Passwort zuzuschicken, aber was in die Infomail hineinkommt, hängt völlig von Ihrer Gestaltung der Designvorlage ab.

Normalerweise haben Sie nur eine Vorgabe-Infomail (infomail.default), zum Beispiel zum Verschicken des Passwortes. Sie können allerdings auch andere Schlüssel verwenden. Siehe unten.

infomail.[Schlüssel]

(Konfiguration von infomail Eigenschaften)

Um mit fe_adminLib eine Infomail zu verschicken, müssen Sie diese Variablen in Ihren GET-Variablen oder im HTML-Formular angeben.

fetch - Wenn dieser Wert vom Typ Integer ist, wird nach der UID mit dem Wert von fetch gesucht. Sonst wird das Email-Feld durchsucht (von einer Eigenschaft von fe_adminLib angegeben, siehe unten).

key - Zeigt auf die zu benutzende infomail.[key]-Konfiguration.

Eigenschaften:
.dontLockPid (Boolean) - Wählt nur Datensätze mit der .pid von fe_adminLib aus.
.label (String) - Das Suffix für die Marker, siehe "Email-Marker" unten.

setfixed

Boolean / Eigenschaften

Ermöglicht die Eingabe von setfixed-Angaben, die zum Beispiel von einem Link in einer Infomail oder einer Benachrichtigungsmail kommen könnten.

Syntax:
.[fix-Schlüssel].[Feldname] = Wert: Wird benutzt, um einen setfixed-Link zu erstellen, der für den SYS_SETFIXED_*-Marker in die Infomail eingefügt wird.
Der besondere fix-Schlüssel DELETE ist nur ein Boolean-Wert.

Konzept:
Das setfixed-Konzept lässt sich am besten anhand einer typischen Situation beschreiben - die in der Tat auch der häufigste Verwendungszweck für diese Funktionalität ist:
Stellen Sie sich vor, auf Ihrer Website können Benutzer Daten übermitteln. Aber bevor diese Daten sichtbar werden, möchten Sie diese moderieren - also einfach einmal anschauen, und dann entweder veröffentlichen oder löschen. In der »create-Konfiguration von fe_adminLib lassen Sie das hidden-Field mit dem Wert 1 überschreiben. Der Datensatz wird also nach dem Erstellen grundsätzlich erst einmal versteckt. Dann konfigurieren Sie einen setfixed-Schlüssel, der das hidden-Field auf 0 setzt. Diese Einstellung erzeugt eine Parameterliste, die an eine URL angehängt wird, welche wiederum in den entsprechenden Marker in der Email-Designvorlage eingesetzt wird. Der Link beinhaltet sämtliche notwendigen Authentifizierungen, um die Wertzuweisungen durchzuführen, daher reicht ein einziger Mausklick, um die Feldwerte zu ändern. Der Datensatz wird also auf diese Weise - durch einen einzigen Mausklick auf einen Link in einer Benachrichtigungsmail an den Administrator - veröffentlicht, oder bei einem ähnlichen Link mit cmd=delete gelöscht.

Es gibt einen speziellen "Feldnamen", den Sie benutzen können, nämlich _FIELDLIST. Hier können Sie eine Liste von Feldern angeben, auf deren Basis der Authentifikationscode erstellt werden soll.
Wenn hier nichts angegeben ist, wird der md5-Hash auf dem gesamten Datensatz basierend erstellt, was bedeutet, dass jede Änderung am Datensatz den setfixed-Link ungültig machen wird. Wenn Sie _FIELDLIST jedoch andererseits den Wert uid,pid zuweisen, bleibt der Link solange gültig, wie auch die uid- und pid-Werte intakt sind.

Beispiel:
Dies ist eine gewöhnliche Konfiguration der Email-Einstellungen mit einer einfachen setfixed-Einstellung:

email.from = kasper@typo3.com
email.fromName = Kasper Skårhøj
email.admin = kasper@typo3.com
setfixed.approve {
hidden = 0
_FIELDLIST = uid,pid
}
setfixed.DELETE = 1
setfixed.DELETE._FIELDLIST = uid

Wenn Sie jetzt diesen Marker in Ihre Email-Designvorlage einbauen:
###SYS_SETFIXED_approve###
wird dieser mit einem Parameter wie diesem hier ersetzt:
&cmd=setfixed&rU=9&fD[hidden]=0&aC=5c403d90

Alles, was Sie jetzt noch tun müssen, ist, diese Parameter der korrekten URL zuzuweisen (wo fe_adminLib aufgerufen wird), z.B:
###THIS_URL######FORM_URL######SYS_SETFIXED_approve###
und zum Löschen:
...###SYS_SETFIXED_DELETE###

authcodeFields

[Liste von Feldern]

Kommaliste mit Feldern, auf deren Basis der Authentifikationscode gebildet werden soll. In den meisten Fällen würde diese Liste grundsätzlich schon einmal das Feld uid enthalten. Wenn die Liste mehr Felder beinhaltet, sollten Sie beachten, dass sich bei einer Änderung eines dieser Felder auch der Authentifikationscode ändert. In diesem Fall wird der Benutzer sich selbst eine Email mit einem neuen Code schicken müssen.

.addKey (String) wird an den md5-Hash des Authentifikationscodes gehängt. Geben Sie hier einfach irgendeine zufällige Zeichenkette an. Der Sinn dieser Einstellung ist es, dass Dritte den nur auf der uid basierenden Authentifikationscode nicht mehr rekonstruieren können, da sie diesen Anhang nicht kennen.

.addDate (Datums-Konfg.) kann benutzt werden, um den Code zeitabhängig zu machen. Wenn Sie hier also zum Beispiel d-m-Y als Wert angeben, wird der Code bis Mitternacht funktionieren und danach ungültig werden.

.codeLength (Int) gibt an, wie lang der Authentifikationscode sein soll. Standardeinstellung sind 8 Zeichen.
In jedem Fall wird TYPO3_CONF_VARS[SYS][encryptionKey] vorangestellt.

Ratschlag:
Wenn Sie Authentifikationscodes erstellen wollen, die mit den Standard-Authentifikationscodes kompatibel sind (die vom Direkt-Mailer t3lib_div::stdAuthCode() benutzt werden), setzen Sie TYPO3_CONF_VARS[SYS][encryptionKey] auf einen einzigartigen und geheimen Schlüssen (was Sie sowieso auf jeden Fall tun sollten) und stellen das Feld uid als EINZIGES authcodeField ein. Das ist sicher genug.

email

.from (String, Email) gibt die Absenderadresse von verschickten Mails an.

.fromName (String) gibt den Namen des Absenders an. Wenn diese Eigenschaft gesetzt ist, wird sie in der Form NAME <EMAIL> verwendet.

.admin ist die Emailadresse des Administrators, der über Veränderungen informiert wird.

.field (String/Integer) gibt den Feldnamen des Datensatzes an, in dem die Emailadresse, an die die Mail verschickt werden soll, zu finden ist. Wenn der Inhalt des Feldes ein Integer-Wert sein sollte, wird davon ausgegangen, dass dieser Integer-Wert die UID des fe_users ist, dem der Datensatz gehört, und die Emailadresse dieses Benutzers wird dann herangezogen.

pid

int +

Die PID, unter der die Datensätze gefunden/gespeichert werden.

Aktuelle Seite

fe_userOwnSelf

Boolean

Wenn diese Eigenschaft gesetzt ist, wird in Datensätzen von fe_users, die mithilfe dieses Modules erstellt wurden, das Feld fe_cruser_id auf die eigene UID gesetzt, was bedeutet, dass den Benutzern ihr eigener Datensatz "gehört" und daher ihre eigenen Daten bearbeiten können.
Alle anderen Tabellen, die ein fe_cruser_id-Feld im crtl-Bereich ihrer $TCA-Konfiguration haben, bekommen dieses Feld automatisch auf die UID des aktuellen fe_users gesetzt.

fe_userEditSelf

Boolean

Wenn diese Eigenschaft gesetzt ist, können fe_users ihren eigenen Datensatz bearbeiten, egal ob er ihnen gehört oder nicht.

allowedGroups

[Liste von Integern]

Liste von UID-Nummern von fe_groups, die die Datensätze über dieses Formular bearbeiten dürfen. Normalerweise ist nur der Besitzer des Datensatzes dazu berechtigt.

evalFunc

Funktionsname

Funktion, mit der Sie den Daten-Array bearbeiten können, bevor er gespeichert wird. Der Daten-Array wird als $content an die Funktion als Parameter übergeben und MUSS von dieser Funktion auch wieder zurückgeliefert haben.
Die Eigenschaft parentObj ist eine hardcodierte Referenz auf das fe_adminLib-Objekt.

no_cache

Boolean

Wenn diese Eigenschaft gesetzt ist, wird den Links der fe_adminLib der Parameter &no_cache=1 hinzugefügt.

parseValues.[Feld]

[Liste von parseCodes]

ParseCodes:

  • int - Liefert den Integer Wert der Eingabe zurück
  • lower - Liefert eine kleingeschriebene Version der Eingabe zurück
  • upper - Liefert eine großgeschriebene Version der Eingabe zurück
  • nospace - Entfernt alle Leerzeichen
  • alpha, num, alphanum, alphanum_x - Erlaubt nur alphabetische (a-z) oder numerische Zeichen (0-9). alphanum_x erlaubt auch _ und -.
  • trim - Entfernt abschließende Leerzeichen.
  • setEmptyIfAbsend - Stellt sicher, dass der Feldwert auf einen leeren Wert gesetzt wird, wenn kein Wert übermittelt wird. Dies stellt sicher, dass ein Feld aktualisiert wird und ist nützlich mit Checkboxen.
  • random[x] - Liefert eine zufälligt Nummer zwischen 0 und x zurück
  • files[Semikolonliste(!) mit Dateiendungen, Keine Angabe=Alle Endungen][Maximale Größe in Kb, keine Angabe=keine Beschränkung] - Definiert das Feld, das Dateien beinhaltet. Siehe unten für Details!
  • multiple - Setzen Sie diese Eigenschaft, wenn die Eingabe von einer multiplen Auswahlbox kommen (Denken Sie daran, dem Feldnamen [] hinzuzufügen, sodass die Werte in einem Array übergeben werden)
  • checkArray - Setzen Sie diese Eigenschaften, wenn mehrere Checkboxen einzelne Bits in einem einzelnen Feld setzen sollen. In diesem Fall müssen Sie dem Namen jeder Checkbox [x] voranstellen, wobei x der zu setzenden Bitnummer entspricht, beginnend bei 0. Die Vorgabewerte der Checkbox-Formularelemente müssen auf falsch stehen.
  • uniqueHashInt[Semikolonliste(!) von anderen Feldern] - Dies erzeugt einen einzigartigen Hash (32-Bit Integer) der Inhalte der angegebenen Felder. Die Werte dieser Felder werden zunächst in Kleinschreibung konvertiert und nur alphanumerische Zeichen bleiben erhalten.

userFunc_updateArray

Funktionsname

Zeigt auf eine benutzerdefinierte Funktion, an die der Daten-Array übergeben wird, bevor er benutzt wird, um die JavaScript-Update-Anweisungen zu erzeugen.

evalErrors.[field].[evalCode]

Diese Eigenschaft lässt Sie die Fehlermeldungen, die in die Marker ###EVAL_ERROR_FIELD_[Feldname]### eingefügt werden, im Falle eines Auswertungsfehlers angeben.
Siehe die Beschreibung der Auswertung unten.

cObjects.[Markername]

cObject

Dies sind Inhaltsobjekte, die Sie mithilfe von Marken in die Designvorlage einbauen können.

Beispiel:
Sagen wir, Sie erzeugen ein Inhaltsobjekt wie dieses hier ein:

cObject.myHeader = TEXT
cObject.myHeader.value = Das ist meine Überschrift

Dann können Sie dieses Inhaltsobjekt in den meisten Designvorlagen mit einem Marker wie ###CE_myHeader### oder ###PCE_myHeader### (siehe unten für die genauen Unterschiede) einbinden.

wrap1

»stdWrap

Globaler Wrap 1. Dies wird in die Marker ###GW1B### und ###GW1E### aufgeteilt. Verändern Sie nicht die Eingabe mit den Einstellungen, umschließen Sie sie einfach nur mit etwas.

Beispiel:
wrap1.wrap = <b> |</B>

wrap2

»stdWrap

Globaler Wrap 2 (siehe oben).

color1

String / stdWrap

Wert für den ###GC1###-Marker (Global color 1)

color2

String / stdWrap

Wert für den ###GC2###-Marker (Global color 2)

color3

String / stdWrap

Wert für den ###GC3###-Marker (Global color 3)

Haupt-Subparts

In der Benennung der Haupt-Subparts der Designvorlage steckt ein bestimmtes System. Die Marker unten werden benutzt, wenn eine Aktion im Speichern eines Datensatzes resultiert. Der [action]-Code kann in Abhängigkeit des cmd-Wertes entweder DELETE, EDIT oder CREATE sein.

Subpart-Marker

Beschreibung

###TEMPLATE_[action]_SAVED###

Wird für HTML-Ausgabe verwendet.

###TEMPLATE_SETFIXED_OK### (allgemein)
###TEMPLATE_SETFIXED_OK_[fixkey]###

Wird für einen erfolgreichen setfixed-Link benutzt.

###TEMPLATE_SETFIXED_FAILED###

Wird für einen nicht erfolgreichen setfixed-Link benutzt. Beachten Sie, dass, wenn Sie einen setfixed-Link zweimal anklicken, das zweite Mal fehlschlagen wird. Das liegt daran, dass der setfixed-Link am Original-Datensatz hängt und der Authentifikationscode ungültig wird, wenn sich dieser (der Datensatz) in irgendeiner Weise ändert.

###EMAIL_TEMPLATE_[action]_SAVED###

Wird für eine Email-Nachricht, die an den Website-Benutzer gesendet wird, benutzt.

###EMAIL_TEMPLATE_[action]_SAVED-ADMIN###

Wird für eine Email-Nachricht an den Administrator benutzt.

###EMAIL_TEMPLATE_SETFIXED_[fixkey]###

Wird für Benachrichtigungsmails im Falle einer erfolgreich durchgeführten setfixed-Operation durchgeführt.

###EMAIL_TEMPLATE_SETFIXED_[fixkey]-ADMIN###

s.o., für Mail an den Administrator.

Gleichermaßen gibt ein System in den Subpart-Markern, die bei EDIT- und CREATE-Aktionen benutzt werden, um die ursprünglichen Formulare anzuzeigen:
###TEMPLATE_[action]### oder wenn ein fe_user eingeloggt ist (nur bei CREATE): ###TEMPLATE_[action]_LOGIN###

und wenn die &preview-Eigenschaft auch gesendet wird (einschließlich DELETE)
###TEMPLATE_[action]_PREVIEW###

 

Muss-Subparts:

Diese Subparts sollten in jeder Designvorlage existieren.

Subpart-Marker

Beschreibung

###TEMPLATE_AUTH###

Wird angezeigt, wenn die Authentifikation - entweder durch fe_user oder Email-Authentifikation - fehlgeschlagen ist. Sie müssen die Fehlermeldung dementsprechend entwerfen, dass das Problem korrekt dargestellt wird.

###TEMPLATE_NO_PERMISSIONS###

Diese Fehlermeldung wird angezeigt, wenn Sie zwar authentifiziert wurden, aber aus anderen Gründen (wie z.B. eine falsche fe_user/fe_group-Beziehung) nicht die zur Bearbeitung oder zum Löschen erforderlichen Rechte haben.

infomail-Email Subparts

Alle Email-Subparts können als HTML verschickt werden. Das wird gemachtn, wenn das erste und das letzte Wort der Designvorlage <html> bzw. </html> ist. Zusätzlich muss die Klasse t3lib_htmlmail geladen sein.

Subpart-Marker

Beschreibung

###EMAIL_TEMPLATE_NORECORD###

###EMAIL_TEMPLATE_[infomail_key]###

###SUB_RECORD###

infomail-Email Marker

Marker

Beschreibung

###SYS_AUTHCODE###

###SYS_SETFIXED_[fixkey]###

FORM-Konventionen

Die Formulare, die in fe_adminLib verwendet werden, sollten nach der Tabelle, die bearbeitet werden soll, benannt werden. Wenn Sie also Datensätze der Tabelle fe_users bearbeiten wollen, sollten Sie so einen FORM-Tag benutzen:

HTML
<FORM name="fe_users_form" method="POST" action="...">

Die Felder, die benutzt werden, um Daten für die Datensätze zu übermitteln haben die Syntax FE[Tabellenname][Feldname]. Das bedeutet, dass Sie, wenn Sie das city-Feld eines tt_address-Datensatzen bearbeiten wollen, solch ein Formularelement benutzen könnten:

HTML
<INPUT name="FE[tt_address][city]">

submit-Buttons können Sie benennen wie Sie wollen, bis auf den Namen doNotSave, der das Speichern eines Datensatzes verhindert. Wenn Sie einen Abbruch-Button brauchen, greifen Sie auf JavaScript in einem onClick-Ereignis zurück, um document.location zu verändern.

Gebräuchliche Marker

Subpart-Marker

Beschreibung

###GW1B### / ###GW1E###

Globaler Wrap 1, Anfang und Ende (Überschriften)

###GW2B### / ###GW2E###

Globaler Wrap 2, Anfang und Ende (Haupttext)

###GC1###/ ###GC2### / ###GC3###

Globale Farben 1 bis 3

###FORM_URL###

Die in den Formularen benutzte URL: index.php?id=Seiten-ID&type=Seiten-Typ

###FORM_URL_ENC###

Wie oben, aber Rawurl-codiert.

###BACK_URL###

Der backUrl-Wert. Wird auf den Wert der eingehenden backURL-Variable gesetzt.

###BACK_URL_ENC###

Wie oben, aber Rawurl-codiert.

###REC_UID###

Die UID des bearbeiteten Datensatzes. Wird auf den Wert der eingehenden rU-Variable gesetzt.

###AUTH_CODE###

Die eingehende aC-Variable.

###THE_PID###

Der thePid-Wert - wo die Datensätze gespeichert werden.

###THIS_ID###

Wird auf die ID der aktuellen Seite gesetzt.

###THIS_URL###

Wird auf die URL des aktuellen Skriptes gesetzt, die durch t3lib_div::getThisUrl() erhalten wird.

###HIDDENFIELDS###

Einige versteckte Felder, die in die Formulare eingebunden werden müssen. Diese beinhalten standardmäßig Werte wie cmd, aC und backURL.

Zusätzlich können Sie in den meisten Fällen Marker wie diesen hier benutzen:

###FIELD_[Feldname]###

wobei [Feldname] der Name eines Feldes des Datensatzes ist. Alle Felder aus dem Datensatz werden benutzt.

Schließlich können Sie mit dieser Serie an Markern im TypoScript definierte Inhaltsobjekte einbinden (siehe .cObject-Eigenschaft in obiger Tabelle):

###CE_[Inhaltsobjektname]###
###PCE_[Inhaltsobjektname]###

(###PCE_* unterscheiden sich dadurch von ###CE_*-Inhaltsobjekten, dass sie mit einem neu erzeugten Inhaltsobjekt (im Gegensatz zu dem übergeordneten Inhaltsobjekt von fe_adminLib) gerendert werden, wobei der Daten-Array mit den Werten von ->dataArr gefüllt wird, welches der an das Skript übergebene Array ist. Das macht sie nützlich, um Vorschau-Daten zu präsentieren. Schließlich können sowohl PCE_ und CE_-Inhaltsobjekte mit einem einzelnen Element in einem Bearbeitungsmenü (Liste der verfügbaren Datensätze) benutzt werden, indem dem Marker ITEM_ vorangestellt wird, z.B. ###ITEM_PCE_[Inhaltsobjektname]###

Auswertung der Formularfelder

Ausgabe von Fehlermeldungen für erforderliche Felder

Wenn die Designvorlage eines Formulares angezeigt wird, werden alle Subparts mit den Markern
###SUB_REQUIRED_FIELDS_WARNING###
und
###SUB_REQUIRED_FIELD_[Feldname]###

entfernt. Wenn ein einfacher "Erforderlich"-Fehler (wenn ein Feld nicht ausgefüllt ist) vorliegt, wir der Marker SUB_REQUIRED_FIELDS_WARNING nicht entfernt und stattdessen eine Fehlermeldung angezeigt.

Sagen wir, dass in einem Formular speziell das email-Feld nicht ausgefüllt wurde. Dann können Sie einen Subpart namens
###SUB_REQUIRED_FIELD_email###
einbauen. Dieser wird in der Regel entfernt, wird aber nicht entfernt, wenn dass email-Feld nicht ausgefüllt ist. So erhalten Sie eine Warnung für dieses spezielle Feld.

Andere Fehlermeldungen ausgeben

Sie können andere Arten der Auswertung als eine einfache required-Überprüfung durchführen. Bei den Modi create und edit wird dies durch die Eigenschaften .evalValues.[Feldname] = [Liste von Codes] spezifiziert. Um Ihrem Website-Benutzer mitzuteilen, welche der möglichen Auswertungen fehlschlug, können Sie Fehlermeldungen mit der Eigenschaft .evalError angeben, die als Marker namens
###EVAL_ERROR_FIELD_[Feldname]###
eingefügt werden.

Sagen wir, Sie haben den Code uniqueLocal in die Liste der Auswertungscodes für das Email-Feld gesetzt. Das würden Sie zum Beispiel machen, wenn Sie sicherstellen wollen, dass dieselbse Email-Adresse nicht zweimal in die Datenbank gespeichert wird. Das können Sie dann so angeben:

TYPOSCRIPT
create.evalValues {
  email = uniqueLocal, email
}

Dann setzen Sie die Auswertungs-Fehlermeldungen so:

TYPOSCRIPT
evalErrors.email {
  uniqueLocal = Anscheinend sind Sie bereits mit dieser Email-Adresse registriert.
  email = Das ist keine valide Email-Adresse.
}

Sollte der Fehler, dass die Email-Adresse bereits existiert, auftreten, wird der Marker ###EVAL_ERROR_FIELD_email### mit der Fehlermeldung "Anscheinend sind Sie bereits mit dieser Email-Adresse registriert." ersetzt.

Vorgabewerte an ein Formular übergeben

Sie können Vorgabewerte an ein Formular übergeben wie mit der Syntax, die Sie im Formular benutzen. Zum Beispiel würde hier der Name und die Email-Adresse auf einen Vorgabewert gesetzt:

...?FE[tt_address][name]=Mike%20Tyson
&FE[tt_address][email]=mike@trex.us&doNotSave=1&noWarnigs=1

Beachten Sie, dass die blauen Angaben die Feldwerte sind (müssen Rawurl-codiert sein. In Javascript heißt diese Funktion escape()) und die roten Angaben sind notwendig, wenn Sie den Datensatz mit dieser Aktion NICHT speichern wollen, und KEINE Fehlermeldungen darstellen möchten, wenn für einige erforderliche Felder kein Wert übergeben wurde.

Liste von eval-Codes

Eval-Code

Beschreibung

uniqueGlobal

Dies erfordert, dass der Wert eines Feldes global einzigartig ist, was bedeutet, dass er in diesem Feld in keinem anderen Datensatz dieser Tabelle existieren darf.

uniqueLocal

Wie uniqueGlobal, allerdings muss der Wert nur in der PID des Datensatzes einzigartig sein. Wenn zwei verschiedene Datensätze also verschiedene PID-Werte haben, können sie in einem gleichen Feld auch denselben Wert haben.

twice

Diese Eigenschaft, erfordert, dass der Wert des Feldes mit dem Wert eines zweiten Feldes mit dem Namen [Feldnamen]_again aus den eingehenden Formulardaten übereinstimmt. Das ist z.B. nützlich, wenn ein Passwort angegeben werden soll. Wenn der Feldnamen Ihres Passwortfeldes also z.B. user_pass ist, dann fügen Sie einfach ein zweites Feld mit dem Namen user_pass_again hinzu, und setzen den twice Eval-Code.

email

Erfordert, dass der Wert des Feldes eine Emailadresse oder zumindest von der Form [Name]@*[Domain].[tld] ist.

required

Lediglich eine einfache Erfordernis-Überprüfung. 0 (Null) gilt als leerer Wert.

atLeast
atMost

Gibt ein Minimun/Maximum an Zeichen an, die in dem Feld angegeben werden können.
Beispiel, welches mindestens 5 Zeichen erfordert: atleast [5]

inBranch

inBranch erfordert, dass der Wert (in der Regel ein PID-Feld) sich in einer Liste von Seiten-IDs (PIDs), welche mit dem inBranch-Parameter angegeben wurde, findet. Die Parameter werden so übergeben: [rood_pid; Tiefe; Anfang]
Beispiel, welches eine Liste von PIDs mit einer Ebene Tiefe von (einschließlich) Seite 4 aus: inBranch [4;1]

unsetEmpty

Diese Auswertung resultiert nicht in irgendeiner Fehlermeldung. Das Feld wird nur entfernt, wenn es einen leeren Wert hat. Auf diese Weise wird kein aktueller Wert überschrieben, wenn kein anderer vorliegt.

Dateien hochladen

fe_adminLib kann aus den Formularen Dateien empfangen. Allerdings gibt es hierbei schwere Einschränkungen. Idealerweise würde dieser Vorgang von der Klasse t3lib_tcemain im Backend durchgeführt. Dies hätte in der Tat sogar eingebaut werden können, ist in diesem Stadium jedoch noch nicht verfügbar. Das Gute an tcemain.php ist, dass mit dem Kopieren/Löschen von Dateien, die in einem bestimmten Feld gespeichert werden, perfekt umgeht, und das sogar unabhängig von der Speichermethode, sei es als Liste von Dateinamen oder durch Benutzung von MM-Relationen zu Datensätzen (siehe den tables.php-Abschnitt in 'Inside Typo3').

So wird mit Dateien in fe_adminLib umgegangen und die derzeitigen Einschränkungen.

  • Sie können Dateien NUR im create-Modus hochladen. Auf keinen Fall können Sie die derzeitig angehängten Dateien bearbeiten (das könnte in der Zukunft verbessert werden). Sie können allerdings den delete-Modus benutzen.
  • Allerdings können Sie den PREVIEW-Modus mit create benutzen. Das funktioniert so: Im Vorschaumodus wird die temporär hochgeladene Datei unter einem einzigartigen Dateinamen (vorangestellt mit von dem Tabellennamen) in den typo3temp/-Ordner kopiert. Dann wird der Feldwert auf die Liste der Dateinamen gesetzt. Wenn der Nutzer der Vorschau zustimmt, werden die temporären Datein endgültig in den uploads/-Ordner (oder wie es auch immer in TCA angegeben ist) kopiert. Einschränkungen sind, dass die temporären Datein in typo3temp/ NICHT gelöscht werden, wenn sie in den echten upload-Ordner kopiert werden (könnte verbessert werden) oder wenn der Benutzer den Vorgang abbricht (kann nicht verbessert werden, da nicht sichergestellt werden kann, wohin der Benutzer geht). Wenn der Benutzer die Vorschau abbricht, um Werte zu verändern, müssen die Dateien noch einmal hochgeladen werden (wird vielleicht noch verbessert).
  • Die in TCA angebenen zugelassenen Endungen werden ignoriert. Allerdings können Sie eine Liste von zugelassenen Endungen in der .parseValues-Eigenschaft von fe_adminLib angeben.
  • Die in TCA angebene maximale Dateigröße wird ignoriert. Allerdings können Sie eine maximale Dateigröße in Kb in der .parseValues-Eigenschaft von fe_adminLib angeben.
  • Funktioniert nur mit Feldern, die für eine Kommalisten-Repräsentation der Dateinamen konfiguriert wurden (nicht MM, shehe "Inside Typo3" für MM-Relationen für Dateien)

Es wird empfohlen, für durch fe_adminLib eingepflegte Dateien einen gesonderten Ordner zu verwenden. Die Typo3-Testseite macht das, in dem der uploads/photomarathon/-Ordner für Bilder benutzt wird. Das macht es einfacher, das Durcheinander aufzuräumen, wenn Dateien und ihre Verhältnisse zu den Datensätzen zerstört werden.

 

Feldnamen für Dateien

Sagen wie, Sie haben ein Feld namens picture in einer Tabelle namens user_cars, dann sollte das Formularelement so aussehen:

HTML
<input type="file" name="FE[user_cars][picture][]">

Wenn Sie mehrere Dateien in dieses Feld hochladen wollen, sollten die Formularelemente so aussehen:

HTML
<input type="file" name="FE[user_cars][picture][]">
<input type="file" name="FE[user_cars][picture][]">
<input type="file" name="FE[user_cars][picture][]">

Benutzen Sie BLOB-Typen für die Datei-Felder und reservieren Sie mindestens 32 Zeichen pro Dateiname.

ANMERKUNG: Fügen Sie dem Feldnamen immer die letzten eckigen Klammern ( ...[] ), sonst wird der Dateiupload nicht funktionieren.

Kommentare von registrierten Benutzern:

Keine Einträge

Keine Einträge im Gästebuch gefunden.