Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-20T23:59:51ZProject @ iMath
Redmine QFQ - Bug #18184 (New): _link combination of g:_blank and q:.. not workinghttps://project.math.uzh.ch/issues/181842024-03-20T23:59:51ZEnis Nuredini
<p>Wird das special column name _link in Verbindung mit g:_blank und q:... verwendet dann wird nach Klick darauf nicht in einem neuem Tab geöffnet sondern im aktuellen. Das Attribut target wird auf den Button korrekt gesetzt. Es scheint etwas mit dem Handling beim Bestätigen des Alerts zu tun.</p> QFQ - Bug #18163 (New): Form: reload current record after use of sqlBefore/sqlAfter and before Fo...https://project.math.uzh.ch/issues/181632024-03-17T15:40:12ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Scheinbar wird der primary Record nicht neu geladen, falls dieser mit sqlBefore/sqlAfter in einem Native FE nochmal angepasst wurde. Erst nach Page Reload wird der aktuelle Wert gezeigt.</p>
<p>Wird die gleiche Query in einem Action FE gefeuert stimmen die angezeigten Werte direkt nach dem Save, der akuelle Record wird nochmal neu geladen bevor er angezeigt wird.</p>
<p>Aufgefallen ist bei der Erfassung einer getrennten Zeitangabe im Form `myVorlesungPruefungNotiz`.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9519/clipboard-202403171638-kglq1.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9520/clipboard-202403171639-tlp2t.png" alt="" /></p> QFQ - Bug #18155 (New): Form escapeTypeDefault btn-group not workinghttps://project.math.uzh.ch/issues/181552024-03-15T11:03:10ZEnis Nuredini
<p>Die Auswahl eines escapeTypeDefault im Form Editor macht keinen Unterschied. Es verändert sich nichts.</p> QFQ - Bug #18154 (New): Form autofocus not workinghttps://project.math.uzh.ch/issues/181542024-03-15T11:01:48ZEnis Nuredini
<p>Autofocus funktioniert im Formular schon seit längerem nicht mehr. Obwohl das Attribut richtig gesetzt wird beim jeweiligem Element ist der Effekt nicht aktiv im Frontend.</p>
<p>Wir konnten beobachten dass beim erstmaligem Laden der Autofocus für 1sek. erschienen und danach verschwunden ist. Folgende Reloads zeigten diesen gar nicht mehr an.</p> QFQ - Support #18057 (New): {{sqlLog:Y}} returns empty string when not configuredhttps://project.math.uzh.ch/issues/180572024-03-05T07:31:43ZElias Villiger
<p>When the QFQ config for <code>sqlLog</code> (or <code>qfqLog</code>, <code>mailLog</code>) is empty, the default log directory (<code>fileadmin/protected/qfqProject/log/sql.log</code>) is used.</p>
<p>When retrieving <code>{{sqlLog:Y}}</code> from the System Store, this returns an empty string (corresponding to the config value).</p>
<p>Expected behavior: When there's no specific log path configured, I would expect it to return the default/actual path to the log file.</p>
<p>Example use case: <a class="external" href="https://docs.qfq.io/en/master/Report.html#monitor">https://docs.qfq.io/en/master/Report.html#monitor</a></p> QFQ - Bug #17998 (New): Curly braces: a) save as html-entity, b) stored procedure to convert to h...https://project.math.uzh.ch/issues/179982024-02-26T12:53:24ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In Forkred #17995 kam es bei der Anzeige eines Formulars zu einem Problem das <code>}}</code> als Variable interpretiert wurde.</li>
<li>Das ist ein schweres Problem und sollte versucht werden zentral zu vermeiden.</li>
</ul> QFQ - Bug #17957 (New): Keyword tail causes problems when {{ SELECT ... }} is usedhttps://project.math.uzh.ch/issues/179572024-02-20T13:56:37ZJan Haller
<pre><code class="sql syntaxhl"><span class="o">#</span> <span class="n">Beispiel</span> <span class="mi">1</span><span class="p">:</span> <span class="n">Keine</span> <span class="n">Verschachtelung</span>
<span class="o">#</span> <span class="n">tail</span> <span class="n">wird</span> <span class="n">ersetzt</span> <span class="n">durch</span> <span class="mi">1</span>
<span class="o">#</span> <span class="n">Funktioniert</span> <span class="n">wie</span> <span class="n">erwartet</span>
<span class="mi">10</span> <span class="err">{</span>
<span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="mi">1</span>
<span class="n">head</span> <span class="o">=</span> <span class="o"><</span><span class="n">p</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">p</span><span class="o">></span>
<span class="n">tail</span> <span class="o">=</span> <span class="err">{{</span> <span class="k">SELECT</span> <span class="mi">1</span> <span class="err">}}</span>
<span class="err">}</span>
<span class="o">#</span> <span class="n">Beispiel</span> <span class="mi">2</span><span class="p">:</span> <span class="n">Verschachtelung</span>
<span class="o">#</span> <span class="n">tail</span> <span class="n">wird</span> <span class="n">ersetzt</span> <span class="n">durch</span> <span class="mi">1</span>
<span class="o">#</span> <span class="n">Es</span> <span class="n">gibt</span> <span class="n">jedoch</span> <span class="n">eine</span> <span class="n">Fehlermeldung</span> <span class="n">auf</span> <span class="k">level</span> <span class="mi">20</span><span class="p">.</span><span class="mi">30</span>
<span class="mi">20</span> <span class="err">{</span>
<span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="mi">1</span>
<span class="n">head</span> <span class="o">=</span> <span class="o"><</span><span class="n">p</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">p</span><span class="o">></span>
<span class="n">tail</span> <span class="o">=</span> <span class="err">{{</span> <span class="k">SELECT</span> <span class="mi">1</span> <span class="err">}}</span>
<span class="mi">30</span> <span class="err">{</span>
<span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="mi">2</span>
<span class="n">head</span> <span class="o">=</span> <span class="o"><</span><span class="n">p</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">p</span><span class="o">></span>
<span class="err">}</span>
<span class="err">}</span>
<span class="o">#</span> <span class="n">Beispiel</span> <span class="mi">3</span><span class="p">:</span> <span class="n">Verschachtelung</span> <span class="n">liefert</span> <span class="n">keine</span> <span class="n">Records</span>
<span class="o">#</span> <span class="n">tail</span> <span class="n">wird</span> <span class="n">ersetzt</span> <span class="n">durch</span> <span class="mi">1</span>
<span class="o">#</span> <span class="n">Funktioniert</span> <span class="n">wie</span> <span class="n">erwartet</span>
<span class="mi">40</span> <span class="err">{</span>
<span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="mi">1</span>
<span class="n">shead</span> <span class="o">=</span> <span class="o"><</span><span class="n">p</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">p</span><span class="o">></span>
<span class="n">stail</span> <span class="o">=</span> <span class="err">{{</span> <span class="k">SELECT</span> <span class="mi">1</span> <span class="err">}}</span>
<span class="mi">50</span> <span class="err">{</span>
<span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="mi">2</span> <span class="k">FROM</span> <span class="n">DUAL</span> <span class="k">WHERE</span> <span class="mi">1</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">head</span> <span class="o">=</span> <span class="o"><</span><span class="n">p</span><span class="o">></span><span class="p">...</span><span class="o"></</span><span class="n">p</span><span class="o">></span>
<span class="err">}</span>
<span class="err">}</span>
</code></pre>
<p>In jedem Beispiel würde <em>head = {{ SELECT 1 }}</em> funktionieren.</p>
<p>Anbei Screenshots von Beispiel 2 und 3:<br />Beispiel 2:<br /><img src="https://project.math.uzh.ch/attachments/download/9287/clipboard-202402201455-bkckr.png" alt="" /></p>
<p>Bonus:<br /><img src="https://project.math.uzh.ch/attachments/download/9288/clipboard-202402201519-84tfr.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9289/clipboard-202402201522-uwvjh.png" alt="" /></p>
<p>Beispiel 3:<br /><img src="https://project.math.uzh.ch/attachments/download/9286/clipboard-202402201449-zmkmm.png" alt="" /></p> QFQ - Bug #17778 (New): Upload Filepond Dynamic Update - first load hiddenhttps://project.math.uzh.ch/issues/177782024-01-31T15:39:49ZEnis Nuredini
<p>Ausgangssituation:<br />Ein Upload FormElement (Version Filepond) wird beim ersten Aufruf als hidden geladen und danach via Dynamic Update auf show gesetzt, bzw. eingeblendet.</p>
<p>Resultat: Filepond Objekt ist noch nicht initialisiert.</p>
<p>Ursache: Filepond kann nur initialisiert werden wenn das Upload Input Element sichtbar im DOM angezeigt wird. Beim Wechsel von Pills wurde schon eine Lösung dafür implementiert. Beim Einblenden von neuen Upload Elementen via Dynamic Update fehlt eine solche Lösung für die Initialisierung von Filepond. In solchen Fällen kann uploadType = v1 als Übergang verwendet werden.</p> QFQ - Bug #17668 (New): TypAhead: checks 'value', but should check 'key'https://project.math.uzh.ch/issues/176682024-01-19T20:19:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ 23.6.2</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9061/clipboard-202401192117-qlllp.png" alt="" /></p>
<p>Beim laden des Forms (wenn ein User selektiert ist mit special char im Namen wie `Faske, Ida Synnøve`) gibt es im Client gleich ein 'invalid char'. Speichern wird entsprechend auch abgelehnt.</p>
<ul>
<li>checkType=auto setzt vermutlich 'alnumx' Pattern</li>
<li>Der Pattern Check prueft vermutlich den Value, es sollte eigentlich der Key getestet werden</li>
</ul>
<ul>
<li>Funktioniert nicht, sollte es aber: Encode=specialchar, checkType=auto</li>
<li>Funktioniert, aber unnoetig kompliziert: Encode=none, checkType=allbut</li>
</ul> QFQ - Bug #17656 (New): Browser: regexp Pattern Match broken/error inhttps://project.math.uzh.ch/issues/176562024-01-19T13:30:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ 23.6.4</p>
<p>Auf der Forkred Seite im Passwort Reset Form gibt es in der Console die folgende Fehlermeldung</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9048/clipboard-202401191424-dqr2g.png" alt="" /></p>
<p>Die Fehler Meldung zu der Regexp habe ich bei QFQ in JS Konsole schon häufiger gesehen - wird vermutlich allgmeines Problem sein, nicht formspezifisch.</p> QFQ - Bug #17361 (New): Annotate FE doesnt initialize/showhttps://project.math.uzh.ch/issues/173612023-11-27T16:59:16ZEnis Nuredini
<p>The annotate form-element doesn't get initialized. Defined formId variable which is used for initialization is undefined. Somehow the form id handlings have been changed.</p>
<p>Could be an issue for other elements too.</p> QFQ - Bug #11715 (New): acceptZeroAsRequired and requiredOffButMark do not coincidehttps://project.math.uzh.ch/issues/117152020-12-08T11:13:30ZSimon Grüning
<p>A 0 is marked as accepted by requiredOffButMark in the front-end, but not by acceptZeroAsRequired=0 in the allRequiredGiven:V variable.</p>
<p>To reproduce, a required enum list:</p>
<pre>
emptyItemAtStart
itemList='0:0,1:1,2:2,3:3,4:4,5:5,6:6'
acceptZeroAsRequired=0
</pre> QFQ - Bug #11522 (New): Aus/Einblenden von Reiternhttps://project.math.uzh.ch/issues/115222020-11-13T13:58:13ZChristoph Fuchs
<p>Ist beim Laden eines Formulars ein Reiter ausgeblendet und wird dieser abhängig von einem Feld dynamisch eingeblendet, so sind alle Felder dieses Reiters unsichtbar.</p>
<p>QFQ Version 20.4.0</p> QFQ - Bug #11195 (New): Dynamic Update: Note not updated if new text is empty (v20.4)https://project.math.uzh.ch/issues/111952020-09-25T09:14:05ZNicola Chiapolini
<p>We had a dynamic updated note-Element with value</p>
<p><code>#!report<br />10.sql = SELECT notes FROM rooms WHERE building = '{{building:FSRD:alnumx}}' AND room = '{{room:FSRD:alnumx}}'<br />10.twig = {{ result.0.notes }}<br /></code></p>
<p>The note-Element is not updated, if the notes is empty or the query does not return a row.<br />The following code works:</p>
<p><code>#!report<br />10.sql = SELECT notes, RAND() AS dummy FROM rooms WHERE building = '{{building:FSRD:alnumx}}' AND room = '{{room:FSRD:alnumx}}'<br />10.twig = <span>{{ result.0.notes }}</span><br /></code></p>
<p>(Since we only update via T3 Extension store, we are still running 20.4 so this might be fixed by now.)</p> QFQ - Bug #10890 (New): AutoCron hangshttps://project.math.uzh.ch/issues/108902020-07-20T11:56:03ZChristoph Fuchs
<p>Wenn in der Tabelle "Cron" ein Wert in >0 "inProgess" definiert ist, werden für deisen Record keine Mails mehr versandt.<br />Selbst ein Neustart ändert nichts daran. Der Tooltip "inProgress > 10mins" sollte vielleicht mit einem Vermerk versehen werden.</p>
<p>Noch schöner wäre, wenn "inProgress > 10mins" automatich einen neuen Button zu Anzeige brächte, mit dem "inProgess" auf 0 zurückgesetzt werden könnte.<br />Viele Grüsse<br />c</p> QFQ - Bug #10759 (New): emptyMeansNull - Feld falsch aktualisierthttps://project.math.uzh.ch/issues/107592020-06-15T14:42:08ZChristoph Fuchs
<p>Ein Feld, das als Parameter "emptyMeansNull=1" definiert hat,<br />erhält nach dem Speichern des Formaulars (ohne dass das Formular geschlossen wird) den Wert "False".<br />In der DB ist aber alles in Orndung, sprich NULL.</p> QFQ - Bug #10324 (New): Excel Export mit Template funktioniert nur, wenn Template vor uid kommthttps://project.math.uzh.ch/issues/103242020-03-30T09:20:24ZElias Villiger
<p>Bsp:</p>
<p>Dieser Link verwendet das Template:</p>
<pre>
CONCAT('d:final.xlsx|t:Excel (template)|F:fileadmin/template.xlsx|uid:54') AS _excel
</pre><br />Dieser Link verwendet das Template nicht:
<pre>
CONCAT('d:final.xlsx|t:Excel (template)|uid:54|F:fileadmin/template.xlsx') AS _excel
</pre> QFQ - Bug #9855 (New): Required Checkhttps://project.math.uzh.ch/issues/98552020-01-09T10:28:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte fuer alle Input Typen (inkl. 'File'), ueberpruefen das ein Form Save unmoeglich ist (resp. markiert wird), wenn required aktiv ist, das Feld aber leer ist.</p>
<p>Das Attribute 'acceptZeroAsRequired' auch testen.</p>
<p>Bei 'fe.mode=<via dynamic update veraendert>' bitte alle Varianten testen (n=normal, r=required, FL=Form Load, FDU=Form Dynamic Update):<br /><pre>
FL FDU
--------
n n
n r
r n
r r
</pre></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 - 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 #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 #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 #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 #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 - Feature #6299 (Some day maybe): Attack detection: log table with invalid SIP access https://project.math.uzh.ch/issues/62992018-06-23T16:32:22ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Die Abwehrmassnahmen fuer SIP brute force sollen wie folgt verbessert werden.</p>
<ul>
<li>Es gibt eine Tabelle die alle mis-hit auf SIP oder Persistent SIP notiert:
<ul>
<li>IP</li>
<li>PHP Session</li>
<li>feUser</li>
<li>UserAgent</li>
<li>pageId</li>
<li>Zeitpunkt</li>
</ul></li>
</ul>
<ul>
<li>QFQ prueft bei jedem Start ob ein Full Stop (Attack detected) noetig ist:
<ul>
<li>Hits pro Sekunde, pro Minute, pro 5 Minuten, pro Stunde, pro Tag, pro Monat</li>
<li>Count pro IP, count pro PHP Session, count pro feUser</li>
<li>Fuer jede 'Hit/pro Zeit'-Klasse gibt es einen Schwellwert.</li>
<li>Ist der Schwellwert ueberschritten, wird die IP gesperrt, resp. die PHP Session gesperrt. </li>
<li>Eintraege aelter als einen Monat werden geloescht.</li>
</ul></li>
</ul>
<ul>
<li>Es wird nicht erwartet das viele Daten in der Tabelle stehen.</li>
</ul> QFQ - Feature #6288 (Some day maybe): Best Practice: Erklaeren wie man ein Formular ganz in 'weis...https://project.math.uzh.ch/issues/62882018-06-20T16:35:27ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Mit den Klassen classPill, classBody, classTitle kann man ein Formular ganz in weiss machen</p>
<p>Lehrkredit/Form: requestApprove</p>
<p>classBody=qfq-color-white</p> QFQ - Feature #6083 (Some day maybe): Dynamic Update: Value Check via SQLhttps://project.math.uzh.ch/issues/60832018-05-26T16:39:52ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Um z.B. die Eingabe eines Start/Ende Datums via 'dynamic update' kontrollieren zu koennen, waere es gut wenn man eine SQL query dafuer definieren koennte.</p>
<p>Bsp: projektStart und projektEnde duerfen nur maximal 24 Monate umfassen.</p>
Implementierungsidee:
<ul>
<li>Es gibt einen neuen FormElementTyp 'dynamicUpdateCheck' mit type='action'.</li>
<li>Im zu ueberpruefenden FE gibt es im Parameterfeld<br /><pre>
dynamicUpdateCheckFeId = 123 # FormElement.id eines FE mit type='dynamicUpdateCheck'
</pre></li>
<li>Die Notation ist identisch zu 'beforeSave'.</li>
</ul> QFQ - Bug #5877 (Some day maybe): FE.type=note:bsColumn strange behaviourhttps://project.math.uzh.ch/issues/58772018-04-26T16:32:42ZCarsten Rosecarsten.rose@math.uzh.ch
<p>SW hat auf der GRC Seite ein spezielles Verhalten gehabt.</p>
<ul>
<li>FE Element (kein Dynamic Update) type=note</li>
<li>In der Note gab es kein Label und Input.</li>
<li>Die Note Spalte war 9 spalten breit. Label=3, Input=0</li>
<li>Nachdem 'modeSql' gesetzt wurde, so dass nur bei gewissen Grants das FE angezeigt werden soll (show/hidden), war der Button linksbuendig, obwohl er in der 4. Spalte beginnen soltle.</li>
<li>Wurde Label=2, Input=1 oder Label=0, Input=3 gesetzt, trat der Effekt nicht auf.</li>
</ul> QFQ - Feature #5783 (Some day maybe): BPMN View/Edithttps://project.math.uzh.ch/issues/57832018-04-05T14:50:40ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ soll BPMN Workflows anzeigen und editieren koennen:</p>
<ul>
<li>BPMN Edit:
<ul>
<li><a class="external" href="https://github.com/bpmn-io/bpmn-js">https://github.com/bpmn-io/bpmn-js</a></li>
<li><a class="external" href="https://github.com/bpmn-io/bpmn-moddle">https://github.com/bpmn-io/bpmn-moddle</a> </li>
<li><a class="external" href="https://github.com/bpmn-io/diagram-js">https://github.com/bpmn-io/diagram-js</a></li>
</ul></li>
</ul>
<ul>
<li>Beispiel fuer BPMN Anzeige via JQuery: <a class="external" href="https://www.pleus.net/blog/?p=2142">https://www.pleus.net/blog/?p=2142</a></li>
</ul> QFQ - Feature #5160 (Some day maybe): QFQ collaborative / together.js, ShareJS, y-js, collaborati...https://project.math.uzh.ch/issues/51602017-12-23T16:04:11ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://togetherjs.com">https://togetherjs.com</a></li>
<li><a class="external" href="https://github.com/josephg/ShareJS">https://github.com/josephg/ShareJS</a></li>
<li><a class="external" href="http://y-js.org/#!/examples">http://y-js.org/#!/examples</a> (incl. RTE)</li>
<li><a class="external" href="https://www.npmjs.com/package/collaborative">https://www.npmjs.com/package/collaborative</a></li>
<li><a class="external" href="https://blog.pusher.com/build-collaborative-text-editor-javascript/">https://blog.pusher.com/build-collaborative-text-editor-javascript/</a></li>
</ul> QFQ - Feature #5129 (Some day maybe): Reports: SQL fuer x Achse und y Achsehttps://project.math.uzh.ch/issues/51292017-12-15T14:08:56ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Moeglichkeit x und y Achse in einer SQL Stufe zu generieren und Kinder dann beide Values zu vererben</p>
<p>Nuetzlich fuer Tabellen die Horizontal und Vertikal generiert werden, bsp. Overview Points</p>
<p>Beispiel:<br /><pre>
10 {
xsql = SELECT id FROM Exercises
ysql = SELECT id FROM Students
rbeg = <tr>
xhead = <thead>
yhead = <tbody>
xfbeg = <th>
xfend = </th>
yfbeg = <td>
...
20 {
sql = SELECT grade FROM Grades WHERE idExercise = {{10x.id}} AND idStudent = {{10y.id}}
}
</pre></p> QFQ - Feature #4974 (Some day maybe): Long polling - inform all listening clients of changeshttps://project.math.uzh.ch/issues/49742017-11-21T08:23:46ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p><a class="external" href="https://stackoverflow.com/questions/333664/how-do-i-implement-basic-long-polling">https://stackoverflow.com/questions/333664/how-do-i-implement-basic-long-polling</a></p>
<pre>
<?php
if(rand(1,3) == 1){
/* Fake an error */
header("HTTP/1.0 404 Not Found");
die();
}
/* Send a string after a random number of seconds (2-10) */
sleep(rand(2,10));
echo("Hi! Have a random number: " . rand(1,10));
?>
</pre>
<p>Note: With a real site, running this on a regular web-server like Apache will quickly tie up all the "worker threads" and leave it unable to respond to other requests.. There are ways around this, but it is recommended to write a "long-poll server" in something like Python's twisted, which does not rely on one thread per request. cometD is an popular one (which is available in several languages), and Tornado is a new framework made specifically for such tasks (it was built for FriendFeed's long-polling code)... but as a simple example, Apache is more than adequate! This script could easily be written in any language (I chose Apache/PHP as they are very common, and I happened to be running them locally)</p>
<p>Javascript:</p>
<pre>
<script type="text/javascript" charset="utf-8">
function addmsg(type, msg){
/* Simple helper to add a div.
type is the name of a CSS class (old/new/error).
msg is the contents of the div */
$("#messages").append(
"<div class='msg "+ type +"'>"+ msg +"</div>"
);
}
function waitForMsg(){
/* This requests the url "msgsrv.php"
When it complete (or errors)*/
$.ajax({
type: "GET",
url: "msgsrv.php",
async: true, /* If set to non-async, browser shows page as "Loading.."*/
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){ /* called when request to barge.php completes */
addmsg("new", data); /* Add response to a .msg div (with the "new" class)*/
setTimeout(
waitForMsg, /* Request next message */
1000 /* ..after 1 seconds */
);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
addmsg("error", textStatus + " (" + errorThrown + ")");
setTimeout(
waitForMsg, /* Try again after.. */
15000); /* milliseconds (15seconds) */
}
});
};
$(document).ready(function(){
waitForMsg(); /* Start the inital request */
});
</script>
</pre> 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 #4444 (Some day maybe): FE.type=upload: detect mime typehttps://project.math.uzh.ch/issues/44442017-09-09T15:04:53ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls kein 'file' installiert ist: Fallback auf filename extension</p>
config.qfq.ini:
<ul>
<li>mimetype=file (default)</li>
<li>mimetype= (detection off)</li>
</ul>
<ul>
<li>persoenliche notiz
<ul>
<li>-b (brief)</li>
<li>--extension</li>
<li>--mime</li>
<li>--keep-going</li>
</ul></li>
</ul> QFQ - Bug #4441 (Some day maybe): $_SERVER Vars sollten nur aus dem Store genommen werden - Code ...https://project.math.uzh.ch/issues/44412017-09-09T14:34:35ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #4440 (Some day maybe): Manual.rst: explain how to. expand PHP Session to 4hhttps://project.math.uzh.ch/issues/44402017-09-09T14:33:37ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #4138 (Some day maybe): _style fehlthttps://project.math.uzh.ch/issues/41382017-07-31T08:50:53ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Wir haben auf der Math Seite noch eintraege mit _style (UL|Text) die es noch nicht gibt im QFQ.</p>
<p>Beispiel waere Vita:<br /><a class="external" href="https://webwork16.math.uzh.ch/math/work/index.php?professur&key1=8882">https://webwork16.math.uzh.ch/math/work/index.php?professur&key1=8882</a></p>
<p>Der ganze Block of text ist eine Reihe in der Auswertung, urspruenglich: "UL| ganzer Text" und ich nehme an das UL hat dann die einzelnen \n in listen items eingeteilt.</p> QFQ - Bug #4122 (Some day maybe): _file: Render Mode hat keinen Effekthttps://project.math.uzh.ch/issues/41222017-07-24T08:50:09ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Siehe: <a class="external" href="https://webwork16.math.uzh.ch/math/work/index.php?preprint&key1=2010">https://webwork16.math.uzh.ch/math/work/index.php?preprint&key1=2010</a></p>
<p>Download Button wird auch mit leerem File gerendert.</p> QFQ - Feature #3879 (Some day maybe): Form 'FormElement': Beim Feld 'name' rechts in der Notiz ei...https://project.math.uzh.ch/issues/38792017-06-08T20:30:15ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>User gibt einen Spaltennamen ein.</li>
</ul>
<ul>
<li>Falls der Spaltennamen existiert:
<ul>
<li>Anzeige der aktuellen Defintion in der Tabelle</li>
</ul></li>
</ul>
<ul>
<li>Falls der Spaltennamen noch nicht existiert:
<ul>
<li>wird im Notizbereich ein Link eingblendet der auf ein 'Column Create' Form zeigt.</li>
<li>In Form 'Column Create' kann man Typ, Laenge, ... einstellen und die Spalte anlegen.</li>
</ul></li>
</ul> QFQ - Feature #3878 (Some day maybe): Form 'FormElement': Spalte 'name' typeAhead mit Spaltenname...https://project.math.uzh.ch/issues/38782017-06-08T20:19:35ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3646 (Some day maybe): Moeglichkeit HTML Tags in Reports auszugeben (zu enkodieren...https://project.math.uzh.ch/issues/36462017-04-28T13:44:35ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Siehe als Beispiel:<br /><img src="https://project.math.uzh.ch/attachments/download/650/qfq_tags_ausgabe.png" alt="" /></p>
<p>Sollte moeglich sein das mittels htmlspecialchars in html zu kodieren.</p> QFQ - Feature #3617 (Some day maybe): Load javascripts at bottomhttps://project.math.uzh.ch/issues/36172017-04-24T07:41:17ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Ist Zustand:</p>
<pre>
<script>
$(function () {
'use strict';
QfqNS.Log.level = 0;
var qfqPage = new QfqNS.QfqPage({
tabsId: 'qfqTabs',
formId: 'qfq-form-58fda8ec26d14',
submitTo: 'typo3conf/ext/qfq/qfq/api/save.php',
deleteUrl: '',
refreshUrl: 'typo3conf/ext/qfq/qfq/api/load.php',
fileUploadTo: 'typo3conf/ext/qfq/qfq/api/file.php?action=upload',
fileDeleteUrl: 'typo3conf/ext/qfq/qfq/api/file.php?action=delete'
});
var qfqRecordList = new QfqNS.QfqRecordList('typo3conf/ext/qfq/qfq/api/delete.php');
})
</script>
</pre>
<p>Soll: Keine scripts mehr im HTML.</p>
<p>Umesetzungsvorschlag:</p>
<ul>
<li>HTML Seite<br /><pre>
<form class="qfq-setup" data-log="0" data-tabs-id="qfqTabs" data-form-id="qfq-form-58fda8ec26d14" data-submit="typo3conf/ext/qfq/qfq/api/load.php"
data-delete="" data-refresh="typo3conf/ext/qfq/qfq/api/load.php" data-file-upload-to="typo3conf/ext/qfq/qfq/api/file.php?action=upload"
data-delete-url="typo3conf/ext/qfq/qfq/api/file.php?action=delete" data-initialize="typo3conf/ext/qfq/qfq/api/delete.php"> ... </form>
</pre></li>
</ul>
<ul>
<li>Script<br /><pre>
$(".qfq-setup").each(function () {
'use strict';
QfqNS.Log.level = $(this).data("log");
var qfqPage = new QfqNS.QfqPage({
tabsId: $(this).data("tabs-id"),
formId: $(this).data("form-id"),
submitTo: $(this).data("submit"),
deleteUrl: $(this).data("delete"),
refreshUrl: $(this).data("refresh"),
fileUploadTo: $(this).data("upload-to"),
fileDeleteUrl: $(this).data("delete-url")
});
var qfqRecordList = new QfqNS.QfqRecordList($(this).data("initialize"));
});
</pre></li>
</ul> QFQ - Feature #3567 (Some day maybe): 'Save', 'Close', 'New' als FormElementhttps://project.math.uzh.ch/issues/35672017-04-13T10:47:15ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #3495 (Some day maybe): Predifined Parameter werden nicht in '+' (add new record) S...https://project.math.uzh.ch/issues/34952017-04-03T21:24:21ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Problem: Auf der Lehrkredit Seite 'Setup' koennen Ggroup Records angelegt werden. In dem '+' auf der Seite ist ein grId=22 als Predefined Parameter definiert, der jeweils im Record zur Klassifizierung mit gespeichert werden muss. Bis dahin ok. Wird nun bestehender Record via Edit aufgerufen und auf dem bestehenden Record das '+' gedrueckt, bekommt der neue Record KEIN grId=22. D.h. die vordefinierten Werte fehlen.</p>
<p>Beispiel</p>