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 #17992 (New): filepond: Filter on file extension is case dependent https://project.math.uzh.ch/issues/179922024-02-25T10:45:48ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In <code>Form.parameter.accept = image/*,application/pdf,text/plain,.R,.r,.m,.rmd,.rnw,.zip</code> gesetzt.</li>
<li>Eine Datei ausgewaehlt <code>test01.R</code> (das '.R' ist gross geschrieben)</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9328/clipboard-202402251137-qeppx.png" alt="" /></p>
<ul>
<li>Macht filepond wirklich eine Konvertierung auf mimetype? In dem Fall haette `text/plain` greifen muessen!</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9329/clipboard-202402251143-gqmnf.png" alt="" /></p>
<p>Im <code>accept</code> zusaetzlich `.R` anzugeben loesst das Problem nicht (es ist kein Mimetype in QFQ hinterlegt).</p>
<p>Achtung: fuer die rmd, rnw, r - Files gibt es alle moeglichen Schreibweisen, die User sind sehr kreativ.</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 #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 - Bug #17945 (New): Values given to the parameters: typeAheadLimit and typeAheadMinLength are...https://project.math.uzh.ch/issues/179452024-02-19T09:12:49ZShweta Dayal
<p>typeAheadLimit and typeAheadMinLength are not showing the values defined in first layer of form parameters</p>
<p>Precondition:<br />Have type head field in the form</p>
<p>Steps: <br />1. open form <br />2. edit parameter in layout pill<br />3. Assign values: <br />typeAheadLimit=3<br />typeAheadMaxLength=11<br />4. Save</p>
<p>Expected results: The assigned values should be applied i.e. data-typeahead-limit=11 and data-typeahead-minlength=3</p>
<p>Actual results: The assigned values are not applied, it still shows the default values data-typeahead-limit=20 and data-typeahead-minlength=2</p>
<p>/scratch/share/system/projekte/qfq/selenium/image/typeaHeadLimit&MaxLength.png<br /><img src="https://project.math.uzh.ch/attachments/download/9273/clipboard-202402191001-lmust.png" alt="" /><br />/scratch/share/system/projekte/qfq/selenium/image/inspect.png<br /><img src="https://project.math.uzh.ch/attachments/download/9274/clipboard-202402191004-6tq6k.png" alt="" /></p> QFQ - Support #17880 (New): QFQ Exception: a) stacktrace not in support, b) Underline SQL error https://project.math.uzh.ch/issues/178802024-02-12T19:56:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/9220/clipboard-202402122055-9vcu4.png" alt="" /></p> 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 - Bug #17785 (New): undefined: Download::$storeSystemhttps://project.math.uzh.ch/issues/177852024-02-01T17:06:09ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #17725 (New): Form > forwardPage - value from a FE, FE column not in primary table, the...https://project.math.uzh.ch/issues/177252024-01-28T18:21:23ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer einen Wizard haette CR gerne ein paar Checkboxen in einem Form uebergeben an einen Page/Action Report.</p>
<p>Das scheint aber nicht wie erwartet zu funktionieren<br /><pre>
{{pageSlug:T}}?action=duplicate&v_id_new={{id:R}}&m_id={{m_id:S0}}&v_id_src={{v_id_src:S0}}
</pre></p> QFQ - Bug #17693 (New): Multi DB Setup (MY): Form > Exception > Edit Form Element: record lock mi...https://project.math.uzh.ch/issues/176932024-01-24T12:48:53ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird in einer Form bei einer Fehlermeldung auf 'Edit FormElement' geklickt, kann das aufgerufene Form anschliessend nicht gespeichert werden:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9071/clipboard-202401241348-ihhpz.png" alt="" /></p> QFQ - Feature #17647 (New): Chat Ratchet Websocket Server: a) start on boot, b) multiple racthet ...https://project.math.uzh.ch/issues/176472024-01-18T12:28:35ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) start on boot</p>
<ul>
<li>Ratched soll beim Boot automatisch starten. </li>
<li>Es gibt kein Stop mehr</li>
</ul>
<p>b) multiple racthet instances,</p>
<ul>
<li>Pro Host koennen mehere Ratchets gestartet/beendet werden.</li>
<li>Ratchet Config Datei entsprehcend anpassen.</li>
<li>Optionale Check ob nginx/apache entsprechende Proxy Anweisungen enthalten</li>
</ul>
<p>c) update QFQ not to start/stop</p>
<ul>
<li>Aus dem Controller das 'start' und aus QFQ das 'stop' entfernen.</li>
</ul>
<p>d) Update installation doc</p>
<ul>
<li>NGINX/Apache Config Beispiel</li>
<li>Start Script fuer Ratched in QFQ mit verteilen.</li>
</ul> QFQ - Feature #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 - Bug #17384 (New): Thumbnail: touch(): Unable to create filehttps://project.math.uzh.ch/issues/173842023-11-29T15:20:10ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es fehlte einfach das Verzeichnis <code>/var/www/html/uplan/fileadmin/protected/qfqThumbnail</code>.</li>
</ul>
<pre>
UniqId:: 656738c8aceb0
------------------------------------------------
toUser:: General error - please report.
support:: File: /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php / Line: 178 / touch(): Unable to create file /var/www/html/uplan/fileadmin/protected/qfqThumbnail/e69da330fa0d81e6488fdcb245704208.png because No such file or directory
Timestamp:: 2023.11.29 14:12:40 +0100
Code:: 2
Message:: General error - please report.
Type:: Code Exception
current sip:: array (
'_b64_download' => 'F:/var/www/html/uplan/fileadmin/protected/qfqThumbnail/e69da330fa0d81e6488fdcb245704208.png|T:fileadmin/protected/application/25/_fk.CVProjektleiter.pdf|W:500x|r:7|s',
'mode' => 'thumbnail',
'r' => '0',
's' => '656738c86369f',
'urlparam' => '_b64_download=RjovdmFyL3d3dy9odG1sL3VwbGFuL2ZpbGVhZG1pbi9wcm90ZWN0ZWQvcWZxVGh1bWJuYWlsL2U2OWRhMzMwZmEwZDgxZTY0ODhmZGNiMjQ1NzA0MjA4LnBuZ3xUOmZpbGVhZG1pbi9wcm90ZWN0ZWQvYXBwbGljYXRpb24vMjUvX2ZrLkNWUHJvamVrdGxlaXRlci5wZGZ8Vzo1MDB4fHI6N3xz&mode=thumbnail&r=0',
)
Page Id:: -
Content Id:: -
FE User:: crose
File:: /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Exception/ErrorHandler.php
Line:: 42
CWD:: /var/www/html/uplan
IP Address:: 192.168.133.208
Stacktrace::
#1 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php(178): touch()
#2 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php(153): IMATHUZH\Qfq\Core\Report\Thumbnail->createThumbnail()
#3 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php(92): IMATHUZH\Qfq\Core\Report\Thumbnail->getOrCreateThumbnail()
#4 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Download.php(864): IMATHUZH\Qfq\Core\Report\Thumbnail->process()
#5 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Download.php(724): IMATHUZH\Qfq\Core\Report\Download->doThumbnail()
#6 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Download.php(973): IMATHUZH\Qfq\Core\Report\Download->doElements()
#7 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Api/download.php(29): IMATHUZH\Qfq\Core\Report\Download->process()
==================================================
</pre> 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 - 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 - Bug #17215 (New): QFQ Doku: Encode ‘none’, ‘specialchar’ - 'single tick' fehlthttps://project.math.uzh.ch/issues/172152023-10-31T14:40:45ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8698/clipboard-202310311539-0oqxi.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/8699/clipboard-202310311540-zhejw.png" alt="" /></p> QFQ - 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 - 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 - Bug #16900 (New): Error display behaviourhttps://project.math.uzh.ch/issues/169002023-09-19T14:12:18ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Error reporting in QFQ with setting production = yes; and the debug display error values set to auto:</p>
<p>when not loggend in to the backend:<br /><img src="https://project.math.uzh.ch/attachments/download/8421/error_notloggedin.png" alt="" /></p>
<p>when logged in:<br /><img src="https://project.math.uzh.ch/attachments/download/8420/error_loggedin.png" alt="" /></p>
<p>Also maybe an example of the stack trace showing. Here to cause the error I simply added an i before the first select statement.</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 #16734 (New): Form: Label 'for' muss auf 'id' zeigen - aktuell geht es auf 'name'.https://project.math.uzh.ch/issues/167342023-08-20T09:36:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8245/clipboard-202308201136-2ihmb.png" alt="" /></p> QFQ - Feature #16635 (New): Config: allowedFromAdresseshttps://project.math.uzh.ch/issues/166352023-07-20T15:24:05ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Die ZI bestehen darauf das wir nur Emails versenden duerfen mit einer FROM Adresse die eine Share Emailbox entspricht (keine persoenlilchen Adressen).</li>
</ul>
<p>Damit das sichergestellt ist, neue Config Option einfuehren 'allowedFromAdresses'.</p>
<p>CSV Liste mit Emailadressen.</p> QFQ - Bug #16620 (New): wkhtml: PDF shows QFQ FE editing form if BE User is logged inhttps://project.math.uzh.ch/issues/166202023-07-17T08:41:32ZJan Haller
<p>Wenn aus dem Inhalt des tt-content mit dem Parameter 'type=2' ein PDF generiert wird, enthält dieses Informationen von Typo3, wenn der User im BE eingeloggt ist.</p>
<p>Code QFQ:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8174/clipboard-202307171039-wwgit.png" alt="" /></p>
<p>PDF (eingeloggt in T3 BE):</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8175/clipboard-202307171040-wut50.png" alt="" /></p>
<p>PDF (ausgeloggt in T3 BE):</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8176/clipboard-202307171040-gutam.png" alt="" /></p> QFQ - Bug #16580 (New): custom.css Typo3 handlinghttps://project.math.uzh.ch/issues/165802023-07-07T10:44:36ZEnis Nuredini
<p>Dies ist ein Beispiel der Einbindung vom custom.css in LSZGS. Folgender Eintrag erfolgt in Constants vom Template:</p>
<pre>
# Instance Dependent: absolute path to custom css and images
[request.getNormalizedParams().getHttpHost() == 'webwork22.math.uzh.ch']
cd.stylesheet = https://webwork22.math.uzh.ch/lszgs/fileadmin/template/cd/lszgs.custom.css
[end]
[request.getNormalizedParams().getSiteUrl() == 'https://join.lszgs.uzh.ch/']
cd.stylesheet = https://join.lszgs.uzh.ch/fileadmin/template/cd/lszgs.custom.css
[end]
[request.getNormalizedParams().getSiteUrl() == 'https://join.lszgs.uzh.ch/preview/']
cd.stylesheet = https://join.lszgs.uzh.ch/preview/fileadmin/template/cd/lszgs.custom.css
[end]
</pre>
<p><strong>Achtung</strong> : Der Pfad sollte sein `fileadmin/template` (template, nicht templates).</p>
<p>Falls weitere spezielle Elemente mit einem fileadmin beginnenden relativen Pfad gibt, dann kann in Setup die gleiche Abfrage verwendet werden.</p>
<p>Anpassungen müssen noch bei diversen Tools umgesetzt werden. Checkliste im Anschluss:</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 - Bug #16348 (New): Typeahead + extraButtonInfo: no rendered as Button Grouphttps://project.math.uzh.ch/issues/163482023-06-02T21:19:16ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8008/clipboard-202306022317-89gfi.png" alt="" /></p>
<p>Vermutlich passiert bei <code>extraButtonInfo</code> und vermutlich auch bei <code>extraButtonLock</code></p> QFQ - Bug #16344 (New): 'M:file' hat keinen Einfluss im sendmail (.xlsx / .docx kommt als .zip an)https://project.math.uzh.ch/issues/163442023-06-02T14:50:47ZPhilipp Gröbelbauer
<p>Auf webwork16/grc wurden Mail Templates angelegt mit mehreren Attachments.<br />Wird das Mail versendet, dann kommt ein .docx Attachment als .zip Datei an. <br />Das M:file hat dabei keinen Einfluss.<br />Das verarbeitete sendmail lautet:</p>
<pre>
'f:Marco Toscano
|t:philipp.groebelbauer@math.uzh.ch
||s:Travel Grant accepted!
|b:Dear Mr. Gröbelbauer...
|d:DecisionLetter.pdf
|p:id=letterbody&noId=9397&pdIdReceiver=1982&reId=1309&_sip=1&--margin-top=50mm&--margin-bottom=20mm&--header-html=https://webwork16.math.uzh.ch/grc/dev/?id=letterheade&--footer-right="Page: [page]/[toPage]"&--footer-font-size=8&--footer-spacing=10
|d:Expenses_Form_Travel_Grant.xlsx
|M:file
|F:fileadmin/protected/mailing/travelgrants/9394_10569_Expenses_form_Travel_Grant.xlsx
|d:Flightrecord_Travel Grant
|M:file
|F:fileadmin/protected/mailing/travelgrants/9395_10584_Flightrecord_Travel_Grant.docx
|d:Instructions_expense_form_extern
|M:file
|F:fileadmin/protected/mailing/travelgrants/9396_10589_Instructions_expense_form_extern.png
|g:615
|x:1309' AS _sendmail
</pre> QFQ - Bug #16343 (New): QFQ/GMX: smtp recjects if subject contains umlaut and is not proper encodedhttps://project.math.uzh.ch/issues/163432023-06-02T14:50:23ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/7998/clipboard-202306021647-yhc8l.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/7999/clipboard-202306021647-sv9ak.png" alt="" /></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 #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 - Bug #16114 (New): Subrecords / columns with buttons: elements on top of each otherhttps://project.math.uzh.ch/issues/161142023-04-27T07:09:23ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Ist das etwas das wir durch CSS vermeiden koennen?</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7785/clipboard-202304270908-fd741.png" alt="" /></p>
<pre>
!SELECT gm.id AS _id
, CONCAT('p:lecture&feUser=', IFNULL(acc.name,'')
, IF(ISNULL(gma.id), '|r:3', '|s|b|G:glyphicon-user|o:Switch User (visible only to site admin)')
, '|t:<span>', p.name,', ', p.vorname, '</span>'
, '|q:Really switch user to ', p.name,', ', p.vorname) AS 'Tutor|40|link'
, CONCAT( LEFT(w.day,3), ' ', r.raum, '<br>', DATE_FORMAT( zr.von, '%H:%i-'
), DATE_FORMAT( zr.bis,'%H:%i')) AS "Day/Time/Room|50|nostrip"
, grSplit.name AS 'Split group'
, IF(gm.x_id4=9980,'checked-gray.gif','') AS "SemAssi Edit Lecture|icon"
, gm.x_id5 AS 'Grading Workload'
, gm.x_id7 'SAP Ex.-Group'
FROM
</pre>