Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-18T07:56:45ZProject @ iMath
Redmine QFQ - Feature #18164 (Feedback): Merge datahttps://project.math.uzh.ch/issues/181642024-03-18T07:56:45ZEnis Nuredini
<p>Neues Feature um vereinfacht Duplizierte Daten zu mergen. Soll relativ generisch und Einsatzbereit für verschieden Projekte sein.</p>
<p>Eine automatische Erstellung von Merge Rules in einer eigenen Tabelle ist vorgesehen. Das manuelle Erfassen von Rules sollte ebenfalls möglich sein.<br />Beim mergen sollten drei Optionen zur Verfügung stehen: Datensatz belassen, Datensatz mergen, Datensatz löschen</p>
<p>Auch sollte die Primary ID auswählbar sein.</p>
<p>Ein Switch zwischen Rules und compared Data würde die Benutzerfreundlichkeit erhöhen.</p> QFQ - 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 #18022 (Feedback): Filepond colors / element size / font size (new UZH CD) / borderhttps://project.math.uzh.ch/issues/180222024-02-29T07:59:26ZEnis Nuredini
<ul>
<li>Einheitliche Farbe Filepond Elements - Defaultfarbe die auch die anderen Input Elemente haben (am besten die Browser Vorgabe)</li>
<li>Höhe des Elements: wie reguläre Inputfelder.</li>
<li>Drag&Drop Feld Farbe anpassbar(?) - Defaultfarbe die auch die anderen Input Elemente haben</li>
<li>Font Size: Check UZH CD 2012 & 2023 (bei 2023 stimmt es nicht, siehe Screenshot)</li>
<li>Border wie bei Inputelementen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9368/clipboard-202403010917-nkqii.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9369/clipboard-202403010919-yunhd.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9370/clipboard-202403010919-6ldbb.png" alt="" /></p> QFQ - Feature #18013 (New): Tablesorter: column view selectorhttps://project.math.uzh.ch/issues/180132024-02-27T15:36:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Der tablesorter merkt sich die Suchbegriffe und ausgewaehlten Spalten</li>
<li>Wird in einer Spalte A ein Suchbegriff eingegeben und diese Spalte ausgeblendet, wird anschliessend immer noch das gefilterte Ergebnis angezeigt.</li>
</ul>
<p>Das ist verwirrend!!!</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9352/clipboard-202402271633-qfxra.png" alt="" /></p> QFQ - Feature #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 #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 #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 #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 - 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 #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 #17250 (New): Refactor wrapping of Report SQL Contenthttps://project.math.uzh.ch/issues/172502023-11-08T21:38:47ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><code>rwrap=<tr>|[sep]|</tr></code> - like <code>rbeg,rsep,rend</code></li>
<li><code>rwrapr=<tr>|[sep]|</tr></code> - like <code>rbeg,rsep,renr</code></li>
<li><code>fwrap=<td>|[sep]|</td></code> - like <code>fbeg,fsep,fend</code></li>
<li><code>wrap=<table>|</table></code> - like <code>head,tail</code></li>
<li><code>swrap=<table>|</table></code> - like <code>shead,stail</code></li>
</ul>
<ul>
<li>Die <code>wrap</code> fuellen head,tail,rbeg, ... - wird zusaetzlich zu <code>.wrap.</code> ein spezifisches <code>rbeg</code> gesetzt, wird der wrap Wert ueberschrieben. Bsp<br /><pre>
wrap=<table>|</table>
tail=</div></table>
</pre></li>
</ul>
<p>Ist identisch mit</p>
<pre>
head=<table>
tail=</div></table>
</pre>
<p>Neu Templates:</p>
<ul>
<li><code>template=table,jarray,jobject</code>
<ul>
<li><code>table</code>: <code>head,tail,rbeg,renr,fbeg,fend</code> werden mit <code><table>,</table>,<tr>,</tr>,<td>,</td></code> gefuellt.
<ul>
<li>Option: <code>template=table|<thead><th>col1</th><th>col2</th></tr></thead></code> fuegt einen <thead> ein.</li>
</ul></li>
</ul>
<ul>
<li>Bei diesen beiden ist nicht klar wie nested Queries eingebettet werden:
<ul>
<li><code>jarray</code>: Aus Rows und Columns wird ein Json Array erzeugt</li>
<li><code>jobject</code>: Aus Rows und Columns wird ein Json Object erzeugt</li>
</ul></li>
</ul></li>
</ul> QFQ - Feature #17237 (New): Picture: remove backgroundhttps://project.math.uzh.ch/issues/172372023-11-05T16:55:43ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer das Freistellen von Bilder (Fotowand) waere ein automatischer Service wuenschenswert.</p>
<ul>
<li><a class="external" href="https://ai-diver.de/bilder-freistellen/">https://ai-diver.de/bilder-freistellen/</a> - Vergleich von diversen AI Services.</li>
<li>Es koennte eine zentrale Instanz installiert werden und die einzelnen QFQ Installationen holen dort die Bilder ab.</li>
</ul> QFQ - Feature #17230 (New): FE: TAG / itemlist Elementhttps://project.math.uzh.ch/issues/172302023-11-03T07:45:53ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8701/clipboard-202311030845-hshro.png" alt="" /></p>
<p>Sieht gut aus, nette Darstellung</p> QFQ - Feature #17219 (ToDo): Merge Open Brancheshttps://project.math.uzh.ch/issues/172192023-10-31T16:14:03ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #17216 (In Progress): Replace Typo3 by template enginehttps://project.math.uzh.ch/issues/172162023-10-31T16:01:07ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://lumen.laravel.com/docs/10.x">https://lumen.laravel.com/docs/10.x</a></li>
<li>phptemplate</li>
</ul> QFQ - Feature #17202 (ToDo): Steps or timeline functionhttps://project.math.uzh.ch/issues/172022023-10-31T12:20:12ZEnis Nuredini
<p>Manchmal gibt es Prozesse in Tools die mehrere Teilschritte und Seitenwechsel haben bis der ganze Prozess abgeschlossen ist. In solchen Situationen wäre eine Art Timeline hilfreich mit welcher die Teilschritte und der aktuelle Stand angezeigt wird. Im Medtool wird eine Custom Lösung verwendet für so eine Timeline (Zu finden im Admin Formular der MA).</p>
<p>Eine zweite Lösung wäre die Verwendung von Bootstrap Pagination als Pfeilbuttons.</p> QFQ - Feature #17146 (ToDo): Ticket Apphttps://project.math.uzh.ch/issues/171462023-10-20T14:03:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Ruth empfiehlt Grit dringend ein Ticketsystem um Reminder/History beim Finanztool zu haben.</li>
<li>Medtool waere sicher auch ein Kandidat die gut Tickets einsetzen koennen.</li>
<li>Frage ist nach einen Konzept wie eine 'QFQ Ticket App' aussehen koennte?</li>
<li>Das neue I-MATH Mega Tool 'Notez' (manage) hat ebenfalls Ticket Character. </li>
<li>In Notez soll auch eine Emailintegration vorhanden sein. Emailintegration wird auch von Medtool angefragt.</li>
</ul>
<p>Gedanken:</p>
<ul>
<li>Ticket App sollte direkt aus dem Tool erreichbar sein: Tickets anlegen (Content uebernehmen), per Click auf bestehende Tickets zugreifen, Verlinkung zu Ticket loeschen koennen.</li>
<li>Option 'internal': QFQ Appstore - Integration direkt in MY, Finanztool, usw...
<ul>
<li>+ Fuer uns Tool Entwickler die gewohnte Vorgehensweise</li>
<li>- Es gibt noch keinen QFQ App Store/ Konzept. D.h. wir koennen aktuell nicht via einem App Store verteilen.</li>
</ul></li>
</ul>
<ul>
<li>Option 'external': Eigenstaendige T3 Instanz, Kommunikation via REST
<ul>
<li>+ Mehrere Tools reporten in eine Ticket-App - ein User der in mehreren Tools aktiv ist hat so eine bessere Gesamtuebersicht.</li>
</ul></li>
</ul> QFQ - Feature #17145 (In Progress): Konzept QFQ App Storehttps://project.math.uzh.ch/issues/171452023-10-20T12:55:55ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #17113 (New): TinyMCE: paste Plugin in Doku beschreibenhttps://project.math.uzh.ch/issues/171132023-10-14T18:18:51ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="clipboard-202310091733-ou70r.png" alt="" /></p> QFQ - Feature #17112 (New): Loading icons CSS libraryhttps://project.math.uzh.ch/issues/171122023-10-13T15:08:17ZJan Haller
<p><a class="external" href="https://github.com/tobiasahlin/SpinKit">https://github.com/tobiasahlin/SpinKit</a></p>
<p>Für Auslieferung mit QFQ?</p>
<p>Reine CSS library, MIT license, umfasst 12 verschiedene Loading Icons.</p>
<p>Beispiele:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8571/clipboard-202310131704-yonsr.png" alt="" /><br /><img src="https://project.math.uzh.ch/attachments/download/8572/clipboard-202310131705-mhgo0.png" alt="" /><br /><img src="https://project.math.uzh.ch/attachments/download/8573/clipboard-202310131705-itnh8.png" alt="" /><br /><img src="https://project.math.uzh.ch/attachments/download/8574/clipboard-202310131706-9djrx.png" alt="" /></p> QFQ - Feature #17108 (New): Sanitize class replace dangerous charactershttps://project.math.uzh.ch/issues/171082023-10-12T15:14:37ZJan Haller
<p>Die bestehenden Sanitize Klassen sollen erweitert werden, um mehr Flexibilität zu ermöglichen. So soll durch eine neue (default) Klasse ermöglicht werden, dass potenziell gefährliche Zeichen(folgen) durch HTML codierte Zeichen ersetzt werden.</p> QFQ - Feature #17101 (New): T3 Sync Skript erweitern das auch die 'Site Configuration' gesynct wirdhttps://project.math.uzh.ch/issues/171012023-10-11T19:36:51ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Die Site Configuration wird scheinbar nicht mehr in der DB gespeichert, sondern als Datei.</li>
<li>Im Sync Script sollte neu das Verzeichnis ./typo3conf/sites rekursiv abgeglichen. Aenderungen als Diff darstellen.</li>
<li>Achtung: die Zeile 'base:' darf nicht ueberschrieben werden <code>base: 'https://www.math.uzh.ch/ort/'</code></li>
<li>Es ist nicht klar (gerade bei Languages), ob danach noch alles funktioniert</li>
<li>Unterhalb von <code>typo3conf/</code> ist <code>sites</code> das einzige Verzeichnis das den Eindruck macht das dort Config Daten gespeichert sind.<br /><pre>
./typo3conf/sites
./typo3conf/sites/ort
./typo3conf/sites/ort/config.yaml
$ cat ./typo3conf/sites/ort/config.yaml
base: 'https://www.math.uzh.ch/ort/'
errorHandling:
-
errorCode: 403
errorHandler: Page
errorContentSource: 't3://page?uid=1'
languages:
-
title: English
enabled: true
base: /
typo3Language: default
locale: en_US.UTF-8
iso-639-1: en
navigationTitle: English
hreflang: en-US
direction: ''
flag: global
languageId: 0
rootPageId: 1
websiteTitle: ''
</pre></li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/8558/clipboard-202310112132-ih216.png" alt="" /></p> QFQ - Feature #17078 (Priorize): QFQ Support: rclonehttps://project.math.uzh.ch/issues/170782023-10-08T08:20:46ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://rclone.org/">https://rclone.org/</a></li>
<li>Damit sollten wir super easy auf Nextcloud/GoogleDrive/OneDrive zugreifen koennen.</li>
<li>Konzept erstellen:
<ul>
<li>PDFs von QFQ erzeugen und ablegen.</li>
<li>Was ist sinnvoller: a) einzelne rclone Aufrufe oder b) einen rclone Daemon / mount? Gut waere beide Optioen.</li>
<li>Waere ein Abbildung der Verzeichnisstruktur in einer Tabelle sinnvoll</li>
</ul></li>
</ul> 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 - Feature #16320 (New): Table MailLog: new column pIdhttps://project.math.uzh.ch/issues/163202023-05-31T16:59:15ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Oft zeigt <code>MailLog.xId</code> auf eine Person. Um das einfacher abfragen zu koennen (Bei der Personen Ansicht) soll neu die Spalte <code>pId</code> eingefuehrt werden.</p>
<p>Es gibt zwar noch keine Tabelle <code>Person</code> in QFQ, aber zumindest fuer die I-MATH Tools passt das sehr gut.</p> QFQ - Feature #16305 (In Progress): Inline Editing Text , Merge Requesthttps://project.math.uzh.ch/issues/163052023-05-28T13:37:18ZPascal RösslerQFQ - Feature #16303 (New): Restrict mail sendinghttps://project.math.uzh.ch/issues/163032023-05-27T13:42:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Um versehentliches massenhaftes versenden von Mails zu verhindern sollten vor jedem Mailversand Checks durchgefuehrt werden:</p>
<ul>
<li>Checks greifen nur wenn production='yes'</li>
<li>Wenn Check aktiv ist: QFQ Prozess vollstaendig beenden: Damit ist sichergestellt das keine Records als 'done' markiert werden.</li>
<li>Vor dem beenden eine Warnmail versenden an Support: Empfaenger ist konfigurierbar. Pro Minute maximail eine Warnmail.</li>
</ul>
<ul>
<li>Schutz individuelle Emailadresse: Wurden in den letzten 24h mehr als 10 Mails an die gleiche Adresse gesendet?</li>
<li>Schutz gegen Massenmail: Wurden in den letzten 24 Stunden mehr als 500 Mails versendet?</li>
</ul> QFQ - Feature #16297 (New): AutoCron: no SIP https://project.math.uzh.ch/issues/162972023-05-26T08:59:22ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Im AutoCron , wenn z.B. via Report eine Mail versendet wird, funktionieren SIP Parameter nicht (es gibt keine QFQ Session die weitergereicht wird)</li>
<li>Eine Loesung waere das ein AutoCron einen API Key bekommt, mit dem er aufgerufen wird, und dieser User (=API-Key) hat dann entsprechende Berechtigungen. </li>
<li>Der API Key wird in der QFQ Config zentral hinterlegt.</li>
<li>Der API Key ist im OS Crontab eingetragen und wird beim Aufruf mit uebergeben.</li>
</ul> QFQ - Feature #16263 (New): In case of SQL / command denied to user: report used DB connectionhttps://project.math.uzh.ch/issues/162632023-05-20T11:44:38ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls ein SQL Command abbricht mit 'command denied to user' soll die verwendete DB Connection gezeigt werden:</p>
<p>HOST / USER / DB</p> QFQ - Feature #16219 (New): Security: IPs von Hacking Angriffen sperren - Integration voin Fail2Ban https://project.math.uzh.ch/issues/162192023-05-13T12:32:06ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Setup machen damit Fail2Ban automatisiert IPs sperrt.</li>
<li>Setup in qfq.io/doc unter Security dokumentieren.</li>
<li>Gewisse Fehler, z.B. 'Security: attack detected' werden via syslog gemeldent (konfigurierbar in QFQ). Fail2Ban agiert dann entsprechend</li>
<li>In den QFQ/T3 Instanzen eine Seite einrichten die gesperrte IPs anzeigt, damit man schnell testen kann ob eine IP betroffen ist.</li>
<li>Whitelist: IPs die nie gesperrt werden - z.B. UZH.</li>
<li>Greylist: IPs die umgeleitet werden auf eine Seite 'Your IP has been blocked' - z.B. alle Schweizer IPs</li>
<li>Integration eines IP/Geolocations Services.</li>
<li>Neu gesperrte IPs sollen via Mail gemeldet werden.</li>
<li>Bestehende Logfiles analysieren: klassische Versuche auf WP Dateien fuehren automatisch zu einer Sperrung der IP - da koennte z.B. ein cron job oder inotify daemon via fail2ban die IP sperren.</li>
</ul>
<p>Beispiel Angriff:</p>
<pre>
[2022-10-23 03:48:38 / 45.227.253.6 / &lt;no session cookie&gt;] Security: attack detected
Problem: Post/Get Honeypot variable 'email' detected: 1 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL#
Post/Get Honeypot variable 'username' detected: 1
Post/Get Honeypot variable 'password' detected: 1
[2022-11-23 16:17:30 / 216.131.108.251 / 23r2ldp832obrii5t0oblg3i09] Security: attack detected
Problem: Value of GET variable 'sOIQ' too long. Allowed: 50, Length: 172. Value: '2408 AND 1=1 UNION ALL SELECT 1,NULL,'&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;',table_name FROM information_schema.tables WHERE 2&gt;1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#'
[2022-12-28 02:21:54 / 45.81.39.101 / 2q5m8frmlchk9b0lndt3b00b1h] Security: attack detected
Problem: Value of GET variable 'CDRC' too long. Allowed: 50, Length: 172. Value: '4935 AND 1=1 UNION ALL SELECT 1,NULL,'&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;',table_name FROM information_schema.tables WHERE 2&gt;1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#'
</pre> QFQ - Feature #16172 (New): Tablesorter: Update {{10.10.line.count}} after every sorthttps://project.math.uzh.ch/issues/161722023-05-10T08:41:01ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>renumber rows after every sort:</p>
<p><a class="external" href="https://stackoverflow.com/questions/6549518/jquery-tablesorter-with-row-numbers">https://stackoverflow.com/questions/6549518/jquery-tablesorter-with-row-numbers</a></p>
<p>To make it apply everytime, we either need some rules (ie., row numbers always on first column + add a class to table with qfq-renumber) or mark the row in some way (for instance, having # as the title row)</p> QFQ - Feature #16061 (In Progress): Modal Dialog Formhttps://project.math.uzh.ch/issues/160612023-04-22T15:49:07ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn wir Modale Forms haetten, die sich auf dem aktuellen View legen.</li>
<li>Bsp: Rocket Chat > Reminder</li>
<li>Option: Das Form sollte einfach aussehen (nicht das Power Form mit den close/save/delete/new button, sondern nur save/cancel)</li>
<li>Beispielanwendung:
<ul>
<li>Zu einem Seminar Vortag eine neue Person erfassen.</li>
<li>MedTool Publikation bearbeiten: Liste (vermutlich Report) von Publikationen, eine Publikation kann man anklicken und Details veraendern, beim save/schliessen des Forms soll sich der Content im Report direkt anpassen.</li>
</ul></li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7768/clipboard-202304221745-vded7.png" alt="" /></p> QFQ - Feature #16036 (New): Remove JS: jQWidgetshttps://project.math.uzh.ch/issues/160362023-04-18T09:35:45ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte die JS Lib 'jQWidgets' entfernen.</p>
<ul>
<li>JS aus dem Build nehmen (grunt/npm)</li>
<li>Im PHP Code die Typen 'dateJQW, datetimeJQW, gridJQW' entfernen.</li>
<li>Verweise in der QFQ Doku entfernen</li>
</ul> QFQ - Feature #16018 (New): Form in multi column layouthttps://project.math.uzh.ch/issues/160182023-04-15T12:53:16ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Bsp: <a class="external" href="https://www.jambit.com/arbeiten-bei-jambit/bewerbung/?id=690637">https://www.jambit.com/arbeiten-bei-jambit/bewerbung/?id=690637</a>. - Mobil ist das dann einspaltig.</li>
<li>QFQ sollte das einfach koennen.</li>
<li>File Upload ist drag'n'drop.</li>
</ul> QFQ - Feature #15992 (New): Block IP for failed loginshttps://project.math.uzh.ch/issues/159922023-04-12T12:14:58ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Min in Typo3 V11 ist das bereits implmentiert:</p>
<p><a class="external" href="https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/11.3/Feature-93825-RateLimitingForFailedLogins.html">https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/11.3/Feature-93825-RateLimitingForFailedLogins.html</a></p>
<p>Allerdings ist nicht klar wie lange das Block anhaelt und ob sich das auf die IP bezieht oder ob sich dann niemand mehr einloggen kann.</p>
<p>Am besten genauer anschauen. Im besten Fall kann dann auf eine eigene QFQ Loesung verzichtet werden.</p>
<p>Loesung in der QFQ Doku unter Secrurity beschreiben.</p> QFQ - Feature #15534 (New): FormEditor > CodeMirror > a) sql1: 'Home/End' jumps to technical line...https://project.math.uzh.ch/issues/155342023-02-12T17:05:01ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Hat man im CodeMirror eine Textzeile die im Editor umgebrochen wird und der Cursor steht auf (1), dann springt Taste 'home' auf (2). Gewuenscht waere (3). Es gibt bestimmt eine Option in CodeMirror die man setzen kann fuer das gewuenschte Verhalten - waere gut wenn das der Default waere.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7260/clipboard-202302121801-dbk1r.png" alt="" /></p>
<p>Wenn moeglich, bitte Highlight fuer matching brackets '({[<' by default aktivieren.</p> QFQ - Feature #15018 (New): SIP not found error: a) fix, b) more information for debugginghttps://project.math.uzh.ch/issues/150182022-11-11T11:34:41ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) Beim Download haben wir aktuell schwierig zu debuggende Fehler (kann nicht reproduziert werden). #14651, #15001.<br />b) Diverse Ideen:</p>
<ul>
<li>Die in #14651 genannte ID nicht als QFQ Exception gefunden: das macht auch Sinn, denn dort wird die SIP genannt und nicht die QFQ error Log id. Bitte in der Fehlermeldung auf dem Screen die QFQ Error Log ID nennen (am besten mit human readable Timestamp), die kaputte Sip sollte dann im Log stehen. </li>
<li>Im qfq.log bei der SIP Exception angeben wieviele Eintraege die QFQ Session hat. Hintergrund: sollte ein QFQ Coockie fehlen oder frisch angelegt worden sein und die QFQ Session noch quasi leer sein, wuerde man das dann sehen anhand der wenigen Eintaege.</li>
<li>Wenn eine FE Session existiert (und beim Download via Cookie mit uebergeben wurde): Details dazu anzeigen.</li>
<li>Gibt es eine Moeglichkeit das alle Cookies die auf dem Server sind anzuschauen? Ggfs. via IP Adresse Vergleich (wird die IP Adresse zum Cookie gespeichert?) herausfinden welche Cookies zu einem User gehoeren koennten. In dem Fall koennte man diese Cookies in der Exception (qfq.log) nennen, und den SIP Sip Store testweise mit den anderen passenden Sessions laden.</li>
<li>Was koennte man noch angeben?</li>
</ul> QFQ - Feature #14719 (New): Form > Subrecord: Drag'n'Drop - only activate if column 'columnOrd' e...https://project.math.uzh.ch/issues/147192022-09-13T07:29:47ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Aktuell wird bei jedem Subrecord DnD aktiviert, auch wenn es gar keine Spalte 'ord' gibt.</li>
<li>Neuer Default sollte sein, nur bei vorhandener Spalte den DnD zu aktivieren.</li>
</ul> QFQ - Feature #14187 (Priorize): qfq.log: show current URLhttps://project.math.uzh.ch/issues/141872022-05-11T09:58:39ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn man im qfq.log sehen koennte über welche URL die QFQ aufgerufen wurde.</p>
<p>Usecase: Auf den SL Touch sehen wir hin und wieder QFQ SIP Errors, sehen aber die URL im Browser nicht (wird nicht angezeigt). Auch fuer spaetere Logfileanalyse ist diese Angabe im Log vermutlich hilfreich.</p> QFQ - 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 - Feature #8962 (New): allow for form fields with identical nameshttps://project.math.uzh.ch/issues/89622019-08-29T19:41:37ZNicola Chiapolini
<p>We have a form with three Action-Elements all pointing to the same column. Each of them calculates the value based on a different dynamic-update form-field (restricted via requiredList).<br />This works perfectly, but I need to adjust the name directly in the database...</p>
<p>Could this check be removed? (At least for action elements, but I can imagine this to be useful even with native dynamic-update elements.)</p> QFQ - Feature #8082 (New): Contact form without saving recordhttps://project.math.uzh.ch/issues/80822019-03-18T13:13:09ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer z.B. Kontaktformulare waere es sinnvoll wenn man eine Form konfigurieren koennte das keinen Record speichert.</p>
<p>Z.B. in dem man keine Primary Table spezifiziert.</p>
<p>Das gleiche koennte man in einem Passwort Reset Form benoetigen (#7164).</p> QFQ - Feature #8044 (Priorize): Transaction: a) Form, b) Reporthttps://project.math.uzh.ch/issues/80442019-03-14T15:35:25ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn ein Form automatisch/individuell alles in einer Transaction kapseln wuerde.</li>
<li>Es waere gut wenn man in QFQ start/ende einer Transaction definieren koennte.</li>
</ul>
<p>Ticket bleibt nur dann auf 'high' wenn es einfach zu implementieren ist.</p>