Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892023-01-12T11:48:36ZProject @ iMath
Redmine 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 - 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 #12611 (Some day maybe): Refactoring: Bootstrap with Lazy Loadinghttps://project.math.uzh.ch/issues/126112021-05-31T12:43:19ZMarc Egger
<p>statische klassen und lazy loading fuer DB und store</p>
<ul>
<li>DB:
<ul>
<li>alle DBs werden aus config geladen</li>
<li>verbidnungen werden erst geoeffenet wenn noetig</li>
</ul>
</li>
<li>Store:
<ul>
<li>jeder store wird separat lazy geloadet</li>
<li>S T Y stores muessen initialisiert werden</li>
</ul></li>
</ul> QFQ - Feature #12337 (Some day maybe): Database.php: better cachinghttps://project.math.uzh.ch/issues/123372021-04-07T16:40:55ZMarc Egger
<p>Currently only the mysqli handle is cached but the Database object is recreated often.</p>
<p>Possible changes</p>
<ul>
<li>switch to singleton pattern for Database class (call Database::getInstance() instead of new Database)</li>
<li>make Database a static class (?)</li>
</ul>
<p>Both changes need a lot of refactoring.</p> QFQ - Feature #11322 (Some day maybe): Form Element JSON - (multiline parameter field)https://project.math.uzh.ch/issues/113222020-10-15T08:41:02ZMarc Egger
<p>Problem: SQL Queries im Paramter Feld von Form und FormElement muessen auf einer Zeile sein. Newline wird nicht unterstuetzt.</p>
<p>Moegliche Loesung: Einfuehren von neuem FormElment typ 'JSON' und diesen benutzen fuer das Parameter Feld</p>
<p>FormElement-JSON:</p>
<ul>
<li>Parameter werden neu als JSON key>value gespeichert</li>
<li>das JSON FormElement erhaelt das JSON aus der Datenbank als Value und erstellt pro key>value paar eine eigene textbox</li>
<li>zusatzlich wird immer eine leere textbox angezeigt, in die man ein neues key>value paar eintragen kann. Wird etwas in diese box geschrieben, erscheint automatisch eine weitere leere textbox</li>
<li>beim abspeichern des forms werden die Inhalte der dynamischen textboxen als JSON encodiert und als Value von dem FormElement-JSON geschickt.</li>
</ul> QFQ - Feature #11217 (Some day maybe): Extend Script Functionalityhttps://project.math.uzh.ch/issues/112172020-09-29T11:19:30ZMarc Egger
<p><strong>Script Keyword:</strong></p>
<p><strong>10.script =</strong> path/to/script.php|call:my_function|arg:myVar=hello&myVar2=world</p>
<ul>
<li>Zusaetzlich zur special column "_script" kann man direkt das keyword "script" im report benutzen</li>
<li>Reihenfolge der keyword Ausfuehrung:
<ul>
<li>10.sql existiert:
<ul>
<li>10.script wird nach 10.sql und vor 10.tail und 10.twig ausgefuehrt</li>
<li>Falls in 10.sql kein record selektiert wird, wird 10.script auch nicht ausgefuerht!</li>
</ul>
</li>
<li>10.sql existiert nicht:
<ul>
<li>10.script wird immer ausgefuehrt</li>
</ul></li>
</ul></li>
</ul>
<p><strong>Neue QFQ Funktionalitaeten im script:</strong></p>
<ul>
<li>SQL statement feuern: <strong>$qfq::sql('SELECT "Hello World"');</strong>
<ul>
<li>QFQ Variabeln {{myVar:R}} werden ersetzt vor dem abfeueren.
<ul>
<li>dies kann mit einem zusaetlichen flag ausgeschaltet werden</li>
</ul>
</li>
</ul>
</li>
<li>Twig template rendern: <strong>$qfq::twig('...')</strong></li>
</ul> QFQ - Feature #10745 (Some day maybe): Tablesorter Excel Exporthttps://project.math.uzh.ch/issues/107452020-06-11T15:33:14ZMarc Egger
<p>Export tablesorter content to CSV or JSON file.<br />Either everything or only the filtered view.</p>
<p>Plugin: <a class="external" href="https://mottie.github.io/tablesorter/docs/example-widget-output.html">https://mottie.github.io/tablesorter/docs/example-widget-output.html</a></p> QFQ - Feature #10738 (Some day maybe): CORS headers for external API requestshttps://project.math.uzh.ch/issues/107382020-06-10T12:00:34ZMarc Egger
<p>Optionally allow setting the CORS headers inside a QFQ API Form such that the API may be called from a website hosted under a different domain.</p>
<p>Working example: <a class="external" href="https://stackoverflow.com/a/9866124">https://stackoverflow.com/a/9866124</a><br /><pre><code class="php syntaxhl"><span class="cd">/**
* An example CORS-compliant method. It will allow any GET, POST, or OPTIONS requests from any
* origin.
*
* In a production environment, you probably want to be more restrictive, but this gives you
* the general idea of what is involved. For the nitty-gritty low-down, read:
*
* - https://developer.mozilla.org/en/HTTP_access_control
* - http://www.w3.org/TR/cors/
*
*/</span>
<span class="k">function</span> <span class="n">cors</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Allow from any origin</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_ORIGIN'</span><span class="p">]))</span> <span class="p">{</span>
<span class="c1">// Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one</span>
<span class="c1">// you want to allow, and if so:</span>
<span class="nb">header</span><span class="p">(</span><span class="s2">"Access-Control-Allow-Origin: </span><span class="si">{</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_ORIGIN'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">);</span>
<span class="nb">header</span><span class="p">(</span><span class="s1">'Access-Control-Allow-Credentials: true'</span><span class="p">);</span>
<span class="nb">header</span><span class="p">(</span><span class="s1">'Access-Control-Max-Age: 86400'</span><span class="p">);</span> <span class="c1">// cache for 1 day</span>
<span class="p">}</span>
<span class="c1">// Access-Control headers are received during OPTIONS requests</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'REQUEST_METHOD'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'OPTIONS'</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_ACCESS_CONTROL_REQUEST_METHOD'</span><span class="p">]))</span>
<span class="c1">// may also be using PUT, PATCH, HEAD etc</span>
<span class="nb">header</span><span class="p">(</span><span class="s2">"Access-Control-Allow-Methods: GET, POST, OPTIONS"</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_ACCESS_CONTROL_REQUEST_HEADERS'</span><span class="p">]))</span>
<span class="nb">header</span><span class="p">(</span><span class="s2">"Access-Control-Allow-Headers: </span><span class="si">{</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_ACCESS_CONTROL_REQUEST_HEADERS'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">);</span>
<span class="k">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">echo</span> <span class="s2">"You have CORS!"</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></p> QFQ - Feature #10716 (Some day maybe): Business Logic mit Externen Skriptenhttps://project.math.uzh.ch/issues/107162020-06-04T17:52:19ZMarc Egger
<p>Auführen von separaten Skripten und Programmen via _exec ist Fehleranfällig. Hauptsächlich weil das Character Encoding und das Sanitizen Probleme machen kann.</p>
<p>Schön wäre eine Möglichkeit, um Programme oder Funktionen in Skripten dirkekt auszuführen, ohne die Argumente Sanitizen oder encoden zu muessen.</p>
<p>Eine Möglichkeit wäre auch, dass man PHP als Skriptsprache für kompliziertere business-logic einbinden könnte.</p>
<p>Dieses feature ist nach verwandt mit QFQ Funktionen und Conditions und würde diese allenfalls ersetzen. >>> Brainstormen!</p>
<p>Varianten</p>
<ul>
<li>PHP als Skriptsprache einbinden</li>
<li>Javascript mit node.js oder deno.land ausführen</li>
</ul> QFQ - Feature #10116 (Some day maybe): TypeAhead: Tag - show inside 'input' elementhttps://project.math.uzh.ch/issues/101162020-02-13T09:36:36ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #10095 (Some day maybe): Generic Gitlab Integration into QFQhttps://project.math.uzh.ch/issues/100952020-02-11T14:03:13ZMarc Egger
<p>Abstract the Gitlab API functions used in the Python script for LESU to create a generic gitlab integraion into QFQ.</p>
<p>It might make sense to call the python script with <strong>passthru()</strong> instead of exec() since this would allow us to pass binary data from the repository directly. (such as images stored in the repo). However, there is no use case for this yet.</p> QFQ - Feature #9130 (Some day maybe): tablesorter: Automatic Row numbering / Zeilenummerhttps://project.math.uzh.ch/issues/91302019-09-15T08:31:36ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wunsch: in einer Tabelle soll eine Zeilennummer angezeigt werden. Klickt der User auf eine Spalte um die Tabelle nach der spalte zu sortieren, soll die Spalte mit den Zeilennummern nicht veraendert werden (1,2,3,4,5,6...)</p>
<p><a class="external" href="https://github.com/Mottie/tablesorter/wiki">https://github.com/Mottie/tablesorter/wiki</a></p>
<p><a class="external" href="https://stackoverflow.com/questions/18763027/jquery-tablesorter-index-column-insert">https://stackoverflow.com/questions/18763027/jquery-tablesorter-index-column-insert</a></p>
<p>Wie koennen wir das integrieren (HTML/JS das von QFQ ausgeliefert)?</p> QFQ - Feature #8586 (Some day maybe): QFQ: Enhance Error message for 'record not found'https://project.math.uzh.ch/issues/85862019-06-19T13:47:56ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird mit `r=123` ein record angegeben der nicht existiert, lautet die Meldung 'got 0 records, expect 1 record'.<br />Die Meldung ist schlecht.<br />Besser waere "Record {table}.id=123 not found (doesn't exist)"</p> QFQ - Feature #8520 (Some day maybe): Bring QFQ to Composerhttps://project.math.uzh.ch/issues/85202019-06-12T08:01:36ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #8101 (Some day maybe): Password hash: support further hashing methodshttps://project.math.uzh.ch/issues/81012019-03-20T14:22:37ZCarsten Rosecarsten.rose@math.uzh.ch
<p>IM Extensionmanager > Salted passwords kann man andere Methoden einstellen, die QFQ aktuell nicht kann / nicht automatisch beruecksichtigt.</p>
<ul>
<li>Bitte abklaeren ob wir das implementieren koennen.</li>
<li>Wenn moeglich / verhaeltnissmaessig: bitte implementieren.</li>
</ul>
<p>Vielen Dank</p>
<p>CU<br />Carsten</p> QFQ - Feature #7921 (Some day maybe): Rest API Export: URL kuerzer machenhttps://project.math.uzh.ch/issues/79212019-02-20T15:49:11ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Kann man die REST URL kuerzer machen durch einen Symlink oder eine Apache Config 'Alias'?</li>
</ul> QFQ - Feature #7732 (Some day maybe): Javascript: Lazy Loading der add on libshttps://project.math.uzh.ch/issues/77322019-01-24T20:31:34ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn die JS Libs unten am Ende der Seite angegeben wuerden und nur 'on demand' instantiert werden wuerden.</p>
<p>Es geht min. um:</p>
<ul>
<li>TinyMCE</li>
<li>CodemMirror (kommt nocht)</li>
<li>tablesorter</li>
<li>...</li>
</ul> QFQ - Feature #7453 (Some day maybe): import / export forms QFQhttps://project.math.uzh.ch/issues/74532018-12-11T09:04:57ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn es eine Import / Export Moeglichkeit fuer Formulare gaebe. </li>
<li>Das koennte einfach via mysqldump (SQL Textdump) erfolgen.</li>
<li>Der Mechanismus koennte dann auch genutzt werden um den Formulareditor (und andere System Formulare) in das QFQ formEditor.sql File zu bringen (resp. dann gibt es pro System Formular vermutlich eine Datei).</li>
<li>In QFQ gibt es ein Formular, in dem man den exportierten SQL Textdump einfuegen kann und das dann den Import ausfuehrt.</li>
<li>Problem: wie werden die Record ID Kollisionen geloest?</li>
</ul>
<p>Idee:</p>
<ul>
<li>Auf jedem Form gibt es einen Export Button der via `mysqldump .. --where ...` fuer Form und FormElement den SQL Textdump erstellt. Der kann als Text angezeigt werden.</li>
<li>Import:
<ul>
<li>Es wird eine temporaere DB angelegt.</li>
<li>In diese DB wird der SQL Textdump eingelesen, via 'mysql < ...'</li>
<li>In PHP wird fuer jeden Record in tempDb.Form der Import durchgefuehrt:
<ul>
<li>INSERT INTO Form (name, ... ) SELECT tempDb.Form.name, tempDb.Form.... - die 'id' wird nicht angegeben und deshalb eine neue gesetzt.</li>
<li>Mit Last Insert Id wird die 'newFormId' ermittelt.</li>
<li>INSERT INTO FormElement ( formId, name, ... ) SELECT $newFormId, tempDb.FormElement.name, tempDb.FormElement .... FROM tempDb.FormElement.formId=$newFormId</li>
</ul></li>
</ul>
<ul>
<li>Temporaere DB loeschen.</li>
</ul></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 #7278 (Some day maybe): Form: Wert vordefinieren der immer gesetzt wirdhttps://project.math.uzh.ch/issues/72782018-11-16T11:55:41ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Tabelle mit Vor/Nachteilen</li>
</ul>
<p>Varianten</p>
<ul>
<li>via SIP uebergeben, in Report: sql = SELECT '{{pageAlias}}&form=person&r={{pId}}&column=123|s=1' AS _pagee</li>
<li>fe.type=extra. fe.value=123</li>
<li>fe.type=afterSave, `fe.paramter.sqlAfter = UPDATE 'table' SET 'column'=123 WEHRE id={{id:R}}`</li>
<li>fe.type=text, fe.mode='hidden'</li>
</ul>
<p>Vorschlag:</p>
<ul>
<li>form.parameter.setColumn = <column1>:<value1>,<column2>:<value2>,...</li>
<li>Beim speichern wird geprueft ob es die gleiche Spalte in 'setColumn' und als FE gibt - dann einen Fehler melden.</li>
<li><value..> koennen auch Variablen sein.</li>
<li>Die columns werden genau so gehandhabt, als waeren sie FE mit einem fixen Wert.</li>
<li>Check das datetime und timestamp korrekt gehandelt werden.</li>
</ul> QFQ - Feature #7229 (Some day maybe): New FormElement.type: Buttonhttps://project.math.uzh.ch/issues/72292018-11-12T11:46:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Erscheint im Form als normales Formularelement</li>
<li>Kann oben in der Buttonleiste erscheinen</li>
<li>Button kann ein normaler Link sein</li>
<li>Button kann eine Download sein</li>
<li>Button kann speichern, loeschen, schliessen</li>
<li>Button kann ein Custom redirect haben</li>
<li>Button kann optional den 'wollen sie speichern'-Dialog unterdruecken.</li>
<li>Es muss sichergestellt sein das 'Dirty' Records abgeraeumt werden.</li>
<li>Es sollte moeglich sein mehrere Buttons in einer Gruppe darzustellen. Neu koennten die bestehenden Gruppen ein Label bekommen, so dass man neue Buttons zu den Systemgruppen hinzufuegen kann.</li>
</ul> QFQ - Feature #6972 (Some day maybe): Fabric Clipboard / cross browser tabhttps://project.math.uzh.ch/issues/69722018-10-12T07:50:25ZCarsten Rosecarsten.rose@math.uzh.ch
<p>SW fragt ob es moeglich waere diverse Fabric-Elemente zu selektieren, in die Zwischenablage zu kopieren und bei einem anderen Fabric Fenster (anderer Student) wieder einzufuegen.</p> QFQ - Feature #6970 (Some day maybe): tablesorter: default fuer 'sortReset' aendern von 'Ctrl' zu...https://project.math.uzh.ch/issues/69702018-10-11T15:11:05ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Auf Mac Keyboards entspricht 'ctrl-click' einem 'right mouse click'. Damit koennen sie die Sort nicht loeschen.</li>
<li>Bitte test ob: 'sortResetKey: altKey' auf dem Mac das Problem loest.</li>
<li>Bitte den Default in QFQ anpassen</li>
</ul> QFQ - Feature #5892 (Some day maybe): QFQ should use T3 API to manipulate FE GROUP membershiphttps://project.math.uzh.ch/issues/58922018-05-01T13:20:51ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ sollte eine Moeglichkeit anbieten, die FE Groups in T3 zu einem User setzen zu koennen.</p>
<ul>
<li>Das setzen passiert beim aktuell eingeloggten User. </li>
<li>Die Aenderungen sollten sofort sichtbar sein.</li>
<li>Ein oder mehrere Gruppen setzen.</li>
<li>Falls Gruppen nicht angegeben sind, diese Membership loeschen.</li>
<li>Ein Best Practice sollte in der LDAP Extension zu finden sein.</li>
<li>Column '_feGroup'</li>
<li>Modifier:
<ul>
<li>add:<feGroup[,feGroup]> - add feGroup membership for current user.</li>
<li>delete:<feGroup[,feGroup]> - delete feGroup membership for current user.</li>
<li>set:<feGroup[,feGroup]> - set (remove non given) feGroup</li>
<li><string>_:<feGroup[,feGroup]> - set (remove non given) <string>_* classes. E.g. 'auto_:auto_admin,auto_reviewer' will remove all non given 'auto_*' groups and set the given one.</li>
<li>user:<feUser> - optional. If not given take the current user. If there is no user, do nothing.</li>
</ul></li>
</ul> QFQ - Feature #5851 (Some day maybe): Queue System implementieren: MQTT, RabbitMQhttps://project.math.uzh.ch/issues/58512018-04-21T12:47:24ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Parallel zu AutoCron soll ein Queue System fuer QFQ zur Verfuegung stehen.</p>
Ziele:
<ul>
<li>Vereinzelung von eingehenden Tickets. Bsp.: mehrere Tickets treffen quasi gleichzeitig ein, es soll aber immer nur eine Anfrage zu einer Zeit bearbeitet werden.</li>
<li>Monitoring welche Tickets bereits abgearbeitet sind. Neu erstellte Tickets bekommen eine ID, die angefragt werden kann.</li>
<li>Zugriffs Beschraenkung.</li>
<li>Tickets einstellen, von ausserhalb QFQ.</li>
</ul>
Anwendung:
<ul>
<li>Ein OS Cronjob erstellt ein Ticket, das PDFs auf Vorrat gerendert werden sollen. </li>
<li>Der Apache haelt keine Verbindung zum Client offen. </li>
<li>Ggfs. wird QFQ ohne Apache via Commandline aufgerufen. </li>
<li>Es muesste eine tt_content ID uebergeben werden.</li>
</ul> QFQ - Feature #5850 (Some day maybe): Deployment: In QFQ Doc best practice fuer zeitgemaesses Dep...https://project.math.uzh.ch/issues/58502018-04-21T11:37:16ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://docs.typo3.org/typo3cms/TellMeSomethingAbout/Topics/Deployment.html">https://docs.typo3.org/typo3cms/TellMeSomethingAbout/Topics/Deployment.html</a><br /><a class="external" href="https://docs.typo3.org/typo3cms/TellMeSomethingAbout/Topics/Docker.html">https://docs.typo3.org/typo3cms/TellMeSomethingAbout/Topics/Docker.html</a><br /><a class="external" href="https://blog.chriwo.de/tagged/PhpStorm">https://blog.chriwo.de/tagged/PhpStorm</a> (PhpStorm / composer)<br /><a class="external" href="https://github.com/martin-helmich/docker-typo3">https://github.com/martin-helmich/docker-typo3</a></p> QFQ - Feature #5665 (Some day maybe): Versuch das '{{!' nicht mehr noetig ist.https://project.math.uzh.ch/issues/56652018-03-14T09:23:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Idee: aus dem Kontext heraus sollte es moeglich sein zu erkennen, ob '{{!' noetig ist. Damit sollte es moeglich sein auf das '!' zu verzichten.</p>
<p>Ggfs. wird '!' qfq <strong>intern</strong> nachwievor genutzt und durch QFQ in den SQL String eingesetzt.</p>
<p>Optional koennte '!' erlaubt bleiben.</p>
<p>Das Feature waere gut um Neueinsteiger die Arbeit zu erleichtern.</p>
<p>Liste erstellen wo ! alles verwendet wird.</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 #5480 (Some day maybe): QFQ: Dokumentation mit Screenshots versehenhttps://project.math.uzh.ch/issues/54802018-02-21T08:17:39ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>UI Elemente</li>
<li>Forms
<ul>
<li>Container
<ul>
<li>Plain</li>
<li>Pills: a) alle Pills sichtbar, b) einige Pills im Dropdown</li>
<li>Fieldset</li>
</ul>
</li>
<li>Templategroups</li>
<li>Radio (Legacy, BS)</li>
<li>Checkbox (Legacy, BS)</li>
</ul>
</li>
<li>Diverse Links mit Render Mode</li>
<li>Diverse Buttons: Glyph, Farben, Enabled, Disabled, Tooltip</li>
</ul> QFQ - Feature #5455 (Some day maybe): Mail Redirects grId abhaengighttps://project.math.uzh.ch/issues/54552018-02-16T14:07:00ZElias Villiger
<p>Beim Entwickeln von Email-abhaengigen Loesungen waere es zum Testen bequem, wenn man die Mails des sich in Entwicklung befindenden Bereichs abfangen und weiterleiten kann (aehnlich wie REDIRECT_ALL_MAIL_TO).<br />Dazu koennte man zusaetzlich zum Feld REDIRECT_ALL_MAIL_TO (evtl umbenennen in REDIRECT_MAIL_TO) ein Feld REDIRECT_MAIL_GRIDS einfuehren, bei dem die grIds der weiterzuleitenden Mails angegeben werden. Wenn REDIRECT_MAIL_GRIDS auf 0 steht, werden alle Mails abgefangen.</p>
<p><a class="issue tracker-2 status-5 priority-2 priority-default closed" title="Feature: config.qfq.ini via ExtManager (Closed)" href="https://project.math.uzh.ch/issues/5175">#5175</a> abwarten.</p> QFQ - Feature #5452 (Some day maybe): Thumbnails from PDF: bad qualityhttps://project.math.uzh.ch/issues/54522018-02-16T09:34:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird ein Thumbnail von einem PDF gerendert (nur bei der ersten Seite) passiert das aktuell via GraphicsMagic.</p>
<p>Bei kleinen Thumbnails ist das kein Problem. Bei groesseren Bilder (width>500) sieht es nicht mehr gut aus.</p>
<p>Wird inkscape verwendet, sieht es anders schlecht aus: by default hat inkscape Probleme mit den LaTeX Schriften beim Import von PDF. Inkscape kann zusaetzlich importieren 'with poppler' - dann sieht es gut auch. Auf die schnelle haben BB,CR aber keine Commandline Option gefunden, das auch bei 'without-gui' zu aktivieren.</p> QFQ - Feature #5428 (Some day maybe): secure thumbnail: late render on access.https://project.math.uzh.ch/issues/54282018-02-12T15:02:48ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Neu soll das rendern der secure Thumbnails nicht mehr in QFQ Report getriggert werden, sondern wie bei PDF concat erst beim download der Datei. Der Vorteil ist, das die Files erst dann ausgeliefert werden wenn sie fertig sind.</p> QFQ - Feature #5342 (Some day maybe): _link - with HTML Attributeshttps://project.math.uzh.ch/issues/53422018-02-02T17:50:28ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>data Attributes need to be set sometime.</p>
<p>Carsten proposed a general attribute option:</p>
<pre>
'p:...|c:someClass|a:data-target="www.google.ch" data-payload="stuff"' AS _link
</pre> QFQ - Feature #4719 (Some day maybe): Custom Message in Client in case of 'Browser tab close, mod...https://project.math.uzh.ch/issues/47192017-10-05T18:53:50ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #4650 (Some day maybe): Convert html to doc/rtfhttps://project.math.uzh.ch/issues/46502017-09-28T08:30:33ZElias Villiger
<p>Die Möglichkeit, analog zu wkhtmltopdf ein .doc oder .rtf zu erstellen.</p>
<p>Mögliche Option: <a class="external" href="https://pandoc.org/">https://pandoc.org/</a> (kann so ziemlich alle Formate)</p>
<p><del>(Wird gebraucht für lean-gate/Generate Cover)</del></p> QFQ - Feature #4640 (Some day maybe): Rename System Formshttps://project.math.uzh.ch/issues/46402017-09-25T14:22:33ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Form, FormElement, Cron ... umbenennen zu _Form, _FormElement, _Cron</p> QFQ - Feature #4627 (Some day maybe): dbupdate: all tables - check 'create', 'modified' if it is ...https://project.math.uzh.ch/issues/46272017-09-24T07:52:22ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #4626 (Some day maybe): Mobile View: 'classBody=qfq-form-right' makes no sensehttps://project.math.uzh.ch/issues/46262017-09-24T07:47:41ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn die Labelausrichtung zwischen Mobile und Desktop unterschiedlich sein koennte. Bei Desktop macht es durchaus Sinn das die Label right-aligned sind - im Mobile View sieht das dann aber nicht mehr schoen aus.</p>
<p>classBody=qfq-form-righ</p>
<p>Mit Benj besprechen wie wir das loesen.</p> QFQ - Feature #4551 (Some day maybe): Set 'pills' via dynamicUpdate to show/hide/disabledhttps://project.math.uzh.ch/issues/45512017-09-17T15:43:07ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #4536 (Some day maybe): FE upload: problem with delete if mutliple uploads an FE.na...https://project.math.uzh.ch/issues/45362017-09-15T13:20:33ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Bei GRC in Form='requestPM' gibt es 3 Uploadfelder (advanced: Tabelle 'Note')</li>
<li>Ist nur ein Upload Feld 'enabled' funktioniert Laden/Speichern/Loeschen gut.</li>
<li>Ist ein weiteres FE Upload Feld 'enabled', funktioniert das Loeschen eines Uploads nicht mehr: 'Trash > Speichern > Reload' zeigt den Record wieder an.</li>
<li>Werden den Upload Felder Namen gegeben, fe.name='my....' funktioniert das loeschen sauber.</li>
</ul> QFQ - Feature #4446 (Some day maybe): New FE get same feIdContainerId as last modifed FEhttps://project.math.uzh.ch/issues/44462017-09-09T15:10:40ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wenn ein neues FE angelegt wird, als container denjenigen Vorschlagen, den das zuletzt editierte FE hat.</p> QFQ - Feature #4445 (Some day maybe): template group: Option to simulate fieldsethttps://project.math.uzh.ch/issues/44452017-09-09T15:07:37ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Macht es Sinn das Label zu rendern ( so dass kein fieldset aufwendig angelegt werden muss)?</p>
<p>Man koennte eine Option setzen, um eine TemplateGroup das Verhalten eines Fieldsets zu geben.</p> QFQ - Feature #4443 (Some day maybe): Form: multiple secondary tableshttps://project.math.uzh.ch/issues/44432017-09-09T14:44:08ZCarsten Rosecarsten.rose@math.uzh.ch
Um einfacher auf mehrere Tabellen schreiben zu koennen, und das womoeglich via 'prepared statement':
<ul>
<li>Im Form koennen zusaetzliche Tabellen definiert werden.
<ul>
<li>Z.B. mit FE.type=table, Auf dem Element wird 'slaveId,sqlInsert,sqlDelete,sqlUpdate' definiert. </li>
<li>Pro Form Element kann dann die Tabelle und der aktuelle Spaltenname ausgewaehlt werden.</li>
</ul></li>
</ul> QFQ - Feature #4343 (Some day maybe): _Link: Classifier to add 'attributes'https://project.math.uzh.ch/issues/43432017-08-31T21:47:11ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Additional attributes can't be specified.</p>
<p>E.g. it's not possible to add "disabled='disabled'" - needed to disable a button in Bootstrap.</p>
<p>An new attribute like A:<values> would be nice.</p> QFQ - Feature #4258 (Some day maybe): System Defaults: Formshttps://project.math.uzh.ch/issues/42582017-08-19T17:47:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p>To reserve Form.id values, the AUTO_INCREMENT value has been set to 1000 for table Form.</p>
<ul>
<li>For DB Update, a check should be implemented if some custom table is below 1000. If yes, move all custom tables beyond 1000 (Update Form and FormElement). </li>
<li>This check is only necessary for qfq versions below 0.19.4.</li>
</ul>
<p>This is a high prio issues, cause the new form 'cron' won't be installed, if there is already a with Form.id=4 (which is typically the case).</p> QFQ - Feature #4027 (Some day maybe): Missing: orange 'check' / 'bullet'https://project.math.uzh.ch/issues/40272017-07-02T18:08:42ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3990 (Some day maybe): custom class definition: add space automaticallyhttps://project.math.uzh.ch/issues/39902017-06-27T17:42:13ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>There various places where the user can add CSS classes to any element via QFQ defintions.</li>
<li>At least for '_Page' the following misses a space between custm CSS und QFQ provided:<br /><pre>
sql = SELECT '{{pageId:T}}&form=personFromWebpass|UZH Webpass|||btn btn-default' as _Page
</pre></li>
</ul> QFQ - Feature #3880 (Some day maybe): Form 'Form': anlegen einer Tabellehttps://project.math.uzh.ch/issues/38802017-06-08T20:32:09ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Das Feld zu Auswahl der Primary Tabelle soll neu ein Typeahead-Feld sein.</li>
<li>Wird ein Tabellenamen eingegeben der noch nicht existiert, ercheint rechts in der Notiz ein Link um die Tabelle anzulegen.</li>
<li>Existiert die Tabelle, kann ein Popup mit der Spaltendefinition geoeffnet werden.</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 #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>