Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-17T15:40:12ZProject @ iMath
Redmine 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 #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 #18044 (Closed): Fabric not shownhttps://project.math.uzh.ch/issues/180442024-03-02T18:37:44ZCarsten Rosecarsten.rose@math.uzh.chQFQ - 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 - Bug #17998 (New): Curly braces: a) save as html-entity, b) stored procedure to convert to h...https://project.math.uzh.ch/issues/179982024-02-26T12:53:24ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In Forkred #17995 kam es bei der Anzeige eines Formulars zu einem Problem das <code>}}</code> als Variable interpretiert wurde.</li>
<li>Das ist ein schweres Problem und sollte versucht werden zentral zu vermeiden.</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 #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 #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 - Bug #17668 (New): TypAhead: checks 'value', but should check 'key'https://project.math.uzh.ch/issues/176682024-01-19T20:19:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ 23.6.2</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9061/clipboard-202401192117-qlllp.png" alt="" /></p>
<p>Beim laden des Forms (wenn ein User selektiert ist mit special char im Namen wie `Faske, Ida Synnøve`) gibt es im Client gleich ein 'invalid char'. Speichern wird entsprechend auch abgelehnt.</p>
<ul>
<li>checkType=auto setzt vermutlich 'alnumx' Pattern</li>
<li>Der Pattern Check prueft vermutlich den Value, es sollte eigentlich der Key getestet werden</li>
</ul>
<ul>
<li>Funktioniert nicht, sollte es aber: Encode=specialchar, checkType=auto</li>
<li>Funktioniert, aber unnoetig kompliziert: Encode=none, checkType=allbut</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 - Bug #17656 (New): Browser: regexp Pattern Match broken/error inhttps://project.math.uzh.ch/issues/176562024-01-19T13:30:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ 23.6.4</p>
<p>Auf der Forkred Seite im Passwort Reset Form gibt es in der Console die folgende Fehlermeldung</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9048/clipboard-202401191424-dqr2g.png" alt="" /></p>
<p>Die Fehler Meldung zu der Regexp habe ich bei QFQ in JS Konsole schon häufiger gesehen - wird vermutlich allgmeines Problem sein, nicht formspezifisch.</p> 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 #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 #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 #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 #17359 (New): Form: new record - skip historyhttps://project.math.uzh.ch/issues/173592023-11-26T10:06:56ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Werden mehrere Records nacheinander neu angelegt (='New'), moechte man in der Regel, sobald der der letzte Record angelegt wurde, mit 'Close' zum Parent Record zurueck.</p>
<p>Aktuell ist es so implmementiert, das man zum zuvor neu angelegten Record zuruck springt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8786/clipboard-202311261104-eua7z.png" alt="" /></p> QFQ - Feature #16988 (In Progress): Bild zuschneiden / Image Manipulationhttps://project.math.uzh.ch/issues/169882023-10-03T11:22:44ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wir brauchen an unterschiedlichen Stellen die Moeglichkeit das ein Bild direkt im QFQ zugeschnitten werden kann.</p>
<p>Use Case:</p>
<ul>
<li>Carousel News (I-MATH/MY, JES)</li>
<li>MY Photowand</li>
<li>MY Student Exercise Upload </li>
<li>(Exam Upload)</li>
<li>MNF Heidi</li>
<li>...</li>
</ul>
<p>Details:</p>
<ul>
<li>Direkt im Upload Dialog</li>
<li>Explizit fuer bereits vorhandenes Bild</li>
<li>Option: Maske (fixem Aspekt Ratio) kann eingeblendet und verschoben / gezoomt werden.</li>
<li>Option: das Originalbild bleibt erhalten (Gleicher Pfad, Dateiname plus Extension 'original')</li>
<li>Option: Button restore Orginal.</li>
<li><a class="external" href="https://docs.qfq.io/en/master/Form.html#type-imagecut">https://docs.qfq.io/en/master/Form.html#type-imagecut</a></li>
</ul>
<p>10 Best Image Croppers In jQuery And Vanilla JavaScript (2024 Update) - <a class="external" href="https://www.jqueryscript.net/blog/best-image-croppers.html">https://www.jqueryscript.net/blog/best-image-croppers.html</a></p>
<ul>
<li><a class="external" href="https://fengyuanchen.github.io/cropperjs/">https://fengyuanchen.github.io/cropperjs/</a>, MIT, 12.5k Stars, 2023</li>
<li><a class="external" href="https://jamesooi.design/Croppr.js/">https://jamesooi.design/Croppr.js/</a>, MIT, 386 Stars, 2018, Aspect Ratio</li>
</ul> QFQ - Feature #16113 (New): Report, Subrecord: action on multiple elementshttps://project.math.uzh.ch/issues/161132023-04-26T15:11:17ZCarsten Rosecarsten.rose@math.uzh.ch
Alternativer Titel: <strong>HTML table row multi select action</strong>
<ul>
<li>Records können auf Report und Formebene (Subrecord) selektiert und zusammen "bearbeitet" werden (Action wird auf alle selektierten Records angewendet).</li>
<li>Actions sind über Dropdown abrufbar</li>
<li>1 Action = 1 <em>Function</em>
<ul>
<li><em>Anmerkung CR:</em> das mit 'Functions' (weil wir so viele brauchen pro Menu) muessen wir trennen von qfqFunctions - denn 'Functions' stehen ja im aktuellen tt-content wuerden nicht gefunden werden wenn sie in einem anderen Record stehen. Aus meiner Sicht aber genau so sinnvoll! Ein tt-content Record entspricht einer Klasse.</li>
</ul></li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7783/clipboard-202304261709-sosbw.png" alt="" /></p>
<p><img src="clipboard-202304261709-w1hfg.png" alt="" /></p> QFQ - Feature #14504 (New): Form / Input Element: restore previous contenthttps://project.math.uzh.ch/issues/145042022-07-12T09:23:40ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn fuer Textfelder die Moeglichkeit bestehen wuerde alten (nicht gespeicherten) Content wieder herzustellen.</p>
<p>Szenario: User nutzt nur einen Tab, hat in einem Formularelement etwas eingegeben und moechte nun die Seite verlassen, kann aber noch nicht speichern weil noch nicht alles eingegeben ist. QFQ warnt den User, das Informationen verloren gehen, der User muss das als das kleinere Uebel akzeptieren und verliert dann seinen Content</p>
<p>Loesung 1: server based</p>
<ul>
<li>Der Infodialog, der den User warnt, bekommt eine dritte Option 'Restore content later'.</li>
<li>Alle Dirty FormElemente (STORE_BEFORE?) werden serverseitig gespeichert: feUser, SIP (Form, Record, extra Argumente). </li>
<li>Wird das Form mit der SIP und dem User wieder geoeffnet, erkennt QFQ das es temp Values gibt, laedt den Record wie gewoehnlich, und bietet dann an das die alte Werte wieder restauriert werden.</li>
</ul>
<p>Loesung 2: Browser Local Store</p>
<ul>
<li>Jedes Formulare wird bei jedem(!) change im Local Store gespeichert.</li>
<li>Wird ein Form mit 'save', 'close', 'browser tab close' geschlossen, wird der Eintrag im Local Store geloescht.</li>
<li>Wird ein Form geoeffnet und gibt es dazu einen Eintrag im Local Store, wird angeboten diesen zu laden.</li>
<li>Damit wuerden auch Browser-Crashes wieder hergestellt.</li>
</ul> QFQ - Feature #12156 (New): Form: Optional disable 'leave page'https://project.math.uzh.ch/issues/121562021-03-16T13:31:32ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Mitunter ist es wuenschenswert ein From zu verlassen (z.B. weil man einen Link klickt) und dann soll keine Abfrage "Unsaved changes... "kommen falls das Form Dirty ist.</p>
<p>Parameter:</p>
<p>messageFormDirty = 0|1|<text></p>
<p>Default:1</p>
<p>Mit der Option <text> wird es neu moeglich die Message sprachabhaengig zu setzen.</p> QFQ - Bug #11511 (Closed): Tablesorter: fix encoding errorhttps://project.math.uzh.ch/issues/115112020-11-12T21:53:58ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Support #10599 (Closed): escapeshellarg() removes non ascii charshttps://project.math.uzh.ch/issues/105992020-05-16T14:39:26ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wenn Apache mit LANG=C laeuft werden</p>
<ul>
<li>durch escapeshellarg() die Umlaute entfernt (eigenlich alle non Ascii chars). Beispiel: 'Universität Zürich' >> 'Universitt Zrich'</li>
<li>'wkthml' entfernt ebenfalls die Umlaute aus Parametern.</li>
</ul>
<p>Abhilfe: Apache mit dem System Local starten, welches heutzutage en_US.UTF-8 ist.</p>
<p>Ubuntu:<br /><pre>
# File: /etc/apache2/envvars
# Activate line:
. /etc/default/locale
</pre></p>
<ul>
<li>Damit entfernt escapeshellarg() keine non-Ascii Zeichen.</li>
<li>'wkhtml' startet mit LANG=en_US.UTF-8 und stripped ebenfalls keine non-Ascii chars.</li>
</ul> QFQ - Support #10358 (Closed): Make pdfunite configureablehttps://project.math.uzh.ch/issues/103582020-04-05T07:20:47ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Binaries wie pdfunite sollten konfigurierbar werden (wie wkhtmltopdf)</li>
<li>Variablen wie LD_LIBRARY_PATH muessen moeglichsein</li>
</ul>
<p>Umstellen:</p>
<ul>
<li>qpdf</li>
<li>gs</li>
<li>pdfunite</li>
</ul> QFQ - Bug #9861 (Closed): Fix broken sql.log filenamehttps://project.math.uzh.ch/issues/98612020-01-09T14:15:09ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #9859 (Closed): Database Update: check for 'Update specialColumnName needed' breaks cle...https://project.math.uzh.ch/issues/98592020-01-09T14:00:58ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #9855 (New): Required Checkhttps://project.math.uzh.ch/issues/98552020-01-09T10:28:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte fuer alle Input Typen (inkl. 'File'), ueberpruefen das ein Form Save unmoeglich ist (resp. markiert wird), wenn required aktiv ist, das Feld aber leer ist.</p>
<p>Das Attribute 'acceptZeroAsRequired' auch testen.</p>
<p>Bei 'fe.mode=<via dynamic update veraendert>' bitte alle Varianten testen (n=normal, r=required, FL=Form Load, FDU=Form Dynamic Update):<br /><pre>
FL FDU
--------
n n
n r
r n
r r
</pre></p> QFQ - Support #8659 (Closed): QFQ Version: 19.7.0https://project.math.uzh.ch/issues/86592019-07-02T17:17:29ZCarsten Rosecarsten.rose@math.uzh.ch
<p>0) Fuer jede neue Version ein Ticket erstellen. Template: #6994</p>
<p>1) <b>Laufen</b> die Unit Tests durch?</p>
<p>2) Die aktuellen Commits anschauen und wichtige Topics uebernehmen (git log > ~/qfq.log, alles bis zum letzten TAG anschauen):</p>
<ol>
<li>complicated: git log | grep -v -e '^commit ' -e '^Author: ' -e '^Date: ' -e '^Merge: ' > /tmp/out; pluma /tmp/out</li>
</ol>
<ol>
<li>Zeigt <b>alle Commits</b> an, die seit dem aendern von NewVersion gemacht wurden! Das sollten alle Commits seit der letzten Version sein.</li>
<ul>
<li>git log --pretty=%s --after="`stat -c %y doc/NewVersion.md`"</li>
</ul></li>
</ol>
<ul>
<li><b>Anpassen</b>: qfq/extension/Documentation/Release.rst</li>
</ul>
<ul>
<li>Release.rst <b>verteilen</b>: make copyReleaseNotes</li>
</ul>
<ul>
<li>Manuell:
<ul>
<li>Den Inhalt von Release.rst kopieren nach qfq/extension/RELEASE.txt.</li>
<li>Den Inhalt von Release.rst kopieren nach CHANGELOG.md.</li>
</ul></li>
</ul>
<ul>
<li>Alle offenen Tickets im aktuellen Milestones verschieben auf den naechsten Milestone</li>
<li>Aktuellen Milestone schliessen</li>
</ul>
<p>3) In folgenden Files anpassen:</p>
<pre><code><b>Auto</b>: ./setVersion.sh &lt;MAJOR&gt;.&lt;MINOR&gt;.&lt;MICRO&gt;</code></pre>
<pre><code>Manuell:
* extension/Documentation/_make/conf.py: release, version
* extension/Documentation/Settings.cfg: version
* extension/ext_emconf.php: version</code></pre>
<p>4) Im Projektverzeichnis: <b>Doc</b></p>
<pre><code>make t3sphinx (dadurch fallen Fehler in der RESTdoc Syntax auf)</code></pre>
<p>5) <b>Update Version & Commit</b></p>
<ul>
<li>Update the version number in this document (topic 6)</li>
<li>Commit & Push new version changes to master branch:
<p>New version 18.10.3</p></li>
</ul>
<p>6) <b>New Tag</b>: </p>
<pre><code>git tag v18.10.3<br /> git push -u origin v18.10.3</code></pre>
<p>7) Tickets: schliessen und der QFQ Version zuweisen.</p>
<p>8) PhpStorm: <b>Sync</b> all files to VM qfq.</p> QFQ - Support #8394 (Closed): QFQ Version: 19.5.1https://project.math.uzh.ch/issues/83942019-05-22T10:52:51ZCarsten Rosecarsten.rose@math.uzh.ch
<p>0) Fuer jede neue Version ein Ticket erstellen. Template: #6994</p>
<p>1) <b>Laufen</b> die Unit Tests durch?</p>
<p>2) Die aktuellen Commits anschauen und wichtige Topics uebernehmen (git log > ~/qfq.log, alles bis zum letzten TAG anschauen):</p>
<ol>
<li>complicated: git log | grep -v -e '^commit ' -e '^Author: ' -e '^Date: ' -e '^Merge: ' > /tmp/out; pluma /tmp/out</li>
</ol>
<ol>
<li>Zeigt <b>alle Commits</b> an, die seit dem aendern von NewVersion gemacht wurden! Das sollten alle Commits seit der letzten Version sein.</li>
<ul>
<li>git log --pretty=%s --after="`stat -c %y doc/NewVersion.md`"</li>
</ul></li>
</ol>
<ul>
<li><b>Anpassen</b>: qfq/extension/Documentation/Release.rst</li>
</ul>
<ul>
<li>Release.rst <b>verteilen</b>: make copyReleaseNotes</li>
</ul>
<ul>
<li>Manuell:
<ul>
<li>Den Inhalt von Release.rst kopieren nach qfq/extension/RELEASE.txt.</li>
<li>Den Inhalt von Release.rst kopieren nach CHANGELOG.md.</li>
</ul></li>
</ul>
<ul>
<li>Alle offenen Tickets im aktuellen Milestones verschieben auf den naechsten Milestone</li>
<li>Aktuellen Milestone schliessen</li>
</ul>
<p>3) In folgenden Files anpassen:</p>
<pre><code><b>Auto</b>: ./setVersion.sh &lt;MAJOR&gt;.&lt;MINOR&gt;.&lt;MICRO&gt;</code></pre>
<pre><code>Manuell:
* extension/Documentation/_make/conf.py: release, version
* extension/Documentation/Settings.cfg: version
* extension/ext_emconf.php: version</code></pre>
<p>4) Im Projektverzeichnis: <b>Doc</b></p>
<pre><code>make t3sphinx (dadurch fallen Fehler in der RESTdoc Syntax auf)</code></pre>
<p>5) <b>Update Version & Commit</b></p>
<ul>
<li>Update the version number in this document (topic 6)</li>
<li>Commit & Push new version changes to master branch:
<p>New version 18.10.3</p></li>
</ul>
<p>6) <b>New Tag</b>: </p>
<pre><code>git tag v18.10.3<br /> git push -u origin v18.10.3</code></pre>
<p>7) Tickets: schliessen und der QFQ Version zuweisen.</p>
<p>8) PhpStorm: <b>Sync</b> all files to VM qfq.</p> QFQ - Bug #7402 (Some day maybe): thumbnail cache: outdated picture when permission denied and pe...https://project.math.uzh.ch/issues/74022018-11-30T16:11:17ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird ein Image ersetzt, hat neu aber den Owner 'root', ist folgendes Verhalten zu beobachten wenn QFQ das thumbnail neu rendert (versucht).</p>
<ul>
<li>QFQ erzeugt von einem Image ein thumbnail.</li>
<li>Der Webmaster kopiert eine neue Datei, mit dem gleichen Namen ueber die alte Datei.</li>
<li>Die neue Datei hat faelchslicherweise als owner=root gesetzt. Der Apache Prozess kann nicht darauf zugreifen.
<ul>
<li>Obwohl der Zugriff nicht funktioniert, gibt es keine Fehlermeldung (im Client) - gut waere ein 'broken image'.</li>
</ul></li>
</ul>
<ul>
<li>Der Browser zeigt die thumbnails nicht an (weiss).</li>
<li>Anschliessend werden die Permissions/Owner korrekt gesetzt.</li>
<li>Nach einem Reload im Browser werden die urspruenglichen Thmumbnails angezeigt (also von den alten Bildern)!</li>
</ul> QFQ - Bug #7281 (Some day maybe): Subrecords: on large screen separator line too shorthttps://project.math.uzh.ch/issues/72812018-11-18T09:09:38ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Subrecords: bei besonders breiten Seiten und keinem subrecord, wird die Linie unter dem plus Zeichen nur auf halbe Breite gerendert.</p> QFQ - Support #7103 (Closed): Notes to Excel Exporthttps://project.math.uzh.ch/issues/71032018-10-27T09:05:06ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Hier ein paar Notizen von der Excel Export Version</p>
<p>QFQ Excel</p>
<p>Moeglichkeiten um das Excel zu erzeugen:</p>
<ul>
<li>wie beim download koennen mehrere sourcen angegeben werden.</li>
<li>pro source wird ein worksheet gemacht.</li>
<li>der source wird als csv geliefert</li>
<li>report kennt einen neuen 'special column name': ... AS _csvs (semincolon), csvc (comma)</li>
</ul>
<p>beim csv</p>
<ul>
<li>ist die erste zeile immer das spalten format - kann leer sein.</li>
<li>ist die zweite zeile immer die titel zeile - kann leer sein</li>
<li>die werte sind mit ';' getrennt. </li>
<li>';' wird mit '\' escaped</li>
<li>die values sind nicht enclosed</li>
</ul>
<pre>
<format>: date, time, number, string, currency
worksheet:0
mode:insert
mode:overwrite (default)
startAddress:A5
<Format>:<Value>
<Format>:<Value>
row
<Format>:<Value>
<Format>:<Value>
p:export&pIdOu=123 >> ?index.php&id=export&s=badcaffee1234
</pre>
<p>Format - Ein bereits vorhandenes File zum Download anlegen:</p>
<ul>
<li>'F:fileadmin/data.xlsx' AS _excel</li>
<li>'d|m:excel|s:1|F:fileadmin/data.xlsx' AS _link</li>
</ul>
<p>Ein Excel neu anlegen</p>
<ul>
<li>'d|p:exportexcel?pIdOu=456' AS _excel</li>
</ul>
<p>Ein Excel basierend auf einem template anlegen</p>
<ul>
<li>'d|F:fileadmin/template.xlsx|p:exportexcel?pIdOu=456' AS _excel</li>
</ul>
<p>Defaults fuer 'AS _excel'</p>
<ul>
<li>m:excel</li>
<li>s:1</li>
<li>d:</li>
</ul>
<p>Tipps</p>
<ul>
<li><a class="external" href="https://github.com/PHPOffice/PHPExcel/blob/1.8/Documentation/markdown/Overview/07-Accessing-Cells.md">https://github.com/PHPOffice/PHPExcel/blob/1.8/Documentation/markdown/Overview/07-Accessing-Cells.md</a></li>
<li>Ein bestehendes Excel als template nehmen.
<ul>
<li> <a class="external" href="https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-and-writing-to-file/#generating-excel-files-from-templates-read-modify-write">https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-and-writing-to-file/#generating-excel-files-from-templates-read-modify-write</a></li>
</ul></li>
</ul>
<p>Error Handling</p>
<ul>
<li><a class="external" href="https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-files/#error-handling">https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-files/#error-handling</a></li>
</ul>
<p>API Documentation</p>
<ul>
<li><a class="external" href="https://phpoffice.github.io/PhpSpreadsheet/master/">https://phpoffice.github.io/PhpSpreadsheet/master/</a></li>
</ul>
<p>Metadata</p>
<ul>
<li><a class="external" href="https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#setting-a-spreadsheets-metadata">https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#setting-a-spreadsheets-metadata</a></li>
</ul>
<p>Shows up as 1,587.20</p>
<ul>
<li>$spreadsheet->getActiveSheet()->getStyle('A1')->getNumberFormat()->setFormatCode('#,##0.00');</li>
</ul>
<p>Setting column width</p>
<ul>
<li><a class="external" href="https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#setting-a-columns-width">https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#setting-a-columns-width</a></li>
</ul>
<p>Insert Rows</p>
<ul>
<li><a class="external" href="https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#inserting-rowscolumns">https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#inserting-rowscolumns</a></li>
<li>$spreadsheet->getActiveSheet()->insertNewRowBefore(7, 2);</li>
</ul>
<p>Set HTTP Header</p>
<ul>
<li><a class="external" href="https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#redirect-output-to-a-clients-web-browser">https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#redirect-output-to-a-clients-web-browser</a><br /><pre>
--------
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="myfile.xlsx"');
header('Cache-Control: max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
</pre></li>
</ul> QFQ - Bug #7101 (Some day maybe): 'form' in SIP and 'report' - breakshttps://project.math.uzh.ch/issues/71012018-10-27T08:47:43ZCarsten Rosecarsten.rose@math.uzh.ch
<p>falls in der SIP ein form ist und um qfq record ein form defineirt ist (wrid dynamisch berechnet) kommt qfq beim defintinve laden des form durcheinander.</p> QFQ - Bug #7011 (Rejected): Button 'Einreichen' erscheint doppelt - Rahmen Pill falsch - GRC / Fo...https://project.math.uzh.ch/issues/70112018-10-16T06:32:47ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Button einreichen doppelt (FF) - wir (SW/CR) koennen das Problem mit den zwei Buttons nciht reproduzieren.</li>
<li>Ueber dem Button ist eine waagerechte Linie - die hat CR schoen oefter in letzter Zeit gesehen.</li>
</ul> QFQ - Bug #5913 (Closed): sendmail: reports that there is no 'TO' given - but it is.https://project.math.uzh.ch/issues/59132018-05-04T15:57:23ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #5896 (Closed): Missing 'specific message' in database exceptionhttps://project.math.uzh.ch/issues/58962018-05-01T17:12:56ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #5890 (Closed): File 'config.qfq.ini' by default public - protect against accesshttps://project.math.uzh.ch/issues/58902018-05-01T12:49:43ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>config.qfq.ini kann aktuell, bei direkter Eingabe des Pfades, im Webbrowser angezeigt werden!!!</li>
<li>Optionen das zu verhindern:
<ul>
<li>File umbennennen mit 'php' am Ende.</li>
<li>In ein geschuetztes Verzeichnis verschieben</li>
</ul></li>
</ul>
<ul>
<li><a class="issue tracker-2 status-5 priority-2 priority-default closed" title="Feature: config.qfq.ini via ExtManager (Closed)" href="https://project.math.uzh.ch/issues/5175">#5175</a> config.qfq.ini via ExtManager</li>
<li><a class="issue tracker-1 status-5 priority-2 priority-default closed" title="Bug: sql.log by default public - protect against access (Closed)" href="https://project.math.uzh.ch/issues/5884">#5884</a> sql.log by default public - protect against access</li>
</ul> QFQ - Bug #5877 (Some day maybe): FE.type=note:bsColumn strange behaviourhttps://project.math.uzh.ch/issues/58772018-04-26T16:32:42ZCarsten Rosecarsten.rose@math.uzh.ch
<p>SW hat auf der GRC Seite ein spezielles Verhalten gehabt.</p>
<ul>
<li>FE Element (kein Dynamic Update) type=note</li>
<li>In der Note gab es kein Label und Input.</li>
<li>Die Note Spalte war 9 spalten breit. Label=3, Input=0</li>
<li>Nachdem 'modeSql' gesetzt wurde, so dass nur bei gewissen Grants das FE angezeigt werden soll (show/hidden), war der Button linksbuendig, obwohl er in der 4. Spalte beginnen soltle.</li>
<li>Wurde Label=2, Input=1 oder Label=0, Input=3 gesetzt, trat der Effekt nicht auf.</li>
</ul> QFQ - Bug #5502 (Rejected): Download Button: Empty setting throws an error.https://project.math.uzh.ch/issues/55022018-02-22T12:12:55ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In der Doku steht das ' fe.parameter.downloadButton', ohne Angabe von weiteren Parametern, ok ist und nur ein Glyph rendert. </li>
<li>Auf webwork16/grc/sw gab es einen Fehler (attached).</li>
</ul> QFQ - Support #4967 (Closed): config.qfq.ini: Rename 'VAR_ADD_BY_SQL' to 'FILL_STORE_SYSTEM_BY_SQ...https://project.math.uzh.ch/issues/49672017-11-19T15:19:35ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Rename 'VAR_ADD_BY_SQL' to 'FILL_STORE_SYSTEM_BY_SQL_1'</li>
<li>Implement up to 3 independent to SQLs</li>
<li>Optional error message, if not exact one record</li>
<li>Columns in the Query, starting with an leading '_', should be renamed to 'without the leading "_"'.</li>
</ul> QFQ - Bug #4966 (Closed): Variable {{feUser:T}} is not available in config.qfq.ini FILL_STORE_SYSTEMhttps://project.math.uzh.ch/issues/49662017-11-19T11:02:10ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #4546 (Some day maybe): NH: SIP storage is destroyed https://project.math.uzh.ch/issues/45462017-09-16T09:00:14ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Nicolas hatte einige Tage lang den Effekt, das die SIPs immer mal wieder ungueltig waren. Vermutlich hat QFQ die SIP storage abgeraeumt weil ein Angriff erkannt wurde.</p> QFQ - Bug #4455 (Closed): input label: missing strong if readonlyhttps://project.math.uzh.ch/issues/44552017-09-09T16:37:57ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #4441 (Some day maybe): $_SERVER Vars sollten nur aus dem Store genommen werden - Code ...https://project.math.uzh.ch/issues/44412017-09-09T14:34:35ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Support #4108 (Closed): FormEditor: Record Lockinghttps://project.math.uzh.ch/issues/41082017-07-13T12:36:36ZCarsten Rosecarsten.rose@math.uzh.ch
Form: Lock timeout (seconds)
<ul>
<li>By default ist 0 eingetragen - das kann man nicht unterscheiden von 'nicht definiert'.</li>
<li>Optionen
<ul>
<li>a) wir nutzen 'null' oder</li>
<li>b) wir belegen 'Form.recordLockTimeoutSeconds=0' mit 'nicht 'gesetzt' und SYSTEM.recordLockTimeoutSeconds=0 heisst kein Timeout</li>
</ul></li>
</ul> QFQ - Support #3569 (Closed): Input Optional '0' unterdrueckenhttps://project.math.uzh.ch/issues/35692017-04-13T11:08:39ZCarsten Rosecarsten.rose@math.uzh.ch
<pre>
FE.type=text
Fe.checktype=digit
FE.value={{SELECT IF('{{zoraSavedSearchId:RE}}' = 0, '', '{{zoraSavedSearchId:RE}}') }}
table.columntype: int
</pre> QFQ - Bug #2999 (Closed): QFQ/Client: Klickt in einem Form auf den DELETE Button und ist dieser d...https://project.math.uzh.ch/issues/29992016-12-17T19:13:19ZCarsten Rosecarsten.rose@math.uzh.ch