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 #17989 (Closed): BE/FE OIDC as QFQ STORE_TYPO3 variableshttps://project.math.uzh.ch/issues/179892024-02-23T16:05:23ZCarsten Rosecarsten.rose@math.uzh.ch
<pre>
$GLOBALS["TSFE"]->fe_user->user["oidc"]
$GLOBALS["BE_USER"]->user["oidc"]
and has the following fields:
uid - the uid of the oidc user record, stored in tx_oidcclient_feuser or tx_oidcclient_beuser
provider - name of the provider configured in backend
provider_id - the uid of the provider
resource_id - the OIDC identifier for the resource (usually the sub claim)
resource - ...
EDU-ID / UZH
sub
email - current email address registered with Switch-Edu
name, given_name, family_name
EDU-ID:
email_verified - boolean true|false
----
oidc_fe_sub, fe_oidc_email, oidc_fe_email_verified
oidc_fe_sub
</pre> 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 #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 - Feature #16350 (Closed): a) FormSubmiLog: update recordid after insert. b) sql.log: referen...https://project.math.uzh.ch/issues/163502023-06-03T09:14:49ZCarsten Rosecarsten.rose@math.uzh.ch
<p>a) FormSubmiLog: update recordid after insert.</p>
<ul>
<li>Aktuell steht in der Spalte 'recordId' bei Insert immer ein 0.</li>
<li>Gut waere wenn dort die neu angelegt ID stehen wuerde.</li>
<li>ACHTUNG: Im Mode LOG_MODIFY sollten INSERT/UPDATE fuer die Tabelle FormSubmitLog NICHT geloggt werden.</li>
</ul>
<p>b) sql.log: reference to FormSubmitLog entry</p>
<ul>
<li>Im sql.log fuer jede Query die Referenz angegeben auf den FormSubmitLog Record.</li>
</ul>
<p>c) Do not log Dirty</p>
<ul>
<li>Neu: Im Mode LOG_MODIFY sollten INSERT/UPDATE/DELETE fuer die Tabelle Dirty NICHT geloggt werden.</li>
</ul>
<p>d) REMOTE_ADDRESS / HTTP_X_REAL_IP</p>
<ul>
<li>Die I-MATH Homepage ist hinter einem Proxy.</li>
<li>Der Wert von $_SERVER[REMOTE_ADDRESS] ist daher immer die IP des Proxy</li>
<li>Das ist schlecht fuer
<ul>
<li>FormSubmitLog, denn dort wird die REMOTE_ADDRESS geloggt.</li>
<li>Fuer die Dirty Table, denn auch dort wird die REMOTE_ADDRESS geloggt.</li>
<li>QFQ Applikationen, die gerne wuessten von wo der aktuelle Aufruf kam.</li>
</ul></li>
</ul>
<ul>
<li>Der verwendete NGINX Proxy setzt die Server Variable HTTP_X_REAL_IP.</li>
<li>Falls HTTP_X_REAL_IP gesetzt ist, soll diese den Wert von REMOTE_ADDRESS ueberschreiben</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 #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 #13945 (Closed): As _link: content before/after linkhttps://project.math.uzh.ch/issues/139452022-03-23T08:36:08ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Oft waere es hilfreich bei einem Link noch Inhalt (inkl. HTML) davor oder danach ausgeben zu koennen.</p>
<p>Beispiel:</p>
<ul>
<li>In einem Report mit `SELECT ..., 'p:...' AS '_link|nowrap' koennten so z.B. dann doch '<td>" usw. erzeugt werden.</li>
<li>Werden mehrere Buttons gerendert koennen Abstaende direkt in der Link Definition gesetzt werden - der Code wird uebersichtlicher.</li>
</ul>
<p>Frage:</p>
<ul>
<li>Bei `r:5`: soll dann der before/after Inhalte gerendert werden oder nicht? Vorschlag: Nein.</li>
<li>Sollen wir als Schluesselwoerter 'einstellige Token', z.B.: v (before), V (after), nehmen oder 'speaking words'?</li>
</ul> 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 #12541 (Closed): AS _page / _link: Optional without {{pageAlias:T}}https://project.math.uzh.ch/issues/125412021-05-12T10:12:31ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Vorschlag von Benj:<br /><pre>
SELECT ... CONCAT(p:&form=coolForm&r=1|E|s) AS _link ...
</pre></p>
<p>Ziel ist das kein <code>{{pageAlias:T}}</code> in <code>p:id={{pageAlias:T}}&form=...</code> mehr noetig ist.</p>
<p>Wenn nach <code>p:</code> direkt ein <code>&</code> folgt, sollte die Erkennung einfach sein.</p> QFQ - Feature #12452 (Closed): BaseURL: a) always with '/' at the end, b) Extension doc string br...https://project.math.uzh.ch/issues/124522021-04-26T10:30:04ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Die baseUrl muss zwingend immer ein '/' am Ende haben.</p>
<p>a) Wenn die Config gelesen wird, check ob das so ist. Falls nicht: '/' anhaengen und Config neu schreiben. Achtung: es koennen mehr als eien BaseURL angegeben sein - die sind comma getrennt.<br />b) Manual anpassen und Beschreibung in T3/Extension Config anpassen</p> 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 - Feature #11513 (Closed): add special column AS _scripthttps://project.math.uzh.ch/issues/115132020-11-12T22:13:51ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #11512 (Closed): add access to Var storehttps://project.math.uzh.ch/issues/115122020-11-12T22:05:06ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #10751 (Closed): accept image as source to concatenate PDFhttps://project.math.uzh.ch/issues/107512020-06-12T19:05:46ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aktuell koennen nur PDF und webseiten zu einem PDF zusammengehangt werden.<br />Fuer das RemoteExam Tool waere es gut wenn auch jpg/png/.. zu einem PDF gemerged werden koennten</p> QFQ - Feature #9782 (Closed): badge: colorizehttps://project.math.uzh.ch/issues/97822019-12-16T18:03:34ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://codepen.io/MarcosBL/pen/uomCD">https://codepen.io/MarcosBL/pen/uomCD</a></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 - Feature #9172 (Closed): AutoCron: new colum 'autoGenerated', 'xId'https://project.math.uzh.ch/issues/91722019-09-18T20:47:39ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>autoGenerated: wird gesetzt wenn der CronJob automatisch erstellt wurde. ME benoetigt das fuer CronJobs die einmalig, zu einem vorgegeben Zeitpunkt, ausgefuehrt werden sollen.</li>
<li>xId: aehnlich wie grId (gibt es schon) - kann frei gesetzt werden.</li>
</ul> QFQ - Feature #8856 (Closed): AutoCron: SQL logMode should be defined separatelyhttps://project.math.uzh.ch/issues/88562019-08-15T11:02:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Damit das SQL Logfile nicht unnoetig stark waechst waere es gut wenn man fuer AutoCron einen separaten SQL LogMode setzen koennte.</p>
<p>logModeAutoCron=</p> QFQ - Feature #8593 (Rejected): BE: Highlight QFQ Records mit integrierten T3 CodeMirrorhttps://project.math.uzh.ch/issues/85932019-06-20T15:07:16ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #7864 (Closed): 'FE.mode=required' & 'formModeGlobal=requiredOff' >> still indicate...https://project.math.uzh.ch/issues/78642019-02-12T21:35:20ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird ein Form aufgerufen mit dem SIP Parameter 'formModeGlobal=requiredOff' werden alle FE mit mode=required dargestellt mit mode=show (das required also temporaer deaktiviert).</li>
<li>Damit der User trotzdem weiss das die Felder 'required' sind, waere es gut das der Stern trotzdem dargestellt wird, auch wenn er in dem Moment keinen Einfluss hat.</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 #7106 (Some day maybe): Beispiel Nummerierung von Rows in Reporthttps://project.math.uzh.ch/issues/71062018-10-27T09:21:06ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In Report Nummerierung von Zeilen:</p>
<ul>
<li>via SQL Variable<br />∘ via Report: line.count</li>
</ul> 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 #6233 (Closed): Alert 'Form incomplete' - stays until click - auto disappear would ...https://project.math.uzh.ch/issues/62332018-06-14T11:48:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird ein Required Element nicht ausgefuellt und speichert der User, erscheint der Alert 'Form incomplete'.</li>
<li>Der Alert hat kein Timeout - es waere gut wenn er einen haette.</li>
</ul> QFQ - Feature #5978 (Closed): 1) New store: User, 2) new special column name: _setValueUserhttps://project.math.uzh.ch/issues/59782018-05-09T08:26:04ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es soll einen neuen Store geben: STORE_USER (U)</li>
<li>Dieser Store bleibt gefuellt, solange die PHP Session existiert.</li>
<li>Anfaenglich ist der Store leer.</li>
<li>Es soll eine neue 'specialColumnName' geben: _setValueUser</li>
<li>via SELECT '<key>:<value>' kann in diesen Store geschrieben werden. </li>
<li>via '{{<key>:U}}' kann aus diesem Store gelesen werden</li>
<li>Ob es sinnvoll ist, das die config.qfq.ini 'fillStoreSystemSql?' in diesen Store schreiben koennen muss noch angeschaut werden.</li>
<li>Sinn dieses Stores ist es, Variablen zur Laufzeit der Session, speichern und abrufen zu koennen.</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 - Feature #5891 (Rejected): After logout: destroy sip storehttps://project.math.uzh.ch/issues/58912018-05-01T12:59:44ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #5814 (Closed): AutoCron / https: website does not accept certificatehttps://project.math.uzh.ch/issues/58142018-04-12T06:35:21ZCarsten Rosecarsten.rose@math.uzh.ch
<p>AutoCron Jobs vom Typ 'website' haben Probleme mit dem Host 'localhost', falls dieser via direkt via `https` aufgerufen wird oder auf dem Webserver eine http > https Weiterleitung eingerichtet ist.</p> QFQ - 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 - Feature #4255 (Closed): Attachments fuer 'Email'https://project.math.uzh.ch/issues/42552017-08-19T09:02:40ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Via der Cron.sql1 (Mail query) koennten zwei neue Spaltenkeywords definiert werden, um Attachments anzuhaengen.</p>
<ul>
<li>'sendMailAttachFile' - Pfad zur Datei</li>
<li>'sendMailAttachWebsite' - webkit Aufruf, inkl. SIP</li>
</ul>
<p>Das PDF (sendMailAttachWebsite) wird temporaer erzeugt und nach dem Senden wieder geloescht.</p> QFQ - 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 - Feature #4196 (Closed): AJAX: 'element-update' does not work for 'value'https://project.math.uzh.ch/issues/41962017-08-12T13:19:00ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>skype call with RO to discuss.</li>
</ul> QFQ - Feature #4049 (Closed): '{{...}}' with default valuehttps://project.math.uzh.ch/issues/40492017-07-05T05:38:23ZCarsten Rosecarsten.rose@math.uzh.ch
<p>{{<name>:<store>:<sanatize>:<escape>:<default value>}}</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 #2948 (Closed): altsql, shead, stailhttps://project.math.uzh.ch/issues/29482016-12-08T12:52:09ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Entgegen dem urspruenglicen Entscheid, kein `altsql` zu implementieren soll es nun doch implementiert werden.</p>
<p>Grund: `altsql` loest 95% der Faelle sehr bequem (es muss 'nur' einmal kurz etwas ausgegen werden, falls kein Record selektiert wurde). Der urspruenglcihe Grund, kein sauberes Design zu haben (da altsql keine subqueries erlaubt) ist nicht so wichtig da die Bequemlichkeit von altsql hoeher wiegt.</p>
<ul>
<li>altsql</li>
<li>shead: wird immer ausgegeben. Vor 'head' (falls Records existtieren)</li>
<li>stail: wird immer ausgegeben. Nach 'tail' (falls Records existtieren)</li>
</ul> QFQ - Feature #2073 (Closed): 'action'-Element 'beforeDelete' kann verwendet werden um Delete For...https://project.math.uzh.ch/issues/20732016-06-02T08:22:22ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Der Event 'beforeDelete' koennte verwendet werden um abhaengige Records zu loeschen.</li>
<li>Wie der Name sagt wird er getriggert wenn der User beim aktuellen Record 'delete' drueckt.</li>
<li>Bei Report werden aktuell die URL Paramter 'table' und 'r' via SIP uebergeben. Neu koennte 'form' uebergeben werden und bei delete() werden nur '*delete' actions ausgfuehrt.</li>
<li>Rekursives loeschen ist nicht moeglich.</li>
<li>Die 'slaveId' hat beim loeschen keine Bedeutung.</li>
<li>Vermutlich moechte man nicht in jedem Form '*delete' Actinos einbauen. Formulare die Subrecords haben und nicht loeschen sollen: da sollte der Delete Button dann abgeschaltet werden.</li>
</ul> QFQ - Feature #2065 (Closed): addnupdate: Als 'action'-FormElement implementierthttps://project.math.uzh.ch/issues/20652016-05-31T21:15:23ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>addnupdate ist nun implementiert, heisst neu aber 'action'-FormElement.</li>
<li>Bitte Doku zu 'action'-FormElement anschauen und ganz am Ende des Usermanuals sind 2 Beispiele aufgefuehrt</li>
</ul> QFQ - Feature #1930 (Closed): (a) start > New Record > (b) modify > '+' & save > (c) modify > clo...https://project.math.uzh.ch/issues/19302016-04-29T12:50:54ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Von (a) einem Report oder Form aus koennen neue Records via einem Formular angelegt werden.</li>
<li>User gibt auf dem Form (b) einen neuen Record ein, klickt anschliessend '+' und 'save'</li>
<li>der User wiederholt den voherigen Schritt x mal.</li>
<li>Nach x-mal klickt er nicht mehr auf '+' sondern auf close.</li>
<li>Man wuerde nun erwarten man kommt zurueck auf (a). Der Client geht aber auf (x-1).</li>
</ul>
<p>Vorschlag: bei jedem '+' das auf einem '+' folgt, wird nichts an die Browser History angehaengt.</p> QFQ - Feature #1226 (Closed): 'report' einbauenhttps://project.math.uzh.ch/issues/12262015-10-15T12:30:43ZCarsten Rosecarsten.rose@math.uzh.ch