Többértékű user reference mezőim vannak (ennél több is, mint ami alább látszik) és az lenne a feladat
hogy minden kiválasztott usernek meg lehessen adni a nyelvet is.
Ilyen most:
+--------------------------------------------------------+ | Szerzők | |--------------------------------------------------------| | ^ +----------------------+ | |<-+-> | szerzo1_user | | | v +----------------------+ | |+------------------------------------------------------+| | ^ +----------------------+ | |<-+-> | szerzo2_user | | | v +----------------------+ | +--------------------------------------------------------+ +-------------------------+ | Újabb elem hozzáadása | +-------------------------+ +--------------------------------------------------------+ | Fordítók | |--------------------------------------------------------| | ^ +----------------------+ | |<-+-> | fordito1_user | | | v +----------------------+ | |+------------------------------------------------------+| | ^ +----------------------+ | |<-+-> | fordito2_user | | | v +----------------------+ | +--------------------------------------------------------+ +-------------------------+ | Újabb elem hozzáadása | +-------------------------+
és ilyenek kéne lennie,
vagy valami hasonlónak:
+--------------------------------------------------------+ | Szerzők | |--------------------------------------------------------| | ^ +----------------------+ +-----------------+---+ | |<-+-> | szerzo1_user | | Magyar | V | | | v +----------------------+ +-----------------+---+ | |+------------------------------------------------------+| | ^ +----------------------+ +-----------------+---+ | |<-+-> | szerzo2_user | | Magyar | V | | | v +----------------------+ +-----------------+---+ | +--------------------------------------------------------+ +-------------------------+ | Újabb elem hozzáadása | +-------------------------+ +--------------------------------------------------------+ | Fordítók | |--------------------------------------------------------| | ^ +----------------------+ +-----------------+---+ | |<-+-> | fordito1_user | | Magyar | V | | | v +----------------------+ +-----------------+---+ | |+------------------------------------------------------+| | ^ +----------------------+ +-----------------+---+ | |<-+-> | fordito2_user | | Magyar | V | | | v +----------------------+ +-----------------+---+ | +--------------------------------------------------------+ +-------------------------+ | Újabb elem hozzáadása | +-------------------------+
Ami eszembe jut két megoldásként:
1. a legmunkaigényesebb:
- Amikor kimegy a form megszámolom, hogy egy user reference mezőnek hány értéke (beviteli mezője) van, és ugyanannyi lenyíló listát rakok ki, a user reference mező alá, és ezeket mellé float-olom.
- Ha újabb mezőt adnak hozzá (ajax), akkor én is hozzáadok jQuery-vel egy mezőt. Itt még az is külön téma, hogy a form api a jQuery-is plussz mezőimet elfogadja.
- Ha átrendezik a mezők sorrendjét, jQuery-vel rendezhetem a nyelveket tartalmazó listákat is.
2. többértékű textfield a nyelveknek lenyíló listák helyett
- A minden user reference mező mellé float-olok egy többértékű beviteli mezőt, ahová beírják kézzel a nyelvek kódját ('hu', 'en' stb.)
- És odafigyelnek, hogyha átrendezik a user-eket, vagy újabbat adnak hozzá, akkor a nyelvkódot tartalmazó mezőket is átrendezik/kitöltik.
- A szerver oldalon ezt még le kell validálni, hogy ne lehessen olyan user, akihez nincs nyelv rendelve.
----------
Igazából elég összetett a form, meg a mögötte lévő business logic, ezért gondolkodom abban, hogy a form-ot bővítsem valami megoldással.
Kicsit, hosszú lett a kérdés. Köszönöm, annak, aki elolvassa.
Abban reménykedek, hátha van valamilyen pofonegyszerű megoldás, ami nekem nem jutott eszembe.
Eszembe jutott még egy megoldás
a legjobb eddig:
- Minden user reference mezőre ráakasztok egy onChange jQuery eseménykezelőt, ami akkor fut le, ha beírták/megváltoztatták a usernevet.
- Az eseménykezelőben feldobok egy popup ablakot, ahol ki kell választania a nyelvet.
- A kiválasztott nyelvet eltárolom egy custom attributumaként a mezőnek, pl.: 'data-lang' (html5)
- A kiválasztott nyelvet megjelenítem a user ref. mező mellett.
- A megjelenített nyelvre kell még egy onClick esemény, hogy változtatni lehessen a nyelven.
Ez messze a legegyszerűbb eddig. Bár itt is vannak problémák:
- Ha változtat a user nevén, újra kell választania a nyelvet.
- Ha átrendezi a mezőket, akkor a custom attributum (data-lang) is "mozogni" fog a mezővel, kérdés, hogy hova írjam ki a nyelvet, hogy a kiírás is kövesse a mozgatott mezőt?
- A form elküldése után a form API a jQuery-vel létrehozott attributumot továbbítja? Vagy érvényteleníti a form-ot?