Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-04-10T07:29:14ZProject @ iMath
Redmine QFQ - Bug #18331 (In Progress): Multiform speichern von mehr als 1 mit record id = 0https://project.math.uzh.ch/issues/183312024-04-10T07:29:14ZZhoujie Li
<ul>
<li>In einem Multiformular kann man mehrere Datensätze mit der ID 0 aufrufen.</li>
<li>Das Speichern funktioniert jedoch nicht korrekt mit mehrere record die ID 0 sind. </li>
<li>Beim Speichern werden immer die mit ID 0 Daten des zuletzt gespeicherten Datensatzes übernommen.</li>
<li>IDs werden aber korrekt gesetzt.</li>
</ul> QFQ - Support #18259 (ToDo): Zeit einschätzung IPAhttps://project.math.uzh.ch/issues/182592024-04-02T15:49:26ZZhoujie Li
<p><a class="external" href="https://project.math.uzh.ch/projects/qfq/wiki/Form_Wizard">https://project.math.uzh.ch/projects/qfq/wiki/Form_Wizard</a></p> QFQ - Support #18252 (New): U:uid=.. rename 'uid' to 'qref'https://project.math.uzh.ch/issues/182522024-04-02T09:13:59ZEnis Nuredini
<p>Umbennenung von uid zu qref. Mit Unterstützung von Subheader, Report filename und uid .</p>
<a name="Situationen"></a>
<h2 >Situationen:<a href="#Situationen" class="wiki-anchor">¶</a></h2>
<ul>
<li>T3 Record (int): tt_content.uid</li>
<li>T3 Record (string): tt_content.subheader</li>
<li>File: *.qfqr</li>
</ul>
<p>Bsp:<br /><pre>
uid:456?xId=45
uid:myFunction?xId=45
uid:file.qfqr?xId=45
</pre></p>
<ul>
<li>Es waere vermutlich gut wenn wir 'Backward' Kompatibel bleiben wuerden!!!</li>
</ul> QFQ - Bug #18184 (New): _link combination of g:_blank and q:.. not workinghttps://project.math.uzh.ch/issues/181842024-03-20T23:59:51ZEnis Nuredini
<p>Wird das special column name _link in Verbindung mit g:_blank und q:... verwendet dann wird nach Klick darauf nicht in einem neuem Tab geöffnet sondern im aktuellen. Das Attribut target wird auf den Button korrekt gesetzt. Es scheint etwas mit dem Handling beim Bestätigen des Alerts zu tun.</p> QFQ - Bug #18163 (New): Form: reload current record after use of sqlBefore/sqlAfter and before Fo...https://project.math.uzh.ch/issues/181632024-03-17T15:40:12ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Scheinbar wird der primary Record nicht neu geladen, falls dieser mit sqlBefore/sqlAfter in einem Native FE nochmal angepasst wurde. Erst nach Page Reload wird der aktuelle Wert gezeigt.</p>
<p>Wird die gleiche Query in einem Action FE gefeuert stimmen die angezeigten Werte direkt nach dem Save, der akuelle Record wird nochmal neu geladen bevor er angezeigt wird.</p>
<p>Aufgefallen ist bei der Erfassung einer getrennten Zeitangabe im Form `myVorlesungPruefungNotiz`.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9519/clipboard-202403171638-kglq1.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9520/clipboard-202403171639-tlp2t.png" alt="" /></p> QFQ - Bug #18155 (New): Form escapeTypeDefault btn-group not workinghttps://project.math.uzh.ch/issues/181552024-03-15T11:03:10ZEnis Nuredini
<p>Die Auswahl eines escapeTypeDefault im Form Editor macht keinen Unterschied. Es verändert sich nichts.</p> QFQ - Support #18057 (New): {{sqlLog:Y}} returns empty string when not configuredhttps://project.math.uzh.ch/issues/180572024-03-05T07:31:43ZElias Villiger
<p>When the QFQ config for <code>sqlLog</code> (or <code>qfqLog</code>, <code>mailLog</code>) is empty, the default log directory (<code>fileadmin/protected/qfqProject/log/sql.log</code>) is used.</p>
<p>When retrieving <code>{{sqlLog:Y}}</code> from the System Store, this returns an empty string (corresponding to the config value).</p>
<p>Expected behavior: When there's no specific log path configured, I would expect it to return the default/actual path to the log file.</p>
<p>Example use case: <a class="external" href="https://docs.qfq.io/en/master/Report.html#monitor">https://docs.qfq.io/en/master/Report.html#monitor</a></p> QFQ - Support #18048 (New): Upload (filepond): FE.downloadButton missing tooltiphttps://project.math.uzh.ch/issues/180482024-03-03T22:31:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ Version 24.3.0</p>
<a name="In-v1-funktioniert-die-Anzeige-des-Tooltips"></a>
<h2 >In 'v1' funktioniert die Anzeige des Tooltips<a href="#In-v1-funktioniert-die-Anzeige-des-Tooltips" class="wiki-anchor">¶</a></h2>
<pre>
downloadButton = t:Download|o:check file
</pre>
<p><img src="https://project.math.uzh.ch/attachments/download/9401/clipboard-202403032329-8x1vp.png" alt="" /></p>
<a name="In-v2-funktioniert-die-Anzeige-des-Tooltips-nicht-nicht-als-Tooltip"></a>
<h2 >In 'v2' funktioniert die Anzeige des Tooltips nicht (nicht als Tooltip)<a href="#In-v2-funktioniert-die-Anzeige-des-Tooltips-nicht-nicht-als-Tooltip" class="wiki-anchor">¶</a></h2>
<p>Es wird der ganze Text gerendert - d.h. vermutlich werden die Angaben wie tooltip, glyphicon nicht ausgewertet. Aktuell weiss ich nicht was noch alles verwendet werden kann - am besten bei V1 nachschauen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9402/clipboard-202403032330-ki9qk.png" alt="" /></p>
<p>Laut Doku (<a class="external" href="https://docs.qfq.io/en/master/Form.html#id14">https://docs.qfq.io/en/master/Form.html#id14</a>):</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9403/clipboard-202403032331-l8bqw.png" alt="" /></p> QFQ - Feature #18013 (New): Tablesorter: column view selectorhttps://project.math.uzh.ch/issues/180132024-02-27T15:36:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Der tablesorter merkt sich die Suchbegriffe und ausgewaehlten Spalten</li>
<li>Wird in einer Spalte A ein Suchbegriff eingegeben und diese Spalte ausgeblendet, wird anschliessend immer noch das gefilterte Ergebnis angezeigt.</li>
</ul>
<p>Das ist verwirrend!!!</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9352/clipboard-202402271633-qfxra.png" alt="" /></p> QFQ - Support #17880 (New): QFQ Exception: a) stacktrace not in support, b) Underline SQL error https://project.math.uzh.ch/issues/178802024-02-12T19:56:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/9220/clipboard-202402122055-9vcu4.png" alt="" /></p> QFQ - Feature #17858 (New): Check if QFQ is compatible with Typo3 V12https://project.math.uzh.ch/issues/178582024-02-11T18:35:34ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wenn wir von isg_ldap_sso weg kommen (wird ersetzt durch oidc) gibt es keinen Grund mehr V12 noch nicht anzuschauen.</li>
<li>MNF ist noch auf V9 - Migration koennte ggfs. direkt auf V12 erfolgen.</li>
</ul> QFQ - Feature #17821 (New): Check projects export/autocron access templatehttps://project.math.uzh.ch/issues/178212024-02-05T13:07:58ZEnis Nuredini
<p>Es muss bei allen Projekten das Typo3 Template für den Zugriff auf den Autocron überprüft werden. Für den Zugriff über Production muss noch die jeweilige IP Adresse entnommen werden:<br /><pre>
hostname -I
</pre></p>
<p>Template vom Medtool:<br /><pre>
*Constants*
----------------
# List of IP addresses to grant access: webwork22, medtool
site.allowIP.list = 127.0.0.1,::1,130.60.244.239
*Setup*
-----------
# Layout neu aufbauen
page = PAGE
page.typeNum = 0
# Show content
[ ip('{$site.allowIP.list}') || frontend.user.isLoggedIn]
# Access granted
page.10 < styles.content.get
[else]
page.10 = TEXT
page.10.value = Please log in or access this page from an authorized host. Your current IP address:&nbsp;
page.20 = TEXT
page.20.data = getenv : REMOTE_ADDR
[end]
</pre></p>
<p>Das Template muss auch bei den Options konfiguriert werden:<br /><img src="https://project.math.uzh.ch/attachments/download/9158/Clipboard%20-%20February%205,%202024%202_05%20PM.png" alt="" /></p>
<p>Ebenfalls noch hinzuzufügen bei Includes:<br /><img src="https://project.math.uzh.ch/attachments/download/9161/includes.png" alt="" /></p> QFQ - Feature #17812 (New): Switch User: Neu/Alternativ auch mit FE Group Anpassunghttps://project.math.uzh.ch/issues/178122024-02-03T16:17:40ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #17649 (New): Integrate Etherpad as editorhttps://project.math.uzh.ch/issues/176492024-01-18T16:07:53ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Um mit mehreren Personen an einem Dokument (z.B. qfqWiki) zu arbeiten, koennten wir als Editor Element den <a class="external" href="https://etherpad.org/">https://etherpad.org/</a> verwenden.</li>
<li>Min. via Plugin koennen sogar Bilder eingebunden werden.</li>
<li>Evtl. ist der Etherpad eine Alternative zu TinyMCE.</li>
<li>Wunsch fuer Bilder: per Mausklick kann umgeschaltet werden zwischen Thumbail und regulaere Groesse.
<ul>
<li>Nach dem Einfuegen (und fuer alle anderen) wird nur das Thumbnail angezeigt.</li>
<li>Hintergrund: waehrend eines Meetings wird ein Protokoll erstellt und dabei werden Screenshots gemacht und eingefuegt - die sind aber by Default so gross das der Rest des Textes verschwindet und man die Uebersicht verliert. Thumbnails loesen das Problem.</li>
</ul></li>
</ul>
<ul>
<li>Ggfs. Etherpad nicht nur in einem Form zeigen, sondern direkt in Report.</li>
</ul> QFQ - Feature #17616 (New): Automate QFQ Build Prozesshttps://project.math.uzh.ch/issues/176162024-01-16T11:23:53ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Aktuell ist es extrem muehsam eine neue QFQ Version zu bauen.</li>
<li>Es waere sehr erstrebenswert neuen QFQ Versionen auf Knopfdruck erzeugen zu koennen.</li>
</ul>
<p>Ideen:</p>
<ul>
<li>Mit jedem Merge eines Branches in Develop wird ein Eintrag in die Releasenotes gemacht.
<ul>
<li>Im Merge Request steht die Ticketnummer.</li>
<li>Daraus kann das Subject fuer die `Releasenotes.nextversion` genommen werden.</li>
<li>Das Ticket wird in den Milestone '_nextversion' verschoben und auf 'Ready to sync' gesetzt.</li>
</ul></li>
</ul>
<ul>
<li>Bei einem Merge von Develop nach Master Files (alle in Develop gesammelten Branches auf einmal) wird eine neue Version gebaut
<ul>
<li>Es wird eine Versionsnummer besteimmt. Z.B. 24.1.3 - die '3' ist ein Counter die bei jeder neuen Version hochgezaehlt wird. Wechselt der Monat wird sie auf 0 zurueck gesetzt. Das Jahr wird ebenfalls automatisch angepasst.</li>
<li>In Project wird ein Milestones mit der neuen Versionsnummer angelegt.</li>
<li>`Releasenotes.nextversion` wird sortiert nach Features/Bug/Note und diese werden in die finalen Release-Notes kopiert.</li>
<li>Alle aufgefuehrten Tickets werden geschlossen. Der Milestone wird geschlossen.</li>
</ul></li>
</ul>
<p>Subject ist</p> QFQ - Feature #17481 (New): BS modal windowhttps://project.math.uzh.ch/issues/174812023-12-15T13:53:28ZJan Haller
<p>It is often useful to present the user with a modal window (e.g. containing additional information). The following example is based on Bootstrap (<a href="https://getbootstrap.com/docs/3.4/javascript/#modals" class="external">BS Modal</a>)</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8916/clipboard-202312151436-hwvg1.png" alt="" /></p>
<pre><code class="html syntaxhl"><span class="nt"><div</span> <span class="na">class=</span><span class="s">"modal fade"</span> <span class="na">id=</span><span class="s">"myModal"</span> <span class="na">tabindex=</span><span class="s">"-1"</span> <span class="na">role=</span><span class="s">"dialog"</span> <span class="na">aria-labelledby=</span><span class="s">"detailsModalLabel"</span> <span class="na">aria-hidden=</span><span class="s">"true"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"modal-dialog"</span> <span class="na">role=</span><span class="s">"document"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"modal-content"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"modal-header"</span><span class="nt">></span>
<span class="nt"><h5</span> <span class="na">class=</span><span class="s">"modal-title"</span> <span class="na">id=</span><span class="s">"detailsModalLabel"</span><span class="nt">></span>{{pubFormText:RE}}<span class="nt"></h5></span>
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"modal-body"</span><span class="nt">></span>
{{r_countPublications:RE:all}} Publikationen eingetragen <span class="nt"><br><br></span>
({{r_countPublications:R0}} - {{r_countPublicationsNotInEdit:R0}}) Publikationen müssen noch überprüft/angepasst werden. Editiere Publikation und prüfe den unteren Abschnitt, falls ok dann speichern.
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"modal-footer"</span><span class="nt">></span>
<span class="nt"><button</span> <span class="na">type=</span><span class="s">"button"</span> <span class="na">class=</span><span class="s">"btn btn-secondary"</span> <span class="na">data-dismiss=</span><span class="s">"modal"</span><span class="nt">></span>Close<span class="nt"></button></span>
<span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"><a</span> <span class="na">id=</span><span class="s">"myModalTrigger"</span> <span class="na">data-toggle=</span><span class="s">"modal"</span> <span class="na">data-target=</span><span class="s">"#myModal"</span><span class="nt">></span>Open Modal<span class="nt"></a></span>
</code></pre>
<p>It would be nice to include this functionality into QFQ somehow without having to copy/paste this block of code every time.</p> QFQ - Bug #16965 (New): Unhandled exception on SQL queryhttps://project.math.uzh.ch/issues/169652023-09-28T12:36:23ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #16849 (New): Mail: check FROM address for pattern or specific sender addresshttps://project.math.uzh.ch/issues/168492023-09-08T18:09:06ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Von den ZI wird gefordert das nur Emailadressen von Shared-Mailboxen als Absender verwendet werden duerfen.</li>
<li>Damit nicht so schnell Fehler auftreten, soll neue eine Liste von Adressen / Pattern in der QFQ config hinterlegt werden koennen, gegen die getestet werden</li>
</ul> QFQ - Feature #16848 (New): Docker Sendmailhttps://project.math.uzh.ch/issues/168482023-09-08T13:56:32ZEnis Nuredini
<p>Sendmail im Docker funktioniert noch nicht. MTA nicht auf dem Docker installiert.</p>
<p><a class="external" href="https://systemvcs.math.uzh.ch/it/typo3-docker">https://systemvcs.math.uzh.ch/it/typo3-docker</a></p> QFQ - Bug #16506 (In Progress): Error sendmail failed: Umlaute in FROM ADDRESShttps://project.math.uzh.ch/issues/165062023-06-30T07:34:07ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wenn QFQ Mails sendet und in der FROM Adresse im Realname ein Umlaut vorkommt, verweigert Oultook die Annahme.</li>
<li>QFQ anpassen das alles Felder (TO, CC, BCC, From) auch UTF8 kodiert werden.</li>
</ul>
<pre>
UniqId:: 6486fd7720bd5
------------------------------------------------
toUser:: "Error sendmail failed
support:: [cmd=/var/www/html/typo3conf/ext/qfq/Classes/External/sendEmail -f "Universitäre Lehrförderung <lehrkredit-smtp@math.uzh.ch>" -t "sabine.schneider@ds.uzh.ch" -o message-charset="utf-8" -l "/var/www/html/fileadmin/protected/log/mail.log" -u "=?UTF-8?Q?Bitte=20um=20Best=C3=A4tigung:=20=20Antrag=20Lehrkredit?=
=?UTF-8?Q?=20durch=20Frau=20Dr.=20Daniela=20Fuhrmann?=" -m "Sehr geehrte Frau/Herr Sabine Schneider
Wir möchten Sie bitten den Lehrkredit Antrag von Frau Dr. Daniela Fuhrmann zu begutachten und zu bestätigen oder abzulehnen.
Bitte loggen Sie sich dazu auf der Lehrkredit Homepage ein unter:
</pre> QFQ - Bug #16345 (ToDo): TinyMCE: size / min-height scheint in QFQ V23.3.0 nicht zu funktionierenhttps://project.math.uzh.ch/issues/163452023-06-02T15:15:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte anschauen / fixen:</p>
<ul>
<li>TinyMCE / Codemirror</li>
<li>Gibt es eine Moeglickeit 'autogrow' zu implementieren?</li>
<li>In der Doku bei Editor (TinMCE, CodeMirror) ist gar nichts zur Groesse bechrieben (zumindest habe ich es nicht gefunden) - dort bitte dokumentieren. Ggfs. muss dann bei 'FE.typ=Text' eine Anmerkung gemacht werden falls sich die Notation unterscheidet.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7997/clipboard-202306021607-rahke.png" alt="" /></p> QFQ - Bug #16343 (New): QFQ/GMX: smtp recjects if subject contains umlaut and is not proper encodedhttps://project.math.uzh.ch/issues/163432023-06-02T14:50:23ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/7998/clipboard-202306021647-yhc8l.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/7999/clipboard-202306021647-sv9ak.png" alt="" /></p> QFQ - Feature #16305 (In Progress): Inline Editing Text , Merge Requesthttps://project.math.uzh.ch/issues/163052023-05-28T13:37:18ZPascal RösslerQFQ - Feature #16303 (New): Restrict mail sendinghttps://project.math.uzh.ch/issues/163032023-05-27T13:42:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Um versehentliches massenhaftes versenden von Mails zu verhindern sollten vor jedem Mailversand Checks durchgefuehrt werden:</p>
<ul>
<li>Checks greifen nur wenn production='yes'</li>
<li>Wenn Check aktiv ist: QFQ Prozess vollstaendig beenden: Damit ist sichergestellt das keine Records als 'done' markiert werden.</li>
<li>Vor dem beenden eine Warnmail versenden an Support: Empfaenger ist konfigurierbar. Pro Minute maximail eine Warnmail.</li>
</ul>
<ul>
<li>Schutz individuelle Emailadresse: Wurden in den letzten 24h mehr als 10 Mails an die gleiche Adresse gesendet?</li>
<li>Schutz gegen Massenmail: Wurden in den letzten 24 Stunden mehr als 500 Mails versendet?</li>
</ul> QFQ - Feature #16297 (New): AutoCron: no SIP https://project.math.uzh.ch/issues/162972023-05-26T08:59:22ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Im AutoCron , wenn z.B. via Report eine Mail versendet wird, funktionieren SIP Parameter nicht (es gibt keine QFQ Session die weitergereicht wird)</li>
<li>Eine Loesung waere das ein AutoCron einen API Key bekommt, mit dem er aufgerufen wird, und dieser User (=API-Key) hat dann entsprechende Berechtigungen. </li>
<li>Der API Key wird in der QFQ Config zentral hinterlegt.</li>
<li>Der API Key ist im OS Crontab eingetragen und wird beim Aufruf mit uebergeben.</li>
</ul> QFQ - Feature #16219 (New): Security: IPs von Hacking Angriffen sperren - Integration voin Fail2Ban https://project.math.uzh.ch/issues/162192023-05-13T12:32:06ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Setup machen damit Fail2Ban automatisiert IPs sperrt.</li>
<li>Setup in qfq.io/doc unter Security dokumentieren.</li>
<li>Gewisse Fehler, z.B. 'Security: attack detected' werden via syslog gemeldent (konfigurierbar in QFQ). Fail2Ban agiert dann entsprechend</li>
<li>In den QFQ/T3 Instanzen eine Seite einrichten die gesperrte IPs anzeigt, damit man schnell testen kann ob eine IP betroffen ist.</li>
<li>Whitelist: IPs die nie gesperrt werden - z.B. UZH.</li>
<li>Greylist: IPs die umgeleitet werden auf eine Seite 'Your IP has been blocked' - z.B. alle Schweizer IPs</li>
<li>Integration eines IP/Geolocations Services.</li>
<li>Neu gesperrte IPs sollen via Mail gemeldet werden.</li>
<li>Bestehende Logfiles analysieren: klassische Versuche auf WP Dateien fuehren automatisch zu einer Sperrung der IP - da koennte z.B. ein cron job oder inotify daemon via fail2ban die IP sperren.</li>
</ul>
<p>Beispiel Angriff:</p>
<pre>
[2022-10-23 03:48:38 / 45.227.253.6 / &lt;no session cookie&gt;] Security: attack detected
Problem: Post/Get Honeypot variable 'email' detected: 1 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL#
Post/Get Honeypot variable 'username' detected: 1
Post/Get Honeypot variable 'password' detected: 1
[2022-11-23 16:17:30 / 216.131.108.251 / 23r2ldp832obrii5t0oblg3i09] Security: attack detected
Problem: Value of GET variable 'sOIQ' too long. Allowed: 50, Length: 172. Value: '2408 AND 1=1 UNION ALL SELECT 1,NULL,'&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;',table_name FROM information_schema.tables WHERE 2&gt;1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#'
[2022-12-28 02:21:54 / 45.81.39.101 / 2q5m8frmlchk9b0lndt3b00b1h] Security: attack detected
Problem: Value of GET variable 'CDRC' too long. Allowed: 50, Length: 172. Value: '4935 AND 1=1 UNION ALL SELECT 1,NULL,'&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;',table_name FROM information_schema.tables WHERE 2&gt;1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#'
</pre> QFQ - Bug #15794 (Feedback): Tablesorter filter funktionieren nach Reload nicht mehrhttps://project.math.uzh.ch/issues/157942023-03-14T10:08:07ZNicola Chiapolini
<p>Wenn ich in meinen Filtern eine Suche eintrage funktioniert zuerst alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7489/screenshot1.png" alt="" /></p>
<p>Wenn ich danach aber die Seite neu Lade, verschwinden die view-saver funktionen und die Suche hat keinen Effekt mehr.<br />Das Problem scheint der unten markierte Eintrag im local storage. Wird dieser Gelöscht, funktioniert wieder alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7490/screenshot2.png" alt="" /></p> QFQ - Feature #15534 (New): FormEditor > CodeMirror > a) sql1: 'Home/End' jumps to technical line...https://project.math.uzh.ch/issues/155342023-02-12T17:05:01ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Hat man im CodeMirror eine Textzeile die im Editor umgebrochen wird und der Cursor steht auf (1), dann springt Taste 'home' auf (2). Gewuenscht waere (3). Es gibt bestimmt eine Option in CodeMirror die man setzen kann fuer das gewuenschte Verhalten - waere gut wenn das der Default waere.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7260/clipboard-202302121801-dbk1r.png" alt="" /></p>
<p>Wenn moeglich, bitte Highlight fuer matching brackets '({[<' by default aktivieren.</p> QFQ - Feature #15018 (New): SIP not found error: a) fix, b) more information for debugginghttps://project.math.uzh.ch/issues/150182022-11-11T11:34:41ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) Beim Download haben wir aktuell schwierig zu debuggende Fehler (kann nicht reproduziert werden). #14651, #15001.<br />b) Diverse Ideen:</p>
<ul>
<li>Die in #14651 genannte ID nicht als QFQ Exception gefunden: das macht auch Sinn, denn dort wird die SIP genannt und nicht die QFQ error Log id. Bitte in der Fehlermeldung auf dem Screen die QFQ Error Log ID nennen (am besten mit human readable Timestamp), die kaputte Sip sollte dann im Log stehen. </li>
<li>Im qfq.log bei der SIP Exception angeben wieviele Eintraege die QFQ Session hat. Hintergrund: sollte ein QFQ Coockie fehlen oder frisch angelegt worden sein und die QFQ Session noch quasi leer sein, wuerde man das dann sehen anhand der wenigen Eintaege.</li>
<li>Wenn eine FE Session existiert (und beim Download via Cookie mit uebergeben wurde): Details dazu anzeigen.</li>
<li>Gibt es eine Moeglichkeit das alle Cookies die auf dem Server sind anzuschauen? Ggfs. via IP Adresse Vergleich (wird die IP Adresse zum Cookie gespeichert?) herausfinden welche Cookies zu einem User gehoeren koennten. In dem Fall koennte man diese Cookies in der Exception (qfq.log) nennen, und den SIP Sip Store testweise mit den anderen passenden Sessions laden.</li>
<li>Was koennte man noch angeben?</li>
</ul> QFQ - Feature #14719 (New): Form > Subrecord: Drag'n'Drop - only activate if column 'columnOrd' e...https://project.math.uzh.ch/issues/147192022-09-13T07:29:47ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Aktuell wird bei jedem Subrecord DnD aktiviert, auch wenn es gar keine Spalte 'ord' gibt.</li>
<li>Neuer Default sollte sein, nur bei vorhandener Spalte den DnD zu aktivieren.</li>
</ul> QFQ - Bug #14530 (New): Variables: Action 'X' does not output Type messagehttps://project.math.uzh.ch/issues/145302022-07-26T18:41:06ZNicola Chiapolini
<p>Subject says it all - makes debugging really annoying...</p>
<p><code>4.sql = SELECT "{{la_supervisr:R::X::hallo}}"</code></p>
<p>gives<br /><img src="https://project.math.uzh.ch/attachments/download/6414/clipboard-202207262040-ssmzv.png" alt="" /></p> QFQ - Feature #14494 (In Progress): Bootstrap 5 Migrationhttps://project.math.uzh.ch/issues/144942022-07-10T08:17:45ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>QFQ per Extension Config auf BS3 oder BS5 schalten</li>
<li>Grafischer Formulareditor</li>
<li>Formulare sollen gut aussehen auf einem kleinen Screen und auf einem grossen.
<ul>
<li>D.h. es gibt eine maximale Breite bei einem Form.</li>
</ul></li>
</ul>
<ul>
<li>FormEditor nach Moeglichkeit grafische Unterstuetzung: d.h. Elemente per Drag'n'Drop anordnen.</li>
</ul> QFQ - Feature #14187 (Priorize): qfq.log: show current URLhttps://project.math.uzh.ch/issues/141872022-05-11T09:58:39ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn man im qfq.log sehen koennte über welche URL die QFQ aufgerufen wurde.</p>
<p>Usecase: Auf den SL Touch sehen wir hin und wieder QFQ SIP Errors, sehen aber die URL im Browser nicht (wird nicht angezeigt). Auch fuer spaetere Logfileanalyse ist diese Angabe im Log vermutlich hilfreich.</p> QFQ - Bug #12974 (New): Sanitize Queries in Action-Elementshttps://project.math.uzh.ch/issues/129742021-08-31T18:29:16ZNicola Chiapolini
<p>I just waisted an hour because qfq does not complain at all if the value after <code>sqlXXX = </code> is invalid. This should not happen.</p>
<p>QFQ should never silently ignore bad input unless it has been explicitly told to.</p> QFQ - Feature #12603 (New): Dropdown (Select), Radio, checkbox: itemListAlways={{!SELECT key, val...https://project.math.uzh.ch/issues/126032021-05-29T12:53:26ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Alle Elemente mit dynamischen key oder key/value Angaben haben das Problem, das wenn ein Wert gespeichert wurde, das Form spaeter wieder aufgerufen wird, der Wert nicht mehr in der neuen Liste enthalten hist - beim speichern der alte Wert verloren geht.</p>
<p>Der Effekt tritt gerne auf bei einer Semesterauswahlliste, die nur die sinnvollen zukuenftigen anzeigt. Eine Vorlesung aus einem alten Semester geoeffnet und gespeichert wird, dann ploetzlich einer andren Periode zugeordnet ist.</p>
<p>Vorschlag:</p>
<pre>
itemListAlways={{!SELECT key, value...}}
</pre>
<p>Das Ergebnis wird gemerged (&unify).</p> QFQ - Bug #12545 (New): sql.log not created / updatedhttps://project.math.uzh.ch/issues/125452021-05-13T11:58:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Auf <a class="external" href="https://webwork16.math.uzh.ch/vorkurs/">https://webwork16.math.uzh.ch/vorkurs/</a> gab es kein Verzeichnis `/var/www/html/vorkurs/fileadmin/protected/log`.</li>
<li>Es gab auch keine logfiles sql.log, qfq.log, mail.log</li>
<li>Obwohl die Datei sql.log nicht existiert, sieht man in `Login > Setup > Log` immer eine Zeile (pro Sekunde neu/uberschrieben):<br /><pre>
<p><em>2021.05.13 13:55:04 +0200, Reference: 609d139857048</em></p><p>Error open &#039;fileadmin/protected/log/sql.log&#039;: fopen(fileadmin/protected/log/sql.log): failed to open stream: No such file or directory</p>
</pre></li>
<li>Wird das Verzeichnis angelegt (sollte automatisch passieren) <code>mkdir /var/www/html/vorkurs/fileadmin/protected/log; chown www-data:www-datat /var/www/html/vorkurs/fileadmin/protected/log</code> verschwindet der Fehler, die Datei sql.log ist aber trotzdem nicht da.</li>
<li>Wird eine leere Datei angelgt und ein Formular gespeichert, bleibt die Datei leer.</li>
</ul> QFQ - Bug #12513 (New): Implement server side check of maxlengthhttps://project.math.uzh.ch/issues/125132021-05-08T15:11:36ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei der Implementierung von <a class="issue tracker-2 status-2 priority-2 priority-default" title="Feature: TinyMCE Paste from Word & Character Count/Limit (In Progress)" href="https://project.math.uzh.ch/issues/12439">#12439</a> ist aufgefallen das es kein MaxLength Check auf der Server Seite gibt.</p>
<p>Ziel ist das ein Fehler ausgegeben wird, wenn die maximale Laenge ueberschritten ist.<br />Grund: der User muss informiert werden das seine Angaben nicht vollstaendig gespeichert werden konnten.</p> QFQ - Bug #12395 (Priorize): QFQ Function: Result two times shownhttps://project.math.uzh.ch/issues/123952021-04-16T06:35:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei QFQ-Function scheint es so zu sein, das das result set zweimal ausgegben wird wird function und sql in einem Level vorkommen:</p>
<pre>
# Individual application
70 {
function = FtgApplicationPdf(apId) => commandPdf
sql = SELECT CONCAT('p:{{pageAlias:T}}&form=ap_ftg_dekanat&r=', ap.id, '|s|b|t:<span class="badge">', ap.id, '</span>') AS _page
# Action
, CONCAT( 'z'
, CONCAT('||p:{{pageAlias:T}}&form=ap_ftg&r=', ap.id, '&formModeGlobal=requiredOff|t:Edit|s|q:Really Edit the Application?')
# , CONCAT('||{{commandPdf:R}}|b:0')
, CONCAT('||p:printview_ftg&type=1&apId=', ap.id, '|s|t:PrintView (debug)', IF({{isDev:R}}, '','|r:5'))
) AS _link
, CONCAT(p.lastName, ', ', p.firstName)
</pre><br /> QFQ - Bug #11237 (New): Radiobutton / parameter.buttonClass= btn-default - kein dirty Triggerhttps://project.math.uzh.ch/issues/112372020-09-30T16:10:08ZElias Villiger
<p>Bei Radio buttons mit buttonClass=btn btn-default wird kein dirty-Event (mehr) getriggert (d.h. Save-Button wird nicht aktiviert). Ohne class="btn" funktioniert es.</p> QFQ - Bug #10508 (New): Multi Form broken on Multi DB Instancehttps://project.math.uzh.ch/issues/105082020-05-07T18:38:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aufgefallen auf der RemoteExam Seite</p> QFQ - Bug #9534 (New): FE.type=upload: 'Unknown Mode: ID"https://project.math.uzh.ch/issues/95342019-11-08T15:41:41ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Haengt evtl. mit <a class="issue tracker-1 status-5 priority-4 priority-high2 closed" title="Bug: FE.type=upload: '{{fileDestination}}' saved (Closed)" href="https://project.math.uzh.ch/issues/9532">#9532</a> zusammen.</li>
</ul>
<p>1. User oeffnet neuen Record, das Form hat ein Upload Element, laesst das Upload Element aber leer.' und speichert. Es wird '{{fileDestination}}' (Bug) gespeichert. Das Form wird geschlossen.<br />2. User oeffnet den Record mit dem gleichen Form. <br />3) User klickt auf 'clear upload' (fake Filename '{{fileDestination}}')<br />4) User klickt auf 'Save' - es erscheint die Fehlermeldung 'Unknown Mode: ID"</p> QFQ - Bug #9347 (New): FE.type=upload with dynamic show/hidden: required not detectedhttps://project.math.uzh.ch/issues/93472019-10-11T12:50:57ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei Stefan gibt es ein Form das dynamisch ein/ausgeblendet wird.</p>
<p>Wenn es eingeblendet ist, soll es required sein.</p>
<p>Browser: Bei Save moniert der Browser nicht das das Feld leer ist.<br />Server: Bei Save moniert der Server nicht das das Feld leer ist.</p> QFQ - Bug #9173 (New): Stale Record Lock: Firefox https://project.math.uzh.ch/issues/91732019-09-18T21:42:34ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) Wird mit FF ein Candoc Antrag auf forkred18.math.uzh.ch/forkred wie folgt bearbeitet:</p>
<p>open, modify, save, close, open, modify, close: question 'save?' no > open</p>
<p>dann ist der Record anschliessend gesperrt.</p>
<p>Das Verhalten tritt nicht auf mit Opera. <br />Reproduzierbar mit FF unter Linux und MacOS X.</p>
<p>b) Es kann sein das der Effekt mit einem kleinen Form nicht auftritt.</p> QFQ - Bug #9121 (New): sip links have r and __dbIndexData sethttps://project.math.uzh.ch/issues/91212019-09-13T13:52:57ZNicola Chiapolini
<p>If a link is using SIP, the <code>r=0</code> and <code>__dbIndexData=1</code> are defined even if not specified.</p>
<p>Possible Problems:</p>
<ul>
<li>lazy coders like me do not change the lookup-order, so the r from SIP might hide r from the expected stores (especially when using r inside reused content elements).</li>
<li>if no data is passed on, removing the sip rendering is ok, but one needs to remember to add it back if one adds data later (I use sip for all links)</li>
</ul> QFQ - Feature #8962 (New): allow for form fields with identical nameshttps://project.math.uzh.ch/issues/89622019-08-29T19:41:37ZNicola Chiapolini
<p>We have a form with three Action-Elements all pointing to the same column. Each of them calculates the value based on a different dynamic-update form-field (restricted via requiredList).<br />This works perfectly, but I need to adjust the name directly in the database...</p>
<p>Could this check be removed? (At least for action elements, but I can imagine this to be useful even with native dynamic-update elements.)</p> QFQ - Feature #8082 (New): Contact form without saving recordhttps://project.math.uzh.ch/issues/80822019-03-18T13:13:09ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer z.B. Kontaktformulare waere es sinnvoll wenn man eine Form konfigurieren koennte das keinen Record speichert.</p>
<p>Z.B. in dem man keine Primary Table spezifiziert.</p>
<p>Das gleiche koennte man in einem Passwort Reset Form benoetigen (#7164).</p> QFQ - Feature #8044 (Priorize): Transaction: a) Form, b) Reporthttps://project.math.uzh.ch/issues/80442019-03-14T15:35:25ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn ein Form automatisch/individuell alles in einer Transaction kapseln wuerde.</li>
<li>Es waere gut wenn man in QFQ start/ende einer Transaction definieren koennte.</li>
</ul>
<p>Ticket bleibt nur dann auf 'high' wenn es einfach zu implementieren ist.</p> QFQ - Feature #6723 (New): Report QFQ Installation and Versionhttps://project.math.uzh.ch/issues/67232018-09-16T09:25:53ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn man eine Uebersicht haette wo welche Installation mit welche QFQ version laufen.</p>
<p>In der Configuration eintragen:</p>
<pre>
serviceReportQfqVersion = https://qfq.io/index.php?id=service&version={{qfqVersion:Y}}[,<next reporting URL>]
</pre>
<ul>
<li>Die Variable {{qfqVersion}} gibt es vermutlich noch nicht.</li>
<li>Der Aufruf erfolgt via wget (nicht via file_get_content, da dort allow_url_fopen benoetigt wird)
<ul>
<li>bei der Erstinstallation </li>
<li>bei jedem QFQ Update</li>
</ul></li>
</ul>
<ul>
<li>Das sollte einfach zu implementieren sein: QFQ checkt die Versionsnummer bei jedem Start, dort koennte der Hook eingbaut werden.</li>
<li>Es koennen mit Komma getrennt mehrere Service URLs angegeben werden - so koennte MNF z.B. ein eigenes Reporting haben und I-MATH bekommt auch was davon mit.</li>
</ul> QFQ - Bug #6116 (Priorize): value of checkbox not saved https://project.math.uzh.ch/issues/61162018-05-29T09:43:08ZNicola Chiapolini
<p>In one of our forms, we have the following checkbox:<br /><pre><code class="sql syntaxhl"><span class="k">INSERT</span> <span class="k">INTO</span> <span class="nv">`FormElement`</span> <span class="p">(</span><span class="nv">`id`</span><span class="p">,</span> <span class="nv">`formId`</span><span class="p">,</span> <span class="nv">`feIdContainer`</span><span class="p">,</span> <span class="nv">`dynamicUpdate`</span><span class="p">,</span> <span class="nv">`enabled`</span><span class="p">,</span> <span class="nv">`name`</span><span class="p">,</span> <span class="nv">`label`</span><span class="p">,</span> <span class="nv">`mode`</span><span class="p">,</span> <span class="nv">`modeSql`</span><span class="p">,</span> <span class="nv">`class`</span><span class="p">,</span> <span class="nv">`type`</span><span class="p">,</span> <span class="nv">`subrecordOption`</span><span class="p">,</span> <span class="nv">`encode`</span><span class="p">,</span> <span class="nv">`checkType`</span><span class="p">,</span> <span class="nv">`checkPattern`</span><span class="p">,</span> <span class="nv">`onChange`</span><span class="p">,</span> <span class="nv">`ord`</span><span class="p">,</span> <span class="nv">`tabindex`</span><span class="p">,</span> <span class="nv">`size`</span><span class="p">,</span> <span class="nv">`maxLength`</span><span class="p">,</span> <span class="nv">`bsLabelColumns`</span><span class="p">,</span> <span class="nv">`bsInputColumns`</span><span class="p">,</span> <span class="nv">`bsNoteColumns`</span><span class="p">,</span> <span class="nv">`rowLabelInputNote`</span><span class="p">,</span> <span class="nv">`note`</span><span class="p">,</span> <span class="nv">`adminNote`</span><span class="p">,</span> <span class="nv">`tooltip`</span><span class="p">,</span> <span class="nv">`placeholder`</span><span class="p">,</span> <span class="nv">`value`</span><span class="p">,</span> <span class="nv">`sql1`</span><span class="p">,</span> <span class="nv">`parameter`</span><span class="p">,</span> <span class="nv">`parameterLanguageA`</span><span class="p">,</span> <span class="nv">`parameterLanguageB`</span><span class="p">,</span> <span class="nv">`parameterLanguageC`</span><span class="p">,</span> <span class="nv">`parameterLanguageD`</span><span class="p">,</span> <span class="nv">`clientJs`</span><span class="p">,</span> <span class="nv">`feGroup`</span><span class="p">,</span> <span class="nv">`deleted`</span><span class="p">,</span> <span class="nv">`modified`</span><span class="p">,</span> <span class="nv">`created`</span><span class="p">)</span> <span class="k">VALUES</span>
<span class="p">(</span><span class="mi">164</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span> <span class="mi">380</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'reg_done'</span><span class="p">,</span> <span class="s1">'Final'</span><span class="p">,</span> <span class="s1">'hidden'</span><span class="p">,</span> <span class="s1">'{{SELECT IF( title_hash != </span><span class="se">\'\'</span><span class="s1"> AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student=(SELECT id FROM phd_graduation WHERE shortname=</span><span class="se">\'</span><span class="s1">{{shortname}}</span><span class="se">\'</span><span class="s1"> )) = 1,</span><span class="se">\'</span><span class="s1">show</span><span class="se">\'</span><span class="s1">, </span><span class="se">\'</span><span class="s1">hidden</span><span class="se">\'</span><span class="s1">) FROM phd_graduation WHERE shortname=</span><span class="se">\'</span><span class="s1">{{shortname}}</span><span class="se">\'</span><span class="s1"> }}'</span><span class="p">,</span> <span class="s1">'native'</span><span class="p">,</span> <span class="s1">'checkbox'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'specialchar'</span><span class="p">,</span> <span class="s1">'alnumx'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'row,label,/label,input,/input,note,/note,/row'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'{{!SELECT IF(reg_done, reg_done, NOW()) FROM phd_graduation WHERE id=</span><span class="se">\'</span><span class="s1">{{id:RE}}</span><span class="se">\'</span><span class="s1"> }}'</span><span class="p">,</span> <span class="s1">'checkBoxMode = single</span><span class="se">\r\n</span><span class="s1">label2 = Submit this form and start the process.'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-29 09:34:25'</span><span class="p">,</span> <span class="s1">'2018-03-09 10:06:26'</span><span class="p">);</span>
</code></pre></p>
<p>This checkbox gets correctly displayed with all the values of <code>mode sql</code> below, but only saved to the DB for some of them:</p>
<p><strong>good</strong><br /><pre><code>
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname}}' }}
{{SELECT IF( title_hash != '' AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student=(SELECT id FROM phd_graduation WHERE shortname='{{shortname}}' )) = 1,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname}}' }}
</code></pre></p>
<p><strong>bad</strong><br /><pre><code>
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE id='{{id}}' }}
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname:R0}}' }}
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname:FR0}}' }}
{{SELECT IF( title_hash != '' AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student='{{id:R0}}') = 1,'show', 'hidden') FROM phd_graduation WHERE id='{{id:R0}}' }}
</code></pre></p>
<p><code>shortname</code> is a nativ / extra field in the form, <code>id</code> is not part of the form.</p>
<p>In any case, a displayed field should also be saved ;-)</p> QFQ - Feature #4869 (New): Dynamic Update (show, hide, readonly?, required?) for Template Group E...https://project.math.uzh.ch/issues/48692017-11-04T10:36:18ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Requested in <a class="issue tracker-1 status-5 priority-3 priority-high3 closed behind-schedule" title="Bug: Dynamic updates Pill - show/hide (Closed)" href="https://project.math.uzh.ch/issues/4865">#4865</a></li>
<li>Die Umsetzung sollte nicht so schwierig sein um eine komplette TG-Group aus/einzublenden.</li>
<li>Ob 'readonly' und 'required' Sinn machen ist nicht klar.</li>
<li>Dynamic Update innerhalb einer TG pro FE ist vermutlich schwierig - wird aber benoetigt (siehe unten)</li>
</ul>