Erweiterung von feuser in Verb. mit sr_feuser_registration

  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    18. 09. 2006, 15:15

    Hallo,

    ich habe die feuser mit einer kleinen Ext. um ein neues Feld erweitert.

    Danach das html Template angepasst und das Feld mit seinen Markern und Subparts hinzugefügt.

    Das komische ist nun, dass die Marker wie ###REQUIRED_FELDNAME### oder die Error Subparts von Typo3 nicht gelöscht werden. Sie werden weiterhin gerendert ... bzw. die Marker angezeigt.

    Der Labelmarker wird richtig ersetzt!

    Hab ich irgendwas vergessen?! o.O

    Gruß, Evil


  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    18. 09. 2006, 15:46

    ok die Lösung war einfach ... man muss FELDNAME genauso nennen wie das entsprechende erweiterte Feld in der mysql DB - also zB. tx_extkey_feldname

    dann passt es auch ...

  • hildebecker hildebeck...
    Padawan
    0 x
    31 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2006, 16:27

    hi evil,

    kannst du mir vielleicht sagen, wie du das mit dem neuen Feldnamen gemacht hast? ich bin nur bis zum extension kickstarter gekommen und dann weiß ich nicht mehr weiter...#paralyzed#

    danke schon mal

    hilde

  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    21. 09. 2006, 16:15

    Naja du gehst in den Extension Manager und dann oben im Menü auf "Neue Extension anlegen"

    1)
    Dann gibts du der Extension erstmal einen eindeutigen Schlüssel (Name, der die Extension eindeutig identifiziert) unten in dem "Enter Extension Key" Feld.

    Bei mir z.B.: ab_feuser_extend (das ab steht in dem Fall für meine Initialen)

    Danach erstmal auf Update klicken.

    2)
    Wenn du willst, dass die Ext. im Backend später mehrsprachig ist (also zB. deutsch, wenn deine Oberfläche deutsch eingestellt ist), dann klick im Kickstarter Menü zunächst auf das "+" neben "Setup languages".

    Dort setzt du ein Häkchen bei "German" beispielsweise ... danach wieder unten auf Update.

    3)
    Jetzt klickst du auf das "+" ganz oben im Menü neben "General Info".

    Dort trägst du jetzt in die Felder jetzt den:

    Title (das ist der Titel der Ext. im Ext. Manager später) - bei mir z.B.: FE User Newsletter Extend

    Description (die Beschreibung der Ext. im Ext. Manager) - bei mir z.B.: Extends the fe_user table with a newsletter field

    Category (das ist die Kategorie in der die Ext. später im Ext. Manager aufgelistet wird) - bei mir z.B.: Backend

    Status (der Status deiner Ext.) - hier bietet sich Alpha an ;)

    Dependencies (eventuelle Anhängigkeiten von anderen Ext.) - kann hier leer gelassen werden

    Name & eMail sollte klar sein

    --> Jetzt wieder auf den "Update" Button

    4)
    Nun klickst du auf das "+" neben "Extend existing tables", da du ja eine vorhandene mySQL Tabelle (nämlich die fe_users) erweitern willst.

    Auf der Seite wählst du nun oben bei "Which table" die Tabelle aus, die du erweitern willst; wie gerade eben schon gesagt: Frontend Users (fe_users)

    Unter diesem Dropdown Feld findest du nun ein paar Input Felder.

    Field name: das ist der Name Feldes in der mySQL Datenbank später

    Field title: das ist der spätere Titel des Feldes im Backend - wenn du vorhin zusätzliche Sprachen ausgewählt hast, erscheinen eingerückt nur Felder für die Übersetzungen des Titels

    Field type: hier wählst du aus, was es für ein zusätzliches Feld wird, also z.B. ein normales Eingabefeld wäre eben ein "String input"

    Es gibt natürlich sehr viele Feldtypen ... ich werde jetzt als Beispiel mal ein einfaches Eingabefeld hinzufügen. Ich würde als Beispiel mal ein Feld für das Autokennzeichen vorschlagen. Hier mal als Beispiel, wie ich die Felder ausfüllen würde...

    Field name: plate (der Name des DB Feldes ... in der mySQL DB wäre also später ein Feld tx_abfeuserextend_plate ... das kannst du später z.B. mit phpMyAdmin kontrollieren)

    Field title: Registration Plate (erstmal auf Englisch, da default Sprache ja Englisch in Typo3 ist) - untendrunter eingerückt die deutsche Übersetzung: Autokennzeichen

    Field type: String Input (ein einfaches Eingabefeld)

    --> Nun wieder auf den "Update" Button untendrunter ... jetzt hat es nach dem Aktualisieren noch ein paar Felder hinzugefügt, die man für das Eingabefeld konfigurieren könnte ... die benötige ich jetzt erstmal nicht und veränder dort also nichts

    Wenn du mehrere Felder hinzufügen willst, musst du einfach wieder das Field name, title, type welches zusätzlich untendrunter dazugekommen ist ausfüllen und updaten. Ich belasse es beispielsweise erstmal nur bei dem Autokennzeichen.

    5)
    Nun bist du mit der Ext. erst einmal fertig und du kannst links auf den Button "View result" klicken. Dort siehst du nun, welche Dateien dir der Extension Manager aus deinen Einstellungen heraus generiert hat.

    Das kannst du dir mal anschauen und wenn du fertig bist, dann klickst du oben in der Mitte auf den "WRITE" Button!

    Nun ist deine Ext. zu einer Ext. geworden und auf der nächsten Seite die geladen wird, kannst du deine Ext. über das gewohnte Typo3 "+" Symbol installieren.

    Die erste Hälfte ist geschafft ! Ich hoffe bis hierhin bist du gut mitgekommen 8-)

    Ab jetzt geht es um die sr_feuser_register Extension...

    6)
    Nun geht es daran, das HTML Template für die User Registrierung zu erweitern!

    Dazu nimmst du dir eines der mitgelieferten Original HTML Templates und kopierst es dir auf deine Festplatte. Die Templates findest du im Ext. DIR von Typo3 "typo3conf/ext/sr_feuser_register/pi1/".
    Ich habe mir das "tx_srfeuserregister_pi1_css_tmpl.html" heruntergeladen!

    7)
    Die Datei öffnest du nun in einem HTML Editor:

    In der HTML Datei sind die ganzen Ansichten des Registrierungsprozesses gespeichert - nämlich in den einzelnen Subparts (ich hoffe, du weißt jetzt was ich damit meine).

    Die für uns wichtigen sind (wo wir editieren müssen):

    ###TEMPLATE_CREATE###

    ###TEMPLATE_CREATE_PREVIEW###

    ###TEMPLATE_INVITE###

    ###TEMPLATE_INVITE_PREVIEW###

    ###TEMPLATE_EDIT###

    ###TEMPLATE_EDIT_PREVIEW###

    Hier mal die Struktur eines Blockes, wie er bei CREATE,INVITE und EDIT eingetragen werden muss:

    [HTML]<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
    <dt>
    <label for="tx-srfeuserregister-pi1-myNewFieldName">###LABEL_MYNEWFIELDNAME###</label>
    <span class="tx-srfeuserregister-pi1-required">###REQUIRED_MYNEWFIELDNAME###</span>
    </dt>
    <dd>
    <!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
    <p class="tx-srfeuserregister-pi1-error">###EVAL_ERROR_FIELD_myNewFieldName###</p>
    <!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
    <!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
    <p class="tx-srfeuserregister-pi1-error">###MISSING_MYNEWFIELDNAME###</p>
    <!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
    <input id="tx-srfeuserregister-pi1-myNewFieldName" type="text" size="40" maxlength="50" title="###TOOLTIP_MYNEWFIELDNAME###" name="FE[fe_users][myNewFieldName]" class="tx-srfeuserregister-pi1-text" />
    </dd>
    <!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->[/HTML]

    In unserem Beispiel mit dem Autokennzeichen, würde das ganze so aussehen!

    [HTML]<!-- ###SUB_INCLUDED_FIELD_tx_abfeuserextend_plate### -->
    <dt>
    <label for="tx-srfeuserregister-pi1-tx_abfeuserextend_plate">###LABEL_MYNEWFIELDNAME###</label>
    <span class="tx-srfeuserregister-pi1-required">###REQUIRED_MYNEWFIELDNAME###</span>
    </dt>
    <dd>
    <!-- ###SUB_ERROR_FIELD_tx_abfeuserextend_plate### -->
    <p class="tx-srfeuserregister-pi1-error">###EVAL_ERROR_FIELD_tx_abfeuserextend_plate###</p>
    <!-- ###SUB_ERROR_FIELD_tx_abfeuserextend_plate### -->
    <!-- ###SUB_REQUIRED_FIELD_tx_abfeuserextend_plate### -->
    <p class="tx-srfeuserregister-pi1-error">###MISSING_TX_ABFEUSEREXTEND_PLATE###</p>
    <!-- ###SUB_REQUIRED_FIELD_tx_abfeuserextend_plate### -->
    <input id="tx-srfeuserregister-pi1-tx_abfeuserextend_plate" type="text" size="40" maxlength="50" title="###TOOLTIP_TX_ABFEUSEREXTEND_PLATE###" name="FE[fe_users][tx_abfeuserextend_plate]" class="tx-srfeuserregister-pi1-text" />
    </dd>
    <!-- ###SUB_INCLUDED_FIELD_tx_abfeuserextend_plate### -->[/HTML]

    Diesen Block musst du nun bei den Subparts CREATE, INVITE und EDIT an der Stelle einfügen wo du ihn später im Registrationsformular sehen willst. Wie du siehst handelt es sich bei den Marker und Subpartsbezeichnungen immer um den Namen, wie auch das mySQL Feld lautet, das ist sehr wichtig!

    Nun brauchen wir noch die Struktur für die Preview Ansichten CREATE_PREVIEW, INVITE_PREVIEW und EDIT_PREVIEW

    [HTML]<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
    <dt>###LABEL_MYNEWFIELDNAME###</dt>
    <dd>###FIELD_MYNEWFIELDNAME###</dd>
    <!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->[/HTML]

    Für unser Beispiel müsste das dann so aussehen!

    [HTML]<!-- ###SUB_INCLUDED_FIELD_tx_abfeuserextend_plate### -->
    <dt>###LABEL_TX_ABFEUSEREXTEND_PLATE###</dt>
    <dd>###FIELD_TX_ABFEUSEREXTEND_PLATE###</dd>
    <!-- ###SUB_INCLUDED_FIELD_tx_abfeuserextend_plate### -->[/HTML]

    Diese ebenfalls wieder in die drei jeweiligen Subparts an der Stelle einfügen, wo sie später in der Preview Ansicht auftauchen soll.

    Nun speicherst du das Ganze ab, z.B.: feuserregisterTemplate.html und lädst es in dein fileadmin Verzeichnis auf dem Server.

    Damit wäre das neue HTML Template fertig! 8-)

    8-)
    Nun müssen wir im Constant Editor dein Feld hinzugügen, damit es auch angezeigt wird. Wechsle also in die Templateansicht und wähle den Constant Editor im Menü oben rechts.

    Als Category wählen wir die "PLUGIN.SRFEUSERREGISTER_PI1" aus. Dann musst du ziemlich weit nach unten scrollen und es wird dir Einstellmöglichkeit "Registration form fields" über den Weg laufen.
    Dort stehen alle Felder drin, die im Registrierungsformular angezeigt werden sollen. Falls noch nicht geschehen musst du für die Bearbeitung das Häkchen setzen und zunächst unten auf speichern klicken, damit es zur Bearbeitung freigeschalten wird.

    Ist dies geschehen kannst du nun am Ende dein neues eigenes Feld eintragen (einfach Komma und dein Feld hinzufügen). In meinem Beispielfall wäre das:

    tx_abfeuserextend_plate

    Danach wieder unten auf Speichern.

    --> Jetzt würde man dein Feld rein theoretisch auf der Website schonmal im Registrierungsformular sehen, allerdings würden die ganzen Marker & Labels zur Bezeichnung noch nicht ersetzt werden, weil wir sie für das Frontend noch nicht gesetzt haben!
    Außerdem wird es generell bis jetzt noch nicht angezeigt, weil wir im TS Setup noch nicht dein neues HTML Template für das Registrierungsformular festgelegt haben!

    9)
    Das machen wir jetzt 8-)

    Wechsel vom Constant Editor in das TS Setup (im Menü oben rechts auf Info/Modify und danach auf den Bleistift vor Setup klicken, aber das wirst du denk ich wissen). Im Setup müssen wir nun ein paar Werte hinzufügen und danach "Updaten".

    [TS]# FE User Register
    plugin.tx_srfeuserregister_pi1 {
    templateFile = fileadmin/feuserregisterTemplate.html

    extraLabels = tx_abfeuserextend_plate

    # no eval for plate field
    create.evalValues.tx_abfeuserextend_plate =

    # label, languages etc. for plate field
    _LOCAL_LANG.default.tx_abfeuserextend_plate = Autokennzeichen:
    _LOCAL_LANG.default.missing_tx_abfeuserextend_plate = Bitte nennen Sie uns ihr Autokennzeichen
    _LOCAL_LANG.default.missing_invitation_tx_abfeuserextend_plate = Bitte nennen Sie uns ihr Autokennzeichen
    _LOCAL_LANG.default.evalErrors_evalRuleName_tx_abfeuserextend_plate =
    }[/TS]

    Zur Erklärung:

    In Zeile 3 geben wir den Pfad zum neuen HTML Template für das Registrationsformular an.

    In Zeile 5 aktivieren wir das neue Feld und seine Labels

    In Zeile 8 deaktivieren wir die Evaluierung des Eingabefeldes, da wir Sie nicht (wie z.B. bei einem Email Feld) benötigen

    In Zeile 11-14 werden die einzelnen Labels für das Formular Feld gesetzt.

    FERTIG ... das war es ... du hast es geschafft ... rein theoretisch sollte alles funktionieren.

    Viel Spaß ... Gruß Evil 8-)

  • tillj tillj
    T3PO
    0 x
    9 Beiträge
    0 Hilfreiche Beiträge
    22. 09. 2006, 09:39

    Vielen Dank fuer das ausgiebige Tutorial.

    Das beschreibt ziemlich genau das was ich gerade irgendwie hinfummeln wollte, und spart mir bestimmt einige Aspirin und oder Stunden ein :)

  • hildebecker hildebeck...
    Padawan
    0 x
    31 Beiträge
    0 Hilfreiche Beiträge
    22. 09. 2006, 09:53

    hi evil,

    super, danke!! die typo3 welt wäre ein besserer ort, würde jeder so ausführlich auf dumme anfängerfragen antworten ;)

    hilde

  • tillj tillj
    T3PO
    0 x
    9 Beiträge
    0 Hilfreiche Beiträge
    06. 10. 2006, 17:34

    Bin jetzt endlich dazu gekommen das mal auszutesten.
    Funktioniert alles genau wie beschrieben allerdings musste ich eine kleine Änderung vornehmen.

    Damit die Vorschau der Eingaben funktioniert muss im Template der zweite Feldname kleingeschrieben werden. Im englischen Handbuch ist es seltsamerweise ebenfalls falsch. Bei mir ging es allerdings erst nachdem ich es klein geschrieben hatte.

    Also muss aus:
    [HTML]<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
    <dt>###LABEL_MYNEWFIELDNAME###</dt>
    <dd>###FIELD_MYNEWFIELDNAME###</dd>
    <!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
    [/HTML]

    das hier werden:
    [HTML]<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
    <dt>###LABEL_MYNEWFIELDNAME###</dt>
    <dd>###FIELD_myNewFieldName###</dd>
    <!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
    [/HTML]

    TCA-Felder sind analog auch mit kleinen Feldnamen zu versehen.

  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    20. 10. 2006, 11:24

    ich habe gerade nochmal in meiner Ext. nachgeschaut - da ist der 2. Feldname auch kleingeschrieben, hab ich wohl einfach übersehen.
    danke für den hinweis ;)

    aber es freut mich, dass es so gut funktioniert 8-)

    ps: bei der Struktur des Blockes, wie er bei CREATE,INVITE und EDIT angewendet wird, habe ich auch im Beispiel beim LABEL und SPAN Tag vergessen MYNEWFIELDNAME zu ersetzen, ich hoffe aber, dass das jedem aufgefallen ist ;)

  • 0 x
    17 Beiträge
    0 Hilfreiche Beiträge
    04. 12. 2006, 16:25

    Schönen Guten Tag,

    @EvilBMP:
    für welche Version hast du denn das Ganze beschrieben? In meiner Version 4.0.2 von Typo3 mit installiertem Kickstarter (v0.1.1) gibt es keinen Link im Menü des Ext. Managers um eine neue Extension anzulegen.

    Gruß MChi.

  • breakBeat breakBeat
    R2-D2
    0 x
    91 Beiträge
    0 Hilfreiche Beiträge
    14. 05. 2007, 08:41

    #angry#

    Zur sr_feuser_registration habe ich eigene Felder eingefügt ähnlich wie hier beschrieben. Mein Problem ist das die Fehlermeldung nicht richtig angezeigt wird.

    Die Fehlermeldungen erscheinen gesammelt in einem DIV und nicht am Feld wie im Beispiel. Bei den eigenen Feldern des Plugins wie username funktioniert alles prima.

    Bei meinem Vorname-Feld habe ich schon etliche Varianten in der Schreibweise probiert. Entweder es wird nicht ersetzt wie konfiguriert oder es erscheint wie in diesem Beispiel eine leere Zeile.

    Auszug aus dem HTML-Template
    [HTML]<ul class="liststyle">
    <!-- ###SUB_ERROR_FIELD_username### -->
    <li class="liststyleLI">###EVAL_ERROR_FIELD_username###</li>
    <!-- ###SUB_ERROR_FIELD_username### -->

    <!-- ###SUB_ERROR_FIELD_tx_aahc_p_vorname### -->
    <li>###EVAL_ERROR_FIELD_tx_aahc_p_vorname###</li>
    <!-- ###SUB_ERROR_FIELD_tx_aahc_p_vorname### -->

    <!-- ###SUB_REQUIRED_FIELD_tx_aahc_p_vorname### -->
    <li class="liststyleLI">###MISSING_TX_AAHC_P_VORNAME###</li>
    <!-- ###SUB_REQUIRED_FIELD_tx_aahc_p_vorname### -->
    </ul>

    [/HTML]

    Lokalisierung:
    [TS]plugin.tx_srfeuserregister_pi1 {
    LOCAL_LANG {
    de {
    missing_tx_aahc_p_vorname = Bitte Vorname eingeben!
    missing_tx_aahc_p_vorname_informal = Bitte Vorname eingeben!
    }
    }
    }
    [/TS]

    Und das kommt dabei heraus wenn beide Felder leer sind #evil#
    [HTML]<ul class="liststyle">

    <!-- ###SUB_ERROR_FIELD_username### -->
    <li class="liststyleLI">Ihr Benutzername muss mindestens 6 Zeichen enthalten.</li>
    <!-- ###SUB_ERROR_FIELD_username### -->

    <!-- ###SUB_REQUIRED_FIELD_tx_aahc_p_vorname### -->
    <li class="liststyleLI"></li>
    <!-- ###SUB_REQUIRED_FIELD_tx_aahc_p_vorname### -->

    </ul>

    </div>
    [/HTML]

    Hat jemand eine Idee ?