Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-28T11:41:14ZProject @ iMath
Redmine QFQ - Feature #18236 (New): MultiForm re order via drag&drophttps://project.math.uzh.ch/issues/182362024-03-28T11:41:14ZZhoujie Li
<p>MultiForm wie subrecord per drag&drop neu anordnern</p> QFQ - Feature #18235 (Priorize): MultiForm add rowshttps://project.math.uzh.ch/issues/182352024-03-28T10:18:34ZZhoujie Li
<p>Es sollte möglich sein in einem Multiform neue Rows hinzuzufügen als button, die Record = 0 sind.(ähnlich wie subrecord einfach das button unterhalb) Die Motivation dahinter ist die Implementierung eines 'Form Wizard', der es ermöglichen schnell neue Formulare zu erstellen. Aber könnte auch für andere use case nützlich sein.</p> 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 - 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 - 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 - 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 - 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 - Feature #18042 (New): Download dynamic ZIP: missing meaningful default save as filenamehttps://project.math.uzh.ch/issues/180422024-03-02T15:41:52ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Mit `<abbr title="'d|F:', p.pathFileName, '|s:1|M:zip'">CONCAT</abbr> AS _link` wurde ein ZIP zum Download angeboten und hatte als Dateinamen 'qfq.temp.RcGnwV'</p>
<p>Bug: es sollte mindestens '.zip' am Ende stehen. Am besten 'data.zip' oder 'data_<timestamp>.zip'</p> QFQ - Feature #18040 (New): Checkbox Custom-Listehttps://project.math.uzh.ch/issues/180402024-03-02T12:00:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ziel: Checkbox Listen zum abarbeiten - eigenstaendig erweiterbar</p>
<p>Beispiel aus Redmine:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9382/clipboard-202403021239-n2k4h.png" alt="" /></p>
<p>Wichtig: die Reihenfolge kann via Drag'n'Drop geaendert werden. Check welchen Code wir schon haben (Subrecord, Benj).</p>
<p><code>FormElement.parameter.itemList</code> ist bereits genau die Checkbox-Liste</p>
<ul>
<li>static</li>
<li>Values werden Komma-separiert im String abgelegt. Bei Komma im Value haben wir vermutlich ein Problem.</li>
</ul>
<a name="Moegliche-Umsetzung"></a>
<h2 >Moegliche Umsetzung<a href="#Moegliche-Umsetzung" class="wiki-anchor">¶</a></h2>
<ul>
<li><code>FormElement.parameter.checkBoxType = static|custom</code>
<ul>
<li><code>static</code> ist das bisherige und der default.</li>
<li><code>custom</code> ist dieses Ticket.</li>
</ul></li>
</ul>
<a name="Itemliste-und-Status-pro-Item"></a>
<h3 >Itemliste und Status pro Item<a href="#Itemliste-und-Status-pro-Item" class="wiki-anchor">¶</a></h3>
<ul>
<li>Soll der User die Moeglichkeit haben selber Items zu erfassen muessen diese irgendwo gespeichert werden.</li>
<li>Der Status eines jeden Items muss gespeichert werden.</li>
<li>Sections waeren nett.</li>
<li>Drag'n'Drop muss nicht in 1.0 sein, ist aber definitiv gefordert.</li>
</ul>
<p>Vorschlag: Labels und Values (inkl. 'sections') in einem JSON struct</p>
<ul>
<li>Das JSON wird genau in der Spalte des FE gespeichert (muss also ein String sein).</li>
<li>Wird das JSON zu gross zum speichern (Bsp varchar 128), gibt es bereits im Client eine Fehlermeldung damit der User nicht viele Items anlegt und dann enttaeuscht ist das sie nicht gespeichert werden koennen.</li>
<li>Ein 'Template' kann also einfach angeboten werden, in dem das JSON in FE.value steht.</li>
<li>Nach Moeglichkeit sollte das JSON so gesepichert werden das wir es mit den MariaDB JSON Funktionen verwenden koennen.</li>
</ul> QFQ - Feature #18037 (New): Auto BPMN Update: QFQ/rclonehttps://project.math.uzh.ch/issues/180372024-03-02T09:37:05ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ziel: BPMN Workflows verbinden mit Ticketsystem, ist ein Ticket / Milestones abgearbeitet wird das im BPMN visuell markiert.</p>
<p>Moegliches Konzept:</p>
<ul>
<li>BPMN ist im Switchdrive</li>
<li>QFQ bekommt via 'rclone' Nextclod, OwnCloud, Dropbox, OneDrive, GDrive Support und kann so auf Dateien zugreifen.</li>
<li>In QFQ ist die PathFilename-Referenz auf das BPMN hinterlegt</li>
<li>Es gibt eine API (Redmine, QFQ Notez) um den Status von Tickets abzufragen.</li>
<li>QFQ ruft (on request, periodically) ein Skript auf welches:
<ul>
<li>Fuer jedes im BPMN referenzierte Ticket den Status via API abruft.</li>
<li>Den Status visuell im BPMN eintraegt (z.B. Hintergrundfarbe des Elements setzen)</li>
<li>Dadurch dass das File via rclone im Sync gehalten wird, haben sofort alle User das aktuelle File.</li>
</ul></li>
</ul> 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 #17993 (New): filepond: Color for message 'file is of invalid type'https://project.math.uzh.ch/issues/179932024-02-25T11:01:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls <strong>einfach</strong> moeglich:</p>
<ul>
<li>Bitte Farbe 'rot' ersetzen durch BS-warning.</li>
<li>Der Text fuer die Fehlermeldung wird dann unleserlich (weiss). Bitte die BS Farben nehmen (2. Screenshot).</li>
<li>Text 'file is of invalid type' hoert sich fuer mich eher technisch an, was haeltst du von 'unexpected file type'?</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9332/clipboard-202402251207-zajfs.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9331/clipboard-202402251205-lrxpj.png" alt="" /></p> QFQ - Feature #17984 (New): SQL Firewallhttps://project.math.uzh.ch/issues/179842024-02-23T12:55:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Artikel lesen: <a class="external" href="https://www.heise.de/tests/Datenbanken-schuetzen-Drei-freie-SQL-Firewalls-im-Test-9625335.html?wt_mc=intern.red.plus.newsticker.7-tage-news.teaser.teaser">https://www.heise.de/tests/Datenbanken-schuetzen-Drei-freie-SQL-Firewalls-im-Test-9625335.html?wt_mc=intern.red.plus.newsticker.7-tage-news.teaser.teaser</a></li>
<li>Falls Kosten/Nutzen Verhaeltnis gut:
<ul>
<li>In QFQ Doku beschreiben wie man das einsetzen koennte.</li>
<li>Ggfs. Anpassungen in QFQ fuer die Nutzung</li>
</ul></li>
</ul> QFQ - Feature #17972 (In Progress): Javascript in Forms for Dynamic Update (among others)https://project.math.uzh.ch/issues/179722024-02-22T07:17:18ZBenjamin Baerbenjamin.baer@math.uzh.ch
<ul>
<li>New textfield in form for javascript per formelement</li>
<li>QFQ Variables inside the javascript get replaced (ex: {{id:R0}} = 25, {{SELECT name FROM person WHERE vorname = "Benjamin"}} = Baer)</li>
<li>New variables for references to make dynamic update possible. Bsp: Form Element: name%d, im Javascript block ref returns a css selector: {{ref:name}} = [data-reference="name%d"]</li>
<li>All Javascript text get added after the form</li>
</ul>
<pre>
<form class="qfq-form">
...
</form>
<script>
[insert here]
</script>
</pre>
<p>Beispiel script im form:<br /><pre>
// document.querySelectorAll("{{&name%d:V}}") # no jquery
if($("{{&name%d}}").value === "{{SELECT name FROM person WHERE vorname = "Benjamin"}}") {
$("{{&matrikelnr}}").hide()
}
</pre></p>
<p>Beispiel Ausgabe:<br /><pre>
// document.querySelectorAll("[data-reference='name%d']") # no jquery
if($("[data-reference='name%d']").value === "Baer") {
$("[data-reference='matrikelnr']").hide()
}
</pre></p>
<p>Anmerkung:</p>
<ul>
<li>Fuer die Referenzvariable war urspruenglich <code>{{ref:<name>}}</code> vereinbart und nichts gesagt zum Store.</li>
<li>Das Zeichen ':' hinter 'ref' kollidiert mit dem Delimiter fuer Store, Escape, Action ... - nicht gut.</li>
<li>Neu: Anstelle von <code>{{ref:...</code> wird vorgeschlagen (und ist implementiert) <code>{{&<name>:V}}</code></li>
<li>Das '&' ist in C als Adressoperator bekannt - das passt hier ziemlich gut.</li>
<li>Der STORE_VAR wurde gewaehlt weil bereits andere System Angaben wie RANDOM, MIMETYPE usw. enthaelt. Der STORE_FORM ist mehr fuer Content gedacht, der STORE_RECORD passt hier gar nicht.</li>
<li>Mit dem '&' am Anfang sollten Kollisionen sehr unwahrscheinlich sein.</li>
</ul> QFQ - Feature #17958 (New): Screenshare via QFQ / jitsi or ms-teamshttps://project.math.uzh.ch/issues/179582024-02-20T15:00:41ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Auf der post.ch Seite wird ein Screenshare fuer Support angeboten:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9290/clipboard-202402201547-6x5e3.png" alt="" /></p>
<p>Idee:</p>
<ul>
<li>Wir bieten das gleiche an via jitsi.</li>
<li>Koennte interessant sein fuer alle Tools, wenn die User Probleme mit einem Antrag haben.</li>
<li>Es geht nicht darum um 24/7 erreichbar zu sein, sondern dem User eine Moeglichkeit zu geben zu einem vereinbarten Zeitpunkt eine Verbindung herzustellen, ohne das eine Jitsi URL abgesprochen werden muss.</li>
<li>Ggfs. ist es auch via Teams moeglich.</li>
</ul> QFQ - Feature #17868 (New): Automatisierte Security Testshttps://project.math.uzh.ch/issues/178682024-02-12T12:44:12ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Bei Heise wird ein Workshop zum Thema angeboten.</li>
<li>Die Topics (siehe PDF) koennen helfen selber in dem Bereich Checks aufzubauen.</li>
</ul> QFQ - Feature #17829 (New): QFQ Add/Remove classes in parameterhttps://project.math.uzh.ch/issues/178292024-02-06T13:25:19ZEnis Nuredini
<p>Über das Parameter Feld sollten Klassen hinzufügbar oder entfernbar sein.</p> QFQ - Feature #17828 (New): Tablesorter disable saved filterhttps://project.math.uzh.ch/issues/178282024-02-06T12:48:40ZEnis Nuredini
<p>Per Default werden Eingaben in einem Tablesorter Filter im Browser Storage abgespeichert und bei Page Reload mitgeladen.</p>
<p>Es gibt Situationen oder Seiten bei denen man das nicht möchte.<br />Dafür gibt es beim Tablesorter folgende Konfiguration unter <strong>widgetOptions</strong> :<br /><pre>
"widgetOptions":{"filter_saveFilters":false}
</pre></p>
<p>In QFQ müsste man dafür die komplette default Konfiguration im Report angeben:<br /><pre>
data-tablesorter-config='{"theme":"bootstrap","widthFixed":true,"headerTemplate":"{content} {icon}","dateFormat":"ddmmyyyy","widgets":["uitheme","filter","saveSort","columnSelector","output"],"widgetOptions":{"filter_saveFilters":false,"filter_columnFilters":true,"filter_reset":".reset","filter_cssFilter":"form-control","columnSelector_mediaquery":false,"output_delivery":"download","output_saveFileName":"tableExport.csv","output_separator":";"} }'
</pre></p>
<p>Es wäre von Vorteil wenn dieser eine Parameter durch ein eigenes Attribut gesteuert werden könnte und nicht die ganze Config angegeben werden muss.</p>
<p>Selbiges würde für den Sorter gelten. Dort wäre auch ein eigenes Attribut von Vorteil.<br /><pre>
"widgetOptions":{"saveSort":false}
</pre></p> QFQ - Feature #17813 (New): bsColumns - bisher: col-md-12 col-lg-10 / neu: col-md-12 col-lg-8https://project.math.uzh.ch/issues/178132024-02-03T16:40:19ZCarsten Rosecarsten.rose@math.uzh.ch
<p>bsColumns:</p>
<a name="Neu-1680px-col-md-12-col-lg-8"></a>
<h2 >Neu 1680px (col-md-12 col-lg-8)<a href="#Neu-1680px-col-md-12-col-lg-8" class="wiki-anchor">¶</a></h2>
<p><img src="https://project.math.uzh.ch/attachments/download/9140/clipboard-202402031737-pag4g.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9143/clipboard-202402031811-a3aus.png" alt="" /></p>
<a name="Alt-1680px-col-md-12-col-lg-10"></a>
<h2 >Alt 1680px (col-md-12 col-lg-10)<a href="#Alt-1680px-col-md-12-col-lg-10" class="wiki-anchor">¶</a></h2>
<p><img src="https://project.math.uzh.ch/attachments/download/9141/clipboard-202402031739-hnb8a.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9142/clipboard-202402031809-ae1ib.png" alt="" /></p> QFQ - Feature #17791 (New): Checkbox: copy default texthttps://project.math.uzh.ch/issues/177912024-02-02T12:16:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei einer Liste von Checkboxen soll es moeglich sein hinterlegte Texte mit einem Mausclick in die Zwischenablage zu kopieren.</p>
<ul>
<li>Die 'action' Button kommt hinter das letzte Feld in die Kommentarspalte.</li>
<li>Click kopiert die Texte in die Zwischenablage, oder es wird eine HTML ID / CLASS angegeben und dort hinkopiert (z.B. das Chat Input Fenster)</li>
</ul>
<p>Bsp:</p>
<pre>
[] rot
[] gruen
[] gelb
</pre>
<ul>
<li>rot: erdbeere, radieschen, paprika rot</li>
<li>gruen: erbse, apfel gruen, </li>
<li>gelb: zitrone</li>
</ul>
<pre>
{{!SELECT id, label, copytext FROM gruppe ....}}
'copytext' wird nicht angezeigt, sodnern ist der Text der in die Zwischenablage kopiert wird.
!clipboard-202402021310-orpas.png!</pre> QFQ - Feature #17790 (New): QFQ Chat V1.3https://project.math.uzh.ch/issues/177902024-02-02T10:08:04ZEnis Nuredini
<p>Priorisierung anpassen zwischen 1.3 und 1.4.</p>
<p>Umsetzung der Features von 1.3:<br /><a class="external" href="https://git.math.uzh.ch/typo3/qfq/-/blob/develop/Documentation-develop/CHAT.md">https://git.math.uzh.ch/typo3/qfq/-/blob/develop/Documentation-develop/CHAT.md</a></p> QFQ - Feature #17670 (New): WeasyPrint (instead of wkhtml) for PDF with header/footer/toc/...https://project.math.uzh.ch/issues/176702024-01-21T11:03:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Unter <a class="external" href="https://wkhtmltopdf.org/status.html">https://wkhtmltopdf.org/status.html</a> weist wkhtml eindringlich daraufhin das wenn wkhtml fuer nicht vertrauenswuerde HTML content verwendet wird, der Server uebernommen werden kann.</p>
<p>Das ist bei uns zwar nicht der Fall, aber weasyprint sollte einen Blick wert sein.</p>
<p>Das Hauptproblem bei wkthml ist, das sobald eine Datei (js, css, png, jpg,...) nicht geladen werden kann, es sofort einen Abbruch gibt, aber keinen Hinweis auf die Ursache.</p>
<ul>
<li><a class="external" href="https://weasyprint.org/">https://weasyprint.org/</a></li>
<li><a class="external" href="https://github.com/Kozea/WeasyPrint/">https://github.com/Kozea/WeasyPrint/</a></li>
</ul> QFQ - Feature #17659 (New): MultiForm im Formhttps://project.math.uzh.ch/issues/176592024-01-19T14:06:24ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In dem folgenden Form sollen Rollen (jeweils einzelne Records) auf eine auszuwaehlende Person gelegt werden.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9053/clipboard-202401191458-rmo2s.png" alt="" /></p>
<p>Problem: es kann immer nur eine Rolle zugeordnet werden - gut waere wenn mehrere auf einmal moeglich waeren.</p>
<p>Der Use-Case kommt oefter vor, vermutlich waere ein 80/20 Loesung sehr hilfreich - Flexibilitaet von Multiform ist vielleicht nicht wichtig, einfach das es checkbox / radio / input / select gibt.</p>
<p>Im Prinzip laeuft es auf ein MultiForm im Form hinaus: das koennte moeglich sein.</p>
<p>V2.0: Den Sonderfall, es sollen Zeilen geloescht oder neue hinzugefuegt werden, koennte mit JS geloest werden.</p>
<p>Check ob das einfach DynamikUpdate aware ist.</p> 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 #17620 (New): npm run build: Warum muss bei Chart.min.js das kopieren mit einer Cus...https://project.math.uzh.ch/issues/176202024-01-16T18:52:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In <a class="issue tracker-1 status-5 priority-2 priority-default closed" title="Bug: Missing Chart.min.js in dev branch (Closed)" href="https://project.math.uzh.ch/issues/17529">#17529</a> wurde gefixt das Chart.min.js nun wieder ausgeliefert wird.</li>
<li>Benj moechte sich anschauen warum bei Chart.js und tablesorter die Custom Rules noetig sind.</li>
</ul> QFQ - Feature #17618 (New): Doc/Report: change all examples 'remove numbers'https://project.math.uzh.ch/issues/176182024-01-16T13:41:27ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #17579 (New): UZH CD: Anpassungen fuer FE Edit Codemirrorhttps://project.math.uzh.ch/issues/175792024-01-13T19:01:55ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>typo3conf/ext/uzh_cd_template/Configuration/TypoScript/constants.txt</li>
</ul>
<pre>
#cd.qfq.js.file11 = typo3conf/ext/qfq/Resources/Public/JavaScript/codemirror.min.js
cd.qfq.js.file11 = typo3conf/ext/qfq/Resources/Public/JavaScript/codemirror/codemirror-qfq.min.js
#cd.qfq.js.file12 = typo3conf/ext/qfq/Resources/Public/JavaScript/code-mirror-mode/sql/sql.min.js
</pre> QFQ - Feature #17577 (New): QFQ Doc: local render / Sphinx & MkDochttps://project.math.uzh.ch/issues/175772024-01-13T13:39:29ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn man die QFQ Doc lokale rendern koennte um schneller zu sehen wie etwas aussieht.</p>
<ul>
<li>Um schnell etwas auszuprobieren sind a) Commmits auf 'Develop' und b) warten bis RTD fertig ist, einfach zu unpraktisch.</li>
<li>RTD rendert nur auf Branch Master & Develop - d.h. niemand ausser CR kann schauen wie die Doku aussieht.</li>
</ul>
<ul>
<li><a class="external" href="https://me-readthedocs.readthedocs.io/en/latest/custom_installs/local_rtd_vm.html">https://me-readthedocs.readthedocs.io/en/latest/custom_installs/local_rtd_vm.html</a></li>
<li><a class="external" href="https://me-readthedocs.readthedocs.io/en/latest/guides/tools.html">https://me-readthedocs.readthedocs.io/en/latest/guides/tools.html</a></li>
<li><a class="external" href="https://training.nih-cfde.org/en/latest/General-Tools/Web-Development/mkdocs/">https://training.nih-cfde.org/en/latest/General-Tools/Web-Development/mkdocs/</a></li>
</ul> QFQ - Feature #17570 (ToDo): qfq-badge same as badge from bootstraphttps://project.math.uzh.ch/issues/175702024-01-12T10:29:58ZJan Haller
<p><em>badge</em> von Bootstrap und <em>qfq-badge</em> unterscheiden sich visuell:<br /><img src="https://project.math.uzh.ch/attachments/download/8979/clipboard-202401121125-4odn3.png" alt="" /></p>
<pre><code class="css syntaxhl"><span class="nc">.badge</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="n">inline-block</span><span class="p">;</span>
<span class="nl">min-width</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">3px</span> <span class="m">7px</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="m">700</span><span class="p">;</span>
<span class="nl">line-height</span><span class="p">:</span> <span class="m">1</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#fff</span><span class="p">;</span>
<span class="nl">text-align</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
<span class="nl">white-space</span><span class="p">:</span> <span class="nb">nowrap</span><span class="p">;</span>
<span class="nl">vertical-align</span><span class="p">:</span> <span class="nb">middle</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#777</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="p">}</span><span class="o">;</span>
<span class="nc">.qfq-badge</span> <span class="p">{</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">1px</span> <span class="m">9px</span> <span class="m">2px</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12.025px</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="nl">white-space</span><span class="p">:</span> <span class="nb">nowrap</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">2px</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#ffffff</span><span class="p">;</span>
<span class="nl">display</span><span class="p">:</span> <span class="n">inline-block</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#999999</span><span class="p">;</span>
<span class="nl">-webkit-border-radius</span><span class="p">:</span> <span class="m">9px</span><span class="p">;</span>
<span class="nl">-moz-border-radius</span><span class="p">:</span> <span class="m">9px</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">9px</span><span class="p">;</span>
<span class="p">}</span>
</code></pre>
<p><em>qfq-badge</em> soll visuell identisch sein mit <em>badge</em>. Die Schriftgrösse ist evt. zu klein.</p>
<p>Bei hover wird der <em>qfq-badge</em> abgedunkelt und der Cursor zeigt an, dass darauf geklickt werden kann. Beibehalten?</p>
<pre><code class="css syntaxhl"><span class="nc">.qfq-badge</span><span class="nd">:hover</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#ffffff</span><span class="p">;</span>
<span class="nl">text-decoration</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">cursor</span><span class="p">:</span> <span class="nb">pointer</span><span class="p">;</span>
<span class="p">}</span>
</code></pre> 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 #17539 (New): Check if stored procedures exist - if not, createhttps://project.math.uzh.ch/issues/175392024-01-05T11:55:23ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>CR passiert es regelmaessig das neue T3 Instanzen erstellt werden und diese via mysqldump restauriert werden.</li>
<li>Dabei gehen die 'stored procedures' haeufig vergessen.</li>
<li>Es waere gut wenn die dann einfach angelegt werden wuerden.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/8957/clipboard-202401051252-pjznw.png" alt="" /></p> QFQ - Feature #17523 (New): QFQ-Test-Application - Setup based on CR QFQ Instanzhttps://project.math.uzh.ch/issues/175232023-12-28T15:40:15ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird aktuell fuer webwork20 implementiert</li>
<li>Sollte bald auf webwork22 migriert werden (neues PHP, mariabd)</li>
<li>Aus diesem Setup bekommt jeder Developer seine QFQ Instanz</li>
<li>Entwickelt ein Developer etwas neues und sollte das als Beispiel in die 'QFQ-Test-Application' aufgenommen werden, so muss der Developer das machen.</li>
<li>Die Selenium Tests basieren auf dieser QFQ-Test-Application .</li>
</ul> QFQ - Feature #17515 (New): TYPO3_STORE: ttcontentUid - insertRecord keep original uidhttps://project.math.uzh.ch/issues/175152023-12-24T10:18:30ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird ein Content Record via 'Insert Records' eingebunden, zeigt `{{ttcontentUid:Y}}` erwartungsgemaess die UID des finalen tt-content Records an, und nicht die des urspruenglichen.</p>
<p>Fuer QFQ Wiki waere es gut das wenn Seiten verschoben werden (pageSlug aendert sich), der Content mit wandert.</p>
<p>Das koennte erreicht werden in dem</p>
<p>a) anstelle des `{{pageSlug:T}}` die `{{pageId:T}}` verwendet wird,<br />b) die `{{ttcontentUid:Y}}` des T3 tt-content records.</p>
<p>Variante (b) hat den Nebenenenffekt, das ein verschieben des tt-content QFQ-Wiki Records den Inhalt mit verschiebt. <br />Da die QFQ Wiki Records aber immer den gleichen tt-content QFQ Code haben, werden solche Records typischerweise mit 'Insert Record' erzeugt - genau dann funktioniiert allerdings `{{ttcontentUid:Y}}` nicht mehr.</p>
<p>Gibt es eine Moeglichkeit herauszufinden welches die urspruengliche `ttcontentUid` ist?</p> QFQ - Feature #17466 (New): BS5 list 'suggestions / topics / discuss'https://project.math.uzh.ch/issues/174662023-12-12T09:45:31ZPhilipp Gröbelbauer
<p>Add Suggestions and discuss ideas around the future BS5 layout.</p>
<ul>
<li>Suggestion: Display Form Control Buttons at the bottom of the form, sticky. (<a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Rearrange form buttons (New)" href="https://project.math.uzh.ch/issues/17442">#17442</a>)</li>
</ul> QFQ - Feature #17442 (New): Rearrange form buttonshttps://project.math.uzh.ch/issues/174422023-12-07T12:53:28ZKrzysztof Putyra
<a name="Overview-of-the-problem"></a>
<h1 >Overview of the problem<a href="#Overview-of-the-problem" class="wiki-anchor">¶</a></h1>
The current arrangement <code>[save][close] [delete] [new]</code> is flawed: it makes people afraid to click "close", because the impression is that the button deletes data. This is caused by how our brain processes this information:
<ul>
<li>the two buttons are next to each other with icons suggesting opposite actions</li>
<li>opposite <em>action</em> to "safe" is "delete" ("don't safe" is <em>no action</em>)</li>
<li>close button is normally the last one in a group, so our brain does not expect it at the current position</li>
</ul>
<p>Moreover, because [save] and [close] are next to each other and [delete] is separated, the brain ignores [delete] when looking at [close] and tries to make connection only with [save]. This could be improved by placing [delete] between [safe] and [close]</p>
<a name="An-alternate-arrangement"></a>
<h1 >An alternate arrangement<a href="#An-alternate-arrangement" class="wiki-anchor">¶</a></h1>
<p><code>[safe] [new][delete] [close]</code></p>
<ul>
<li>[close] is the last button</li>
<li>[delete] does not touch [safe], which prevents accidental clicks</li>
<li>[delete] is between [safe] and [close] to prevent the brain making a connection between these two buttons</li>
<li>choosing for [safe] an icon related to [delete] instead of a tick may improve the situation as well</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 #17439 (New): Novu Open Source Notification Managementhttps://project.math.uzh.ch/issues/174392023-12-07T07:37:09ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://www.heise.de/ratgeber/Novu-Open-Source-Notification-Management-fuer-Web-Apps-9543007.html?wt_mc=intern.red.plus.newsticker.7-tage-news.teaser.teaser">https://www.heise.de/ratgeber/Novu-Open-Source-Notification-Management-fuer-Web-Apps-9543007.html?wt_mc=intern.red.plus.newsticker.7-tage-news.teaser.teaser</a></p>
<p>Koennte eingesetzt werden fuer</p>
<ul>
<li>Dashboard</li>
<li>Am I-MATH gibt es viele T3 Instanzen - damit koennten Notifications unterschiedlicher Tools gebuendelt werden.</li>
<li>Notez: falls wir eine App machen </li>
<li>Wuerde sich das als Chat-Server eignen?</li>
</ul> QFQ - Feature #17411 (New): extraButtonCopyToClipboardhttps://project.math.uzh.ch/issues/174112023-12-05T21:21:40ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Mitunter ist es gewuenscht den Inhalt eines Input Elements in das Clipboard zu kopieren.</p>
<p>Fuer Report habe das schon <a class="external" href="https://docs.qfq.io/en/master/Report.html#copy-to-clipboard">https://docs.qfq.io/en/master/Report.html#copy-to-clipboard</a></p>
<p>Vergleichbar mit extraButtonLock,extraButtonPassword, extraButtonInfo.</p>
<p>Es waere gut wenn immer der aktuelle Inhalt des FormElements genommen wird, auch wenn der Record nicht nicht gespeichert wurde.</p>
<p>Der Button waere auch sinnvoll fuer FormElement.type=editor (TinyMCE / CodeMirror)</p>
<p>Erste Anwendung: u.a. in den Settings gibt es oft 'reference' Spalten - deren Inhalt kopiert man haeufiger in die Zwischenablage ...</p> QFQ - Feature #17401 (New): Upload PDF: deny if it is protected / convert to unprotect if possible.https://project.math.uzh.ch/issues/174012023-12-04T10:43:20ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls ein PDF hochgeladen wird und dieses geschuetzt ist:</p>
<p>- versuchen es auf 'unprotect' zu konvertieren (Original muss erhalten bleiben).<br />- wenn das nicht moeglich ist den Upload ablehnen.<br />- Generic & Custom Fehlermeldung<br />- Check optional machen, by default aktiv.</p> QFQ - Feature #17399 (New): Form 'FormElement': titel improvementhttps://project.math.uzh.ch/issues/173992023-12-03T15:48:58ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8849/clipboard-202312031648-17ud6.png" alt="" /></p> QFQ - Feature #15812 (New): Upload: download button appears after uploading filehttps://project.math.uzh.ch/issues/158122023-03-16T12:01:35ZJan Haller
<p>Weiterentwicklung von <a class="issue tracker-1 status-1 priority-2 priority-default" title="Bug: Upload: download button not shown after pressing save (New)" href="https://project.math.uzh.ch/issues/15795">#15795</a>:<br />Nach dem Upload (Datei auswaehlen, noch kein Save gedrueckt) soll ein Downloadbutton erscheinen, um die Datei direkt wieder herunzerzuladen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7532/clipboard-202303161301-3ezmi.png" alt="" /></p> QFQ - Bug #15050 (New): Farbe Textfeld grau bei Wechsel von readonly auf show https://project.math.uzh.ch/issues/150502022-11-18T15:05:39ZJan Haller
<p>Textfeld mit TypeAhead bleibt grau, wenn mit Dynamic Update von readonly auf show gewechselt wird. Ursache <input background-color:"transparent"> (siehe Screenshot).</p> QFQ - Bug #15047 (New): {{allRequiredGiven:V}} = 0, wenn Note Formelement auf required isthttps://project.math.uzh.ch/issues/150472022-11-18T10:11:34ZPascal Rössler
<p>Wenn ein Note Formelement auf mode=required hat, ist {{allRequiredGiven:V}} immer = 0. Da man ein Formelement vom Typ Note gar nicht ausfüllen kann.</p> QFQ - Bug #11195 (New): Dynamic Update: Note not updated if new text is empty (v20.4)https://project.math.uzh.ch/issues/111952020-09-25T09:14:05ZNicola Chiapolini
<p>We had a dynamic updated note-Element with value</p>
<p><code>#!report<br />10.sql = SELECT notes FROM rooms WHERE building = '{{building:FSRD:alnumx}}' AND room = '{{room:FSRD:alnumx}}'<br />10.twig = {{ result.0.notes }}<br /></code></p>
<p>The note-Element is not updated, if the notes is empty or the query does not return a row.<br />The following code works:</p>
<p><code>#!report<br />10.sql = SELECT notes, RAND() AS dummy FROM rooms WHERE building = '{{building:FSRD:alnumx}}' AND room = '{{room:FSRD:alnumx}}'<br />10.twig = <span>{{ result.0.notes }}</span><br /></code></p>
<p>(Since we only update via T3 Extension store, we are still running 20.4 so this might be fixed by now.)</p> QFQ - Bug #7456 (Some day maybe): Todos in Code: solve or make tickethttps://project.math.uzh.ch/issues/74562018-12-11T09:23:08ZMarc EggerQFQ - Feature #3567 (Some day maybe): 'Save', 'Close', 'New' als FormElementhttps://project.math.uzh.ch/issues/35672017-04-13T10:47:15ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3537 (Some day maybe): SHOW COLUMNS FROM tableName - Extend '{{!...' definitionhttps://project.math.uzh.ch/issues/35372017-04-09T08:09:34ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ziel war urspruenglich ein TypeAhead fuer Spaltennamen im Form 'FormElement' zu implementieren.<br />Bei der folgenden Beschreibung ist nicht klar ob sich der Aufwand lohnt das zu implementieren:</p>
<pre>
{{!'%s',1,'id'|'%s %s %s',1,2,3,'value'|SHOW COLUMNS FROM {{SELECT f.tableName FROM Form AS f WHERE f.id={{formId:S0}} LIMIT 1}} }}
</pre><br />Erklaerung:
* Kommt nach dem '{{!' kein SQL Schluesselwort, wird der String nach '|' explodiert.
* Ab dem ersten Einzelelement welches mit einem SQL Schluesselwort beginnt, werden alle folgende Einzelelemente wieder zu einem Element zusammengesetzt.
* Die vorderen Einzelelemente sind printf() Anweisungen, mit der Ergaenzung das falls der letzte Parameter (z.B. 'id') in Ticks steht, dies der neue Spaltenname ist.
* Die Nummern nach dem Formatstring sind die Spaltenindizes des Resultsets. QFQ - Feature #3273 (Some day maybe): Dirty Flag in Formhttps://project.math.uzh.ch/issues/32732017-03-04T13:30:44ZElias Villiger
<p>Gewünscht ist die Möglichkeit, innerhalb eines FormElements abzufragen, ob der aktuelle Record Änderungen enthält, die noch nicht gespeichert wurden. Das entsprechende dirty flag muss natürlich dynamic update tauglich sein.</p>
<p>Gebraucht für HMS:</p>
<blockquote>
<p>Der "Submit" button einer application sollte nur dann aktiv sein, wenn der Record gespeichert wurde. Andernfalls wird eine Notiz angezeigt, dass der Record zuerst gespeichert werden muss.</p>
</blockquote>