Bug #15521
closedForm Editor: Create new / edit pills, assigns always a container
0%
Description
QFQ: 23.2.0
Wenn ein Formular Pills hat und ein weiterer Pill angelegt werden oder ein bestehender bearbeitet wird, so wird immer ein Container selektiert. <Leer> ist nicht moeglich.
FE Container: Nach Auswahl von <leer> wird automatisch wieder ein Pill selektiert.
FE.value:
{{feIdContainer:FR:::{{SELECT fe.feIdContainer FROM FormElement AS fe WHERE fe.formId={{formId:SR0}} AND fe.feIdContainer!=0 AND "{{class:FRD0:alnumx}}"!="action" ORDER BY fe.modified DESC LIMIT 1}}}}
Die Idee waere das STORE_FORM hier bei einem Dynamic Update greifen sollte und eine '0' liefern die ein POST gesendet haben sollte. Aber: '0' wird als leer angesehen und damit greift STORE_FORM nicht, und QFQ sucht dann in STORE_RECORD und anschliessend im default value.
Fuer das bestimmen, ob eine QFQ Variable im STORE_FORM gesetzt ist, sollte also nicht der Wert 0 oder '' entscheidend sein, sondern ob es einen POST gab und in diesem das zugehoerige FROM Element submitted wurde.
Files
Updated by Enis Nuredini 4 months ago
- Status changed from New to Ready to sync (develop)
- Assignee changed from Support: Web to Carsten Rose
Bisher wurde der Default genommen falls Variable nicht im Store gefunden wurde oder wenn ja dann falls Value ein leerer String war (beim Wert 0 wird der Default nicht gesetzt).
Nun wurde ein Check implementiert mit welcher die mitgelieferten POST Variablen mit der aktuell behandelnden Variable abgeglichen wird. Die POST Variablen besitzen bei den FormElementen am Ende immer einen Dash mit einer Nummerierung. Diese wird beim Check entfernt um den Match zu ermöglichen.
Updated by Carsten Rose 4 months ago
- File clipboard-202302161959-v75dm.png clipboard-202302161959-v75dm.png added
- File clipboard-202302162001-ywiaz.png clipboard-202302162001-ywiaz.png added
- Status changed from Ready to sync (develop) to Feedback
- Assignee changed from Carsten Rose to Enis Nuredini
Hallo Enis
Es ist schon deutlich besser, aber es scheint noch immer Probleme zu geben:
Form:
Neues FE anlegen > inkl. Container > save: ok > close > FE wieder aufrufen > Container auf leer setzen > Save > close > FE wieder aufrufen: Jetzt wird wieder ein Container angezeigt!!! Achtung: der ist nicht gespeichert, scheinbar wird nun ein falscher Default geladen.
Updated by Enis Nuredini 4 months ago
Der Check des 0 Wertes als Integer wurde bisher auch als empty angesehen was dann auch bei der Record Variable zum Default führte. Die Mitgabe des Defaults scheint hartnächkig zu sein mit dieser Logik.
Neu hab ich nun den Check von einem einfachen equal zu einem identical compare geändert. Womit nun ein Integer 0 nicht mehr als leerer String angesehen wird.
Die einzige Möglichkeit um den Default zu triggern bleibt die Mitgabe eines leeren Strings und natürlich ein definierter Default. Beim select, radio und checkbox setzen wir beim form store entsprechend 0 als Wert falls leerer String geliefert wird.