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 #9704 (Some day maybe): Thumbnails Generieren beim Splitten von PDF Fileshttps://project.math.uzh.ch/issues/97042019-12-04T13:45:31ZBenjamin Baerbenjamin.baer@math.uzh.ch
<ul>
<li>Im moment werden Thumbnails auf Anfrage generiert (Mit parameter |W:900x)</li>
<li>Gut waere wenn diese direkt beim Upload nach dem Splitten generiert werden</li>
<li>Da die Devices unterschiedliche Pixeldichte haetten, waeren ein bisschen groessere Thumbnails wuenschenswert</li>
<li>Meine Empfehlung waere einfach mal alle auf die Width 800 zu skalieren (fuer 4k Devices) - und diese so abzulegen.
<ul>
<li>Wenn der User groessere Thumbnails braucht, kann er dies manuell mit dem W parameter setzen</li>
<li>Wenn dies nicht der Fall ist muss kein |W parameter mitgegeben werden und das 800 width thumbnail wird geliefert</li>
<li>Der User kann dann mittels css/style/etc die Anzeige groesse des Thumbnails bestimmen</li>
</ul></li>
</ul> QFQ - Bug #9669 (Some day maybe): Checkbox / Template Group: radio/checkbox visible broken after ...https://project.math.uzh.ch/issues/96692019-11-28T20:37:24ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="http://webwork16.math.uzh.ch/crose/qfq/index.php?id=templategroup">http://webwork16.math.uzh.ch/crose/qfq/index.php?id=templategroup</a> > max tg (4548) > add</p>
<p>Wenn man mit 'add' einen neue TG oeffnet werden Symbole fuer die Checkboxen und Radios nicht dargestellt (seit Umstellung von Browser Native auf 'Font Awesome'?).</p>
<p>Wird der Record gespeichert und neu aufgerufen sind die Checkboxen ok.</p>
<p>Via Inspect sehe ich keinen HTML/DOM Unterschied.</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 - Bug #9126 (Some day maybe): hidden Form elements are present in page sourcehttps://project.math.uzh.ch/issues/91262019-09-14T07:51:58ZNicola Chiapolini
<p>Hidden Content elements are still present in the page source. This might be a security problem, if the hidden element contains a link (button) with a SIP. The link is not displayed in the in the form, but a user could find the working link in the source,</p> QFQ - Bug #9024 (Some day maybe): QFQ Einarbeitunghttps://project.math.uzh.ch/issues/90242019-09-05T07:37:03ZAnonymous
<ul>
<li>Stores
<ul>
<li><a class="external" href="https://qfq.io/doc/Manual.html#store">https://qfq.io/doc/Manual.html#store</a></li>
</ul></li>
</ul>
<ul>
<li>Variable
<ul>
<li>Sanitize: <a class="external" href="https://qfq.io/doc/Manual.html#sanitize-class">https://qfq.io/doc/Manual.html#sanitize-class</a></li>
<li>Store (s.o.)
<ul>
<li>Mehrere Stores: Prio / Fallback</li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>Aufgabe:
<ul>
<li>Eine T3 Beispielseite erstellen mit der Ausgabe einiger Variablen aus z.B. STORE_SYSTEM , STORE_RECORD, STORE_CLIENT, STORE_VAR</li>
</ul></li>
</ul>
<ul>
<li>Nested Query:
<ul>
<li>Parameter Uebergabe: Spaltenname >> {{id:R}}</li>
</ul>
<ul>
<li><a class="external" href="https://qfq.io/doc/Manual.html#qfq-keywords-bodytext">https://qfq.io/doc/Manual.html#qfq-keywords-bodytext</a></li>
<li>Wrap mit HTML Elementen: head, tail, rbeg, rend, renr, fbeg, fend</li>
</ul>
<ul>
<li>Aufgabe: geschaltete HTML Tabelle - Person, pro Person Tabelle mit Adressen</li>
</ul></li>
</ul> QFQ - Bug #9020 (Some day maybe): radio mit buttonClass und dynamicUpdate lassen sich nicht kombi...https://project.math.uzh.ch/issues/90202019-09-04T12:55:38ZNicola Chiapolini
<p>Wenn ich meinem Radio-Element eine buttonClass gebe um die Bootstrap-Buttons zu erhalten, funktioniert dynamic update nicht mehr.</p> QFQ - Feature #8894 (Some day maybe): Documentation Tags Usable in QFQ Applicationhttps://project.math.uzh.ch/issues/88942019-08-23T10:51:03ZMarc Egger
<p><strong>Simple:</strong></p>
<ul>
<li>In the Form Editor one can deposit tags which link to the a specific entry inside the wiki of the application.</li>
<li>The same should be possible within a QFQ report.</li>
<li>The links to the wiki entries are only rendered for developers</li>
</ul>
<p><strong>Advanced:</strong></p>
<ul>
<li>QFQ implements its own documentation page which also supports the tag feature explained above.</li>
<li>On the QFQ documentation page we could also render the sql table and column comments.</li>
<li>When hovering over a dokumentation-tag-link (e.g. inside form editor) then a preview of the respective documentation text is shown.</li>
</ul>
<p><strong>BPMN:</strong></p>
<ul>
<li>On the qfq documentation page a BPMN editor is integrated. </li>
<li>Documentation tags may also be used inside a BPMN bubble which is then automatically linked to the respective documentaiton</li>
</ul> QFQ - Feature #8892 (Some day maybe): Display and Edit SQL Comments in Form Editorhttps://project.math.uzh.ch/issues/88922019-08-23T10:33:34ZMarc Egger
<p>In the Form Editor:<br />If a Table is chosen, the table comments are displayed in the form inside an editable textfield</p>
<p>In the Form Element Editor:<br />If the Form Element has the name of a table column the respective column comment is displayed in the form inside an editable textfield</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 #8522 (Some day maybe): build QFQ - npm warningshttps://project.math.uzh.ch/issues/85222019-06-12T09:18:03ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wenn auf CI ein Build angestossen wird gibt es folgende Meldungen in der Console:<br /><pre>
npm install
npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3
npm WARN prefer global coffeescript@1.10.0 should be installed with -g
npm WARN prefer global jshint@2.9.7 should be installed with -g
</pre></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 - Bug #8106 (Some day maybe): Dynamic Update: Feld kann nicht auf empty zurückgesetzt werdenhttps://project.math.uzh.ch/issues/81062019-03-21T10:04:18ZElias Villiger
Beispiel-Szenario:
<ul>
<li>Im FormElement `address` soll bei Auswahl eines FormElements `person` die Adresse angezeigt werden.</li>
<li>Person 1 wird ausgewählt -> Adresse 1 wird mit dynamic update angezeigt</li>
<li>Beim FormElement `person` wird die Person abgewählt (emptyItemAtStart)
<ul>
<li>Der `value` von FormElement `address` gibt jetzt leeren String ('') zurück.</li>
<li><strong>Problem</strong>: das FormElement `address` wird nicht auf leeren String zurückgesetzt, sondern behält seinen Wert.</li>
</ul></li>
</ul> QFQ - 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 #8056 (Some day maybe): Termin Organisation (Reservation)https://project.math.uzh.ch/issues/80562019-03-15T07:05:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer das Consulting Tool <a class="external" href="https://project.math.uzh.ch/projects/as-consulting-rf/wiki">https://project.math.uzh.ch/projects/as-consulting-rf/wiki</a> waere eine unabhaengige Terminplanung gut.</p>
<p>Unter <a class="external" href="https://www.terminland.de/online-terminplaner/">https://www.terminland.de/online-terminplaner/</a> kann man kostenlos einen Kalender managen. Man kann auch Fragen stellen die beantwortet werden.</p>
<p>Erste Idee</p>
<ul>
<li>Ein Modul innerhalb von QFQ (Alternativ gibt es evtl. T3 Extensions?).</li>
<li>Es wird nur ein Kalender angezeigt und ein Form um den Termin einzutragen.</li>
<li>Reduzierung auf das noetigste, da nicht klar ist ob das wirlich ein Requirement ist (UZH verwendet Lotus).</li>
<li>Nice to have:
<ul>
<li>Owner traegt seine verfuegbaren Timeslots in einem dedizierten Zimbra Kalender ein.</li>
<li>Client kann aus diesen Terminen auswaehlen.</li>
<li>Das UI Reserviert den Termin im Zimbra Kalender</li>
<li>Falls alles mittels einer 'externen DB' (=Zimbra Kalender) laeuft, muesste QFQ nichts lokal speichern. Evtl. spiegelt Zimbra den Kalender in eine lokale Tabelle.</li>
</ul></li>
</ul>
<p>Zweite Idee</p>
<ul>
<li>Open source service selber hosten. Variante: <a class="external" href="https://demo.easyappointments.org/index.php">https://demo.easyappointments.org/index.php</a></li>
</ul>
<p>Use cases:</p>
<ul>
<li>Terminplanung fuer Prof / Studenten (nutzen i.d.R. keinen Lotus Kalender)</li>
<li>Heterogene Gruppen UZH, ETHZ, ... - typischerweise in einer 1:1 Beziehung (falls mehr als 2 Parteien involviert sind, ist doodle bessser).</li>
</ul> 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 - Bug #7456 (Some day maybe): Todos in Code: solve or make tickethttps://project.math.uzh.ch/issues/74562018-12-11T09:23:08ZMarc EggerQFQ - 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 - Bug #7402 (Some day maybe): thumbnail cache: outdated picture when permission denied and pe...https://project.math.uzh.ch/issues/74022018-11-30T16:11:17ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wird ein Image ersetzt, hat neu aber den Owner 'root', ist folgendes Verhalten zu beobachten wenn QFQ das thumbnail neu rendert (versucht).</p>
<ul>
<li>QFQ erzeugt von einem Image ein thumbnail.</li>
<li>Der Webmaster kopiert eine neue Datei, mit dem gleichen Namen ueber die alte Datei.</li>
<li>Die neue Datei hat faelchslicherweise als owner=root gesetzt. Der Apache Prozess kann nicht darauf zugreifen.
<ul>
<li>Obwohl der Zugriff nicht funktioniert, gibt es keine Fehlermeldung (im Client) - gut waere ein 'broken image'.</li>
</ul></li>
</ul>
<ul>
<li>Der Browser zeigt die thumbnails nicht an (weiss).</li>
<li>Anschliessend werden die Permissions/Owner korrekt gesetzt.</li>
<li>Nach einem Reload im Browser werden die urspruenglichen Thmumbnails angezeigt (also von den alten Bildern)!</li>
</ul> QFQ - Bug #7281 (Some day maybe): Subrecords: on large screen separator line too shorthttps://project.math.uzh.ch/issues/72812018-11-18T09:09:38ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Subrecords: bei besonders breiten Seiten und keinem subrecord, wird die Linie unter dem plus Zeichen nur auf halbe Breite gerendert.</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 #7108 (Some day maybe): QFQ Wrap Elementshttps://project.math.uzh.ch/issues/71082018-10-27T10:01:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>erklaeren wie welche elemente gewrapped werden.</li>
<li>Screenshots
<ul>
<li>static: untereinander, hinteinander</li>
<li>dynamicUpdate: innerhalb einer Zeile ein/ausblenden</li>
</ul></li>
</ul>
<ul>
<li>Optionen
<ul>
<li>BS Columns. Insbesondere was passiert wenn bscolumns=0</li>
<li>row, label, /label, input, /input, note, /note, /row</li>
<li>FE.parameter: FE_WRAP_ROW, FE_WRAP_LABEL, FE_WRAP_INPUT, FE_WRAP_NOTE</li>
</ul></li>
</ul>
<ul>
<li>Unit Test ob ALLE Kombinationen funktioneren.</li>
</ul> QFQ - Feature #7107 (Some day maybe): Showcase Registration Tool: Anmeldung / Administration : Li...https://project.math.uzh.ch/issues/71072018-10-27T09:23:23ZCarsten Rosecarsten.rose@math.uzh.chQFQ - 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 #7105 (Some day maybe): Beispiel wie man in einer zweiten Tabelle speichert.https://project.math.uzh.ch/issues/71052018-10-27T09:18:24ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #7104 (Some day maybe): Manual: hint about escaping if '\r' appears in mail bodyhttps://project.math.uzh.ch/issues/71042018-10-27T09:16:26ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Werden Mails versendet und der Body durch einen Record geladen und via {{body:R}} eingesetzt, erscheinen im Text '\r' an den Zeilenenden.</p>
<p>Problem: {{body:R}} wird escaped</p>
<p>Abhilfe: {{body:R::-}}</p>
<p>Das in der FAQ Sektion erklaeren.</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 #7100 (Some day maybe): Download: log access, max downloads, time limithttps://project.math.uzh.ch/issues/71002018-10-27T08:45:40ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Logging wer/wann von wo zugegriffen hat</li>
<li>max anzahl an downloads begrenzen</li>
<li>zeitlich begrenzen.</li>
<li>anonymer download</li>
<li>kann theoretisch via qfq/report geloest werden</li>
<li>vermutlich praktischer wenn eine logtabelle angegben werden kann</li>
<li>in SIP logtabelle angeben</li>
</ul> QFQ - Feature #6992 (Some day maybe): DB exception: Syntax Highlight https://project.math.uzh.ch/issues/69922018-10-13T09:12:32ZCarsten Rosecarsten.rose@math.uzh.ch
<p>siehe punkt 2 <a class="issue tracker-2 status-5 priority-2 priority-default closed" title="Feature: DB Exception: highlight problematic text position, SQL syntax highlight (Closed)" href="https://project.math.uzh.ch/issues/5450">#5450</a></p> 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 #6715 (Some day maybe): Code-Refactoring: dbArray vereinheitlichenhttps://project.math.uzh.ch/issues/67152018-09-15T13:57:00ZElias Villiger
<p>dbArray wird aktuell an vielen Stellen separat definiert. Würde es Sinn machen, dies z.B. in der Store class zu vereinheitlichen?</p> QFQ - Feature #6704 (Some day maybe): Upload Mode: Bilder in Notizen rechts sollen aktuellen Uplo...https://project.math.uzh.ch/issues/67042018-09-14T11:11:06ZElias Villiger
<p><p><a href="{{pathFileName:FR0:allbut:d}}"><img style="height: 48px;" src="{{pathFileName:FR0:allbut:d}}" /></a></p></p> QFQ - Feature #6515 (Some day maybe): Formular: Felder dynamisch ein/ausblendenhttps://project.math.uzh.ch/issues/65152018-08-15T09:23:42ZCarsten Rosecarsten.rose@math.uzh.ch
1) New Record
<ul>
<li>Feld 1 ist leer</li>
<li>Feld 2 ist ausgblendet</li>
</ul>
2) Edit Record
<ul>
<li>Feld 1 = A</li>
<li>Feld 2: Dropdownliste mit Werten die zu 'A' passen</li>
</ul>
3) Edit Record
<ul>
<li>Feld 1 = B</li>
<li>Feld 2: Dropdownliste mit Werten die zu 'B' passen</li>
</ul> QFQ - Bug #3613 (Some day maybe): note /note unchecked -> note div (col-md) wird weiterhin gerenderthttps://project.math.uzh.ch/issues/36132017-04-21T16:41:23ZElias Villiger
<p>FormElement - Tab Layout:</p>
<p>Wenn z.B. die Checkboxes note und /note deaktiviert werden, wird der note-div weiterhin gerendert, ausser man setzt die "BS Note Columns" explizit auf 0.</p>
Erwartet wäre:
<ul>
<li>Deaktivierung von note führt dazu, dass <div class='col-md-x qfq-note'> nicht gerendert wird</li>
<li>Deaktivierung von /note führt dazu, dass der entsprechende </div> nicht gerendert wird</li>
</ul> QFQ - Feature #3402 (Some day maybe): Syntax Highlighting via CodeMirrorhttps://project.math.uzh.ch/issues/34022017-03-22T14:20:56ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Requirement: Texarea Feld mit Syntax Highlight</p>
<ul>
<li><a class="external" href="https://codemirror.net/">https://codemirror.net/</a></li>
<li>Min. SQL, optional weitere</li>
<li>Konfiguration wie bei TinyMCE via `data-...` - d.h. der Redakteur kann in QFQ Einfluss nehmen auf die diversen Optionen von CodeMirror.</li>
</ul> QFQ - Feature #1623 (Some day maybe): RealURLhttps://project.math.uzh.ch/issues/16232016-02-05T12:44:23ZCarsten Rosecarsten.rose@math.uzh.ch
URL Path:
<ul>
<li>Language</li>
<li>Type: standard, print, wide (wie standard, nur breiter), pure (kein HTML), xml</li>
<li>koennen die DBQ2 / FORM2 Parameter genauso verwendet werden wie bisher: GET & POST</li>
<li>Optional: Gibt es Aenderungen wie DBQ2 interne Links bauen muss? Bsp.: bisher "index.php?id=1234". Mit Real URL soll der Link zeigen auf "www.math.uzh.ch/vorleseung/mat123"</li>
</ul>