Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-18T07:56:45ZProject @ iMath
Redmine QFQ - Feature #18164 (Feedback): Merge datahttps://project.math.uzh.ch/issues/181642024-03-18T07:56:45ZEnis Nuredini
<p>Neues Feature um vereinfacht Duplizierte Daten zu mergen. Soll relativ generisch und Einsatzbereit für verschieden Projekte sein.</p>
<p>Eine automatische Erstellung von Merge Rules in einer eigenen Tabelle ist vorgesehen. Das manuelle Erfassen von Rules sollte ebenfalls möglich sein.<br />Beim mergen sollten drei Optionen zur Verfügung stehen: Datensatz belassen, Datensatz mergen, Datensatz löschen</p>
<p>Auch sollte die Primary ID auswählbar sein.</p>
<p>Ein Switch zwischen Rules und compared Data würde die Benutzerfreundlichkeit erhöhen.</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 - Feature #18162 (New): Form / Select List: save outdated key/value even it no longer exist i...https://project.math.uzh.ch/issues/181622024-03-17T14:56:05ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Szenario:</p>
<ul>
<li>Fuer eine Masterarbeit wird ein Betreuer eingetragen. </li>
<li>Die Liste der potentiellen Betreuer veraendert sich. Z.B. koennte eine Person von frueher heute nicht mehr den Status 'Betreuer' haben.</li>
<li>Wird eine solche MA aufgerufen wird nicht mehr der urspruengliche Betreuer angezeigt und beim erneuten Speichern gibt es ein Problem.</li>
</ul>
<p>Vorschlag:</p>
<ul>
<li><code>FE.parameter.sqlGetItemSaved = {{SELECT p.id, p.name FROM Person AS p WHERE p.id={{pId:R}}</code></li>
<li>Wird die ItemList gebaut, wird überprüft ob die gespeicherte Id (oder Value falls es keine ID gibt) noch existiert.</li>
<li>Ja: all done, no further action</li>
<li>Nein:
<ul>
<li>Evaluate <code>FE.parameter.sqlGetItemSaved</code></li>
<li>Fuege Key/Value an der richtigen Stelle (Sortierung) ein.</li>
<li>Falls moeglich stelle den Eintrag 'kursiv' dar ('muted' waere schlecht, denn das suggeriert das der Eintrag nicht ausgewaehlt werden koennte).</li>
</ul></li>
</ul>
<ul>
<li>Die Situation koennte auftreten bei: SELECT, CHEKBOX, RADIO</li>
</ul> QFQ - Feature #18161 (New): QFQ Variable: New escape/action class 'strip_tags'https://project.math.uzh.ch/issues/181612024-03-17T11:21:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Mitunter werden Variablen ausgegeben und koennen potentiell HTML Tags enthalten die an der Stelle unerwuenscht sind.</p>
<p>Vorschlag 'r' fuer 'remove tags' (c=clean & s=striptags, p=purge sidn schon benutzt) - <a class="external" href="https://docs.qfq.io/en/master/Variable.html#variable-escape">https://docs.qfq.io/en/master/Variable.html#variable-escape</a></p>
<pre>
{{label:R::r}}
</pre>
<p>Koennte verwendet werden in <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Title of 'FormElement'-form: shortened, link to form (New)" href="https://project.math.uzh.ch/issues/18160">#18160</a> damit keine HTML Tags im Titel ausgegeben werden.</p> QFQ - Feature #18160 (New): Title of 'FormElement'-form: shortened, link to formhttps://project.math.uzh.ch/issues/181602024-03-17T11:04:14ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>a) Mir passiert es haeufig das ich ein FormElement bearbeite und dann gerne das ganze Form bearbeiten moechte.</li>
<li>b) Der Titel des FormElement-Forms enthaelt Elemente die wenig Informationsinhalt haben</li>
</ul>
<a name="Aktuell"></a>
<h2 >Aktuell:<a href="#Aktuell" class="wiki-anchor">¶</a></h2>
<p><img src="https://project.math.uzh.ch/attachments/download/9516/clipboard-202403171125-ffl17.png" alt="" /></p>
<a name="Vorschlag"></a>
<h2 >Vorschlag:<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<p><img src="https://project.math.uzh.ch/attachments/download/9517/clipboard-202403171202-1quit.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9518/clipboard-202403171203-bzxni.png" alt="" /></p>
<a name="Neue-Definition"></a>
<h2 >Neue Definition<a href="#Neue-Definition" class="wiki-anchor">¶</a></h2>
<pre>
{{ "{{SELECT 'p:form?form=form&r=', f.id, '|E|b:btn-small btn-default|s|o:Form: ', f.id, ' / ', f.name, CHAR(10), 'DB: {{dbNameQfq:Y}}' FROM Form AS f WHERE f.id = {{formId:SR0}} }}" AS _link}} <span style="font-weight: 100;">FE:</span> {{name:R:::New}} / {{label:RE}}
</pre> 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 - Bug #18154 (New): Form autofocus not workinghttps://project.math.uzh.ch/issues/181542024-03-15T11:01:48ZEnis Nuredini
<p>Autofocus funktioniert im Formular schon seit längerem nicht mehr. Obwohl das Attribut richtig gesetzt wird beim jeweiligem Element ist der Effekt nicht aktiv im Frontend.</p>
<p>Wir konnten beobachten dass beim erstmaligem Laden der Autofocus für 1sek. erschienen und danach verschwunden ist. Folgende Reloads zeigten diesen gar nicht mehr an.</p> QFQ - Feature #18141 (New): In Config/Dynamic neue fill store 'SYSTEM' by SQL ROW mit variablen ...https://project.math.uzh.ch/issues/181412024-03-14T07:18:20ZZhoujie Li
<p>Es wurde herausgestellt, dass man eine neue Config/Dynamic input möchte, indem man den fillstore 'SYSTEM'-Speicher durch SQL-ROW die variablen ersetzt, um beispielsweise pIdUser aus dem system store zu holen anstatt {{feUser}}.</p>
<p>Beispiel<br />SELECT p.id AS pIdUser FROM Person AS p WHERE p.account = '{{feUser:T}}'</p>
<p>pIdUser ist dann im Systemstore gespeichert.</p> QFQ - Bug #18094 (Ready to sync (develop)): Loading Fabric without Form not working anymorehttps://project.math.uzh.ch/issues/180942024-03-06T19:06:54ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Multi Form has broken the old way to load fabric without form.</p>
<p>Adding a new way to load fabric without any forms.</p> QFQ - Feature #18085 (New): FE Input Email Adressbook: a) Typeahead, b) check valid and markhttps://project.math.uzh.ch/issues/180852024-03-06T09:07:34ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Request"></a>
<h2 >Request<a href="#Request" class="wiki-anchor">¶</a></h2>
<ul>
<li>Im IK Tool werden beim Antrag Email-Adressen von weiteren verantwortlichen Personen erfasst.</li>
<li>Es kommt regelmaessig vor das die Adressen einen Typo enthalten.</li>
<li>Ziel
<ul>
<li>Bei der Eingabe TypeAhead vom UZH Adressebook anbieten.</li>
<li>Bei 'Focus Lost' Emailadressen pruefen und markieren ok/fail.</li>
</ul></li>
</ul>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<ul>
<li>Wird erkannt dass die Email Adresse eine <code>uzh.ch</code> Adresse ist, kann ein LDAP Lookup gemacht werden um zu ueberpruefen ob die Adresse im UZH AD vorhanden ist.</li>
<li>Ist die Adresse bekannt, wird sie gruen, sonst gelb (Tooltip: Address not found in UZH adress book).</li>
<li>Non uzh.ch Adressen werden so nicht geprueft.</li>
<li>Option 'internal check': es koennen Tabellen, Spalten spezifiziert werden (Tool intern),ob die Adresse bereits benutzt wurde. Falls gefunden wird sie ebenfalls gruen.</li>
<li>Der Check gegen das Adressbuch muss erst gemacht werden bei Focus Lost.</li>
<li>Der Check sollte vom Server gestartet werden: Zugriff auf den AD ist beschraenkt (Firewall, Credentials)</li>
<li>Wir brauchen einen neuen API Call der SIP protected ist.</li>
<li>Beim Laden des Forms ist der Check vermutlich nicht so wichtig, kann erstmal weggelassen werden.</li>
<li>Die Credentials sollten in der zentrallen QFQ config Datei sein (wie UZH webpass)</li>
<li>Die LDAP Abfrage sollte zentral in der QFQ Extension Config konfigurierbar sein, pro FE kann das Setting uberschrieben werden.</li>
<li>Option: mehrere Emailadressen in einem FE-Input Elemente erfassen (space, komma separiert) und individuell pruefen & markieren.</li>
</ul>
<p>EmailAdressbookVerify=<br />EmailAdressbookTypeahead=</p>
<a name="Check"></a>
<h2 >Check<a href="#Check" class="wiki-anchor">¶</a></h2>
<p>Beispiel via Commandline:</p>
<pre>
$ ldapsearch -LLL -x -H "ldap://iduzhz2dc01.d.uzh.ch ldap://iduzhz2dc02.d.uzh.ch" -b "DC=d,DC=uzh,DC=ch" -D "srv-math-sync@d.uzh.ch" -W "proxyAddresses=smtp:carsten.rose@math.uzh.ch" proxyAddresses
Enter LDAP Password:
dn: CN=Rose Carsten (crose),OU=Users,OU=Users UZH,DC=d,DC=uzh,DC=ch
proxyAddresses: smtp:crose@access.uzh.ch
proxyAddresses: X500:/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOH
F23SPDLT)/cn=Recipients/cn=d99ada2cb78c406ea039453c26f86dab-Rose Carste
proxyAddresses: smtp:caro@math.uzh.ch
proxyAddresses: smtp:m200143@access.uzh.ch
proxyAddresses: smtp:carsten.rose@uzh.ch
proxyAddresses: smtp:crose@uzh.mail.onmicrosoft.com
proxyAddresses: SMTP:carsten.rose@math.uzh.ch
# refldap://DomainDnsZones.d.uzh.ch/DC=DomainDnsZones,DC=d,DC=uzh,DC=ch
# refldap://ForestDnsZones.d.uzh.ch/DC=ForestDnsZones,DC=d,DC=uzh,DC=ch
# refldap://d.uzh.ch/CN=Configuration,DC=d,DC=uzh,DC=ch
</pre>
<ul>
<li>Bei der Abfrage koennen mehrere LDAP Server angegeben werden.</li>
<li>Liefert die Abfrage min. einen Treffer zurueck, ist die Adresse ok.</li>
<li>Die obige Abfrage geht auf 'proxyAddresses', da dort scheinbar auch die weiteren Adressen angegeben sind.
<ul>
<li>Bei 'proxyAddresses' muss ein 'smtp:' vorangestellt werden fuer einen 100% match</li>
</ul></li>
</ul> QFQ - Bug #18058 (Ready to sync (develop)): Monitor not working: missing JS filehttps://project.math.uzh.ch/issues/180582024-03-05T07:39:47ZElias Villiger
<p>Console Error: Failed to load resource <code>/typo3conf/ext/qfq/Resources/Public/JavaScript/GetFileContent.js</code></p>
<p>Datei wird durch npm run build nicht in <code>Resources/Public/JavaScript</code> kopiert, vermutlich sonst irgendwo integriert oder gar nicht mehr eingebunden?</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 #18047 (New): (filepond) uploadType: a) report invalid value, b) change v1/v2 to 1/...https://project.math.uzh.ch/issues/180472024-03-03T22:20:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>FormElement.paramter.uploadType:</p>
<p>a) report invalid value</p>
<p>Wird ein ungueltiger Wert konfiguriert, sollte es eine Fehlermeldung geben - aktuell funktioniert das Upload Element dann nicht - aber es gibt keine Fehlermeldung.</p>
<p>b) change v1/v2 to 1/2</p>
<p>Ich wuerde vorschlagen wir nennen die Typen nicht v1/v2 sondern einfach 1/2. Grund: keep it simpel.</p>
<p>Sicher werden wir auch Beispiele finden an denen 'v..' angibt, aber meiner Wahrnehmung nach ist meistens kein 'v' angegeben:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9395/clipboard-202403032310-ira1s.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9394/clipboard-202403032309-befkx.png" alt="" /></p>
<p>c) Im CodeMirror fehlen scheinbar ein paar Keywords fileSplit, tableNameSplit, uploadType - koenntest du die mit aufnehmen? Elias sollte eine Doku geschrieben haben wo das zu machen ist.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9400/clipboard-202403032320-priqn.png" alt="" /></p> QFQ - Bug #18031 (In Progress): PHPUnit-Tests funktionieren nicht mit der neuen PHP-Versionhttps://project.math.uzh.ch/issues/180312024-03-01T13:15:04ZZhoujie Li
<p>Wir sind auf ein Problem gestossen, bei dem unsere bestehenden PHPUnit-Tests nach dem Update auf die neueste PHP-Version nicht wie erwartet ausgeführt werden. Dies hat zu mehreren Testfehlern geführt.</p>
<p>Es wäre sinnvoll, die Tests zu überarbeiten und zu refaktorisieren.</p> QFQ - Feature #18022 (Feedback): Filepond colors / element size / font size (new UZH CD) / borderhttps://project.math.uzh.ch/issues/180222024-02-29T07:59:26ZEnis Nuredini
<ul>
<li>Einheitliche Farbe Filepond Elements - Defaultfarbe die auch die anderen Input Elemente haben (am besten die Browser Vorgabe)</li>
<li>Höhe des Elements: wie reguläre Inputfelder.</li>
<li>Drag&Drop Feld Farbe anpassbar(?) - Defaultfarbe die auch die anderen Input Elemente haben</li>
<li>Font Size: Check UZH CD 2012 & 2023 (bei 2023 stimmt es nicht, siehe Screenshot)</li>
<li>Border wie bei Inputelementen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9368/clipboard-202403010917-nkqii.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9369/clipboard-202403010919-yunhd.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9370/clipboard-202403010919-6ldbb.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 - 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 #17647 (New): Chat Ratchet Websocket Server: a) start on boot, b) multiple racthet ...https://project.math.uzh.ch/issues/176472024-01-18T12:28:35ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) start on boot</p>
<ul>
<li>Ratched soll beim Boot automatisch starten. </li>
<li>Es gibt kein Stop mehr</li>
</ul>
<p>b) multiple racthet instances,</p>
<ul>
<li>Pro Host koennen mehere Ratchets gestartet/beendet werden.</li>
<li>Ratchet Config Datei entsprehcend anpassen.</li>
<li>Optionale Check ob nginx/apache entsprechende Proxy Anweisungen enthalten</li>
</ul>
<p>c) update QFQ not to start/stop</p>
<ul>
<li>Aus dem Controller das 'start' und aus QFQ das 'stop' entfernen.</li>
</ul>
<p>d) Update installation doc</p>
<ul>
<li>NGINX/Apache Config Beispiel</li>
<li>Start Script fuer Ratched in QFQ mit verteilen.</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 #17544 (New): QFQ Installation Wizard / Defaultshttps://project.math.uzh.ch/issues/175442024-01-09T12:19:59ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Im Meeting mit Philipp, Enis, Benj und Carsten wurden besprochen das wir einen Installation Wizard benoetigen.</p>
<ul>
<li>Kontrolle das die BaseURL stimmt (falls nicht ok, bitte im Installtool setzen).</li>
<li>Frage ob Tabellen angelegt werden sollen:
<ul>
<li>Period</li>
<li>Category (ex Ggroup) - Weiterer Vorschlag: Grp (in dem Fall kann 'gr' als Prefix weiter verwendet werden). implement mit Ticket <a class="issue tracker-2 status-2 priority-3 priority-high3" title="Feature: Per Form: note, tag, reminder date, done flag (In Progress)" href="https://project.math.uzh.ch/issues/17412">#17412</a> </li>
<li>Glue (ex GroupMember) implement mit Ticket <a class="issue tracker-2 status-2 priority-3 priority-high3" title="Feature: Per Form: note, tag, reminder date, done flag (In Progress)" href="https://project.math.uzh.ch/issues/17412">#17412</a></li>
<li>Upload. implement mit Ticket #filepond</li>
<li>Translation</li>
<li>Chat implement mit Ticket #chat</li>
<li>Note</li>
<li>NoteItem ( fuer form NoteItem Ticket <a class="issue tracker-2 status-2 priority-3 priority-high3" title="Feature: Per Form: note, tag, reminder date, done flag (In Progress)" href="https://project.math.uzh.ch/issues/17412">#17412</a>)</li>
<li>Person</li>
<li>Account</li>
<li>Address</li>
<li>PersonRole</li>
<li>Role</li>
</ul></li>
</ul>
<ul>
<li>BestPractice Doku & Seite / ttcontent anlegen (Auswahl als welches Child Element)
<ul>
<li>Settings (based on Grp/Glue) via.</li>
<li>Person / Adresse / Account / Rolle</li>
<li>FormEditor</li>
<li>Beispiel Chat</li>
</ul></li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/8961/clipboard-202401091319-wrmqh.png" alt="" /></p>
<p>switchdrive/qfq/DB/QFQ_Best_Practice_Tables.drawio</p>
<ul>
<li>Der Wizard soll bei der ersten Installation automatisch aufgehen.</li>
<li>Der Wizard soll auch spaeter noch gestartet werden koennen.</li>
<li>Im Wizard angeben wie man ihn spaeter erneut starten kann.</li>
<li>Aufruf koennte via einem HTML/PHP Form gemacht werden, das nur startet wenn ein BE User eingeloggt ist: BE Cookie mit der T3 BE User Tabelle vergleichen).</li>
</ul> QFQ - Feature #17441 (ToDo): Report Notation 2.2: fireIf :Statement to trigger the root level que...https://project.math.uzh.ch/issues/174412023-12-07T12:42:31ZZhoujie Li
<p>Es wurde über mögliche Verbesserungen des if-Statements aus den Tickets <a class="issue tracker-2 status-10 priority-2 priority-default" title="Feature: Report: UPDATE / INSERT / DELETE statements should trigger subqueries, depending on the result. (ToDo)" href="https://project.math.uzh.ch/issues/5345">#5345</a> und <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Report Notation 2.1: 'if then else' / 'for' / 'while' (New)" href="https://project.math.uzh.ch/issues/17319">#17319</a> diskutiert. Wir kamen zu dem Vorschlag, dass mit 'fireIf' lediglich bestimmt wird, ob der Root-Level ausgeführt wird oder nicht. Das andere wäre 'fireSubIf', womit bestimmt wird, ob ein Subquery ausgeführt wird, auch wenn keine Records von der Root-Query kommen.</p>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<p>Query-Ausführung für das Root-Level:</p>
<pre>
10 {
sql = UPDATE table set ...
fireIf = {{variable}} =|>|<|>=|<=|!=
altsql = SELECT ... (wird aus geführt wenn fireIf false ist)
}
</pre>
<p>Query-Ausführung für das Child-Level:</p>
<pre>
10 {
sql = UPDATE table set ...
fireSubIf = {{variable}} =|>|<|>=|<=|!=
20.sql = INSERT INTO ...
}
</pre> QFQ - Feature #17412 (In Progress): Per Form: note, tag, reminder date, done flaghttps://project.math.uzh.ch/issues/174122023-12-05T22:38:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In unseren QFQ Applikationen fuer die Benutzer aber auch fuer die Applikationsentwickler waere folgende Funktion nett:</p>
<ul>
<li>Auf einem Formular gibt es einen <strong>Button</strong> via dem man sich Notizen zum aktuellen Record (Antrag, ...) macht (entweder als Popup oder Modal).</li>
<li>Die Option kann an/abgeschaltet werden (auch dynamisch je nach eingeloggtem User)</li>
<li>Die Logik soll fix in QFQ mittels form/qfqr Files hinterlegt sein. </li>
<li>Durch toolspezifische Formulare/Reports kann es an das Tool angepasst werden.</li>
<li>Titel sollte veränderbar sein.</li>
</ul>
<p>Details:</p>
<ul>
<li>Eine Notiz kann private, <group> oder public sein.
<ul>
<li>Welche <group's> es gibt kann konfiguriert werden. Bsp: admin, developer, dekanat, ...</li>
<li>Es stehen nur solche Gruppen zur Verfuegung in der man selbst Member ist.</li>
</ul></li>
</ul>
<ul>
<li>Der <strong>Button</strong> zeigt die Anzahl Notizen an. Symbol: Blatt Papier mit der Anzahl Notizen als kleine Zahl in einer Ecke. Sobald es min. eine Notiz gibt hat das Blatt eine Farbe.</li>
<li>Hover/Tooltip zeigt die letzten 5 Notizen an (Note, Tag, Author, Created, Reminder, Resubmission).</li>
<li>Die Tags sollen dazu verwendet werden die Notizen zu klassifizieren: todo / feedback / hold / not yet / ...
<ul>
<li>Pro Notizen koennen beliebig viele Tags vergeben werden.</li>
<li>Neue Tags koennen on the fly erzeugt werden.</li>
<li>Die Tags werden mit Typeahead erfasst.</li>
</ul></li>
</ul>
<ul>
<li>Auf dem allgemeinen Dashboard werden die eigenen/group/all Notizen als Summe angezeigt - ein Klick darauf fuehrt in die Listenansicht.</li>
<li>In der Listenansicht werden die eigenen/<group>/alle Notizen angezeigt werden.
<ul>
<li>Sortiert nach 'last modified', Filter auf a) 'user'/'group', b) Inhalt, c) Tags</li>
<li>In der Listenansicht kann von der Notiz direkt zum Antrag / Form / ... gesprungen werden.
<ul>
<li>Damit das funktioniert muessen im Hintergrund weitere Informationen bei der Notiz abgelegt werden (Formular, detail Parameter, ...).</li>
</ul></li>
</ul>
<ul>
<li>Es koennen Notizen angelegt werden, die keinem Form/Record zugeordnet sind. Anwendung: persoenliche Todo Liste, Bsp: 'morgen unbedingt nach Urlaub fragen'.</li>
</ul></li>
</ul>
<ul>
<li>Im Dashboard und in der Listenansicht werden Notizen mit abgelaufenem Reminder besonders hervorgehoben.</li>
<li>Ist das reminder date abgelaufen wird eine Mail versendet.</li>
<li>Pro Notiz kann das Flag 'done' gesetzt werden (dann wird kein Reminder versendet).</li>
</ul>
<p>Anmerkungen:</p>
<ul>
<li>Eine Notiz kann als 'Ticket' gesehen werden (erscheint im Dashboard, kann auf 'done' gesetzt werden, kann tags zur Klassifizierung enthalten).</li>
<li>In dem aktuellen Konzept hat die Notiz mehr einen 'History' Character als Ticket.</li>
<li>Zukunft: zu einer Notiz koennten weitere Informationen abgelegt werden (Assignee, Due Date, ...), damit waere dann ein Ticketsystem moeglich. </li>
<li>Im jetzigen Konzept werden die Notizen i.d.R. einem Table/Record zugeordnet. </li>
<li>Bei z.B. Rueckfragen oder Diskussion waere zusaetzlich eine Thread-ID interressant.</li>
<li>Mit dem Thread Konzept waere das eine interessante Moeglichkeit eine 'minimale Chat Logik' mit QFQ auszuliefern. Das koennte direkt in BEF fuer die Rueckfragen verwendet werden.</li>
</ul> QFQ - Bug #17257 (New): Migrate QFQ system tables: set default valuehttps://project.math.uzh.ch/issues/172572023-11-09T20:42:54ZCarsten Rosecarsten.rose@math.uzh.chQFQ - 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 - Feature #16305 (In Progress): Inline Editing Text , Merge Requesthttps://project.math.uzh.ch/issues/163052023-05-28T13:37:18ZPascal RösslerQFQ - 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 - 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 #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 #12327 (New): Copy to clipboard: a) Glyphicon can not be changed, b) Visualisierung & Texthttps://project.math.uzh.ch/issues/123272021-04-07T06:18:33ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) Scheinbar kann das Glyphicon nicht veraendert werden.</p>
<p>Moeglich sein sollte</p>
<ul>
<li>eines der fixen Icons: N/E/D/...</li>
<li>ein beliebiges via G:gpyphicon-...</li>
</ul>
<p>Der Unittest 'testGlyphiconCopyToClipboard()' testet zur Zeit nur den Standardfall.</p>
<p>b) Visualisierung ziemlich schwach</p>
<ul>
<li>Mitunter ist es wuenschenswert das es eine gut sichtbare Meldung gibt wenn 'copy to clipboard' gedrueckt wird.</li>
<li>Die aktuelle Animation ist leicht zu uebersehen.</li>
<li>Der Text sollte einen Default haben der angepasst werden kann.</li>
<li>Die jetzige Animation ist fuer kleine Aktionen gut, aber nicht fuer wichtige Aktionen.</li>
<li>Man koennte den Typ der Visiualisierung einstellbar machen entweder via I) Systemweit/Form/FormElement oder II) via Parameter bei der Definition.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9512/clipboard-202403161035-agnef.png" alt="" /></p> QFQ - Feature #12262 (In Progress): Form buttons on top: more customablehttps://project.math.uzh.ch/issues/122622021-03-25T15:57:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn man beliebige Buttons oben im Form anbieten koennte.</li>
<li>Die bisherigen Buttons (New, Save, Close, Trash) sollten neu durch den gleichen PHP Code gerendert werden. U.a. um ein guten debug Tooltip zu haben.</li>
<li>Alle Funktionen die '... AS _link' kennt, sollten moeglich sein. Z.B.
<ul>
<li>Popups mit custom message, inkl yes/no zum abbrechen.</li>
<li>Tooltip</li>
<li>Button active/disabled</li>
<li>dynamic update waere nett, aber nicht zwingend in einer erste Version. Waere nur noetig wenn eine Custom definiton gegeben ist.</li>
</ul></li>
</ul>
<p>Notation:</p>
<ul>
<li>Die bisherigen werden supported, sind aber deprecated:
<ul>
<li>saveButtonText,saveButtonTooltip,saveButtonClass,saveButtonGlyphIcon</li>
<li>Dleete*, save*, close*</li>
</ul></li>
</ul>
<ul>
<li>Neu
<p>saveButton = p:..|b:..|s:..|o:...|q:...|t:.. ...</p></li>
</ul>
<p>Anwendung:</p>
<ul>
<li>Delete ist disabled sobald slave records existieren. Beispiel `deleteButton = p:..|b:..|r:{{select <br /> ...}}|o:...'</li>
<li>Mit <a class="issue tracker-2 status-5 priority-3 priority-high3 closed" title="Feature: As _link: content before/after link (Closed)" href="https://project.math.uzh.ch/issues/13945">#13945</a> kann Inhalt davor und dahinter ausgegeben werden. Z.B. `col-md-...` oder `<div class="button-group">`</li>
</ul> QFQ - Bug #9281 (Feedback): Allow STRICT_TRANS_TABLEShttps://project.math.uzh.ch/issues/92812019-10-02T09:08:00ZNicola Chiapolini
<p>MariaDB > 10.2.4 (Debian Buster comes with 10.3) has STRICT_TRANS_TABLES set by default. (see <a class="external" href="https://mariadb.com/kb/en/library/documentation/mariadb-administration/variables-and-modes/sql-mode/">https://mariadb.com/kb/en/library/documentation/mariadb-administration/variables-and-modes/sql-mode/</a>)<br />This breaks QFQ as no defaults are set for text columns in Form or FormElement.</p>
<p>Setting a default for these tables does work but has the ugly side-effect that on load the QFQ-Form Editor shows two single quotes as default value for all text fields...<br />A better solution is to allow all non-mandatory fields without default values to be NULL.</p>
<pre>
ALTER TABLE `Form`
CHANGE `noteInternal` `noteInternal` text COLLATE 'utf8_general_ci' NULL AFTER `title`,
CHANGE `multiSql` `multiSql` text COLLATE 'utf8_general_ci' NULL AFTER `multiMode`,
CHANGE `parameter` `parameter` text COLLATE 'utf8_general_ci' NULL AFTER `bsNoteColumns`,
CHANGE `parameterLanguageA` `parameterLanguageA` text COLLATE 'utf8_general_ci' NULL AFTER `parameter`,
CHANGE `parameterLanguageB` `parameterLanguageB` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageA`,
CHANGE `parameterLanguageC` `parameterLanguageC` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageB`,
CHANGE `parameterLanguageD` `parameterLanguageD` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageC`;
ALTER TABLE `FormElement`
CHANGE `modeSql` `modeSql` text COLLATE 'utf8_general_ci' NULL AFTER `mode`,
CHANGE `note` `note` text COLLATE 'utf8_general_ci' NULL AFTER `rowLabelInputNote`,
CHANGE `adminNote` `adminNote` text COLLATE 'utf8_general_ci' NULL AFTER `note`,
CHANGE `value` `value` text COLLATE 'utf8_general_ci' NULL AFTER `placeholder`,
CHANGE `sql1` `sql1` text COLLATE 'utf8_general_ci' NULL AFTER `value`,
CHANGE `parameter` `parameter` text COLLATE 'utf8_general_ci' NULL AFTER `sql1`,
CHANGE `parameterLanguageA` `parameterLanguageA` text COLLATE 'utf8_general_ci' NULL AFTER `parameter`,
CHANGE `parameterLanguageB` `parameterLanguageB` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageA`,
CHANGE `parameterLanguageC` `parameterLanguageC` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageB`,
CHANGE `parameterLanguageD` `parameterLanguageD` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageC`,
CHANGE `clientJs` `clientJs` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageD`;
</code></pre>
<p>an alternative workaround is to deactivate STRICT_TRANS_TABLES by setting<br /><code>[init] => SET names utf8; SET sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";</code> <br />in the extension config of qfq (this might also be needed for existing installations as upgrading large databases where no care was used on allowing NULL or setting defaults is a pain)</p> QFQ - Feature #7480 (ToDo): Record History (Undo / Redo)https://project.math.uzh.ch/issues/74802018-12-13T12:59:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn es in QFQ eine History der Records gaebe.</li>
<li>Schoen waere auch ein Undo/Redo</li>
</ul>
<p>Tipp von Marc:</p>
<p>Stackoverflow Frage: <br /><a class="external" href="https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records">https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records</a></p>
<p>Loesung MYSQL Triggers + history tabellen:<br /><a class="external" href="https://stackoverflow.com/a/12657012">https://stackoverflow.com/a/12657012</a></p> QFQ - Feature #5345 (ToDo): Report: UPDATE / INSERT / DELETE statements should trigger subqueries...https://project.math.uzh.ch/issues/53452018-02-03T17:51:12ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Wunsch"></a>
<h2 >Wunsch<a href="#Wunsch" class="wiki-anchor">¶</a></h2>
<p>Falls ein UPDATE [keine] Records veraendert, waere es gut wenn stattdessen subqueries ausgefuehrt werden - und die Entscheidung wird in PHP evaluiert, ohne das eine weitere Query abgefeuert werden muss. Vergleichbar mit althead (wird ausgefuehrt sobald das sql keine Records selektiert).<br />Damit wuerden Queries der Form UPDATE ... WHERE 1=0 (mit '0={{<level>.line.count}}') gar nicht erst gefeuert.</p>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<pre>
10.sql = UPDATE ....
10.affected = 0|1|>0|>1|always
20.sql = INSERT ... SELECT ...
20.affected = 0|1|>0|>1|always
30.sql = DELETE ...
40.sql = SELECT
</pre>
<p>Bsp. 1)<br /><pre>
10.sql = UPDATE ... WHERE 1=0
10.affected = >0
10.head = update
10.althead = kein update
</pre></p>
<p>Ausgabe: kein update</p>
<p>Bsp. 2)<br /><pre>
10.sql = UPDATE Person SET name='john' LIMIT 1
10.affected = >0
10.head = update
10.althead = kein update
</pre></p>
<p>Ausgabe: update</p>
<a name="Anmerkungen"></a>
<h2 > Anmerkungen<a href="#Anmerkungen" class="wiki-anchor">¶</a></h2>
<ul>
<li>Der Wert von affected kann auch eine Query der From '10.affected = {{SELECT <abbr title="20.line.insertId > 100, 'no','yes'">IF</abbr> }}' sein.</li>
<li>'affected' wird ausgewertet nachdem query gefeuert wurde.</li>
<li>head / tail / althead / alttail / altsql wird in Abhaengigkeit von affected ausgegeben.</li>
<li>affected kann auch bei 'SELECT' angegeben werden. Mit 'affected=always' wird child einmal getriggert, auch wenn das keine records selektiert wurden.</li>
<li>Hinweis: bei updates die erfolgreich sind (Record existiert), aber keine Veraenderung stattgefunden hat, kommt vermutlich 'affected_rows=0' zurueck. Bei folgendem Klassiker sollte die Aktualisierung von `modified` dem vorbeugen (BTW: die Verwendung von altsql ist oben nicht beschrieben, waere aber nett)<br /><pre>
10 {
sql = UPDATE EzBookingImport SET `data`='{{dataC:R}}', modified=modified + INTERVAL 1 SEC WHERE ez_start='{{thisMonday:R}}' AND ez_objectID='{{ez_objectID:R}}'
altsql = INSERT INTO EzBookingImport (`data`, `ez_start`, `ez_objectID`, `raum_id`)
VALUES ('{{dataC:R}}', '{{thisMonday:R}}' , '{{ez_objectID:R}}', '{{raId}}' )
}
</pre></li>
</ul>