Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-05T07:31:43ZProject @ iMath
Redmine 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 - Support #18048 (New): Upload (filepond): FE.downloadButton missing tooltiphttps://project.math.uzh.ch/issues/180482024-03-03T22:31:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ Version 24.3.0</p>
<a name="In-v1-funktioniert-die-Anzeige-des-Tooltips"></a>
<h2 >In 'v1' funktioniert die Anzeige des Tooltips<a href="#In-v1-funktioniert-die-Anzeige-des-Tooltips" class="wiki-anchor">¶</a></h2>
<pre>
downloadButton = t:Download|o:check file
</pre>
<p><img src="https://project.math.uzh.ch/attachments/download/9401/clipboard-202403032329-8x1vp.png" alt="" /></p>
<a name="In-v2-funktioniert-die-Anzeige-des-Tooltips-nicht-nicht-als-Tooltip"></a>
<h2 >In 'v2' funktioniert die Anzeige des Tooltips nicht (nicht als Tooltip)<a href="#In-v2-funktioniert-die-Anzeige-des-Tooltips-nicht-nicht-als-Tooltip" class="wiki-anchor">¶</a></h2>
<p>Es wird der ganze Text gerendert - d.h. vermutlich werden die Angaben wie tooltip, glyphicon nicht ausgewertet. Aktuell weiss ich nicht was noch alles verwendet werden kann - am besten bei V1 nachschauen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9402/clipboard-202403032330-ki9qk.png" alt="" /></p>
<p>Laut Doku (<a class="external" href="https://docs.qfq.io/en/master/Form.html#id14">https://docs.qfq.io/en/master/Form.html#id14</a>):</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9403/clipboard-202403032331-l8bqw.png" alt="" /></p> QFQ - Support #17880 (New): QFQ Exception: a) stacktrace not in support, b) Underline SQL error https://project.math.uzh.ch/issues/178802024-02-12T19:56:47ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/9220/clipboard-202402122055-9vcu4.png" alt="" /></p> QFQ - Bug #17785 (New): undefined: Download::$storeSystemhttps://project.math.uzh.ch/issues/177852024-02-01T17:06:09ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #17569 (New): Form.title text/children not centeredhttps://project.math.uzh.ch/issues/175692024-01-12T10:12:13ZJan Haller
<p>Normalerweise ist reiner Text in <em>form.title</em> vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8973/clipboard-202401121036-p0kxs.png" alt="" /></p>
<p>Sobald ein z.B. ein <em>qfq-badge</em> in <em>form.title</em> verwendet wird, vergrössert sich die Höhe des Titel-Elements und der Text ist nicht mehr vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8974/clipboard-202401121043-djwxs.png" alt="" /></p>
<p>Wird jedoch z.B. <em>pull-right</em> in <em>form.title</em> verwendet, bleibt die Höhe des Titel-Elements gleich und der Text ist vertikal zentriert. Das <em>pull-right</em> jedoch nicht:<br /><img src="https://project.math.uzh.ch/attachments/download/8975/clipboard-202401121048-o6uwb.png" alt="" /><br /><img src="https://project.math.uzh.ch/attachments/download/8976/clipboard-202401121049-65fpx.png" alt="" /></p>
<p>Durch Ergänzung der CSS-Klassen können alle children (inkl. Text) von <em>qfq-form-title</em> vertikal zentriert werden:<br /><pre><code class="css syntaxhl"><span class="nc">.qfq-form-title</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="n">flex</span><span class="p">;</span>
<span class="nl">align-items</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
<span class="p">}</span><span class="o">;</span>
<span class="nc">.pull-right</span> <span class="p">{</span>
<span class="nl">margin-left</span><span class="p">:</span> <span class="nb">auto</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></p>
<p>Resultat: <em>qfq-badge</em> und Text vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8977/clipboard-202401121055-m2jmp.png" alt="" /></p>
<p>Resultat: <em>pull-right</em> und Text vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8978/clipboard-202401121057-yjx9h.png" alt="" /></p>
<p>Ist dieser Lösungsansatz der richtige? Gibt es weitere Klassen die angepasst werden müssen? Wird nichts bestehendes kaputt gemacht?</p> QFQ - Bug #17384 (New): Thumbnail: touch(): Unable to create filehttps://project.math.uzh.ch/issues/173842023-11-29T15:20:10ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es fehlte einfach das Verzeichnis <code>/var/www/html/uplan/fileadmin/protected/qfqThumbnail</code>.</li>
</ul>
<pre>
UniqId:: 656738c8aceb0
------------------------------------------------
toUser:: General error - please report.
support:: File: /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php / Line: 178 / touch(): Unable to create file /var/www/html/uplan/fileadmin/protected/qfqThumbnail/e69da330fa0d81e6488fdcb245704208.png because No such file or directory
Timestamp:: 2023.11.29 14:12:40 +0100
Code:: 2
Message:: General error - please report.
Type:: Code Exception
current sip:: array (
'_b64_download' => 'F:/var/www/html/uplan/fileadmin/protected/qfqThumbnail/e69da330fa0d81e6488fdcb245704208.png|T:fileadmin/protected/application/25/_fk.CVProjektleiter.pdf|W:500x|r:7|s',
'mode' => 'thumbnail',
'r' => '0',
's' => '656738c86369f',
'urlparam' => '_b64_download=RjovdmFyL3d3dy9odG1sL3VwbGFuL2ZpbGVhZG1pbi9wcm90ZWN0ZWQvcWZxVGh1bWJuYWlsL2U2OWRhMzMwZmEwZDgxZTY0ODhmZGNiMjQ1NzA0MjA4LnBuZ3xUOmZpbGVhZG1pbi9wcm90ZWN0ZWQvYXBwbGljYXRpb24vMjUvX2ZrLkNWUHJvamVrdGxlaXRlci5wZGZ8Vzo1MDB4fHI6N3xz&mode=thumbnail&r=0',
)
Page Id:: -
Content Id:: -
FE User:: crose
File:: /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Exception/ErrorHandler.php
Line:: 42
CWD:: /var/www/html/uplan
IP Address:: 192.168.133.208
Stacktrace::
#1 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php(178): touch()
#2 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php(153): IMATHUZH\Qfq\Core\Report\Thumbnail->createThumbnail()
#3 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Thumbnail.php(92): IMATHUZH\Qfq\Core\Report\Thumbnail->getOrCreateThumbnail()
#4 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Download.php(864): IMATHUZH\Qfq\Core\Report\Thumbnail->process()
#5 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Download.php(724): IMATHUZH\Qfq\Core\Report\Download->doThumbnail()
#6 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Core/Report/Download.php(973): IMATHUZH\Qfq\Core\Report\Download->doElements()
#7 /var/www/html/uplan/typo3conf/ext/qfq/Classes/Api/download.php(29): IMATHUZH\Qfq\Core\Report\Download->process()
==================================================
</pre> QFQ - Bug #17291 (New): FE CodeMirror nicht scrollable je nach Setuphttps://project.math.uzh.ch/issues/172912023-11-16T09:46:58ZElias Villiger
<p>Auf meiner eigenen Webseite war der FrontEnd Code Editor nicht scrollbar. Ursächlich scheint zu sein, dass bei der QFQ-eigenen Ausgabe der Seite keine volle Typo3-Seite aufgebaut wird und dadurch ein Teil des Typo3-Templating verloren geht. Konkret hat sich bei mir die parent height (body) bis über den Seitenrand erstreckt (4000px), sodass ein scrolling als nicht notwendig interpretiert wurde.</p>
<p>Durch setzen von<br /><pre><code class="css syntaxhl"><span class="nt">body</span> <span class="p">{</span> <span class="nl">height</span><span class="p">:</span> <span class="m">100vh</span><span class="p">;</span> <span class="p">}</span>
</code></pre><br />ist das Problem gelöst.</p>
<p>Evtl. ist das bisher nicht aufgefallen, da im UZH-CD schon entsprechendes CSS vorhanden.</p>
<p>Vorschlag: Zwischen body und dem gerenderten CodeMirror ein div einbauen:<br /><pre><code class="html syntaxhl"><span class="nt"><div</span> <span class="na">style=</span><span class="s">"height:100vh;"</span><span class="nt">></div></span>
</code></pre></p> QFQ - Bug #17160 (Ready to sync (develop)): TinyMCE: Do not convert to auto urlhttps://project.math.uzh.ch/issues/171602023-10-24T11:56:08ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>Problem: #17159</p>
<p>Can be configured in url-handling:<br /><a class="external" href="https://www.tiny.cloud/docs/configure/url-handling/">https://www.tiny.cloud/docs/configure/url-handling/</a></p>
<p>Updated tinymce helper to always set it to to false:</p>
<p><a class="external" href="https://git.math.uzh.ch/typo3/qfq/-/merge_requests/628">https://git.math.uzh.ch/typo3/qfq/-/merge_requests/628</a></p> QFQ - Bug #16994 (New): Stacktrace in QFQ error messagehttps://project.math.uzh.ch/issues/169942023-10-04T19:21:08ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8519/clipboard-202310042120-brzfz.png" alt="" /></p> QFQ - Bug #16965 (New): Unhandled exception on SQL queryhttps://project.math.uzh.ch/issues/169652023-09-28T12:36:23ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #16345 (ToDo): TinyMCE: size / min-height scheint in QFQ V23.3.0 nicht zu funktionierenhttps://project.math.uzh.ch/issues/163452023-06-02T15:15:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte anschauen / fixen:</p>
<ul>
<li>TinyMCE / Codemirror</li>
<li>Gibt es eine Moeglickeit 'autogrow' zu implementieren?</li>
<li>In der Doku bei Editor (TinMCE, CodeMirror) ist gar nichts zur Groesse bechrieben (zumindest habe ich es nicht gefunden) - dort bitte dokumentieren. Ggfs. muss dann bei 'FE.typ=Text' eine Anmerkung gemacht werden falls sich die Notation unterscheidet.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7997/clipboard-202306021607-rahke.png" alt="" /></p> QFQ - Bug #16074 (New): Image missing in PDFhttps://project.math.uzh.ch/issues/160742023-04-24T14:38:55ZJan Haller
<p>SVG-Datei wird teilweise nicht in PDF eingesetzt.<br />10 PDFs generiert im Abstand von 10 Sek.</p>
<table>
<tr>
<td>PDF</td>
<td>Page</td>
<td>Img</td>
<td>Text</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>3</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>3</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>4</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>5</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>5</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>6</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>6</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>7</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>7</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>8</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>8</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>9</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>9</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>10</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>10</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
</table>
<p>X: vorhanden; O: fehlt<br />PDFs unter: /scratch/tmp/180/16074</p>
<p>Es kommt auch vor, dass das Bild nur auf einer Seite gerendert wird. Seltener kann es vorkommen, dass der Header-Text nicht gerendert wird.<br />Wird das PDF gespeichert und erneut geöffnet, kann es vorkommen, dass das Bild plötzlich vorhanden ist (vgl. gespeicherte PDFs).</p>
<p>Setup:</p>
<ul>
<li>Medtool Dev</li>
<li>Body: QFQ tt_content</li>
<li>Header: HTML tt_content</li>
</ul>
<p>Anmerkung: Der Fehler wurde auf Medtool Preview und QFQ-Dev noch nicht beobachtet.</p> QFQ - Bug #15795 (New): Upload: download button not shown after pressing savehttps://project.math.uzh.ch/issues/157952023-03-14T13:02:17ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Bei r=0: alles ok</li>
<li>Bei r>0: Fehler wie beschrieben.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7498/clipboard-202303141400-waqtc.png" alt="" /></p>
<p>Before pressing save:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7499/clipboard-202303141400-zzrl9.png" alt="" /></p>
<p>After pressing save:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7500/clipboard-202303141401-v6ybl.png" alt="" /></p> QFQ - Bug #15794 (Feedback): Tablesorter filter funktionieren nach Reload nicht mehrhttps://project.math.uzh.ch/issues/157942023-03-14T10:08:07ZNicola Chiapolini
<p>Wenn ich in meinen Filtern eine Suche eintrage funktioniert zuerst alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7489/screenshot1.png" alt="" /></p>
<p>Wenn ich danach aber die Seite neu Lade, verschwinden die view-saver funktionen und die Suche hat keinen Effekt mehr.<br />Das Problem scheint der unten markierte Eintrag im local storage. Wird dieser Gelöscht, funktioniert wieder alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7490/screenshot2.png" alt="" /></p> QFQ - Bug #15317 (New): view-saver (tablesorter) is blocking header if header column contains lin...https://project.math.uzh.ch/issues/153172023-01-05T10:13:53ZJan Haller
<p>Beinhaltet der Header einer Tabelle eine Spalte mit linebreak/<br>, überlappt der view-saver den Header.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7099/clipboard-202301051111-bqhsm.png" alt="" /></p> QFQ - Bug #15108 (New): Wert in Note nach speichern nicht aktualisierthttps://project.math.uzh.ch/issues/151082022-12-05T15:46:11ZJan Haller
<p>Testformular: Medtool>Admin>Setup>Form>note_test</p>
<p>Text in Note (Notiz) wird mit Query abgefragt. Liefert die Query kein Resultat, bleibt nach dem Speichern der vorherige Wert erhalten. Die Seite muss neu geladen werden, damit der Inhalt entfernt wird.</p> QFQ - Bug #15050 (New): Farbe Textfeld grau bei Wechsel von readonly auf show https://project.math.uzh.ch/issues/150502022-11-18T15:05:39ZJan Haller
<p>Textfeld mit TypeAhead bleibt grau, wenn mit Dynamic Update von readonly auf show gewechselt wird. Ursache <input background-color:"transparent"> (siehe Screenshot).</p> QFQ - Bug #15047 (New): {{allRequiredGiven:V}} = 0, wenn Note Formelement auf required isthttps://project.math.uzh.ch/issues/150472022-11-18T10:11:34ZPascal Rössler
<p>Wenn ein Note Formelement auf mode=required hat, ist {{allRequiredGiven:V}} immer = 0. Da man ein Formelement vom Typ Note gar nicht ausfüllen kann.</p> QFQ - Bug #14999 (New): FormElement 'text'/'select': horizontal alignment of symbol 'dropdown', '...https://project.math.uzh.ch/issues/149992022-11-06T16:18:24ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/6847/clipboard-202211061716-4merq.png" alt="" /></p> QFQ - Bug #14998 (New): Default Escape-Type different between `sql`and `head|tail`https://project.math.uzh.ch/issues/149982022-11-06T14:39:18ZCarsten Rosecarsten.rose@math.uzh.ch
<pre>
10 {
sql = SELECT CHAR(10) AS _lf
}
20 {
sql = SELECT '{{lf:R}}', '[hello 1]', '{{lf:R}}'
head = '{{lf:R}}[hello 2]{{lf:R}}'
# head = '{{lf:R::-}}[ hello 2]{{lf:R::-}}'
}
# Das kommt heraus:
\n[ hello 2]\n
[hello 1]
# Folgendes sollte heraus kommen
[hello 2]
[hello 1]
# Das gewuenschte kann erreicht werden, in dem die erste head Zeile durch die zweite ersetzt wird.
</pre>
<ul>
<li>Es ist schlecht das unterschiedliche Defaults beim escapen gelten. </li>
<li>Bitte nachschauen woran das liegt und mit CR beschrechen.</li>
<li>Wenn wir das einfach umstellen wird es Probleme mit mit alten Instanzen geben.</li>
<li>Bitte check was fuer <code>rbeg,rend,fbeg,fend,rsep,fsep,althead,altsql</code> gilt.</li>
</ul> QFQ - Bug #14636 (New): UI Design: Clear X is over up/down (step)https://project.math.uzh.ch/issues/146362022-08-31T08:19:54ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #14625 (ToDo): WebPass Import: User with ' in name - Form ist incompletehttps://project.math.uzh.ch/issues/146252022-08-29T12:01:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/6475/clipboard-202208291353-i1gdq.png" alt="" /></p>
<ul>
<li><a class="external" href="https://webwork16.math.uzh.ch/crose/qfq/index.php?id=typeahead">https://webwork16.math.uzh.ch/crose/qfq/index.php?id=typeahead</a> > Import Webpass user</li>
<li>Problematischer User: Simon d'Aquin, <a class="email" href="mailto:simon.daquin@pharma.uzh.ch">simon.daquin@pharma.uzh.ch</a>, sdaqui</li>
<li>Bei Klick auf Save erscheint 'Form Incomplete'. In dem Moment findet keine Kommunikation mit dem Server statt.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/6476/clipboard-202208291400-7bawn.png" alt="" /></p>
<ul>
<li>Vermutung: im Client stimmt etwas nicht. </li>
<li>Die Typeahead Antwort: `[{"key":"sdaqui","value":"Simon d'Aquin, <a class="email" href="mailto:simon.daquin@pharma.uzh.ch">simon.daquin@pharma.uzh.ch</a>, sdaqui"}]`</li>
</ul> QFQ - Bug #14530 (New): Variables: Action 'X' does not output Type messagehttps://project.math.uzh.ch/issues/145302022-07-26T18:41:06ZNicola Chiapolini
<p>Subject says it all - makes debugging really annoying...</p>
<p><code>4.sql = SELECT "{{la_supervisr:R::X::hallo}}"</code></p>
<p>gives<br /><img src="https://project.math.uzh.ch/attachments/download/6414/clipboard-202207262040-ssmzv.png" alt="" /></p> QFQ - Bug #14508 (New): _exec: output will not be passed downhttps://project.math.uzh.ch/issues/145082022-07-12T10:48:54ZBenjamin Baerbenjamin.baer@math.uzh.ch
<p>The output of _exec can't be passed down to fields below, even with AS '_exec|column'</p>
<p>{{column}} will return the command, not the output
{{&column}} will return empty, not the output</p>
<p>BTW: folgender Code verhaelt sich korrekt</p>
<pre>
10.sql = SELECT 'echo "Hello World"' AS '_exec'
20.sql = SELECT '{{10.exec}}'
</pre> QFQ - Bug #14377 (New): Documentation > General Tips: white page after migrationhttps://project.math.uzh.ch/issues/143772022-06-17T13:28:54ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte die Fehlersuche beschreiben und (hoffentlich) den Fix.</p>
<ul>
<li>Apache / nginx Logfile</li>
<li>fuer FPM-PHP gibt es in der Regel ein eigenes Logfile.</li>
<li>Funktioniert das Backend</li>
<li>Funktioniert das Installtool</li>
<li>Funktioniert PHP</li>
<li>Wo loggt QFQ wenn es zu einem ganz fruehen Zeitpunkt crasht</li>
<li>Kannst Du den Debugger schon benutzen?</li>
<li>Cache loeschen</li>
<li>BaseUrl korrekt?</li>
<li>...</li>
</ul> QFQ - Bug #13943 (ToDo): unable to find formgrouphttps://project.math.uzh.ch/issues/139432022-03-23T07:18:13ZEnis Nuredini
<p>Im Console Log des Browsers erscheint bei Verwendung von Dynamic Update im Forms folgende message: "unable to find formgroup" <br />Darauf folgt "No element with name 's' found." (Bezieht sich 'sehr wahrscheinlich' auf die SIP die ebenfalls bei Aufruf der load.php Api zurückgegeben wird an den JS.)<br />Aktuell scheint es bisher keinen Impact auf den workflow zu haben. Wäre trotzdem von Vorteil dies zu beheben.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/5962/unabletofindformgroup.png" alt="" /></p> QFQ - Bug #13899 (ToDo): Selenium: zum laufen bringenhttps://project.math.uzh.ch/issues/138992022-03-14T08:20:08ZEnis NurediniQFQ - Bug #13706 (New): Wrong CheckType in FieldElement LastStatus of Form Cronhttps://project.math.uzh.ch/issues/137062022-01-21T17:20:57ZNicola Chiapolini
<p>The Check Type of LastStatus is configured as <code>alnumx</code> - but the displayed table column contains sanitized HTML, so lots of <code>&</code>.<br />(Trying to switch the value to fails with a warning "Encode 'specialchar' is not completely compatible with Check Type 'allbut': certain user input will be converted to its HTML representation (e.g. "), which makes use of a non-supported character (&)" which wrong, as according to docs, & is valid for allbut. However this message is missing for alnumx, where it would be correct...</p>
<p>Changing Check Type to <code>all</code> allows me to see the source retrieved by the lastrun.</p> QFQ - Bug #13659 (New): wrong sanitize class applied to R-storehttps://project.math.uzh.ch/issues/136592022-01-14T16:32:23ZNicola Chiapolini
<pre><code class="sql syntaxhl"><span class="mi">11</span><span class="p">.</span><span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="nv">"hallo"</span> <span class="k">AS</span> <span class="k">type</span>
<span class="mi">11</span><span class="p">.</span><span class="n">content</span> <span class="o">=</span> <span class="n">hide</span>
<span class="mi">20</span><span class="p">.</span><span class="k">sql</span> <span class="o">=</span> <span class="k">SELECT</span> <span class="s1">'{{type:R0}}'</span>
</code></pre>
<p>output:<br /><code>!!digit!!</code></p>
<p>(any other name then <code>type</code> works :-)</p> QFQ - Bug #13331 (New): Multi Form: Clear Icon misplacedhttps://project.math.uzh.ch/issues/133312021-11-07T11:39:51ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #12989 (Priorize): empty string does not trigger dynamic updatehttps://project.math.uzh.ch/issues/129892021-09-06T15:15:38ZMarc Egger
<p>A note whose value is rendered using dynamic update is not updated if the return value changes from "something" to "".</p>
<p>e.g.</p>
<p>In the "value" field of a dynamicly updated FormElement of type "note":</p>
<pre>
#!report
10.sql = SELECT "something" FROM (SELECT '') AS _fake WHERE "{{select:F}}"="a"
</pre>
<p>If "select" changes from "a" to "b" then the note still contains "something".</p>
<p>This bug was found by Philipp.</p> QFQ - Bug #12187 (New): Trigger FormAsFile() via Report: probably problem with multi DB setuphttps://project.math.uzh.ch/issues/121872021-03-20T20:15:10ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In <code>Report->triggerReport()</code> gibt es einen Aufruf <code>FormAsFile::importAllForms($this->db, false, true);</code> der vermutlich ein MultiDB Setup nicht beruecksichtigt:</p>
<ul>
<li>Report arbeitet bei Default auf `dbData`. </li>
<li>Form arbeitet immer auf `dbQfq`.</li>
<li>Bei einem MultiDB knallt es jetzt.</li>
</ul>
<p>Des weiteren:</p>
<ul>
<li>Es ist nicht klar warum Report() jede einzelne Query `formAsFile::isFormQuery($sql)` jedes mal vor dem feuern uberprueft, ob eine der Tabellen Form/FormElement vorkommt und falls ja, ein `FormAsFile::importAllForms()` ausfuehrt.</li>
<li>BTW: angenommen 10.sql hat 100 Records, dann wird 10.20.sql hundertmal auf Form/FormElement geprueft und bei Treffer 100 mal alle Forms importiert!</li>
<li>Es kommt zwar super selten vor das Form/FormElement verwendet wird, aber gibt es hier keine bessere Loesung?</li>
<li>Evtl. ist hier das Problem mit der MY Instanz zu suchen, das manchmal alle Formulare verschwunden sind.</li>
</ul> QFQ - Bug #11237 (New): Radiobutton / parameter.buttonClass= btn-default - kein dirty Triggerhttps://project.math.uzh.ch/issues/112372020-09-30T16:10:08ZElias Villiger
<p>Bei Radio buttons mit buttonClass=btn btn-default wird kein dirty-Event (mehr) getriggert (d.h. Save-Button wird nicht aktiviert). Ohne class="btn" funktioniert es.</p> QFQ - Bug #10704 (New): wkhtml problem rendering fullCalendar.js / fabric.js >> successor: puppe...https://project.math.uzh.ch/issues/107042020-06-03T15:26:51ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://github.com/puppeteer/puppeteer">https://github.com/puppeteer/puppeteer</a></li>
<li>Vergleich: <a class="external" href="https://www.paperplane.app/blog/modern-html-to-pdf-conversion-2019/">https://www.paperplane.app/blog/modern-html-to-pdf-conversion-2019/</a></li>
</ul>
<p>puppeteer hat angeblich ein CLI replacement fuer wkhtml ...</p> QFQ - Bug #10661 (In Progress): Typo3 Warnungenhttps://project.math.uzh.ch/issues/106612020-05-27T17:12:58ZNicola Chiapolini
<p>Hoi Carsten</p>
<p>Ich habe heute mal wieder Extensions aktualisiert (deshalb auch den Bug mit <br />processReadOnly). Da ig_ldap Probleme gemacht hatte, habe ich dann auch im <br />Install Tool alle Warnungen angeschaut und bin auf die unten gestossen.</p>
<p>Muss ich da irgend etwas unternehmen?</p>
<p>härzlichi Grüäss<br />Nicola</p>
<p>TCA Migrations<br />--------------<br />Checks whether the current TCA needs migrations and displays applied <br />migrations.</p>
<p>TCA migrations need to be applied<br />Check the following list and apply needed changes.</p>
<p>The 4th parameter 'specConf' of the field 'showitem' with fieldName = <br />'bodytext' has been migrated, from TCA table "tt_content['types']['qfq_qfq']<br />['showitem']"to "tt_content['types']['qfq_qfq']['columnsOverrides']<br />['bodytext']['defaultExtras']".</p>
<p>The defaultExtras setting 'nowrap' in TCA table tt_content['types']['qfq_qfq']<br />['columnsOverrides']['bodytext'] has been migrated to TCA table <br />tt_content['types']['qfq_qfq']['columnsOverrides']['bodytext']['config']<br />['wrap'] = 'off'</p>
<p>TCA in ext_tables.php check<br />----------------------------<br />Check if an extension changes $GLOBALS['TCA'] in ext_tables.php.</p>
<p>Extensions change TCA in ext_tables.php<br />Check for ExtensionManagementUtility and $GLOBALS["TCA"].</p>
<p>- qfq<br />- uzh_cd_template</p> QFQ - Bug #10588 (New): typeahed Tag: Doku anpassenhttps://project.math.uzh.ch/issues/105882020-05-15T13:24:44ZCarsten Rosecarsten.rose@math.uzh.ch
<p>SW via RocketChat:<br /><pre>
Ich habe die Tags nun im Mode 'Glue' zum laufen bekommen. Mein Fazit:
1. In der Doku sollte im Beispiel erwähnt sein, wie man neue Tags anlegt. Also typeAheadTagInsert und typeAheadPedantic=0 sollte vermerkt sein.
2. Ich habe es im Mode 'Tag' nicht geschafft.
3. Ist es normal, dass jeweils nur 1 neuer Tag gespeichert wird? Ich hatte den Fall, dass ich 2 neue Tags erstellte und auswählte. Beim Speichern des Formular wurde dann nur der letzte hinzugefügte Tag gespeichert.
PS: Ich arbeite am Montag wieder.
</pre></p> QFQ - Bug #9947 (Priorize): Unwanted error message if missing 'typeAheadSqlPrefetch'https://project.math.uzh.ch/issues/99472020-01-23T12:22:57ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Hat ein Feld ein typeahead, und wird ein bestehender Record geladen und ist kein 'typeAheadSqlPrefetch' definiert: dann erscheint beim tippen 'missing typeAheadSqlPrefetch'.</p>
<p>Das macht bei key/value translation noch Sinn, bei reinen 'Value' Betrieb ist das ueberfluessig.<br /><pre>
typeAheadSql = SELECT m.location FROM Meeting AS m WHERE m.location LIKE ? GROUP BY m.location ORDER BY m.location LIMIT 40
typeAheadSqlPrefetch = SELECT m.location FROM Meeting AS m WHERE m.location LIKE ? LIMIT 1
typeAheadMinLength = 1
</pre></p> QFQ - Bug #9077 (New): typeAheadSql: report broken SQLhttps://project.math.uzh.ch/issues/90772019-09-10T08:27:15ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Status Quo: ist die Query kaputt, gibt es keine Fehlermeldung.</p>
<p>Vorschlag: wenn ein BE User eingeloggt ist wird als Result die Fehlermeldung ausgegeben.</p> QFQ - Bug #7456 (Some day maybe): Todos in Code: solve or make tickethttps://project.math.uzh.ch/issues/74562018-12-11T09:23:08ZMarc EggerQFQ - Bug #7219 (New): typeSheadSql / typeAheadSqlPrefetch: change to curly braceshttps://project.math.uzh.ch/issues/72192018-11-09T07:10:27ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Scheinbar werden 'typeSheadSql' / 'typeAheadSqlPrefetch' ohne Curly Braces definiert. Das ist inkonsequent.</p>
<ul>
<li>Anpassen das alt und neu funktioniert</li>
<li>Doku</li>
</ul> QFQ - Bug #6116 (Priorize): value of checkbox not saved https://project.math.uzh.ch/issues/61162018-05-29T09:43:08ZNicola Chiapolini
<p>In one of our forms, we have the following checkbox:<br /><pre><code class="sql syntaxhl"><span class="k">INSERT</span> <span class="k">INTO</span> <span class="nv">`FormElement`</span> <span class="p">(</span><span class="nv">`id`</span><span class="p">,</span> <span class="nv">`formId`</span><span class="p">,</span> <span class="nv">`feIdContainer`</span><span class="p">,</span> <span class="nv">`dynamicUpdate`</span><span class="p">,</span> <span class="nv">`enabled`</span><span class="p">,</span> <span class="nv">`name`</span><span class="p">,</span> <span class="nv">`label`</span><span class="p">,</span> <span class="nv">`mode`</span><span class="p">,</span> <span class="nv">`modeSql`</span><span class="p">,</span> <span class="nv">`class`</span><span class="p">,</span> <span class="nv">`type`</span><span class="p">,</span> <span class="nv">`subrecordOption`</span><span class="p">,</span> <span class="nv">`encode`</span><span class="p">,</span> <span class="nv">`checkType`</span><span class="p">,</span> <span class="nv">`checkPattern`</span><span class="p">,</span> <span class="nv">`onChange`</span><span class="p">,</span> <span class="nv">`ord`</span><span class="p">,</span> <span class="nv">`tabindex`</span><span class="p">,</span> <span class="nv">`size`</span><span class="p">,</span> <span class="nv">`maxLength`</span><span class="p">,</span> <span class="nv">`bsLabelColumns`</span><span class="p">,</span> <span class="nv">`bsInputColumns`</span><span class="p">,</span> <span class="nv">`bsNoteColumns`</span><span class="p">,</span> <span class="nv">`rowLabelInputNote`</span><span class="p">,</span> <span class="nv">`note`</span><span class="p">,</span> <span class="nv">`adminNote`</span><span class="p">,</span> <span class="nv">`tooltip`</span><span class="p">,</span> <span class="nv">`placeholder`</span><span class="p">,</span> <span class="nv">`value`</span><span class="p">,</span> <span class="nv">`sql1`</span><span class="p">,</span> <span class="nv">`parameter`</span><span class="p">,</span> <span class="nv">`parameterLanguageA`</span><span class="p">,</span> <span class="nv">`parameterLanguageB`</span><span class="p">,</span> <span class="nv">`parameterLanguageC`</span><span class="p">,</span> <span class="nv">`parameterLanguageD`</span><span class="p">,</span> <span class="nv">`clientJs`</span><span class="p">,</span> <span class="nv">`feGroup`</span><span class="p">,</span> <span class="nv">`deleted`</span><span class="p">,</span> <span class="nv">`modified`</span><span class="p">,</span> <span class="nv">`created`</span><span class="p">)</span> <span class="k">VALUES</span>
<span class="p">(</span><span class="mi">164</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span> <span class="mi">380</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'reg_done'</span><span class="p">,</span> <span class="s1">'Final'</span><span class="p">,</span> <span class="s1">'hidden'</span><span class="p">,</span> <span class="s1">'{{SELECT IF( title_hash != </span><span class="se">\'\'</span><span class="s1"> AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student=(SELECT id FROM phd_graduation WHERE shortname=</span><span class="se">\'</span><span class="s1">{{shortname}}</span><span class="se">\'</span><span class="s1"> )) = 1,</span><span class="se">\'</span><span class="s1">show</span><span class="se">\'</span><span class="s1">, </span><span class="se">\'</span><span class="s1">hidden</span><span class="se">\'</span><span class="s1">) FROM phd_graduation WHERE shortname=</span><span class="se">\'</span><span class="s1">{{shortname}}</span><span class="se">\'</span><span class="s1"> }}'</span><span class="p">,</span> <span class="s1">'native'</span><span class="p">,</span> <span class="s1">'checkbox'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'specialchar'</span><span class="p">,</span> <span class="s1">'alnumx'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'row,label,/label,input,/input,note,/note,/row'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'{{!SELECT IF(reg_done, reg_done, NOW()) FROM phd_graduation WHERE id=</span><span class="se">\'</span><span class="s1">{{id:RE}}</span><span class="se">\'</span><span class="s1"> }}'</span><span class="p">,</span> <span class="s1">'checkBoxMode = single</span><span class="se">\r\n</span><span class="s1">label2 = Submit this form and start the process.'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-29 09:34:25'</span><span class="p">,</span> <span class="s1">'2018-03-09 10:06:26'</span><span class="p">);</span>
</code></pre></p>
<p>This checkbox gets correctly displayed with all the values of <code>mode sql</code> below, but only saved to the DB for some of them:</p>
<p><strong>good</strong><br /><pre><code>
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname}}' }}
{{SELECT IF( title_hash != '' AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student=(SELECT id FROM phd_graduation WHERE shortname='{{shortname}}' )) = 1,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname}}' }}
</code></pre></p>
<p><strong>bad</strong><br /><pre><code>
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE id='{{id}}' }}
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname:R0}}' }}
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname:FR0}}' }}
{{SELECT IF( title_hash != '' AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student='{{id:R0}}') = 1,'show', 'hidden') FROM phd_graduation WHERE id='{{id:R0}}' }}
</code></pre></p>
<p><code>shortname</code> is a nativ / extra field in the form, <code>id</code> is not part of the form.</p>
<p>In any case, a displayed field should also be saved ;-)</p> QFQ - Bug #5991 (Some day maybe): URLs with '|' or long parameter are problematichttps://project.math.uzh.ch/issues/59912018-05-14T05:45:44ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Mitunter werden URLs in der DB gespeichert.</li>
<li>By default werden sie waehrend der Eingabe htmlspecialchar kodiert - damit funktionieren sie dann spaeter bei der Ausgabe nicht mehr.</li>
<li>Werden sie unencoded gespeichert, kann es sein das sie '|' enthalten. Das irritiert QFQ und funktioniert nicht. Bsp.:<br /><pre>
u:http://www.springer.com/west/home/engineering/electronics?SGWID=4-191-22-33358459-detailsPage=ppmmedia|toc|t:Springer site of volume
</pre></li>
<li>Evtl. hilft ein spezieller Kodierungsmodus.</li>
<li>Allgemein waere es wuenschenswert das Problem zu loesen.</li>
</ul> QFQ - Bug #5706 (Some day maybe): upload: fileDestination needs to be sanatizedhttps://project.math.uzh.ch/issues/57062018-03-19T15:39:19ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls in einem FE.type=upload die 'fileDestination' mit einem unerlaubten Zeichen berechnet wird, wird dieses Zeichen nicht entfernt.</p> QFQ - Bug #5305 (New): Upload FormElement: nicht disabled by readonly Formhttps://project.math.uzh.ch/issues/53052018-01-27T12:39:23ZElias Villiger
Das Problem:
<ul>
<li>By Dynamic Update sollte der Button enabled/disabled werden koennen.</li>
<li>D.h. der Server muss immer das eine SIP mitliefern, kann ja sein das der Button spaeter aktiv wird.</li>
<li>Auch bei 'disabled' button (visuell korrekt als disabled dargstellt) wird ein Klick ausgefuehrt und der Dateiauswahldialog oeffnet sich und der ganze Prozess (Auswahl, Upload, Delete) funktioniert.</li>
</ul> QFQ - 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 #3895 (Some day maybe): typeahead pedantic: on lehrkredit ldap webpass - if only one pe...https://project.math.uzh.ch/issues/38952017-06-12T06:57:39ZCarsten Rosecarsten.rose@math.uzh.chQFQ - 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 - Bug #3588 (Some day maybe): templateGroup: versteckte Elemente werden weiterhin gespeichert.https://project.math.uzh.ch/issues/35882017-04-17T14:51:51ZElias Villiger
<p>TemplateGroup:<br /> feld1 = test1<br /> feld2 = test2</p>
Neben feld2 wird auf "Remove" geklickt, ohne vorher den Text zu löschen
<ul>
<li>feld2 verschwindet (wie erwartet)</li>
<li>Beim Speichern bleibt aber feld2 = test2</li>
<li>Wenn die Form neu geladen wird, erscheint feld2 wieder</li>
</ul>
<p>Erwartetes Verhalten: Wenn auf "Remove" geklickt wird, wird auch der entsprechende Inhalt gelöscht (spätestens beim Speichern)</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> QFQ - Bug #2643 (Some day maybe): Zend / PHP Webinars anschauenhttps://project.math.uzh.ch/issues/26432016-10-12T06:41:31ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="http://www.zend.com/en/resources/webinar/building-the-perfect-php-app-for-the-enterprise">http://www.zend.com/en/resources/webinar/building-the-perfect-php-app-for-the-enterprise</a></p>