Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-03T22:20:55ZProject @ iMath
Redmine QFQ - Feature #18047 (New): (filepond) uploadType: a) report invalid value, b) change v1/v2 to 1/...https://project.math.uzh.ch/issues/180472024-03-03T22:20:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>FormElement.paramter.uploadType:</p>
<p>a) report invalid value</p>
<p>Wird ein ungueltiger Wert konfiguriert, sollte es eine Fehlermeldung geben - aktuell funktioniert das Upload Element dann nicht - aber es gibt keine Fehlermeldung.</p>
<p>b) change v1/v2 to 1/2</p>
<p>Ich wuerde vorschlagen wir nennen die Typen nicht v1/v2 sondern einfach 1/2. Grund: keep it simpel.</p>
<p>Sicher werden wir auch Beispiele finden an denen 'v..' angibt, aber meiner Wahrnehmung nach ist meistens kein 'v' angegeben:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9395/clipboard-202403032310-ira1s.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9394/clipboard-202403032309-befkx.png" alt="" /></p>
<p>c) Im CodeMirror fehlen scheinbar ein paar Keywords fileSplit, tableNameSplit, uploadType - koenntest du die mit aufnehmen? Elias sollte eine Doku geschrieben haben wo das zu machen ist.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9400/clipboard-202403032320-priqn.png" alt="" /></p> QFQ - Feature #18037 (New): Auto BPMN Update: QFQ/rclonehttps://project.math.uzh.ch/issues/180372024-03-02T09:37:05ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ziel: BPMN Workflows verbinden mit Ticketsystem, ist ein Ticket / Milestones abgearbeitet wird das im BPMN visuell markiert.</p>
<p>Moegliches Konzept:</p>
<ul>
<li>BPMN ist im Switchdrive</li>
<li>QFQ bekommt via 'rclone' Nextclod, OwnCloud, Dropbox, OneDrive, GDrive Support und kann so auf Dateien zugreifen.</li>
<li>In QFQ ist die PathFilename-Referenz auf das BPMN hinterlegt</li>
<li>Es gibt eine API (Redmine, QFQ Notez) um den Status von Tickets abzufragen.</li>
<li>QFQ ruft (on request, periodically) ein Skript auf welches:
<ul>
<li>Fuer jedes im BPMN referenzierte Ticket den Status via API abruft.</li>
<li>Den Status visuell im BPMN eintraegt (z.B. Hintergrundfarbe des Elements setzen)</li>
<li>Dadurch dass das File via rclone im Sync gehalten wird, haben sofort alle User das aktuelle File.</li>
</ul></li>
</ul> QFQ - 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 - Bug #17656 (New): Browser: regexp Pattern Match broken/error inhttps://project.math.uzh.ch/issues/176562024-01-19T13:30:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ 23.6.4</p>
<p>Auf der Forkred Seite im Passwort Reset Form gibt es in der Console die folgende Fehlermeldung</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9048/clipboard-202401191424-dqr2g.png" alt="" /></p>
<p>Die Fehler Meldung zu der Regexp habe ich bei QFQ in JS Konsole schon häufiger gesehen - wird vermutlich allgmeines Problem sein, nicht formspezifisch.</p> QFQ - Feature #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 #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 - Bug #17361 (New): Annotate FE doesnt initialize/showhttps://project.math.uzh.ch/issues/173612023-11-27T16:59:16ZEnis Nuredini
<p>The annotate form-element doesn't get initialized. Defined formId variable which is used for initialization is undefined. Somehow the form id handlings have been changed.</p>
<p>Could be an issue for other elements too.</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 - Feature #16297 (New): AutoCron: no SIP https://project.math.uzh.ch/issues/162972023-05-26T08:59:22ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Im AutoCron , wenn z.B. via Report eine Mail versendet wird, funktionieren SIP Parameter nicht (es gibt keine QFQ Session die weitergereicht wird)</li>
<li>Eine Loesung waere das ein AutoCron einen API Key bekommt, mit dem er aufgerufen wird, und dieser User (=API-Key) hat dann entsprechende Berechtigungen. </li>
<li>Der API Key wird in der QFQ Config zentral hinterlegt.</li>
<li>Der API Key ist im OS Crontab eingetragen und wird beim Aufruf mit uebergeben.</li>
</ul> QFQ - Feature #15969 (New): Auto Update Stored Procedurehttps://project.math.uzh.ch/issues/159692023-04-06T07:58:57ZEnis Nuredini
<p>Wird eine QFQ Instanz als ganzes kopiert und ein SQL Dump von einer DB zur anderen importiert, so fehlen die Stored Procedures. Bisher wurden diese manuell übertragen.</p>
<p>1) Neu braucht es in der QFQ Extension Config unter dem Tab Debug bei database.update eine dritte Option 'autoDb'. Es gibt schon 'auto' und 'always'. 'auto' würde alles triggern beim DB Update inkl. einem Check ob Stored Procedures existieren und diese erstellen falls nicht (sollte bestehender Code existieren). 'autoDb' führt alles aus wie bisher mit Ausnahme der Stored Procedures. Bei 'always' wird sowieso alles ausgeführt und das bei jedem Load wie gewohnt. Permissions werden vorausgesetzt damit Typo3 die Stored Procedures erstellen kann.</p>
<p>2) Was noch ein Thema war: Triggern der Create Stored Procedures falls QFQ Fehlermeldung erscheint dass eine aufzurufende SQL Function nicht gefunden wurde (Idee wurde wieder verworfen.). Danach ein Check ob das Create Stored Procedures erfolgreich ausgeführt wurde.</p> QFQ - Feature #15413 (New): '... AS _monitor': line wrap, search, select text, syntax highlighthttps://project.math.uzh.ch/issues/154132023-01-22T10:02:48ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Via '... AS _monitor' (<a class="external" href="http://docs.qfq.io/en/master/Report.html#monitor">http://docs.qfq.io/en/master/Report.html#monitor</a>) koennen Logfiles in Echtzeit angezeigt werden.<br />Die aktuelle Loesung ist sehr rudimentaer.</p>
<ul>
<li>Es wird einmal pro Sekunde gepollt (neue Vesion wird vom Server geholt).</li>
<li>Dabei geht der aktuell selektierte Text verloren. Ggfs. von 'pull' auf 'push' umstellen (websocket).</li>
<li>Andere Moeglichkeit: Button Refresh / Autorefresch (1s, 10s,..)</li>
<li>Syntax Highlight waere gut (CodeMirror im Readonly mode? Oder etwas anderes)</li>
<li>Line Wrap, so dass man nicht nach rechts scrollen muss. Falls Code Mirror verwendet wird</li>
</ul>
<p>Gitlab hat eine sehr gute/funktionale Implementierung:<br /><img src="https://project.math.uzh.ch/attachments/download/7186/clipboard-202301221102-wqoqc.png" alt="" /></p> QFQ - Feature #15362 (Some day maybe): Add button to text inputs in Form (Element) Editor to swit...https://project.math.uzh.ch/issues/153622023-01-12T11:48:36ZJan Haller
<p>Neben bestimmten Textinputs (z.B. Title) im Form (Element) Editor soll ein Button eingebaut werden, der das Umschalten des entprechenden Inputfelds von type=input zu type=editor (und zurück) ermöglicht. Für SQL Abfragen steht dann die entsprechende Syntax zur Verfügung.</p> QFQ - Bug #14077 (New): As _link: Attribute 'class' missing by r:1 and r:3 - but should sethttps://project.math.uzh.ch/issues/140772022-04-15T08:11:37ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In #13350 beshreibt Benj das 'class' scheinbar nicht gesetzt wird bei r:1 und r:3.</li>
<li>Frage: in welchem Render Mode sollen Attribute gesetzt werden? <a class="external" href="http://docs.qfq.io/en/master/Report.html#render-mode">http://docs.qfq.io/en/master/Report.html#render-mode</a></li>
<li>Ganz sicher immer wenn 'text' ausgegeben werden soll.</li>
<li>Vorschlag: 1,2,3,4,6</li>
</ul> QFQ - Bug #13647 (New): Autofocus funktioniert nicht auf Chromehttps://project.math.uzh.ch/issues/136472022-01-11T16:14:52ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Beispiel:</p>
<p>Forked: <a class="external" href="https://webwork16.math.uzh.ch/forkred/">https://webwork16.math.uzh.ch/forkred/</a> > Gesuch UZH Candoc / Postdoc Grant > Neues Gesuch - wenn das Form aufgerufen wird springt der vert scrollbalken gleich nach unten.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/5764/forkred.png" alt="" /></p>
<p>Das tritt auf Chrome und Chromebasierten Browser auf.</p>
<p>Firefox hingegen scrollt korrekt zum gesetzten Autofokus:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/5762/betterScroll.gif" alt="" /></p>
<p>autofocus="1" ist im Element gesetzt.</p> QFQ - Feature #13608 (Some day maybe): Automatic Browser Language Redirecthttps://project.math.uzh.ch/issues/136082022-01-04T11:09:34ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In forked #13439 gibt es ein Problem wenn die Sprache gewechswelt wird, wenn man bereits in einem Formular ist. Das Problem wuerde sich vermutlich entschaerfen, wenn von Anfang an die richtige Sprache selektiert ist.</li>
<li>Laut Recherche von BB gibt es
<ul>
<li>Keinen T3 nativen Support.</li>
<li>min. zwei einigermassen aktuelle Extensions (<a class="external" href="https://extensions.typo3.org/extension/site_language_redirection/">https://extensions.typo3.org/extension/site_language_redirection/</a>, ??) - koennen aber beide kein T3 V11.</li>
</ul></li>
</ul>
<p>Nach Diskussion BB/CR scheint folgendes sinnvoll zu sein:</p>
<ul>
<li>Die oben genannte Extension kann als Vorlage dienen.</li>
<li>Es wird in QFQ implementiert - damit vermeiden wir eine weitere Extension.</li>
<li>Das Feature kann via QFQ Config an/ausgeschaltet werden.</li>
</ul>
<p>Page Aufruf:</p>
<ul>
<li>Ist ein Language Cookie gesetzt und unterscheidet sich dieses von der aktuellen Seite: Redirect</li>
<li>Ist kein Language Cookie gesetzt:
<ul>
<li>Wird anhand der Browser Sprache entschieden ob ein Redirect (vermutlich via JS) auf die gleiche Seite mit der Zielsprache gemacht wird.</li>
<li>Das Language Cookie wird auf die automatisch selektierte Sprache gesetzt (DE_auto, EN_auto).</li>
</ul></li>
</ul>
<ul>
<li>Existiert ein FE User (eingeloggt) - Check ob Language Cookie '.._auto' gesetzt ist.
<ul>
<li>Ja: Gibt es eine Language in T3.fe_user?
<ul>
<li>Ja: das Cookie auf "DE" , "EN" setzen (ohne auto). Wenn noetig ein Redirect machen.</li>
<li>Nein: Sprache in t3.fe_user auf den aktuellen Wert setzen.</li>
</ul></li>
</ul>
<ul>
<li>Nein: Sprache in t3.fe_user auf den aktuellen Wert setzen.</li>
</ul></li>
</ul>
<p>Page Wechsel:</p>
<ul>
<li>Wird die Sprache gewechselt: <strong>keine Idee wie wir jetzt das Language Cookie setzen, damit beim PageLoad der Redirect nicht zugschlaegt</strong>. Vermutlich JS das auf dem Language Select Link klebt.</li>
<li>FE_User: neue Sprache speichern. Klappt hoffentlich durch den Mechanismus von oben.</li>
</ul> QFQ - Feature #12544 (ToDo): a) '... AS _link' new also as '... AS _type', b) sortierung via 'di...https://project.math.uzh.ch/issues/125442021-05-13T10:20:38ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="a-AS-_link-new-also-as-AS-_format"></a>
<h2 >(a) '... AS _link' new also as '... AS _format'<a href="#a-AS-_link-new-also-as-AS-_format" class="wiki-anchor">¶</a></h2>
<ul>
<li>'_f' steht fuer 'format' - damit sollte auch klar sein das Links und andere Funktionen moeglich sind.</li>
<li>Es gibt einige '_link' Funktionen, die keinen Link erzeugen - da passt dann die Bezeichnung nicht.</li>
<li>Auch moeglich Variablen: <code>{{ ... AS _f}}</code></li>
</ul>
<p>Feature wurde von PG,BB angenommen.</p>
<a name="b-Sortierung-via-display-none"></a>
<h2 >(b) Sortierung via 'display: none;'<a href="#b-Sortierung-via-display-none" class="wiki-anchor">¶</a></h2>
<ul>
<li>Mitunter sollen in Tabellen Spalten sortiert werdens. Wenn nur Grafiken in <img> Tags angezeigt werden, funktioniert die Sortierung nicht.</li>
<li>Loesung: neu kann ein 'hidden' Text angegeben werden. Dieser Text wird dann an dan Anfang gestellt: </li>
<li>Token: 'h' - h:hidden-text (sum sortieren)<br /><pre>
<span style="display: none;">some hidden text</span>
<span class='hidden'>some hidden text</span>
</pre></li>
</ul>
<a name="c-_format-benoetigt-nicht-zwingend-uUpmzd"></a>
<h2 >(c) '_format' benoetigt nicht zwingend u/U/p/m/z/d<a href="#c-_format-benoetigt-nicht-zwingend-uUpmzd" class="wiki-anchor">¶</a></h2>
<ul>
<li>Das neue `... AS _format` benoetigt keinen Link (u/U/p/m/z/d)</li>
<li>Damit kann viel Funktionalitaet an anderen Stellen genutzt werden.</li>
</ul> QFQ - Feature #12412 (New): Action/Escape qualifier 'e' (empty), '0': if given, an empty string (...https://project.math.uzh.ch/issues/124122021-04-20T11:55:30ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Damit Verhalten sich leere Strings oder '0' als wenn sie in dem Store nicht gefunden wurden.</p>
<p>Bsp.: `{{fe_users.email:T::e:<a class="email" href="mailto:support@math.uzh.ch">support@math.uzh.ch</a>}}` liefert die Emailadresse des gerade eingeloggten T3 FE Users. Falls keine Emailadrese hinterlegt ist, greift der Default</p> QFQ - Feature #12146 (New): Autocron Job: Anzeigen wann der naechste Job ausgefuehrt wird, resp d...https://project.math.uzh.ch/issues/121462021-03-15T14:23:17ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #12119 (New): AS paged: error message missing if there ist no 'r' argument.https://project.math.uzh.ch/issues/121192021-03-09T15:33:37ZCarsten Rosecarsten.rose@math.uzh.ch
<pre>
good: CONCAT('U:form=notiz_template&r=', n.id) AS _paged
bad: CONCAT('U:form=notiz_template&rXYZ=', n.id) AS _paged
</pre><br />evtl. sollte auch r=0 als fehler gemelder werden QFQ - Feature #12038 (New): a) STORE_VAR: filenameOnlyStripUniq, b) SP: QSTRIPUNIQ()https://project.math.uzh.ch/issues/120382021-02-17T22:48:09ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Regelmaessig sollen Dateien hochgeladen werden, bei denen es keinen Konflikt geben darf wenn bereits eine Datei mit dem Namen existiert.</p>
<p>Ein gute Loesung ist die ID des aktuellen Records an den Anfang der Datei zu setzen. Bsp.: aus `test.pdf` wird dann `1234.test.pdf`</p>
<p>Via SQL ist es aufwendig den String zu parsen:</p>
<ul>
<li>Cut Path, so dass nur noch der Filename uebrig ist.</li>
<li>Dann z.B. vom Anfang bis zum ersten Punkt alles abschneiden.</li>
</ul>
<p>Wunsch:</p>
<p>a) Im STORE_VAR eine neue Variable `filenameOnlyStripUniq` einfuehren die geanu das macht.<br />b) Eine neue Stored Procedure <abbr title="">QSTRIPUNIQ</abbr>() anlegen die genau das macht (kann in Report verwednet werden)</p> QFQ - Bug #11715 (New): acceptZeroAsRequired and requiredOffButMark do not coincidehttps://project.math.uzh.ch/issues/117152020-12-08T11:13:30ZSimon Grüning
<p>A 0 is marked as accepted by requiredOffButMark in the front-end, but not by acceptZeroAsRequired=0 in the allRequiredGiven:V variable.</p>
<p>To reproduce, a required enum list:</p>
<pre>
emptyItemAtStart
itemList='0:0,1:1,2:2,3:3,4:4,5:5,6:6'
acceptZeroAsRequired=0
</pre> QFQ - Feature #11535 (New): Ability to create SQL columns in frontend QFQ formshttps://project.math.uzh.ch/issues/115352020-11-17T11:11:11ZSimon Grüning
<p>It would be very great for developers working or maintaining QFQ projects in the front-end, if they could create not only form elements but also the respective table columns / data structures going along with them. Unsure where/how to integrate this button/feature/ability.</p> QFQ - Bug #11522 (New): Aus/Einblenden von Reiternhttps://project.math.uzh.ch/issues/115222020-11-13T13:58:13ZChristoph Fuchs
<p>Ist beim Laden eines Formulars ein Reiter ausgeblendet und wird dieser abhängig von einem Feld dynamisch eingeblendet, so sind alle Felder dieses Reiters unsichtbar.</p>
<p>QFQ Version 20.4.0</p> QFQ - Feature #10979 (New): Ajax Calls an API - dataReporthttps://project.math.uzh.ch/issues/109792020-08-07T10:25:35ZPhilipp Gröbelbauer
<p>- QFQ Page Content per AJAX ausführen<br />- Über API, sodass kein Performance Verlust durch Typo3<br />- return Resultat des QFQ Page Contents</p>
<p>(HTML Snippet zum Testen hängt an diesem Ticket)</p> QFQ - Bug #10890 (New): AutoCron hangshttps://project.math.uzh.ch/issues/108902020-07-20T11:56:03ZChristoph Fuchs
<p>Wenn in der Tabelle "Cron" ein Wert in >0 "inProgess" definiert ist, werden für deisen Record keine Mails mehr versandt.<br />Selbst ein Neustart ändert nichts daran. Der Tooltip "inProgress > 10mins" sollte vielleicht mit einem Vermerk versehen werden.</p>
<p>Noch schöner wäre, wenn "inProgress > 10mins" automatich einen neuen Button zu Anzeige brächte, mit dem "inProgess" auf 0 zurückgesetzt werden könnte.<br />Viele Grüsse<br />c</p> QFQ - Feature #9346 (Priorize): beforeSave: check if an upload is givenhttps://project.math.uzh.ch/issues/93462019-10-11T12:47:46ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Stefan hat unter <a class="external" href="http://webwork16.math.uzh.ch/lszgs/dev/?id=referee&refId=21&auth=UieAURb6RJo3QviqDkS5e6We82QoRZx4">http://webwork16.math.uzh.ch/lszgs/dev/?id=referee&refId=21&auth=UieAURb6RJo3QviqDkS5e6We82QoRZx4</a><br />ein Formular, bei dem entweder ein 'textarea' Feld und/oder ein Upload gegeben sein muss.</p>
<p>Via 'Required' haben wir keine Moeglichkeit das abzubilden.</p>
<p>Eine Alternative ist, eine 'beforeSave' Action zu machen. Scheinbar gibt es keine Moeglichkeit bei beforeSave (vor dem eigentlichen Upload) abzufragen, ob bei dem Upload etwas angegeben ist.</p>
<p>Es waere gut das FE Upload Feld mit '0/1' oder 'empty/given' verfuegbar zu machen - so dass es in beforeSave via FORM_STORE abgefragt werden kann.</p> QFQ - Bug #9281 (Feedback): Allow STRICT_TRANS_TABLEShttps://project.math.uzh.ch/issues/92812019-10-02T09:08:00ZNicola Chiapolini
<p>MariaDB > 10.2.4 (Debian Buster comes with 10.3) has STRICT_TRANS_TABLES set by default. (see <a class="external" href="https://mariadb.com/kb/en/library/documentation/mariadb-administration/variables-and-modes/sql-mode/">https://mariadb.com/kb/en/library/documentation/mariadb-administration/variables-and-modes/sql-mode/</a>)<br />This breaks QFQ as no defaults are set for text columns in Form or FormElement.</p>
<p>Setting a default for these tables does work but has the ugly side-effect that on load the QFQ-Form Editor shows two single quotes as default value for all text fields...<br />A better solution is to allow all non-mandatory fields without default values to be NULL.</p>
<pre>
ALTER TABLE `Form`
CHANGE `noteInternal` `noteInternal` text COLLATE 'utf8_general_ci' NULL AFTER `title`,
CHANGE `multiSql` `multiSql` text COLLATE 'utf8_general_ci' NULL AFTER `multiMode`,
CHANGE `parameter` `parameter` text COLLATE 'utf8_general_ci' NULL AFTER `bsNoteColumns`,
CHANGE `parameterLanguageA` `parameterLanguageA` text COLLATE 'utf8_general_ci' NULL AFTER `parameter`,
CHANGE `parameterLanguageB` `parameterLanguageB` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageA`,
CHANGE `parameterLanguageC` `parameterLanguageC` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageB`,
CHANGE `parameterLanguageD` `parameterLanguageD` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageC`;
ALTER TABLE `FormElement`
CHANGE `modeSql` `modeSql` text COLLATE 'utf8_general_ci' NULL AFTER `mode`,
CHANGE `note` `note` text COLLATE 'utf8_general_ci' NULL AFTER `rowLabelInputNote`,
CHANGE `adminNote` `adminNote` text COLLATE 'utf8_general_ci' NULL AFTER `note`,
CHANGE `value` `value` text COLLATE 'utf8_general_ci' NULL AFTER `placeholder`,
CHANGE `sql1` `sql1` text COLLATE 'utf8_general_ci' NULL AFTER `value`,
CHANGE `parameter` `parameter` text COLLATE 'utf8_general_ci' NULL AFTER `sql1`,
CHANGE `parameterLanguageA` `parameterLanguageA` text COLLATE 'utf8_general_ci' NULL AFTER `parameter`,
CHANGE `parameterLanguageB` `parameterLanguageB` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageA`,
CHANGE `parameterLanguageC` `parameterLanguageC` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageB`,
CHANGE `parameterLanguageD` `parameterLanguageD` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageC`,
CHANGE `clientJs` `clientJs` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageD`;
</code></pre>
<p>an alternative workaround is to deactivate STRICT_TRANS_TABLES by setting<br /><code>[init] => SET names utf8; SET sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";</code> <br />in the extension config of qfq (this might also be needed for existing installations as upgrading large databases where no care was used on allowing NULL or setting defaults is a pain)</p> QFQ - Bug #9275 (New): autcron: t3 page, which takes to long to respond, is not reported properlyhttps://project.math.uzh.ch/issues/92752019-10-01T18:09:29ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Auf w16 werden ueber ein AutoCron Skript gitlab Berechtigungen erzeugt. Dieses Script benoetigt mehrere Minuten. Scheinbar hat der CLI PHP Interpreter einen Timeout, der das Skript hart abbrechen laesst.<br />Der System Cron sendet dann eine Mail:<br /><pre>
FROM: root@math.uzh.ch
TO: www-data@math.uzh.ch
SUBJECT: Cron <www-data@w16> /usr/bin/php /var/www/html/my/typo3conf/ext/qfq/Classes/External/autocron.php
DATE: 01.10.2019 - 13:03:01
PHP Warning: file_get_contents(https://w16.math.uzh.ch/my?id=updateGitlabPrivileges&token=secret....&nId=all): failed to open stream: HTTP request failed! in /var/www/html/my/typo3conf/ext/qfq/Classes/Core/Helper/DownloadPage.php on line 73
</pre></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 - Bug #8431 (New): autocron.php with wrong pathhttps://project.math.uzh.ch/issues/84312019-05-30T08:29:40ZElias Villiger
<p>Elias hat qfq auf einem Mietserver laufen und kann cron Jobs nur via Webinterface konfigurieren. Die T3 Instanz ist im Verzeichnis '~/httpdocs'. Der Autocron Job wird mit '~/httpdocs/typo3conf/ext/qfq/external/autocron.php' gestartet. QFQ scheint fuer das logging den argv<sup><a href="#fn0">0</a></sup> von links an zu parsen. Das geht in diesem Fall schief. Folgende Tests waeren gut:</p>
<p>autocron.php/ save/ load: Aufruf mit</p>
<ul>
<li>absoluten Pfad</li>
<li>Pfad relativ zu 'Document Root'</li>
<li>Pfad relativ zu irgendwas</li>
</ul>
<p>Es waere gut eine zentrale Stelle zu haben:</p>
<ul>
<li>Die das CWD aut <T3 Installation Dir> setzt.</li>
<li>Den absoluten Pfad in config[] eintraegt.</li>
</ul> QFQ - Feature #7452 (Some day maybe): automate deployment new QFQ versionhttps://project.math.uzh.ch/issues/74522018-12-11T08:38:37ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) Es waere gut wenn wir die Erstellung der Releasenotes mehr automatisieren koennten.</p>
<p>Aktuelles Procedere:</p>
<ul>
<li>Alle Commit Messages seit der letzen Version zusammen stellen.</li>
<li>Messages die keinen Nutzen fuer die Releasenotes haben loeschen.</li>
<li>Messages aufteilen nach Feature und Bug.</li>
</ul>
<p>Idee:</p>
<ul>
<li>Commit Messages die in die Releasenotes sollen 'taggen'.</li>
<li>Solche getaggten Messages, gefiltert nach Bug und Feature, in die Releasenotes kopieren.</li>
</ul>
<p>b) Besteht die Moeglichkeit die neue Version voll automatisch zu erstellen?</p> QFQ - Feature #7342 (New): add content = hide_thishttps://project.math.uzh.ch/issues/73422018-11-23T10:19:19ZNicola Chiapolini
<p>When using a super-/subquery combination as an if-then construct, I want to hide the content of the super-query but show the result of sub-queries. At the moment this is not possible with the <code>content</code>-keyword. It would be nice to have the option to not hide the subqueries.</p>
<p>Personlly I would think it most logical to make this the default for <code>hide</code> and use e.g. <code>hide_all</code> to include subqueries. For backwards compatibility however, the new behaviour should probably get the new keyword. I suggest something like <code>hide_this</code></p> QFQ - Bug #7101 (Some day maybe): 'form' in SIP and 'report' - breakshttps://project.math.uzh.ch/issues/71012018-10-27T08:47:43ZCarsten Rosecarsten.rose@math.uzh.ch
<p>falls in der SIP ein form ist und um qfq record ein form defineirt ist (wrid dynamisch berechnet) kommt qfq beim defintinve laden des form durcheinander.</p> QFQ - Feature #6299 (Some day maybe): Attack detection: log table with invalid SIP access https://project.math.uzh.ch/issues/62992018-06-23T16:32:22ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Die Abwehrmassnahmen fuer SIP brute force sollen wie folgt verbessert werden.</p>
<ul>
<li>Es gibt eine Tabelle die alle mis-hit auf SIP oder Persistent SIP notiert:
<ul>
<li>IP</li>
<li>PHP Session</li>
<li>feUser</li>
<li>UserAgent</li>
<li>pageId</li>
<li>Zeitpunkt</li>
</ul></li>
</ul>
<ul>
<li>QFQ prueft bei jedem Start ob ein Full Stop (Attack detected) noetig ist:
<ul>
<li>Hits pro Sekunde, pro Minute, pro 5 Minuten, pro Stunde, pro Tag, pro Monat</li>
<li>Count pro IP, count pro PHP Session, count pro feUser</li>
<li>Fuer jede 'Hit/pro Zeit'-Klasse gibt es einen Schwellwert.</li>
<li>Ist der Schwellwert ueberschritten, wird die IP gesperrt, resp. die PHP Session gesperrt. </li>
<li>Eintraege aelter als einen Monat werden geloescht.</li>
</ul></li>
</ul>
<ul>
<li>Es wird nicht erwartet das viele Daten in der Tabelle stehen.</li>
</ul> QFQ - Feature #5942 (Priorize): 'L' and 'type': append to links, generate via '_link' by using 'u...https://project.math.uzh.ch/issues/59422018-05-07T10:58:06ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Falls ein 'L' oder 'type' als GET auf der aktuellen Seite gesetzt ist, sollten diese Werte in allen 'internen' QFQ Links gesetzt werden.</li>
<li>bei 'U:' passiert das vermutlich auch (verifizieren)</li>
<li>beu 'u:' ist das vermutlich bisher ausgeschaltet.</li>
</ul>
Idee
<ul>
<li>Ist ein 'u' Parameter angegeben: check ob vor dem '?' nichts steht (oder index.php) - dann ist es eine lokale URL und die Parameter sollten ebenfalls angehaengt werden.</li>
</ul>
<p>Siehe auch: Support::appendTypo3ParamToUrl()</p> QFQ - Bug #5768 (Some day maybe): '{{pageLanguage:T}}' missing if QFQ is called via api https://project.math.uzh.ch/issues/57682018-03-30T08:08:18ZCarsten Rosecarsten.rose@math.uzh.ch
<p>save() und download() haben keine Zugriff auf {{pageLanguage}}.</p>
<p>Das sollte gesetzt werden wie feUser und feGroup.</p> QFQ - Bug #5576 (New): Using MySQL 'DROP' requires privilege - wich is not really necessary.https://project.math.uzh.ch/issues/55762018-02-28T17:40:58ZNicola Chiapolini
<p>Auf unserer neuen Installation hat das Anlegen der System-Tabellen (wieder) nicht geklappt. Dieses Mal habe ich das Problem identifiziert.</p>
<p>Die Datei <code>qfq/sql/formEditor.sql</code> enthält ein nicht auskommentierten DROP-Befehl. Entweder muss der auskommentiert werden (patch im Anhang) oder dann muss in der Doku DROP als nötiges Recht für den QFQ-DB-User erwähnt werden.</p> QFQ - Feature #5548 (Some day maybe): 801 Textfiles/Scriptfiles als Thumbnailhttps://project.math.uzh.ch/issues/55482018-02-26T17:10:35ZBenjamin Baerbenjamin.baer@math.uzh.chQFQ - Feature #5131 (New): Activate Spin Gear ('wait/busy' indicator) via LINK attributehttps://project.math.uzh.ch/issues/51312017-12-16T20:41:30ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Pages die z.B. Mails mit Attachments versenden benoetigen teilweise etliche Sekunden.</p>
<p>Es waere gut wenn man in der Zeit das 'spinning gear' wie beim 'download' Link anzeigen koennte.</p> QFQ - Bug #4651 (Some day maybe): "Loading document" Modal wird angezeigt bei uzhcd type=2 Ansichthttps://project.math.uzh.ch/issues/46512017-09-28T08:39:55ZElias Villiger
Beim UZH CD gibt es verschiedene Ansichten:
<ul>
<li>&type=1 -> eine Print-Ansicht</li>
<li>&type=2 -> eine text-only Ansicht (evtl. auch als Print-Ansicht gedacht)</li>
</ul>
<p>Wenn eine Seite mit type=2 aufgerufen wird und die entsprechende Seite einen qfq PDF-Link hat, wird zuletzt auf der Seite das qfq-File-Download-Modal angezeigt:<br /><img src="https://project.math.uzh.ch/attachments/download/928/FileModal.PNG" alt="" /></p> QFQ - Bug #4441 (Some day maybe): $_SERVER Vars sollten nur aus dem Store genommen werden - Code ...https://project.math.uzh.ch/issues/44412017-09-09T14:34:35ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #4250 (New): AutoCron in QFQ via PHPhttps://project.math.uzh.ch/issues/42502017-08-17T20:23:25ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Die AutoCron Features in PHP implementieren, ohne das eine T3 Seite benoetigt wird.</p>
Verbesserungen:
<ul>
<li>Massiv einfacheres Setup.</li>
<li>Evtl. koennte das PHP Skript durch Typo3 Cron aufgerufen werden - dann entfaellt sogar System Console Eintrag.</li>
<li>Aus dem PHP Skript koennen auch Mails versendet werden (kein dediziertes Skript noetig) - damit koennen einfach grId und xId gesetzt werden.</li>
<li>DB Credentials sind in PHP bekannt (zentrale Konfiguration).</li>
</ul>
Neu:
<ul>
<li>AutoCron Formular wird by default mit ausgeliefert.</li>
<li>In T3 Doku ist ein Beispiel QFQ Report fuer CrontEdit aufgefuehrt.</li>
<li>Es gibt Cron.grIdTyp, die im Beispiel aber nicht benutzt wird um Croneintraege zu klassifizieren.</li>
</ul> QFQ - Bug #4092 (Some day maybe): 1) Logging verbessern wann welches FE warum ausgefuehrt wird, 2...https://project.math.uzh.ch/issues/40922017-07-11T05:28:22ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Logging-verbessern-wann-welches-FE-warum-ausgefuehrt-wird"></a>
<h1 >Logging verbessern wann welches FE warum ausgefuehrt wird<a href="#Logging-verbessern-wann-welches-FE-warum-ausgefuehrt-wird" class="wiki-anchor">¶</a></h1>
<ul>
<li>In SQL Log muss stehen welches Statement durch welches FE getriggert wird.</li>
<li>Evtl. eigenes Log fuer das abarbeiten der FE. Warum wird wann was wo gemacht. Evtl. reicht es immer nur ein Form Save zu loggen. Bsp.: aus allen FE wird das primary save gebaut. Anschliessend werden die before save und dann die after save gebaut.</li>
</ul>
<p>h2 Documentation: Best Practice Template Group</p>
<p>Schritt fuer Schritt erklaeren was beim speichen von template groups passiert und wie man das schrittweise debuggen kann. welcher logeintrag ist wo zu erwarten?</p> QFQ - Feature #3947 (Some day maybe): Attack detectect: logout current userhttps://project.math.uzh.ch/issues/39472017-06-21T14:04:45ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3942 (Some day maybe): Action Elemente: neu generierte IDs via FE weitergebenhttps://project.math.uzh.ch/issues/39422017-06-21T10:00:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Im Formular 'importWebpassUser' (LI) werden beim Import aus dem UZH Webpass LDAP via action/afterSave 3 Records angelegt: person, account, adresse.</li>
<li>Um die neu erzeugten IDs von einem Action Element zum naechsten zu transportieren waere es gut wenn Element 2 auf die ID von Element 1 zugreifen koennte und Element 3 auf die IDs von 2 und 1.</li>
<li>SlaveIds konnten z.B. im Store Extra abgelegt werden, mit dem Feldenamen des FE.</li>
<li>Alternativ sind sie im STORE_FORM, ebenfalls unter dem Feldnamen.</li>
</ul> QFQ - Feature #3848 (Some day maybe): Antivirus check fuer Upload files in qfq?https://project.math.uzh.ch/issues/38482017-06-02T19:36:15ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3666 (Some day maybe): a) Performance Messung: mysql_real_escape_string() im Vergl...https://project.math.uzh.ch/issues/36662017-05-02T10:56:09ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Check wie gross der Performance Unterschied zwischen mysql_real_escape_string() im Vergleich zu str_replace() ist.</li>
<li>Was passiert wenn mysql_real_escape_string() mehrfach mit dem gleichen String aufgerufen wird? Bleiben bereits escape ticks so wie sie sind (nur einmal escaped)?</li>
</ul>
<ul>
<li>Falls Performance gut ist und doppeltes escapen kein Problem ist, kann mysql_real_escape_string() der neue default werden.</li>
</ul> QFQ - Feature #3567 (Some day maybe): 'Save', 'Close', 'New' als FormElementhttps://project.math.uzh.ch/issues/35672017-04-13T10:47:15ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3291 (Some day maybe): AutoCron websiteTokenhttps://project.math.uzh.ch/issues/32912017-03-07T12:43:07ZElias Villiger
<p>Es könnte einen neuen AutoCron-Typ geben (genannt z.B. websiteToken oder websiteFeedback oder ...)</p>
<p>Dieser erwartet von der aufgerufenen Seite bestimmte Tokens wie</p>
<blockquote>
<p>#DB Connected (erste Zeile)<br />#DB OK (letzte Zeile)</p>
</blockquote>
<p>Wenn diese Tokens nicht vorhanden sind, liefert der AutoCron Job einen Fehler-Status zurück (statt OK).</p> QFQ - Feature #3267 (Some day maybe): 2 Forms auf einer Seite: real + Read onlyhttps://project.math.uzh.ch/issues/32672017-03-03T12:05:46ZElias Villiger
<p>- oben ist eine Form das bearbeitet / gespeichert werden soll.<br />- Unten ist ein Form das nur Informationen enthaelt.</p>
<p>Das untere Form benoetigt eine andere recordId als das obere (oben=Reviewm, unten=Application).<br />Wird im QFQ element r={{appId:S}} verwendet, ercheint trotzdem die record ID von oben.</p>
<p>Die Seite wird via QFQ report aufgerufen - d.h. es ist ein links via _Pagee auf die Seite erzeugt worden.</p>
<p>Vermutlich muss die Prioriater veraendert werden, das im zweiten QFQ Reord auf der Seite wirklich recordID im QFQ Record genommen wird und nciht aus dem SIP store.</p>