Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-17T11:21:55ZProject @ iMath
Redmine 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 #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 - Bug #17991 (New): filepond: broken filter in file dialog boxhttps://project.math.uzh.ch/issues/179912024-02-25T10:30:21ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/9323/clipboard-202402251120-9qtxg.png" alt="" /><br /><pre>
accept = image/*,application/pdf,text/plain,.r,.m,.nb,.rmd,.rnw,.zip,.dat
</pre></p>
<p>Brave: Die Files werden nicht angezeigt:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9324/clipboard-202402251121-gc9vx.png" alt="" /></p>
<p>Wird der Filter auf 'All Files' gesetzt koennen die Files ausgewaehlt werden:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9325/clipboard-202402251123-9xavd.png" alt="" /></p>
<p>Firefox das gleiche:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9326/clipboard-202402251125-2i1lx.png" alt="" /></p>
<p>Mit <code>uploadType=v1</code> werden die Files korrekt angezeigt (Brave & FF)</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9327/clipboard-202402251128-aluit.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 #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 - 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 - Bug #16911 (New): TG wants to insert record but nothing was changedhttps://project.math.uzh.ch/issues/169112023-09-21T15:20:21ZPhilipp Gröbelbauer
<p>Template group is trying to do an Insert, even though none of its fields have been changed.<br />As a result, an empty string is passed to the insert statement for what should be a date value.<br />This produces the following error, which does not appear in qfq.log:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8428/clipboard-202309211608-fobf3.png" alt="" /></p>
<p>Error occurred on <a class="external" href="https://webwork22.math.uzh.ch/my/finanztool-anstellungen">https://webwork22.math.uzh.ch/my/finanztool-anstellungen</a>, when saving an employment record while leaving one of the date fields on the 'Pauschalzahlungen' tab empty.<br />(Error no longer occurrs, because of the following checks in the TG afterSave:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8429/clipboard-202309211714-eurla.png" alt="" /></p>
<p>(Remove these if you want to reproduce error)</p>
<p>There is a select FE (pauschal_cost_type_%d) in this template group. Disabling that FE fixes the error, suggesting that it is somehow responsible for initiating the faulty insert request.</p> QFQ - 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 #16572 (New): Filter bei qfq-vertical/qfq-vertical-text funktioniert nicht richtighttps://project.math.uzh.ch/issues/165722023-07-06T10:23:46ZEnis Nuredini
<p>Bei Verwendung folgender Header in einer Tabelle funktioniert die Sortierfunktion nicht richtig und es wird nur auf die eine Richtung sortiert.<br /><pre>
<th class="qfq-vertical filter-false"><span class="qfq-vertical-text">
</pre></p>
<p>Ebenfalls sollten die Sortierpfeile zu unterst sein und nicht eingemittet.</p>
<p>Beim Laden in Firefox werden die Pfeile manchmal nicht neben der Bezeichnung geladen sonder darüber. Korrigiert sich sobald die Entwickler Tools im Browser geöffnet werden.</p> QFQ - Feature #16297 (New): AutoCron: no SIP https://project.math.uzh.ch/issues/162972023-05-26T08:59:22ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Im AutoCron , wenn z.B. via Report eine Mail versendet wird, funktionieren SIP Parameter nicht (es gibt keine QFQ Session die weitergereicht wird)</li>
<li>Eine Loesung waere das ein AutoCron einen API Key bekommt, mit dem er aufgerufen wird, und dieser User (=API-Key) hat dann entsprechende Berechtigungen. </li>
<li>Der API Key wird in der QFQ Config zentral hinterlegt.</li>
<li>Der API Key ist im OS Crontab eingetragen und wird beim Aufruf mit uebergeben.</li>
</ul> QFQ - Feature #15969 (New): Auto Update Stored Procedurehttps://project.math.uzh.ch/issues/159692023-04-06T07:58:57ZEnis Nuredini
<p>Wird eine QFQ Instanz als ganzes kopiert und ein SQL Dump von einer DB zur anderen importiert, so fehlen die Stored Procedures. Bisher wurden diese manuell übertragen.</p>
<p>1) Neu braucht es in der QFQ Extension Config unter dem Tab Debug bei database.update eine dritte Option 'autoDb'. Es gibt schon 'auto' und 'always'. 'auto' würde alles triggern beim DB Update inkl. einem Check ob Stored Procedures existieren und diese erstellen falls nicht (sollte bestehender Code existieren). 'autoDb' führt alles aus wie bisher mit Ausnahme der Stored Procedures. Bei 'always' wird sowieso alles ausgeführt und das bei jedem Load wie gewohnt. Permissions werden vorausgesetzt damit Typo3 die Stored Procedures erstellen kann.</p>
<p>2) Was noch ein Thema war: Triggern der Create Stored Procedures falls QFQ Fehlermeldung erscheint dass eine aufzurufende SQL Function nicht gefunden wurde (Idee wurde wieder verworfen.). Danach ein Check ob das Create Stored Procedures erfolgreich ausgeführt wurde.</p> QFQ - Feature #15904 (New): QFQ: T3 V12 Compatibilityhttps://project.math.uzh.ch/issues/159042023-03-30T07:07:56ZEnis Nuredini
<p>QFQ ist nicht kompatibel mit T3 V12. Hier müssen Anpassungen vorgenommen werden.</p>
<p>Testseite verfügbar: <a class="external" href="http://webwork22.math.uzh.ch/typo12/typo3/">http://webwork22.math.uzh.ch/typo12/typo3/</a></p>
<p>Extension ist schon mal auf der Testseite hinzugefügt, damit es in Typo3 keine Fehlermeldung (Access denied) gibt mussten in folgenden Files (ext_tables.php, ext_localconf.php, tt_content-php) Zeilen Code auskommentiert werden:<br /><pre>
if (!defined('TYPO3_MODE')) {
# die('Access denied.');
}
</pre></p>
<p>Upload über T3 Backend ist aktuell nicht mehr möglich, nur das einfügen ins Verzeichnis typo3conf/ext/</p> QFQ - Feature #15903 (New): UZH CD: T3 V12 Compatibilityhttps://project.math.uzh.ch/issues/159032023-03-30T07:00:25ZEnis Nuredini
<p>UZH CD ist aktuell nicht kompatibel mit T3 V12. Hier gibt es Handlungsbedarf.</p>
<p>Verfügbare Testseite: <a class="external" href="http://webwork22.math.uzh.ch/typo12/typo3/">http://webwork22.math.uzh.ch/typo12/typo3/</a></p>
<p>Extension ist schon mal auf der Testseite hinzugefügt, damit es in Typo3 keine Fehlermeldung (Access denied) gibt mussten in folgenden Files (ext_tables.php) Zeilen Code auskommentiert werden:<br /><pre>
if (!defined('TYPO3_MODE')) {
# die('Access denied.');
}
</pre></p>
<p>Upload über T3 Backend ist aktuell nicht mehr möglich, nur das einfügen ins Verzeichnis typo3conf/ext/</p> QFQ - Bug #15866 (New): FE.type=checkbox: error message 'empty sql1, itemlist' even if FE is hidden.https://project.math.uzh.ch/issues/158662023-03-23T12:18:06ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Sollten wir Fehlermeldungen beim Bau des Elements unterdruecken, wenn ein FE Element 'hidden' ist?</p>
<p>Konkret ging es darum das sql1/itemList leer war, in dem Modus war es aber bereits ausgeblendet. Die Markierungen im 2. Screenshot war der Fix das die Exception nicht geworfen wird.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7576/clipboard-202303231314-ca6ft.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/7577/clipboard-202303231315-1hj9l.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 #15524 (New): Generic Report Pagehttps://project.math.uzh.ch/issues/155242023-02-11T09:59:41ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ziel: einfach beliebige Daten anschauen / bearbeiten / exportieren koennen.</p>
<p>Features:</p>
<ul>
<li>Repository enthaelt beliebige vorgegebene oder benutzerdefierte Reports. Das sind <strong>keine</strong> QFQ Reports mit <code>10.sql=...</code> sondern ein simples SQL Statement.</li>
<li>Optional koennen Eintraege in dem Repository durch Benutzer erstellt/angepasst werden. </li>
<li>Damit haben wir einen generischen Report Generator auf SQL Basis.</li>
<li>Jeder GenericReport hat einen Excel Exports (Button)</li>
<li>Fuer jeden Report kann QFQ 'on the fly' ein Form Detail rendern.</li>
<li>Jede Row (Record) kenn editiert oder geloescht werden.</li>
</ul>
<p>Details:</p>
<ul>
<li>In einer Tabelle 'GenericReport' werden pro Report alle Details hinterlegt.
<ul>
<li>Spalten: sql1, genericReport (uniq name for this report), description, required (comma list of required SIP arguments), sqlStoreVar (SELECT Definition), formForDelete (siehe unten), fileNameExcelExport (kann QFQ Variablen enthalten), head (Textarea Feld mit QFQ Variablen welches ueber dem Report und im Excel ueber den Daten ausgegeben wird). showNew, showEdit, showDelete (default: on).</li>
</ul></li>
</ul>
<ul>
<li>Eine T3 Page 'Generic Report' wird mit dem SIP Parameter 'genericReport=<uniq name>' und weiteren SIP Parametern aufgerufen.
<ul>
<li>Report Code: <code>genericReport = {{genericReport:SE}}</code></li>
</ul></li>
</ul>
<ul>
<li>Der Report wird mit TableSorter dargestellt, inkl. ColumnSelector.</li>
<li>Die Spaltennamen des SQL Statements:
<ul>
<li>a) referenzieren direkt eine Tabellenspalte (darueber kann der Spaltentyp ermittelt werden fuer einen Excel Export oder das generische Formular).</li>
<li>b) bei z.B. <abbr title="">CONCAT</abbr> oder '... AS something' oder bei einem SQL View Statement: im Spaltennamen die Definition. Bsp: 'Person|<abbr title="20">VARCHAR</abbr>|'.
<ul>
<li>Ein SET mit 2 Angaben (yes/no, on/off, 1/0, true/false) wird automatisch zu einer Checkbox. Der unchecked Wert ist der Default aus der Spaltendefinition.</li>
<li>Ein SET mit mehr als 2 Angaben oder ein ENUM fuehrt zu einem Multi-Select.</li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>Mit den Spaltendefinitionen kann:
<ul>
<li>Der Tablesorter auch nach Datum oder numerisch sortieren.</li>
<li>Kann ein generisches Excel erzeugt werden, inkl. korrekter Zellendefinition (Tex, Int, Float, Dezimal, Datum, Zeit, Datum-Zeit)</li>
<li>Ein generisches Formular erzeugt werden (Form wird 'on demand'in die Tabelle Form/FormElement gerendert).
<ul>
<li>FormName: _<genericReport></li>
<li>Edit: Wird angezeigt wenn es min. eine Spalte 'id' gibt - es wird ein Edit-Link gerendert der das zuvor dynamisch erstellte Form verwendet (mit der ersten 'id' Spalte aus der aktuellen Row). </li>
<li>Delete: Wird angezeigt wenn es min. eine Spalte 'id' gibt und eine primary Tabelle bestimmt werden kann (erste Tabelle nach dem FROM Statement) oder ein Form in <code>formForDelete</code> gesetzt ist. </li>
<li>New: Button.</li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>Fuer den Report wird vergleichbar dem Schluesselwort 'form' das neue Wort 'genericReport' einefuehrt.
<ul>
<li>BSP: genericReport = {{genericReport:SE}}</li>
<li>Excel Export
<ul>
<li>via <code>fileNameExcelExport</code> kann der Exportdateiname vorgegeben werden. Falls nicht gesetzt: Tabellenname_Datum.xlsx. </li>
<li><br> erzeugt eine neue Zeile im Excel.</li>
<li>Die Titelzeile wird gesetzt.</li>
</ul></li>
</ul></li>
</ul> QFQ - Feature #15490 (New): new: extraButtonClass: a) New default: btn-info, b) configurabl per I...https://project.math.uzh.ch/issues/154902023-02-06T08:50:16ZCarsten Rosecarsten.rose@math.uzh.ch
<p>extraButtonInfo=...<br />extraButtonInfoClass=btn btn-default</p>
<p>extraButtonLockClass<br />extraButtonPasswordClass</p> QFQ - Bug #15451 (New): Resubmit on form opened in new tab and set to forward=close is possiblehttps://project.math.uzh.ch/issues/154512023-01-27T13:28:09ZJan Haller
<p>Form Settings: Forward = close<br />Formular wird mit r=0 in einem neuen Tab geöffnet. Nach dem Speichern kann der Tab nicht automatisch geschlossen werden. Somit ist es möglich das Formular erneut auszufüllen und nochmals zu speichern. Dieser Vorgang kann beliebig oft wiederholt werden und jedes mal wird ein neuer Record angelegt.</p>
<p>Möglicher Fix: nach dem Speichern wird das gesamte Form auf readonly/qfq-disabled gesetzt.</p> QFQ - Feature #15413 (New): '... AS _monitor': line wrap, search, select text, syntax highlighthttps://project.math.uzh.ch/issues/154132023-01-22T10:02:48ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Via '... AS _monitor' (<a class="external" href="http://docs.qfq.io/en/master/Report.html#monitor">http://docs.qfq.io/en/master/Report.html#monitor</a>) koennen Logfiles in Echtzeit angezeigt werden.<br />Die aktuelle Loesung ist sehr rudimentaer.</p>
<ul>
<li>Es wird einmal pro Sekunde gepollt (neue Vesion wird vom Server geholt).</li>
<li>Dabei geht der aktuell selektierte Text verloren. Ggfs. von 'pull' auf 'push' umstellen (websocket).</li>
<li>Andere Moeglichkeit: Button Refresh / Autorefresch (1s, 10s,..)</li>
<li>Syntax Highlight waere gut (CodeMirror im Readonly mode? Oder etwas anderes)</li>
<li>Line Wrap, so dass man nicht nach rechts scrollen muss. Falls Code Mirror verwendet wird</li>
</ul>
<p>Gitlab hat eine sehr gute/funktionale Implementierung:<br /><img src="https://project.math.uzh.ch/attachments/download/7186/clipboard-202301221102-wqoqc.png" alt="" /></p> QFQ - Feature #15237 (New): Inspiration Filemaker: Search/Filter via Detailformhttps://project.math.uzh.ch/issues/152372022-12-23T09:16:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/7065/clipboard-202212231014-v8sne.png" alt="" /></p>
<ul>
<li>In FM kann man in einen Such/Filtermodus wechseln, bei dem ein normales Detailform als Filtermaske verwendet wird.</li>
<li>Anschliessend erscheinen oben Navigationselemente um durch die aktuell selektieren Records zu steppen.</li>
</ul> QFQ - Feature #15235 (New): Security Scanner Open Source Luecken: Integrieren in unsere Build Chain.https://project.math.uzh.ch/issues/152352022-12-22T16:05:22ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://www.heise.de/news/Googles-neuer-Security-Scanner-gegen-Open-Source-Luecken-7397479.html">https://www.heise.de/news/Googles-neuer-Security-Scanner-gegen-Open-Source-Luecken-7397479.html</a></p> QFQ - Bug #15108 (New): Wert in Note nach speichern nicht aktualisierthttps://project.math.uzh.ch/issues/151082022-12-05T15:46:11ZJan Haller
<p>Testformular: Medtool>Admin>Setup>Form>note_test</p>
<p>Text in Note (Notiz) wird mit Query abgefragt. Liefert die Query kein Resultat, bleibt nach dem Speichern der vorherige Wert erhalten. Die Seite muss neu geladen werden, damit der Inhalt entfernt wird.</p> QFQ - Feature #15104 (New): MultiForm functionality in a regular formhttps://project.math.uzh.ch/issues/151042022-12-04T09:41:23ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ziel: In einem Admin Form zu einem Antrag soll auf einem Pill eine dynamische Liste von Checkboxen implementiert werden. (Medtool > Befoerderung > Olga kann sich eine eigenen TodoListe erstellen und diese pro Antrag abarbeiten)</p>
<ul>
<li>'Dynamisch' heisst: Der User kann Workflow Items konfigurieren und jedes Item ist eine Checkbox.</li>
</ul>
<p>Idee:</p>
<ul>
<li>Neuer FE.type=Container mit Namen 'multi element'</li>
<li>In SQL1 wird die MutliForm Query definiert.</li>
<li>Multi Form Container werden nach dem regulaeren 'Form Save' abgearbeitet.</li>
<li>FE.type = action innerhalb eines 'multi element' Containers werden nach den multi-element native elementen ausgefuehrt</li>
<li>Die Form Elemente koennen vermutlich</li>
</ul> 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 #15015 (New): Doc: Export / Import Sectionhttps://project.math.uzh.ch/issues/150152022-11-10T19:27:53ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Heute habe ich die Stelle gesucht an der der Import von Excel Dateiern beschrieben ist. Das ist beim Upload FormElement.</p>
<p>Es waere gut wenn in der Doku eine Rubrik zu diversen Import/Export Moeglichkeiten (oberster Level Hauptnavigation) existieren wuerde.</p>
<p>Die Section enhaelt nur allgmeine Informationen und Referenzen zu den Details</p> QFQ - Bug #14753 (New): Folgeproblem zu #14304: keine Befriedigend Lösung für JS-Fileshttps://project.math.uzh.ch/issues/147532022-09-20T13:10:52ZNicola Chiapolini
<p>Wenn ich wie in <a class="issue tracker-1 status-6 priority-2 priority-default closed" title="Bug: table sorter view safer does not work (Rejected)" href="https://project.math.uzh.ch/issues/14304">#14304</a> identifiziert <code>bootstrap.min.js</code> aus meiner liste entferne, funktioniert anschliessend zwar der tabelsorter-viewsafer, dafür ist der Button des tablesorter-columnselector tot... (und auch alle weiteren meiner "popover" tools funktionieren dann nicht mehr).</p> 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 - Feature #14639 (New): FormEditor > Preview: also with 'PermitNew=logged_in/out/always'https://project.math.uzh.ch/issues/146392022-08-31T08:29:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p>FormEditor > Preview: sollte angeboten werden wenn 'PermitNew=logged_in/out/always' steht.</p> QFQ - Feature #14637 (New): Remove 'CopyForm' and tables 'extForm', 'extFormElement'https://project.math.uzh.ch/issues/146372022-08-31T08:21:28ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Copy Form ist ersetzt durch JSON Kopie</p> 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 - Bug #14508 (New): _exec: output will not be passed downhttps://project.math.uzh.ch/issues/145082022-07-12T10:48:54ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>The output of _exec can't be passed down to fields below, even with AS '_exec|column'</p>
<p>{{column}} will return the command, not the output
{{&column}} will return empty, not the output</p>
<p>BTW: folgender Code verhaelt sich korrekt</p>
<pre>
10.sql = SELECT 'echo "Hello World"' AS '_exec'
20.sql = SELECT '{{10.exec}}'
</pre> QFQ - Bug #14322 (New): Form Load: by default no scroll (save & close should be visible)https://project.math.uzh.ch/issues/143222022-06-14T12:14:04ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird ein Form geoeffnet (egal ob mit/ohne 'remember pill'), scrollt der Browser automatisch den Anker an die obere Browserfensterkante.</p>
<p>Das ist nervig (User fragt sich 'warum scrollt der Browser') und vor allem sieht man die Bedienelemente Save/Close nicht und wird damit gezwungen zurueck nach oben zu scrollen.</p>
<p>Bitte moegliche Loesungen überlegen und diese mit CR besprechen.</p>
<p>Dieses Verhalten ist vermutlich reingekommen als wir das Feature 'bring pill with missing required to front' implementiert haben (<a class="issue tracker-1 status-5 priority-4 priority-high2 closed behind-schedule" title="Bug: Missing required: Pill/Input not 'bring to front' (Closed)" href="https://project.math.uzh.ch/issues/6232">#6232</a>).</p> QFQ - Feature #14090 (New): Nützliche _script funktionenhttps://project.math.uzh.ch/issues/140902022-04-19T13:00:02ZNicola Chiapolini
<p>Ich habe eben wieder mit _script gespielt.</p>
<p>Funktionen die ich nützlich fände und die ich nicht gefunden habe:</p>
<ul>
<li>Ich möchte in meiner php-Funktion nicht nur auf einen Record sonder auf das ganze Resultat eines Queries zugreifen. <br />(Lässt sich erreichen, indem ich meine Funktion in einem Subquery aufrufe. Dann muss ich aber mein Zwischenergebnis jeweils über den Var-Store weiterreichen.)</li>
</ul>
<ul>
<li>Ich möchte gerne dem Var-Store nicht bloss einen einzelnen Wert sondern ganze Arrays hinzufügen und diese dann in einem späteren _script Aufruf oder in twig nutzen.<br />(für den _script-Aufruf funktioniert das mit (de)serialize, aber für Twig habe ich keine Lösung gefunden)</li>
</ul>
<p>Gibt es andere Workarounds für meine Wünsche bzw. habt ihr entsprechende erweiterungen geplant?</p> QFQ - Feature #13841 (New): Create PDF via iText - evaluatehttps://project.math.uzh.ch/issues/138412022-02-25T07:29:10ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://www.heise.de/hintergrund/Auf-Knopfdruck-PDFs-in-Anwendungen-erstellen-mit-HTML-und-CSS-Modul-6457863.html">https://www.heise.de/hintergrund/Auf-Knopfdruck-PDFs-in-Anwendungen-erstellen-mit-HTML-und-CSS-Modul-6457863.html</a></p> QFQ - Bug #12974 (New): Sanitize Queries in Action-Elementshttps://project.math.uzh.ch/issues/129742021-08-31T18:29:16ZNicola Chiapolini
<p>I just waisted an hour because qfq does not complain at all if the value after <code>sqlXXX = </code> is invalid. This should not happen.</p>
<p>QFQ should never silently ignore bad input unless it has been explicitly told to.</p> QFQ - Feature #12603 (New): Dropdown (Select), Radio, checkbox: itemListAlways={{!SELECT key, val...https://project.math.uzh.ch/issues/126032021-05-29T12:53:26ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Alle Elemente mit dynamischen key oder key/value Angaben haben das Problem, das wenn ein Wert gespeichert wurde, das Form spaeter wieder aufgerufen wird, der Wert nicht mehr in der neuen Liste enthalten hist - beim speichern der alte Wert verloren geht.</p>
<p>Der Effekt tritt gerne auf bei einer Semesterauswahlliste, die nur die sinnvollen zukuenftigen anzeigt. Eine Vorlesung aus einem alten Semester geoeffnet und gespeichert wird, dann ploetzlich einer andren Periode zugeordnet ist.</p>
<p>Vorschlag:</p>
<pre>
itemListAlways={{!SELECT key, value...}}
</pre>
<p>Das Ergebnis wird gemerged (&unify).</p> QFQ - Bug #12545 (New): sql.log not created / updatedhttps://project.math.uzh.ch/issues/125452021-05-13T11:58:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Auf <a class="external" href="https://webwork16.math.uzh.ch/vorkurs/">https://webwork16.math.uzh.ch/vorkurs/</a> gab es kein Verzeichnis `/var/www/html/vorkurs/fileadmin/protected/log`.</li>
<li>Es gab auch keine logfiles sql.log, qfq.log, mail.log</li>
<li>Obwohl die Datei sql.log nicht existiert, sieht man in `Login > Setup > Log` immer eine Zeile (pro Sekunde neu/uberschrieben):<br /><pre>
<p><em>2021.05.13 13:55:04 +0200, Reference: 609d139857048</em></p><p>Error open &#039;fileadmin/protected/log/sql.log&#039;: fopen(fileadmin/protected/log/sql.log): failed to open stream: No such file or directory</p>
</pre></li>
<li>Wird das Verzeichnis angelegt (sollte automatisch passieren) <code>mkdir /var/www/html/vorkurs/fileadmin/protected/log; chown www-data:www-datat /var/www/html/vorkurs/fileadmin/protected/log</code> verschwindet der Fehler, die Datei sql.log ist aber trotzdem nicht da.</li>
<li>Wird eine leere Datei angelgt und ein Formular gespeichert, bleibt die Datei leer.</li>
</ul> QFQ - Bug #12513 (New): Implement server side check of maxlengthhttps://project.math.uzh.ch/issues/125132021-05-08T15:11:36ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei der Implementierung von <a class="issue tracker-2 status-2 priority-2 priority-default" title="Feature: TinyMCE Paste from Word & Character Count/Limit (In Progress)" href="https://project.math.uzh.ch/issues/12439">#12439</a> ist aufgefallen das es kein MaxLength Check auf der Server Seite gibt.</p>
<p>Ziel ist das ein Fehler ausgegeben wird, wenn die maximale Laenge ueberschritten ist.<br />Grund: der User muss informiert werden das seine Angaben nicht vollstaendig gespeichert werden konnten.</p> QFQ - Bug #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 - Bug #10508 (New): Multi Form broken on Multi DB Instancehttps://project.math.uzh.ch/issues/105082020-05-07T18:38:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aufgefallen auf der RemoteExam Seite</p> QFQ - Bug #9534 (New): FE.type=upload: 'Unknown Mode: ID"https://project.math.uzh.ch/issues/95342019-11-08T15:41:41ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Haengt evtl. mit <a class="issue tracker-1 status-5 priority-4 priority-high2 closed" title="Bug: FE.type=upload: '{{fileDestination}}' saved (Closed)" href="https://project.math.uzh.ch/issues/9532">#9532</a> zusammen.</li>
</ul>
<p>1. User oeffnet neuen Record, das Form hat ein Upload Element, laesst das Upload Element aber leer.' und speichert. Es wird '{{fileDestination}}' (Bug) gespeichert. Das Form wird geschlossen.<br />2. User oeffnet den Record mit dem gleichen Form. <br />3) User klickt auf 'clear upload' (fake Filename '{{fileDestination}}')<br />4) User klickt auf 'Save' - es erscheint die Fehlermeldung 'Unknown Mode: ID"</p> QFQ - Bug #9347 (New): FE.type=upload with dynamic show/hidden: required not detectedhttps://project.math.uzh.ch/issues/93472019-10-11T12:50:57ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei Stefan gibt es ein Form das dynamisch ein/ausgeblendet wird.</p>
<p>Wenn es eingeblendet ist, soll es required sein.</p>
<p>Browser: Bei Save moniert der Browser nicht das das Feld leer ist.<br />Server: Bei Save moniert der Server nicht das das Feld leer ist.</p> QFQ - Bug #9121 (New): sip links have r and __dbIndexData sethttps://project.math.uzh.ch/issues/91212019-09-13T13:52:57ZNicola Chiapolini
<p>If a link is using SIP, the <code>r=0</code> and <code>__dbIndexData=1</code> are defined even if not specified.</p>
<p>Possible Problems:</p>
<ul>
<li>lazy coders like me do not change the lookup-order, so the r from SIP might hide r from the expected stores (especially when using r inside reused content elements).</li>
<li>if no data is passed on, removing the sip rendering is ok, but one needs to remember to add it back if one adds data later (I use sip for all links)</li>
</ul> QFQ - Feature #8962 (New): allow for form fields with identical nameshttps://project.math.uzh.ch/issues/89622019-08-29T19:41:37ZNicola Chiapolini
<p>We have a form with three Action-Elements all pointing to the same column. Each of them calculates the value based on a different dynamic-update form-field (restricted via requiredList).<br />This works perfectly, but I need to adjust the name directly in the database...</p>
<p>Could this check be removed? (At least for action elements, but I can imagine this to be useful even with native dynamic-update elements.)</p> QFQ - Feature #8082 (New): Contact form without saving recordhttps://project.math.uzh.ch/issues/80822019-03-18T13:13:09ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer z.B. Kontaktformulare waere es sinnvoll wenn man eine Form konfigurieren koennte das keinen Record speichert.</p>
<p>Z.B. in dem man keine Primary Table spezifiziert.</p>
<p>Das gleiche koennte man in einem Passwort Reset Form benoetigen (#7164).</p> QFQ - Feature #7099 (New): FormEditor > subrecord FE: list FE according their nesting in containerhttps://project.math.uzh.ch/issues/70992018-10-27T08:42:10ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In der Liste der FormElemente sollen die FE Records vom Typ 'Container' ('pill/fieldset/template-group') automatisch direkt ueber den nativen FEs angezeigt werden.</li>
<li>Beim Speichern eines FE's wird der ORD Wert automatisch korrekt gesetzt.</li>
<li>Es ist nicht noetig in der ORD Spalte die ParentChild Bedingung abzubilden, wenn sichergestellt ist das die 'ord' immer gemaess der aktuellen Hierarchie gesetzt wird. Dazu gehoert das ein manuell gesetzte ORD Wert angepasst wird.</li>
<li>FYI: Vermutlich werden wir nie eine Verschachtelungstiefe > 5 erreichen: Form>Pill>Fieldset>TemplateGroup>FE</li>
<li>Wird ein Sub Element per Drag'n'Drop nach ausserhalb des aktuellen Containers verschoben, sollte das FE die containerId des FE bekommen auf dem es gedroppt wurde.</li>
<li>Wird ein Container verschoben, werden alle Childs ebenfalls angepasst - innerhalb des Containers bleibt die Reihenfolge bestehen.</li>
<li>Die hierachiesche Logik koennte vermutlich erkannt/respektiert werden in dem ein neues Keyword definiert wird: <code>FE.parameter.ordColumnHierarchy=feIdContainer</code>. Sobald dieser Parameter gesetzt ist, wird auf die Hierachie Ruecksicht genommen und das Renumbering via PHP entsprechend durchgefuehrt.</li>
<li>Wird manuell eine 'ord' gesetzt, kann dadurch der aktuelle Container nicht verlassen werden.
<ul>
<li>Das Feld "ord" bekommt dynamisch berechnete min/max Werte: min=outercontainer.ord, max=nextoutercontainer.ord-1. Diese Funktion ist optional. Auch wenn min/max nicht gesetzt werden sollte das setzen von 'ORD' nur in den erlaubten Grenzen moeglich sein. Dazu muss dem Detail Form vermutlich mitgeteilt werden (Aufruf erfolgte via einem Subrecord aus dem 'Form'-Form) das die Begrenzung auf dem aktuellen Container beizubehalten ist.</li>
<li>Damit koennen nur ord Werte gesetzt werden, die die bestehende Container Reihenfolge beruecksichtigen.</li>
</ul></li>
</ul>