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 - 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 - 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 - 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 - 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 #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 #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 - Bug #4771 (Some day maybe): qfq: select-down-values empty after save (edit-form for program...https://project.math.uzh.ch/issues/47712017-10-16T11:00:37ZKarin Niffeler
<p>see pdf <br />qfq version 25.0</p>
<p>Unfortunately, we cannot go online with the application-form until this bug is fixed (or is it a bug I have to fix in my form value statement?). Otherwise, we could lose important students' data.</p>
<p>Thank you!<br />Karin</p> 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 - Bug #4659 (Some day maybe): infoButtonExtrahttps://project.math.uzh.ch/issues/46592017-09-29T16:01:59ZNicolas Huber
<p>Falls der Text eines infoButtonExtra leer ist, soll der infoExtraButton erst gar nicht erscheinen.</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 #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 - Bug #4549 (Some day maybe): TemplateGroups: FE.type SELECT loose selected value after savehttps://project.math.uzh.ch/issues/45492017-09-17T12:25:20ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Nach dem Klick auf speichern, werden Select Listen in Templategroups nicht korrekt aktualisiert.</p> QFQ - Bug #4546 (Some day maybe): NH: SIP storage is destroyed https://project.math.uzh.ch/issues/45462017-09-16T09:00:14ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Nicolas hatte einige Tage lang den Effekt, das die SIPs immer mal wieder ungueltig waren. Vermutlich hat QFQ die SIP storage abgeraeumt weil ein Angriff erkannt wurde.</p> 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 - Bug #4279 (Some day maybe): config.linkVars losthttps://project.math.uzh.ch/issues/42792017-08-23T10:20:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Clicking on a 'AS _Pagee' link looses the 'L' parameter.</p>
<p>In general not only 'type' and 'L' should be appended but all Parameter configured in 'config.linkVars'.</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 - Bug #3570 (Some day maybe): Formular mit prmitnew|permitEdit=Always wird nicht aufgerufen (...https://project.math.uzh.ch/issues/35702017-04-13T11:14:50ZCarsten 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> QFQ - Bug #3109 (Some day maybe): RealUrl: Links werden nicht korrekt gerenderthttps://project.math.uzh.ch/issues/31092017-01-25T18:59:14ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei der <a class="external" href="http://www.biostat.uzh.ch">www.biostat.uzh.ch</a> Seite ist die 'RealUrl' Extension aktiv. Werden Links, auf Seite ab der zweiten Ebene gerendert, so enthalten sie als Ziel auch die zweite Ebene - das funktioniert nicht.</p>
<p>Bsp: <br /><a class="external" href="http://www.biostat.uzh.ch/setup/">www.biostat.uzh.ch/setup/</a>: Liste aller Forms.</p>
<p>Das edit Icon fuer die Forms zeigt auf 'www.biostat.uzh.ch/setup/index.php?id=form&...' - diese Seite existiert nicht.</p>
<p>Korrekt waere:<br />a) <a class="external" href="http://www.biostat.uzh.ch/index.php?id=form&form=">www.biostat.uzh.ch/index.php?id=form&form=</a>..., oder<br />b) <a class="external" href="http://www.biostat.uzh.ch/setup/form/index.php?form=">www.biostat.uzh.ch/setup/form/index.php?form=</a>...</p>
<p>Variante b) muesste einigermassen einfach zu ermitteln sein.</p> QFQ - Bug #3061 (Some day maybe): winstitute: mysql connection durcheinander - nmhp17 (ag7)/QFQ a...https://project.math.uzh.ch/issues/30612017-01-12T14:05:37ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Auf winstitute gibt u.a. die Instanzen:</p>
<p>a) <a class="external" href="http://www.biostat.uzh.ch/">http://www.biostat.uzh.ch/</a> >> winstitute: ag_7</p>
<pre><code>T3: 'database' => 't3_ag7','username' => 't3_ag7',</code></pre>
<pre><code>QFQ Extension QFQ Extension<br /> DB User: t3_ag7 (/srv/www/ag_7/typo3conf/ext/qfq/config.ini)</code></pre>
<pre><code>form2 Extension form2 Extension<br /> DBQ2 Extension DBQ2 Extension <br /> DB User: dbquser (/srv/www/ag_7/typo3conf/dbq2.config.ini)</code></pre>
<p>b) <a class="external" href="http://www.math.uzh.ch/nmhp17">http://www.math.uzh.ch/nmhp17</a> >> winstitute: conferences_7<br /> math.inc.conf:Alias /conferences_7 /srv/www/conferences_62</p>
<pre><code>T3: database' => 't3_zss', 'username' => 't3_zss'</code></pre>
<pre><code>QFQ Extension QFQ Extension<br /> DB_USER = zgsm, DB_NAME = zgsm (/srv/www/conferences_62/typo3conf/config.qfq.ini)<br /> DBQ2 Extension DBQ2 Extension <br /> DB_USER = zgsm, DB_NAME = zgsm (/srv/www/conferences_62/typo3conf/config.qfq.ini)</code></pre>
Das Problem:
<ul>
<li>je nachdem welche Website, nach einem Apache restart als erstes auferufen wird, gilt diese fuer a) <em>und</em> b).</li>
</ul>
<p>Folgenen Code zum debuggen<br /><pre>
sql1 = SELECT USER()
rend1 = <br><br>
sql2 = SHOW tables;
rend2 = <br>
tail2 = <br>
sql2a = SHOW databases;
rend2a = <br>
tail2a = <br>
</pre></p>
<a name="Test"></a>
<h1 >Test<a href="#Test" class="wiki-anchor">¶</a></h1>
<p>Biostat Seite:</p>
<ul>
<li>Apache restart</li>
</ul>
<ul>
<li>ok (dbquser) <a class="external" href="http://www.biostat.uzh.ch/?id=350">http://www.biostat.uzh.ch/?id=350</a></li>
<li>ok (QFQ Formular) <a class="external" href="http://www.biostat.uzh.ch/anmeldung/">http://www.biostat.uzh.ch/anmeldung/</a></li>
</ul>
<ul>
<li>fail (t3_ag7) <a class="external" href="http://www.math.uzh.ch/nmhp17/index.php?id=51">http://www.math.uzh.ch/nmhp17/index.php?id=51</a></li>
</ul>