Formulář pro přihlášení nebo registraci spolu s vyplnění dalších hodnot v jendom

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TonnyVlcek
Člen | 31
+
0
-

Ahoj,
snažím se naimplementovat následující chytré formuláře.

JS Prototyp: https://jsfiddle.net/o6a4jtt0/
Existující email: aaa@bbb.com
Heslo: 1234

Příklad:
CommentFormControl
|
+ — UserFromPart < Část formuláře, která umí přihlásit uživatele, odeslat email pro restart hesla
|
+ — CommentFormPart < Titulek, text komentáře

Postup je následující:

  1. Uživatel přijde poprvé na stránku, v části UserFromPart vyplní informace o sobě (email, jméno, telefonní číslo). V části CommentFormPart vyplní titulek a text komentáře.
  2. Jakmile tento formulář odešle vytvoří se uživatelský účet (jako klasická registrace) na základě informací z UserFormPart. Na uvedený email se odešle zpráva s aktivačním odkazem. Když na něj uživatel klikne bude si moct zvolit své heslo a tím se jeho účet aktivuje.
  3. Uživatel se na stránku vrátí a bude chtít znovu přidat komentář. Začne vyplňovat stejný formulář jako minule, jakmile ale vyplní svůj email (.onfocusout) zobrazí se blok obsahující: políčko s heslem, tlačítko „Přihlásit a předvyplnit“, a tlačítko pro restart hesla. Tento blok se zobrazí pokaždé když uživatel zadá email, který již existuje v databázi. Ideálně bych to chtěl udělat tak, že pokud potom změní některý z předvyplněných údajů (krom emailu) a odešle celý formulář, změna se provede v jeho profilu (uloží do db).

Formulářů tohoto typu bude v aplikaci více (třeba přidat komentář, přidat článek, zapsat se k akci, atp…).

Cílem tohoto řešení je udělat proces co možná nejrychlejší a nejjednodušší pro uživatele, který se na stránku dostal poprvé (proto není možné udělat klasikou registraci, nechat uživatele přihlásit a potom vyplnit formulář), zároveň je ale možné ukládat data ve strukturované podobě – takhle můžu mít profil uživatele v administraci a vidět, které články, komentáře a další věci přidal. Navíc díky předvyplnění (nebo když už bude přihlášený a přijde na stránku s formulářem) se process zrychlí i pro uživatele, který stránku používá často.

Právě protože bude těchto formulářů více, se snažím přijít na nějaký chytrý způsob jak to implementovat. Napadlo mě to rozdělit do komponent podle diagramu v Příkladu. Kde UserFormPart je komponenta, která se sama umí starat o ověření emailu, následné (ne)zobrazení bloku s heslem, odeslání emailu na restart hesla a přihlášení uživatele.

Možná to celé zbytečně komplikuji a ve výsledku to nemusí být jeden chytrý formulář, který se umí rozšiřovat o další prvky, ale prostě dva, které se navzájem občas (při odeslání) ovlivňují. Každopádně nějak jsem se do toho problému zamotal a nemůžu přijít na pěkný způsob implementace.

Jak byste to řešili vy? Stačí stručně nadhodit nějaký nápad, já už se snad chytnu :)
Jak řešit ten onfocusout? Umím to pomocí javascriptu, a potom zavolat signál na komponentě – dá se to udělat líp?

Díky moc za váš čas a nápady :)