Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-17T11:04:14ZProject @ iMath
Redmine 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 - 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 #17828 (New): Tablesorter disable saved filterhttps://project.math.uzh.ch/issues/178282024-02-06T12:48:40ZEnis Nuredini
<p>Per Default werden Eingaben in einem Tablesorter Filter im Browser Storage abgespeichert und bei Page Reload mitgeladen.</p>
<p>Es gibt Situationen oder Seiten bei denen man das nicht möchte.<br />Dafür gibt es beim Tablesorter folgende Konfiguration unter <strong>widgetOptions</strong> :<br /><pre>
"widgetOptions":{"filter_saveFilters":false}
</pre></p>
<p>In QFQ müsste man dafür die komplette default Konfiguration im Report angeben:<br /><pre>
data-tablesorter-config='{"theme":"bootstrap","widthFixed":true,"headerTemplate":"{content} {icon}","dateFormat":"ddmmyyyy","widgets":["uitheme","filter","saveSort","columnSelector","output"],"widgetOptions":{"filter_saveFilters":false,"filter_columnFilters":true,"filter_reset":".reset","filter_cssFilter":"form-control","columnSelector_mediaquery":false,"output_delivery":"download","output_saveFileName":"tableExport.csv","output_separator":";"} }'
</pre></p>
<p>Es wäre von Vorteil wenn dieser eine Parameter durch ein eigenes Attribut gesteuert werden könnte und nicht die ganze Config angegeben werden muss.</p>
<p>Selbiges würde für den Sorter gelten. Dort wäre auch ein eigenes Attribut von Vorteil.<br /><pre>
"widgetOptions":{"saveSort":false}
</pre></p> QFQ - Feature #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 #17670 (New): WeasyPrint (instead of wkhtml) for PDF with header/footer/toc/...https://project.math.uzh.ch/issues/176702024-01-21T11:03:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Unter <a class="external" href="https://wkhtmltopdf.org/status.html">https://wkhtmltopdf.org/status.html</a> weist wkhtml eindringlich daraufhin das wenn wkhtml fuer nicht vertrauenswuerde HTML content verwendet wird, der Server uebernommen werden kann.</p>
<p>Das ist bei uns zwar nicht der Fall, aber weasyprint sollte einen Blick wert sein.</p>
<p>Das Hauptproblem bei wkthml ist, das sobald eine Datei (js, css, png, jpg,...) nicht geladen werden kann, es sofort einen Abbruch gibt, aber keinen Hinweis auf die Ursache.</p>
<ul>
<li><a class="external" href="https://weasyprint.org/">https://weasyprint.org/</a></li>
<li><a class="external" href="https://github.com/Kozea/WeasyPrint/">https://github.com/Kozea/WeasyPrint/</a></li>
</ul> QFQ - Feature #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 #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 #17401 (New): Upload PDF: deny if it is protected / convert to unprotect if possible.https://project.math.uzh.ch/issues/174012023-12-04T10:43:20ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls ein PDF hochgeladen wird und dieses geschuetzt ist:</p>
<p>- versuchen es auf 'unprotect' zu konvertieren (Original muss erhalten bleiben).<br />- wenn das nicht moeglich ist den Upload ablehnen.<br />- Generic & Custom Fehlermeldung<br />- Check optional machen, by default aktiv.</p> QFQ - Feature #17266 (New): Upgrade TinyMCE V6https://project.math.uzh.ch/issues/172662023-11-10T22:00:51ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Das Paste Plugin ist nun im Core: B16064_dynamic_update_checkbox_and_missing_form_variable</li>
<li>Die Defaults (welche Elemente angezeigt weden) sind nun anders.
<ul>
<li>Doku anpassen</li>
</ul></li>
</ul> 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 #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 #16346 (New): Tablesorter: clearme missinghttps://project.math.uzh.ch/issues/163462023-06-02T16:04:21ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn auch im Tablesorter das ClearMe X angezeigt werden wuerde:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8004/clipboard-202306021803-oktid.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/8005/clipboard-202306021803-2thou.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/8006/clipboard-202306021804-neuxg.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 #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 #16037 (New): Update 'make bootstrap'https://project.math.uzh.ch/issues/160372023-04-18T09:43:35ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird im QFQ Projektverzeichnis `make bootstrap` ausgefuehrt gibt es diverse Hinweise/Warnungen.</li>
</ul>
<a name="Teil-1"></a>
<h1 >Teil 1<a href="#Teil-1" class="wiki-anchor">¶</a></h1>
<ul>
<li>Bitte die Warnungen anschauen und optimalerweise loesen.</li>
<li>Bei denen die wir nicht angehen koennen, bitte eine Erklaerung (am besten in Documentation-Development/SETUP.md) was das Problem ist</li>
<li>Bitte check ob Documentation-Development/SETUP.md aktuell ist</li>
</ul>
<a name="Teil-2"></a>
<h1 >Teil 2<a href="#Teil-2" class="wiki-anchor">¶</a></h1>
<ul>
<li>Bitte das <code>Makefile</code> durchgehen und alles was wir nicht brauchen raus damit.</li>
<li>Rafi hat sehr viel Develop Kram reingenommen, das wir nicht mehr verwenden: lint, phpdoc, docutils, jinja, sphinx, ...
<ul>
<li>Aam besten eine Liste machen was raus kann und kurz mit CR anschauen.</li>
<li>plantuml bitte drin lasses.</li>
</ul></li>
</ul>
<ul>
<li>Bitte alle JS Lib anschauen was raus kann - fuer jQWidgets siehe <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Remove JS: jQWidgets (New)" href="https://project.math.uzh.ch/issues/16036">#16036</a>.</li>
<li>Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.
<ul>
<li>Check das das min. auf alfred20, alfred22 aktiv ist, am besten auch auf den Thinlinc (/etc/php/cli/...) und den webwork20, webwork22. </li>
<li>Aenderungen bitte im Ansible Playbook nachfuehren (Ticket fuer Levin machen)</li>
</ul></li>
</ul>
<a name="Teil-3"></a>
<h1 >Teil 3<a href="#Teil-3" class="wiki-anchor">¶</a></h1>
<ul>
<li>Die verlinkten Tickets nach Moeglichkeit schliessen.</li>
</ul>
<a name="Meldungen"></a>
<h1 >Meldungen<a href="#Meldungen" class="wiki-anchor">¶</a></h1>
<pre>
$ make bootstrap
...
# update npm at persistent location and copy node_modules (to speed up process)
mkdir -p /var/tmp/qfq_crose1/npm
/bin/cp package.json /var/tmp/qfq_crose1/npm/
cd /var/tmp/qfq_crose1/npm; npm update
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated phantomjs-prebuilt@2.1.16: this package is now deprecated
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.81.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@4.2.1: this library is no longer supported
npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3
...
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN notsup Unsupported engine for grunt@1.6.1: wanted: {"node":">=16"} (current: {"node":"13.12.0","npm":"6.14.4"})
npm WARN notsup Not compatible with your version of node/npm: grunt@1.6.1
npm WARN qfq@1.0.0 No description
...
found 43 vulnerabilities (5 low, 18 moderate, 15 high, 5 critical)
run `npm audit fix` to fix them, or `npm audit` for details
...
# cd extension/Resources/Private; composer update
cd extension; composer update
Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.
</pre> 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 - Feature #15812 (New): Upload: download button appears after uploading filehttps://project.math.uzh.ch/issues/158122023-03-16T12:01:35ZJan Haller
<p>Weiterentwicklung von <a class="issue tracker-1 status-1 priority-2 priority-default" title="Bug: Upload: download button not shown after pressing save (New)" href="https://project.math.uzh.ch/issues/15795">#15795</a>:<br />Nach dem Upload (Datei auswaehlen, noch kein Save gedrueckt) soll ein Downloadbutton erscheinen, um die Datei direkt wieder herunzerzuladen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7532/clipboard-202303161301-3ezmi.png" alt="" /></p> QFQ - Feature #15448 (New): Tablesorter clear filterhttps://project.math.uzh.ch/issues/154482023-01-27T11:38:50ZEnis Nuredini
<p>Wir brauchen eine Möglichkeit den Filter oder Sorter Zustand zu reinigen oder nicht speichern zu lassen. Sodass nach einem Page reload die Ansicht zurück gesetzt ist.</p>
<p>Für Tablesorter Version 2.31.1 und höher gibt es folgende Möglichkeit:<br /><table data-save-sort="false" data-save-filter="false"> ...</table></p>
<p>Für ältere Versionen vom Tablesorter wie bei der aktuellen QFQ Version funktioniert dies nicht. Dort kann jedoch wie in der QFQ Dokumentation beschrieben eine eigene tablesorter-config definiert werden, in welchem der widget "saveSort" nicht enthalten ist.</p>
Die Frage stellt sich:
<ul>
<li>Soll Tablesorter aktualisiert werden auf eine neuere Version?</li>
<li>Braucht es eine neue HTML Klasse mit welcher dann im QFQ die tablesorter-config ohne "saveSort" gesetzt wird?</li>
</ul> QFQ - Feature #15130 (New): Stored Procedurehttps://project.math.uzh.ch/issues/151302022-12-08T11:24:08ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte eine MySQL Stored Procedure machen um Matrikelnummern zu formatieren:</p>
<p>Original: 12345678<br />Formatiert: 12-345-678</p>
<p>Name: <abbr title="">QMANR</abbr></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 #14495 (New): Text above FormElement inputhttps://project.math.uzh.ch/issues/144952022-07-10T08:56:40ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Mitunter wird gewuenscht das der Input Bereich eines ganzen FE die ganze Breite eines Formulares einnehmen soll. Das Label soll dann darueber stehen (oder darunter mit label2).</p>
<p>Option 1: es gibt ein neues Parameter Feld (z.B. label1).<br />Option 2: wenn col-md fuer label auf 0 gesetzt wird, wird der Content in dasa Input Elemente gerednert.</p>
<p>Die zweite Option waere sauber, ist aber nicht so flexibel wie die erste.</p>
<p>Am besten mit Benj besprechen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/6380/clipboard-202207101056-up6mw.png" alt="" /></p> QFQ - Feature #14227 (New): Selenium Konkurrenz: cypress.io, https://playwright.dev/https://project.math.uzh.ch/issues/142272022-05-23T10:00:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://go.cypress.io/get-started">https://go.cypress.io/get-started</a></li>
<li><a class="external" href="https://playwright.dev/">https://playwright.dev/</a></li>
<li>Anschauen ob es fuer uns interessant ist.</li>
<li>Ggfs. schauen wie aufwendig es waere den QFQ internen Selenium Support auf fuer Cypress anzubieten. Evtl. reicht es die Dokumentation anzupassen</li>
</ul> QFQ - Feature #13354 (New): Using Websocket in QFQhttps://project.math.uzh.ch/issues/133542021-11-10T14:47:23ZBenjamin Baerbenjamin.baer@math.uzh.ch
<ul>
<li>Usage for Chat / Forum like application</li>
<li>Editing records concurrently (like Google Docs)</li>
<li>Less page reloads / current information in reports / forms</li>
<li>Needs alternative to nchan, either php, python or javascript endpoint in qfq without need of webserver configuration (similar to APIs)</li>
</ul> QFQ - Feature #12679 (New): tablesorter: custom column widthhttps://project.math.uzh.ch/issues/126792021-06-16T09:10:25ZCarsten Rosecarsten.rose@math.uzh.ch
<p>hallo Marc, für medtool bräuchten wir die Möglichkeit das ein user die spalten breite verändern kann und diese nach Möglichkeit auch gespeichert wird.</p>
<p><a class="external" href="https://mottie.github.io/tablesorter/docs/example-widget-resizable.html">https://mottie.github.io/tablesorter/docs/example-widget-resizable.html</a></p>
<p>vielen dank</p> QFQ - Feature #12632 (New): TinyMCE: Prepare CSS classes for imageshttps://project.math.uzh.ch/issues/126322021-06-04T06:26:51ZPhilipp Gröbelbauer
<p>Ziel: es soll einfach sein (Mausklick) Images mit einer CSS Klasse spezielle Eigenschaften zuzuweisen. Z.B. einen Rahmen, damit sich das Bild vom Hintergrund abhebt oder mit einer Transparenz, um deutlich zu machen das bei einem Screenshot die Buttons keine aktiven Elemente sind sondern nur zur illustration dienen.</p>
<p>Scheinbar hat TinyMCE schon etwas vorbereitet:</p>
<ul>
<li><a class="external" href="https://stackoverflow.com/questions/16221704/tinymce-add-class-to-img-tag">https://stackoverflow.com/questions/16221704/tinymce-add-class-to-img-tag</a></li>
<li><a class="external" href="https://www.tiny.cloud/docs/plugins/opensource/image/">https://www.tiny.cloud/docs/plugins/opensource/image/</a></li>
<li><a class="external" href="https://www.tiny.cloud/docs-4x/plugins/image/#image_class_list">https://www.tiny.cloud/docs-4x/plugins/image/#image_class_list</a></li>
</ul> QFQ - Feature #12532 (New): SIP-Parameter bei Seitenaufruf in Browser-Console anzeigenhttps://project.math.uzh.ch/issues/125322021-05-11T15:50:24ZElias Villiger
<p>Idee: Wenn eine Seite mit SIP-Parameter aufgerufen wird und ein BE-User eingeloggt ist, werden in der Konsole automatisch die in der SIP mitgelieferten Parameter aufgelistet. Würde Debugging etwas vereinfachen.</p> QFQ - Feature #12413 (New): STORE_TYPO3: enhance for {{be_users.email:T}}, {{fe_users.email:T}}https://project.math.uzh.ch/issues/124132021-04-20T11:57:00ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Idee: Fuer den T3 Store koennte man alle Spalten durch die Notation {{<table>.???}} verfuegbar machen.</p> QFQ - Feature #12400 (New): Tutorial ist in QFQ Doku, Wird in der Suche gefunden, es gibt aber ke...https://project.math.uzh.ch/issues/124002021-04-17T14:45:24ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #12186 (New): TinyMCE Config für Objektehttps://project.math.uzh.ch/issues/121862021-03-20T07:50:24ZElias Villiger
<p>Es gibt einige TinyMCE Optionen, die nicht als String, sondern als Objekt angegeben werden. Mit QFQ werden jedoch alle Configs als String übergeben, wodurch diese Optionen nicht gesetzt werden können.</p>
<p>Beispiel: <a class="external" href="https://www.tiny.cloud/docs/configure/content-filtering/#exampleusinginvalid_stylesobject">https://www.tiny.cloud/docs/configure/content-filtering/#exampleusinginvalid_stylesobject</a></p>
<p>Z.B. im FE.parameter (deaktivieren von fixen Tabellengrössen):<br /><pre>
editor-invalid_styles: { 'td': 'width height', 'th': 'width height' }
</pre></p>
<strong>Mögliche Lösungen:</strong>
<ul>
<li>QFQ erkennt, wenn ein Parameter mit {} gewrapped ist und umgibt solche Parameter nicht mit Quotes.</li>
<li>Spezielle Notation in QFQ, um einen Parameter als Objekt zu markieren?</li>
</ul> QFQ - Feature #12135 (New): Subrecord: Notizhttps://project.math.uzh.ch/issues/121352021-03-12T16:10:44ZElias Villiger
<p>Aktuell wird bei einem subrecords mit FE.note = test die Notiz ("test") unterhalb der Subrecord-Tabelle angezeigt.</p>
<p>Würde es Sinn machen, die Notiz bei den Subrecords direkt im Anschluss an das Label zu verschieben? (siehe Screenshot)</p> QFQ - Feature #11955 (New): subrecord: new title option to set <th> attributes - e.g. to customiz...https://project.math.uzh.ch/issues/119552021-02-05T14:25:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Subrecord mit tablesorter sollten die Moeglichkeit haben das automatisch genierte '<th>' tag zu beeinflussen.</p>
<ul>
<li>Ziel ist `class="filter-select"` in das `<th ...>` zu bekommen. </li>
<li>Damit koennten dann beliebige Attribute gesetzt werden.</li>
</ul>
<p>Vorschlag fuer die Syntax:</p>
<pre>
sql1 = {{! SELECT id AS _id, name, type AS 'Type|_thAttribute:class="filter-select"' FROM Fruit
</pre>
<ul>
<li>Im Formeditor koennen dann die Spalten `Container,Mode,Class,Type` damit definiert werden.</li>
<li>Koennte zusammen mit <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Subrecord Tooltip pro Feld (New)" href="https://project.math.uzh.ch/issues/11775">#11775</a> gemacht werden.</li>
</ul> QFQ - Feature #11850 (New): Wizard Form: basierend auf einer Tabelle eine Form anlegen.https://project.math.uzh.ch/issues/118502021-01-14T09:13:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Man waehlt eine Tabelle</li>
<li>Alternative: Neues Form anlegen, Primary Tabelle waehlen, in dem Moment erscheit ein Link im Notizfeld 'Create Form', ein Klick darauf legt alle FE fuer die gewaehlte Tabelle in dem neuen Form an.</li>
</ul>
<ul>
<li>Fuer jede Spalte wird ein Formularelement angelegt.</li>
<li>Enums koennen als Radio/Checkbox angeleget werden.</li>
</ul>
<p>Hinweis:</p>
<ul>
<li>In 'genericReport' (<a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Generic Report Page (New)" href="https://project.math.uzh.ch/issues/15524">#15524</a>) koennen Formulare 'on the fly' gerendert werden: Diese soll neu im FormEditor angeboten werden, um ein komplettes Form mit einem Mausklick (a la template) zu erzeugen.</li>
</ul> QFQ - Feature #11775 (New): Subrecord Tooltip pro Feldhttps://project.math.uzh.ch/issues/117752020-12-18T13:59:16ZPhilipp Gröbelbauer
<p>Aktuell kann im Subrecord nur ein Tooltip pro Zeile gesetzt werden.</p>
<p>Man sollte auch einen Tooltip für ein Feld setzen können. Bei Hover über das Feld wird der Feld-Tooltip angezeigt, auch wenn ein rowTooltip gesetzt ist.</p> QFQ - Feature #11080 (New): Send MQTT messageshttps://project.math.uzh.ch/issues/110802020-08-29T17:49:19ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://github.com/php-mqtt/client">https://github.com/php-mqtt/client</a></li>
<li><a class="external" href="https://github.com/bluerhinos/phpMQTT">https://github.com/bluerhinos/phpMQTT</a></li>
</ul> QFQ - Feature #10345 (New): Templates - Patterns QFQ Stylehttps://project.math.uzh.ch/issues/103452020-04-02T21:10:52ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Ein "Pattern" im Design ist eine Vorgabe wie etwas aussehen soll.</p>
<p>Nehmen wir mal als Beispiel das teachingtool:</p>
<pre><div class="item">
<div class="item-background"></div>
<a class="item-image" style="background-image: url('typo3conf/ext/qfq/Classes/Api/download.php?s=5e8651ff802ce')" href="?id=tool&amp;toolId=118"></a>
<div class="item-description">Hinweise für die Übertragung einer geplanten Multiple-Choice-Prüfung in ein alternatives digitales Format</div>
<span class="item-meta">1.4.2020 17:02 Uhr</span><a class="item-title" href="?id=tool&amp;toolId=118">MC-Prüfungen (Remote)</a>
<div class="item-tags">
Tags:
<a class="label label-primary" href="index.php?id=alltools&amp;tagId=104">Leistungsnachweise</a>
<a class="label label-primary" href="index.php?id=alltools&amp;tagId=126">Digitale Lehre</a>
</div>
</div></pre>
<p>Nun brauchen wir diesen Satz an mehreren Orten vom Teachingtool - und wenn man etwas am Grunddesign aendert, muss man an jeden Ort denken in dem es vorkommt.</p>
<p>Mit dingen wie _link machen wir es uns relativ einfach diese Dinge zu erstellen - ist in diesem Sinne bereits ein Pattern.</p>
<p>Nun, wandeln wir obigen Satz mal in ein Pattern um:<br /> <pre><div class="item">
<div class="item-background"></div>
<a class="item-image" style="background-image: url('{{backgroundImage:R}}')" href="{{toolLink:R}}"></a>
<div class="item-description">{{itemDescription:R}}</div>
<span class="item-meta">{{dateTime:R0}}</span><a class="item-title" href="{{toolLink:R}}">{{itemTitle:RE}}</a>
<div class="item-tags">
Tags:
{{@tagLoopStart}}<a class="label label-primary" href="{{itemTagLink:R}}">{{itemTagName:R0}}</a>{{@tagLoopEnd}}
</div>
</div></pre></p>
<p>Und dazu dann der SQL Aufruf:<br /><pre>10 {
sql = SELECT "blabla" AS _itemTitle, ....
pattern = item
20 {
sql = SELECT CONCAT('index.php?id=tag&tagId=", tag.id) AS _itemTagLink, tag.name AS _itemTagName ...
loop = tagLoop
}
}</pre></p>
<p>Die Designs selbst koennten dabei aehnlich wie System Variabeln definiert werden und seitenweit abgelegt sein. Oder besser wie Form direkt ueber eine Art editor im frontend erstellt (bzw. gleich als git datei - um die eigenen HTML Editoren verwenden zu koennen)</p>
<p>Pattern wird natuerlich hier immer quasi erst "renr" ausgefuehrt, da einzelne Teile aus subqueries kommen koennten (und mit loops sogar muessen). Neben Store :R koennte man auch die anderen Stores abfragen, vorallem Y und U.</p> QFQ - Feature #10115 (New): TypeAhead: static listhttps://project.math.uzh.ch/issues/101152020-02-13T09:34:27ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Neues Attribute: data-typeahead-list.</p>
<p>Inhalt JSON kodiert, genau wie die bisherige AJAX Response.</p> QFQ - Feature #10114 (New): Symbol (Link): 'G:' (Glyphicon) replaced by 'i:' (icon)https://project.math.uzh.ch/issues/101142020-02-13T07:56:18ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Die Glyphicons sind in BS4 nicht mehr erhalten und sollen durch Font Awesome ersetzt werden.</li>
<li>Font Awesome hat viel mehr Symbole.</li>
<li>In der Uebergangszeit kann 'G:...' und 'i:...' parallel genutzt werden.</li>
<li>Die aktuellen Standard Symbole von Glyphicon durch FontAwesome ersetzen.</li>
<li>Zur Dokumentation soll eine Glyph/Icon Webseite (vermutlich QFQ based, dort sind beide Fonts enthalten) erstellt werden:
<ul>
<li>Welche Glyphicons werden mit welcher Bedeutung auf welcher Seite benutzt.</li>
<li>Anzeige das Font Awesome Pendants.</li>
<li>Ziel:
<ul>
<li>Einheitlichkeit von in QFQ verwendeten Symbolen.</li>
<li>Schnelleres finden von Symbolen (basierend auf frueherer Suche und Entscheidung fuer ein Symbol)</li>
</ul></li>
</ul></li>
</ul> QFQ - Feature #9707 (New): SIP security: encode pageId and check pageId on decodehttps://project.math.uzh.ch/issues/97072019-12-04T18:30:52ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Vermutlich kann mit wenig Aufwand die aktuelle T3 PageID in der SIP hinterlegt werden und diese beim dekodieren abgefragt werden.</p> QFQ - Feature #7850 (New): Upload records: non 'pathFileName' columnhttps://project.math.uzh.ch/issues/78502019-02-10T08:15:31ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei Forkred koennen wir fuer Uploads nur mit Aufwand eine Spalte mit dem Namen 'pathFileName' definieren. Besser waere wenn wir den bestehenden Spaltenamen 'note' verwenden koenenn.</p>
<p>Problem:</p>
<ul>
<li>Beim loeschen des Records via Formular muss geprueft werden ob eine Datei existiert die auch geloescht werden muss. Das muesste einfach sein, dann anhand des fe.type=upload weiss man welche Spalten einen pathFileName enthalten.</li>
<li>Bei Advanced Upload wird es schwieriger - evtl. ist ein neuer Bezeichner 'fileDelete=table|column|id' eine Alternative.</li>
<li>Bei '... AS _paged' muss ein Form angegeben werden das nach fe.type=upload elementen sucht. Diese Spalten werden dann auf Dateien geprueft.</li>
</ul> QFQ - Feature #7683 (New): Special column names in '{{ SELECT ... AS _link }}' should be detectedhttps://project.math.uzh.ch/issues/76832019-01-19T13:51:40ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Aktuell ist es nur moeglich '{{ ... AS _link}}' zu schreiben. Gut waeren auch alle anderen Links.</li>
<li>Liefert das Select mehr als ein Record und hat Special Columnnames, sollten diese alle einzeln gerendert werden - damit koennte man im Titel eines Forms mehrere Buttons erzeugen, z.B. beim IK Tool Links auf beliebig viele alte Antraege.</li>
</ul> QFQ - Feature #7521 (New): TemplateGroup: fe.type=uploadhttps://project.math.uzh.ch/issues/75212018-12-20T16:45:56ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aktuell werden in TemplateGroups keine File Upload Felder unterstuetzt.</p>
<p>Das sollte implementiert werden oder zumindest verhindert werden das man das im FormEditor konfiguieren kann.</p> QFQ - Feature #7519 (New): Select: Multihttps://project.math.uzh.ch/issues/75192018-12-20T16:30:01ZCarsten Rosecarsten.rose@math.uzh.ch
<p>BBe benoetigt eine Select Liste mit 'Multi select' Moeglichkeit</p>
<p>Bsp: Aus einer Liste mit 30 Elementen sollen 5 ausgewaehlt werden.</p> QFQ - Feature #7175 (New): Upload: md5 hash as filenamehttps://project.math.uzh.ch/issues/71752018-11-05T16:59:00ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Fuer w3/my wird eine Funktion benoetigt, das ein Student nicht ausversehen zweimal die gleiche Datei hochlaedt.</li>
<li>Theoretisch koennte es auch moeglich, das Dateien mit unterschiedlichem Dateinamen identisch sind.</li>
<li>Eine Loesung waere ueber den Dateiinhalt einen MD5 Hash zu erzeugen und die Datei dann mit dem hash als Namen zu speichern (fileReplace=no).</li>
<li>Vorschlag:
<ul>
<li>Neue Option im Upload FE: `fileNameMD5= filename+TimeStamp | content`</li>
</ul></li>
</ul>
<ul>
<li>Netter Nebeneffekt: aus dem Dateinamen kann nicht erkannt werden worum es im Inhalt geht.</li>
<li>Es muesste eine neue STORE_VARS variable definiert werden: 'md5'</li>
<li>In fe.paramter.fileDestination = fileadmin/uploads/{{md5:V}}</li>
</ul> QFQ - Feature #7119 (New): Upload: scaleDownWidth, scaleDownHeighthttps://project.math.uzh.ch/issues/71192018-10-28T09:51:51ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei Pixel Bildern die hochgeladen werden, waere es gut wenn man eine maximale Breite/Hoehe angeben kann.</p> QFQ - Feature #6855 (New): With {{feUser:U}}!={{feUser:T}}: Save / Delete: only possible with {{...https://project.math.uzh.ch/issues/68552018-09-27T20:55:38ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Sollte {{feUser:U}}!='' UND {{feUser:U}}!={{feUser:T}} sein:</p>
<p>- Dann darf speichern nur moeglich sein wenn {{feUserSave:U}}='yes' gesetzt ist.<br />- Dann darf loeschen nur moeglich sein wenn {{feUserDelete:U}}='yes' gesetzt ist.</p>
<p>Hintergrund: damit kann einfach sichergestellt werden das man Dozenten, die die Identiaet eines Users uebernehmen, keine Daten veraendern koennen.</p>
<p>Das Form sollte dann einen disabled 'save', 'delete' Button haben, mit einem Hinweis warum das nicht geht.</p> QFQ - Feature #5805 (New): TypeAHead SQL value instead of key storedhttps://project.math.uzh.ch/issues/58052018-04-10T13:16:59ZNicola Chiapolini
<p>Ich habe ein Textfeld mit folgenden Parametern:</p>
<p><code><br />typeAheadSql = SELECT shortname AS 'id', CONCAT(firstname, ' ', lastname, ', ', shortname) AS 'value' FROM _right_to_confer_phd WHERE lastname LIKE ? OR firstname LIKE ? or shortname LIKE ? ORDER BY lastname<br />typeAheadSqlPrefetch = SELECT CONCAT(firstname, ' ', lastname, ', ', shortname) AS value FROM _right_to_confer_phd WHERE shortname=?<br />typeAheadMinLength = 1<br />typeAheadLimit = 20<br />typeAheadPedantic = 0<br /></code></p>
<p>Die Suche funktioniert, aber beim Speichern wird der Value (firstname lastname, shortname) statt der id (shortname) gespeichert.<br />Problem scheint, dass JS im hidden Feld den Value statt der id einfügt...</p> QFQ - Feature #4050 (New): sql.log: 1) FormElement ID which causes a specific action , 2) Result ...https://project.math.uzh.ch/issues/40502017-07-05T06:36:04ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3727 (New): Security: Session Hijacking erschwerenhttps://project.math.uzh.ch/issues/37272017-05-14T13:43:45ZCarsten Rosecarsten.rose@math.uzh.ch
<ol>
<li>Problem 1: durch '[FE][lockIP] = 0' wird der Schutz gegen Session Hijacking fuer FE-User verringert.</li>
<li>Problem 2: in QFQ ist kein 'Session Hijacking' based on changed IP detection implementiert.</li>
</ol>
Beides koennte leicht implementiert werden:
<ul>
<li>Zu 1)
<ul>
<li>Entweder eine Extension schreiben die gewisse IPs immer zulaesst (z.B. die lokalen IPs) - es gab entsrpechende Extensions.</li>
<li>Oder in QFQ diesen Check implementieren (z.B. in dem sich QFQ beendet, sollte der aktuelle FE User einer FE Gruppe angehoeren)</li>
</ul></li>
</ul>
<ul>
<li>Zu 2) implementieren. Am besten aehnlich konfiguriert wird '[FE][lockIP]'</li>
</ul> QFQ - Feature #3432 (New): subrecord: dynamicUpdatehttps://project.math.uzh.ch/issues/34322017-03-26T12:59:55ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>subrecords reagieren zur Zeit gar nicht auf 'dynamicUpdates'</li>
<li>Als Update wird immer eine komplette HTML Tabelle kommen.</li>
<li>Neu sollte die Moeglichkeit bestehen, das Subrecords auch ohne primary record gerendert werden koennen.
<ul>
<li>Beispiel (QFQ / formWithFeType): Ein Formular mit einem TypeAheadSql auf FormElement.type um alle Formulare mit dem selektieren Type anzuzeigen (subrecord).</li>
</ul></li>
</ul>