[Modul] Frontenduser Registrierung/Edit/Passwort

Alles rund um Module und Plugins in CONTENIDO 4.10.
Antworten
homtata
Beiträge: 1132
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

[Modul] Frontenduser Registrierung/Edit/Passwort

Beitrag von homtata » Fr 26. Apr 2019, 15:17

Hallo zusammen,

hier das für 4.10.x passende Modulpaket zur Frontenduser(FEU)-Selbstregistrierung:
- FEU-Formular und Handler zur Selbstregistrierung
- Modul zur Überarbeitung der FEU-Daten durch den FEU selbst
- Kennwort-vergessen-Modul
- Kennwort-ändern-Modul

Ich habe ein Paket angehängt, bitte alles erst entpacken und dann
- die Module hochladen und synchronisieren
- alles in /cms in die gleichlautenden Unterordner kopieren (benötigte Funktionen, Bilder usw.)
- alles in /contenido in die gleichlautenden Unterordner kopieren (das sind die FEU-Plugins für die zusätzlichen Datensatzfelder, damit diese im Backend auch editiert werden können)

Dann bitte für jedes neue Modul zunächst eine Vorlage anlegen und je einem neuen Artikel zuweisen.
In den SPRACHUNABHÄNGIGEN Mandanteneinstellungen folgende Werte hinzufügen:
- global | sender-email | (als Wert bitte unbedingt eine valide Absendermail eintragen)
- newsletter | frontendlink | enabled

In den SPRACHABHÄNGIGEN Mandanteneinstellunge für jede Sprache folgende Wert hinzufügen:
- newsletter | idcatart | (als Wert dann die idcatart des Artikels, der das Handler-Modul enthält)

Falls noch nicht aktiviert, das Newsletter-Plugin aktivieren und dort eine Gruppe mit beliebigem Namen anlegen und diese per Klick zur "Standard-Gruppe" machen.

Ich muss warnen: ich habe diese Module jetzt relativ unbearbeitet so hier zusammengefasst, wie ich sie bei einem Kunden hochangepasst im Einsatz habe. Daher passen diese so nicht auf jeden Einsatzzweck und müssen ggf. nochmals weitgehend angepasst werden. Die gute Seite ist: Es ist mehrsprachenfähig (hierzu bitte die Moduleinleitungen im Outputcode lesen) und hat sogar einen "godmode", dazu später mehr.
Außerdem ist wie bei der Ur-4.8er-Version das Newslettermodul komplett angedockt. Der User wird in allen Sprachen auch im Newsletter angelegt. Die von ihm in seinem Profil jeweils gewählte Sprache wird beim Registrieren/Editieren als aktive Newslettersprache zugewiesen.
Damit dies sauber funktioniert, müssen Arrays in den Modulen zur Verfügung stehen, die die gewünschten Sprachen beinhalten; die Module ziehen sich NICHT selbständig die in Contenido angelegten Sprachen (das war in diesem Projekt unpraktisch). Für jede Sprache wiederum müssen bestimmte Arrays vorhanden sein, damit die Dropdowns und Radiobuttons usw. in den verschiedenen Sprachversionen funktionieren. Alle nötigen Funktionen zum dynamischen Erzeugen der Formularfelder liegen bei.

Godmode:
Dieser Kunde verwaltet etliche Einstellungen nicht über das Backend, sondern über das Frontend. Hierfür unterscheiden wir FEUs mit einer ID < 100 (= Admins) und andere (normale User). Ist ein FEU-Admin eingeloggt, wird er aufgrund seiner ID in den "godmode" versetzt. Damit verhalten sich die Module etwas anders, und er kann eine Fremdregistrierung eines Users vornehmen, indem er im geschützten Bereich einen weiteren Artikel mit dem Registrierungsformular bearbeitet. Auch sind ihm dann bei der Bearbeitung der Kundendaten bestimmte Dinge NICHT erlaubt (z.B. Mailadresse ändern usw.). Ich habe diese Funktion dringelassen und nicht deaktiviert - wer dies nicht benötigt, sollte an gewissen Stellen im Modul godmode = false setzen.

Verhalten der Module:

Registrierung:
- Registriert sich ein neuer User, erhält er eine Mail mit dem Confirmationlink. Dieser muss auf den Handler-Artikel verweisen (idcatart prüfen!).
- Klickt er auf den Link, erhält er im Browser eine Erfolgsnachricht und sieht sein Passwort. Dies wird ihm zusätzlich per Mail zugestellt. Gleichzeitig wird die korrekte Newsletterzuordnung aktiviert.
- Danach ist ein Login über das Standard-Loginmodul der 4.10 möglich.

Profil editieren:
- Es ist noch nicht sooo schön, dass hier vieles an Logik gedoppelt werden muss aus der Registrierung, aber eine Zusammenfassung in ein Modul oder mehr Auslagerung in Subroutinen war zu diesem Zeitpunkt nicht drin.

Kennwort vergessen:
- Das Modul schickt an die registrierte Mailadresse (= Username) ein neues Passwort.

Kennwort ändern:
- Hier kann der User sein Passwort selbständig ändern (der zugehörige Artikel muss natürlich in einem Login-geschützten Bereich liegen).

Frontenduser-Plugins und zusätzliche FEU-Felder:
- Für diesen Kunden wurden etliche zusätzliche FEU-Felder angelegt. Diese werden als Properties gespeichert, nicht direkt in der con_frontendusers-Tabelle. Zur Verwaltung im Backend sind die beigefügten FEU-Plugins nötig. Deren Reihenfolge im Backend lässt sich unter Administration/System/Experteneinstellungen bei "frontendusers-pluginorder" festlegen. Werden Felder nicht gebraucht, können einzelne Pluginordner gelöscht und deren Aufruf in den Modulen entfernt werden. Neue Felder bedürfen lediglich angepasster Plugins und entsprechend geänderten Aufrufen der Felder in den Modulen, so wie dies schon für z.B. "fax" gezeigt ist.

HTML-Ausgabe:
- Da diese Module möglichst einfach und ohne zuviel Grundaufwand von 4.8 portiert wurden, verwenden die überwiegend das "alte" Template-System, kein Smarty, auch wenn sich damit etliches eleganter lösen liesse.

Konfiguration durch "Eingabebereiche" der Module:
- Für meine Fälle wäre es zu aufwändig gewesen, die alten Eingabebereiche auf 4.10 anzupassen. Ich habe daher etliche Werte einfach im Moduloutput fest verdrahtet, basta. Wer hier mehr Konfiguration benötigt, müsste selbst Hand anlegen ;-)

Und sonst noch?
Ich weiß, dass diese Module für manche wichtig sind, aber noch viel Anpassung an konkrete Projekte bedürfen. Ich kann dabei aber wirklich nicht intensiv helfen und werde diese zunächst auch nicht weiter feintunen oder "verschönern". Ich poste sie hier nur in einer bereits angepassten Version, damit diese Elemente für die 4.10 in einer Variante für alle zugänglich sind und einige einen Startpunkt habe.

LG

Update v 1.02 vom 26.04.2019
Bug: ereg_replace ersetzt durch str_replace in den Modulen Registrierung und Edit
Maintenance: Name des Registrierungsmoduls (Anzeige innerhalb Contenido) geändert, passend zu den anderen Modulen
Bug: die kundenspezifische FEU-Variable "userconfirmed" auskommentiert im Registrierungsmodul -> errorlog bleibt sauberer.
Dateianhänge
Paket FEU-Verwaltung102.zip
FEU-Paket mit Modulen, Plugins, images, functions usw. (fehlerbereinigt, v. 1.02)
(114.87 KiB) 168-mal heruntergeladen

lunsen_de
Beiträge: 252
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: [Modul] Frontenduser Registrierung/Edit/Passwort

Beitrag von lunsen_de » Do 12. Mai 2022, 08:18

Hallo homtata,

danke für das Modul. Ich will es jetzt gerne in Kürze für eine Kunden einsetzen, habe allerdings noch einige Probleme.
Ich habe eine 4.10.1 Testinstallation in der ich es integriert habe (nach deiner Anleitung). PHP 7.2.34. ModRewrite im Einsatz.

1. Problem bei der Registrierung:
Fülle ich alle Felder (Pflichtfelder richtig aus), und klicke ich auf Änderungen speichern lande ich auf der Startseite (ohne Meldung). Die Weiterleitung zur Startseite ohne Fehlermeldung passiert sobald man das Feld Sprache (englisch, deutsch, etc.) auswählt. Also die Registrierung funtioniert nur, wenn bei Sprache der Standardeintrag nicht angefasst wird!

Hat man sich registriert und auf die Mail geklickt ist die Registrierung abgeschlossen, man hat sein Passwort und kann sich einloggen.
Kennwort ändern funktioniert und Kennwort vergessen soweit ich sehe auch.

2. Problem bei Edit
Ist ähnlich dem Problem 1, in dem Artikel werden alle Dinge, wie registriert, angezeigt. Klicke ich ohne etwas zu ändern auf Änderungen speichern lande ich wieder auf der Startseite, ändere ich etwas dann auch.

Vielleicht hängt es hier auch mit dem Feld Sprache zusammen. Ich hoffe du kannst helfen.

(Was muss man ändern, zum Testen, um das Feld Sprache nicht mehr als Pflichtfeld zu haben?)

Grüße larslunsen

homtata
Beiträge: 1132
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Modul] Frontenduser Registrierung/Edit/Passwort

Beitrag von homtata » Fr 13. Mai 2022, 20:17

Hallo,

zu 1.
Die Umleitung wird durch ein Javascript-Teil in /templates/formular_kundendaten.html ausgelöst. Bei dem Kunden, bei dem ich das Formular so im Einsatz hatte, musste sichergestellt sein, dass auf die gewählte Sprachversion umgesprungen wird. Das lässt sich wahrscheinlich durch Auskommentieren von Zeile 4 und 5 beheben.
zu 2. Gleiche Baustelle, weil auf gleichem Template beruhend.

Um das Sprachenfeld nicht als Pflichtfeld zu haben (falls also nur EINE Sprache da ist), dann einfach statt des select ein hidden-Input-Feld mit der gewünschten Sprachvariablen ins Formular-Template einbauen.

LG
Viktor

lunsen_de
Beiträge: 252
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: [Modul] Frontenduser Registrierung/Edit/Passwort

Beitrag von lunsen_de » Mi 18. Mai 2022, 10:59

Hallo, danke erst einmal für die Info.

Durch das auskommentieren taucht der Fehler bei der Registrierung nicht mehr auf, aber das Problem ist ein anderes.

Meine Sprachen sind deutsch=1 und englisch=2
Das select Feld ist aber so bestückt:

Code: Alles auswählen

<td><select name='Sprache' id='Sprache' onChange="SpracheGo(this);">
<option value='0' >deutsch</option>
<option value='1' selected>english</option>
<option value='2' >francais</option>
<option value='3' >espanol</option>
<option value='4' >italiano</option>
</select></td>

Daher wird bei der Regisitrierung auch für die Auswahl english in der Datenbank die 1 abgespeichert und wählt man francais steht in der Datenbank die 2 (also ist die lang des Users 2, also eigentlich english).
Die Auswahl deutsch führt ins Chasos, denn dann wird 0 in die Datenbank geschrieben, 0 gibt es nicht und will man dann seine Angaben editieren, geht bei den select Feldern (sprache, land) garnix mehr und Sie sind leer.
Das Editieren geht auch bei den anderen Sprache nicht richtig (Auswahl wird nicht gespeichert und es geht wieder ab auf die Startseite), hier passen die gespeicherte Spach ID nicht zu den IDs in dem Selectfeld, vermute ich.

Wo lässt sich der Fehler beheben?

Grüße Lars

homtata
Beiträge: 1132
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Modul] Frontenduser Registrierung/Edit/Passwort

Beitrag von homtata » Do 19. Mai 2022, 00:00

Im Output des Registrierungsmoduls werden in Zeile 32 die Arrays für dieses Select-Feld erstellt. In Zeile 380 wird daraus mit Hilfe einer function (mitgeliefert) dann eine Variable für das Templatesystem erzeugt ("spracheval"). Wie gesagt ist das ganze System ohnehin nicht auf alle Usecases umbaubar gewesen vor dem Posten, also hab ich das so genommen, wie ich es für einen Kunden für 6 Sprachen aufgebohrt habe. Im Template siehst du ja, mit welchem Variablennamen das select-Feld die Sprach-Option speichert; zur Not bau halt einfach dein eigenes select-Feld da rein.

lunsen_de
Beiträge: 252
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: [Modul] Frontenduser Registrierung/Edit/Passwort

Beitrag von lunsen_de » Mi 25. Mai 2022, 11:14

Hallo, ich habe es jetzt hinbekommen.

Ich habe im Moduloutput

Code: Alles auswählen

$tpl->set('s', 'spracheval', createSelNumSimple($set_language, $_POST["Sprache"], "Sprache", $lang));
geändert in

Code: Alles auswählen

$tpl->set('s', 'spracheval', createSelNum($set_language, $_POST["Sprache"], "Sprache", $lang));
also eine andere Funktion verwendet. Damit erscheint jetzt auch das "Bitte wählen" bei der Sprache, was vorher nur beim Land zu sehen war.

Dann habe ich noch in der funktions.t2t.php bei der function createSelNum das "$i = 0;" auf "$i = 1;" geändert und jetzt passen die value ID's auch zu den Sprachen, weil Sie nicht mehr mit 0 sondern 1 beginnen und 0 gibt es als Sprachid ja nicht.

PS: Bei der Function createSelNumSimple gibt es kein Dropdownfeld "bitte wählen" ($sel_function .= "<option value=''>".DROPDOWNCHOOSE."</option>";). Vielleicht war das ja Absicht.

Grüße Lars

Antworten