Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892023-03-14T10:08:07ZProject @ iMath
Redmine 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 #15483 (Closed): security.protectedFolderCheck verursacht unnötig Error-log einträgehttps://project.math.uzh.ch/issues/154832023-02-03T09:08:46ZNicola Chiapolini
<p>Eines unserer Systeme hatte diverse unnötig Error-Log Einträge. Das System hat ein self-signed SSL-certificate und qfq.json ausserhalb des Webroot. <br />Da der Check nach dieser Datei sucht hat jeder Seitenaufruf einen neuen Block verursacht</p>
<pre>
--2023-02-03 10:02:18-- https://....uzh.ch/fileadmin/protected/qfqProject/conf/qfq.json
Resolving ....uzh.ch (....uzh.ch)... 130.60....
Connecting to ....uzh.ch (....uzh.ch)|130.60....|:443... connected.
ERROR: The certificate of '....uzh.ch' is not trusted.
ERROR: The certificate of '....uzh.ch' doesn't have a known issuer.
</pre>
<p>Ich habe den Check eben ausgeschaltet.</p> QFQ - Bug #15445 (Closed): Output Widged fehlt in der Dokumentationhttps://project.math.uzh.ch/issues/154452023-01-26T15:53:48ZNicola Chiapolini
<p>Ich habe eben ein neues System vorbereitet und dabei versucht möglichst nahe an euren Anleitungen zu bleiben.</p>
<p>Der "Download CSV" Button funktioniert aber leider nicht. Grund war eine fehlende <code>widget-output.min.js</code>-Datei.</p>
<p>In der Dokumentation von QFQ wird die nirgends erwähnt (mindestens findet die Suche den Dateinamen nicht). Es steht nur <code>(be sure to include the separate JS file)</code> - aber ohne Info welches JS file...</p>
<p>Im UZH template ist sie offensichtlich auch nicht dabei und auch dort wird sie nirgendwo erähnt.</p> QFQ - Bug #14755 (Closed): path to typeahead.php should be absolute (and other scripts)https://project.math.uzh.ch/issues/147552022-09-20T14:04:21ZNicola Chiapolini
<p>In typo3 9.5 we use speaking urls now, so normal typo3 pages create longer urls. This breaks typeahead.</p>
<p>In a page on root level of the website, typeahead.php is found at:<br /><code>https://mnf-devel-01.mnf.uzh.ch/typo3conf/ext/qfq/Classes/Api/typeahead.php</code></p>
<p>While in our "Admin Area"-Subtree, the call is to <br /><code>https://mnf-devel-01.mnf.uzh.ch/admin-area/typo3conf/ext/qfq/Classes/Api/typeahead.php</code> which is an invalid path of course.</p> QFQ - Bug #14754 (Closed): table-sorter, view-safer broken in twighttps://project.math.uzh.ch/issues/147542022-09-20T13:27:56ZNicola Chiapolini
<p>Der Code für den Tablesorter header wird gemäss dokumentation mit dem command <code>{{ '<uniqueName>' AS _tablesorter-view-saver }}</code> erzeugt.</p>
<p>Das funktioniert gut wenn das command im <code>head</code> steht:<br /><pre>
10.sql = SELECT ....
10.head = <table {{ '{{pageAlias:T}}-allperson' AS _tablesorter-view-saver }} class="tablesorter tablesorter-filter tablesorter-column-selector" id="{{pageAlias:T}}-demo">
</pre></p>
<p>Für twig ist das aber nicht möglich, da <code>{{ }}</code>-ausdrücke in twig nicht von QFQ sondern von twig ausgewertet werden. Entsprechend muss der output des commands zuerst in eine Variable gespeichert werden. In meinen ersten Tests hat das nicht funktioniert, jetzt habe ich das aber eben zum Laufen gekriegt. Folgendes Setup funktioniert:</p>
<pre>
15.sql = SELECT "{{ 'testName' AS _tablesorter-view-saver }}" AS tsheader
15.content = hide
21.sql = SELECT ...
21.twig = <table {{ store.record.tsheader|raw }} class="tablesorter tablesorter-filter tablesorter-column-selector" id="somename">
</pre>
<p>Wichtig ist in <code>15.sql</code> die Reihenfolge der Anführungszeichen (doppelte aussen, einfache innen). Sonst schlägt das SQL-Query fehl. Ich denke, es wäre hilfreich, wenn dieses Setup auch in der QFQ-Doku erläutert würde.</p> QFQ - Bug #14753 (New): Folgeproblem zu #14304: keine Befriedigend Lösung für JS-Fileshttps://project.math.uzh.ch/issues/147532022-09-20T13:10:52ZNicola Chiapolini
<p>Wenn ich wie in <a class="issue tracker-1 status-6 priority-2 priority-default closed" title="Bug: table sorter view safer does not work (Rejected)" href="https://project.math.uzh.ch/issues/14304">#14304</a> identifiziert <code>bootstrap.min.js</code> aus meiner liste entferne, funktioniert anschliessend zwar der tabelsorter-viewsafer, dafür ist der Button des tablesorter-columnselector tot... (und auch alle weiteren meiner "popover" tools funktionieren dann nicht mehr).</p> QFQ - Bug #14618 (Closed): checkForEncryptedValue() must be of the type stringhttps://project.math.uzh.ch/issues/146182022-08-28T10:10:43ZNicola Chiapolini
<p>Meine Test hatten noch ein Problem gefunden mit einem Formular das nur ein Datumsfeld enthält. Dieses ist in der DB NULL by default. Beim öffnen mit dem NULL wert erhalte ich den Fehler:<br /> Argument 1 passed to IMATHUZH\Qfq\Core\Helper\EncryptDecrypt::checkForEncryptedValue() must be of the type string, null given, called in /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/AbstractBuildForm.php on line 864</p>
<pre>
Date Column to modify contains `NULL`
-------------------------------------
2022.08.25 17:05:15 +0200, Reference: 63078fab1e940
Generic Error: Argument 1 passed to IMATHUZH\Qfq\Core\Helper\EncryptDecrypt::checkForEncryptedValue() must be of the type string, null given, called in /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/AbstractBuildForm.php on line 864
Debug
-----
Edit: Form: [...] FormElement: [...]
FE column: Set language
toUser: Generic Error: Argument 1 passed to IMATHUZH\Qfq\Core\Helper\EncryptDecrypt::checkForEncryptedValue() must be of the type string, null given, called in /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/AbstractBuildForm.php on line 864
support:
#0 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/AbstractBuildForm.php(864): IMATHUZH\Qfq\Core\Helper\EncryptDecrypt::checkForEncryptedValue()
#1 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/AbstractBuildForm.php(398): IMATHUZH\Qfq\Core\AbstractBuildForm->elements()
#2 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/BuildFormBootstrap.php(963): IMATHUZH\Qfq\Core\AbstractBuildForm->process()
#3 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/QuickFormQuery.php(554): IMATHUZH\Qfq\Core\BuildFormBootstrap->process()
#4 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/QuickFormQuery.php(285): IMATHUZH\Qfq\Core\QuickFormQuery->doForm()
#5 /var/www/htdocs/typo3conf/ext/qfq/Classes/Controller/QfqController.php(45): IMATHUZH\Qfq\Core\QuickFormQuery->process()
#6 /var/www/typo3_src-9.5.31/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php(318): IMATHUZH\Qfq\Controller\QfqController->showAction()
#7 /var/www/typo3_src-9.5.31/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php(167): TYPO3\CMS\Extbase\Mvc\Controller\ActionController->callActionMethod()
#8 /var/www/typo3_src-9.5.31/typo3/sysext/extbase/Classes/Mvc/Dispatcher.php(73): TYPO3\CMS\Extbase\Mvc\Controller\ActionController->processRequest()
#9 /var/www/typo3_src-9.5.31/typo3/sysext/extbase/Classes/Mvc/Web/FrontendRequestHandler.php(92): TYPO3\CMS\Extbase\Mvc\Dispatcher->dispatch()
#10 /var/www/typo3_src-9.5.31/typo3/sysext/extbase/Classes/Core/Bootstrap.php(172): TYPO3\CMS\Extbase\Mvc\Web\FrontendRequestHandler->handleRequest()
#11 /var/www/typo3_src-9.5.31/typo3/sysext/extbase/Classes/Core/Bootstrap.php(159): TYPO3\CMS\Extbase\Core\Bootstrap->handleRequest()
#12 [internal function]: TYPO3\CMS\Extbase\Core\Bootstrap->run()
#13 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php(6015): call_user_func_array()
#14 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/ContentObject/UserContentObject.php(41): TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->callUserFunction()
#15 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php(821): TYPO3\CMS\Frontend\ContentObject\UserContentObject->render()
#16 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php(737): TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->render()
#17 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php(3854): TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->cObjGetSingle()
#18 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php(3815): TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->INTincScript_process()
#19 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php(3782): TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->recursivelyReplaceIntPlaceholdersInContent()
#20 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Http/RequestHandler.php(187): TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->INTincScript()
#21 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/OutputCompression.php(46): TYPO3\CMS\Frontend\Http\RequestHandler->handle()
#22 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\OutputCompression->process()
#23 /var/www/typo3_src-9.5.31/typo3/sysext/adminpanel/Classes/Middleware/AdminPanelDataPersister.php(44): class@anonymous->handle()
#24 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Adminpanel\Middleware\AdminPanelDataPersister->process()
#25 /var/www/typo3_src-9.5.31/typo3/sysext/adminpanel/Classes/Middleware/AdminPanelRenderer.php(46): class@anonymous->handle()
#26 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Adminpanel\Middleware\AdminPanelRenderer->process()
#27 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/ContentLengthResponseHeader.php(45): class@anonymous->handle()
#28 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\ContentLengthResponseHeader->process()
#29 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/ShortcutAndMountPointRedirect.php(65): class@anonymous->handle()
#30 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\ShortcutAndMountPointRedirect->process()
#31 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/PrepareTypoScriptFrontendRendering.php(118): class@anonymous->handle()
#32 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\PrepareTypoScriptFrontendRendering->process()
#33 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/PageArgumentValidator.php(99): class@anonymous->handle()
#34 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\PageArgumentValidator->process()
#35 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/MaintenanceMode.php(53): class@anonymous->handle()
#36 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\MaintenanceMode->process()
#37 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/PageResolver.php(171): class@anonymous->handle()
#38 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\PageResolver->process()
#39 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/StaticRouteResolver.php(62): class@anonymous->handle()
#40 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\StaticRouteResolver->process()
#41 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php(86): class@anonymous->handle()
#42 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\SiteBaseRedirectResolver->process()
#43 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/PreviewSimulator.php(62): class@anonymous->handle()
#44 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\PreviewSimulator->process()
#45 /var/www/typo3_src-9.5.31/typo3/sysext/adminpanel/Classes/Middleware/AdminPanelInitiator.php(58): class@anonymous->handle()
#46 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Adminpanel\Middleware\AdminPanelInitiator->process()
#47 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/SiteResolver.php(68): class@anonymous->handle()
#48 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\SiteResolver->process()
#49 /var/www/typo3_src-9.5.31/typo3/sysext/adminpanel/Classes/Middleware/SqlLogging.php(49): class@anonymous->handle()
#50 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Adminpanel\Middleware\SqlLogging->process()
#51 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/BackendUserAuthenticator.php(95): class@anonymous->handle()
#52 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\BackendUserAuthenticator->process()
#53 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/FrontendUserAuthenticator.php(79): class@anonymous->handle()
#54 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\FrontendUserAuthenticator->process()
#55 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/TypoScriptFrontendInitialization.php(90): class@anonymous->handle()
#56 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\TypoScriptFrontendInitialization->process()
#57 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/EidHandler.php(50): class@anonymous->handle()
#58 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\EidHandler->process()
#59 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/PreprocessRequestHook.php(57): class@anonymous->handle()
#60 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\PreprocessRequestHook->process()
#61 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Middleware/NormalizedParamsAttribute.php(58): class@anonymous->handle()
#62 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Core\Middleware\NormalizedParamsAttribute->process()
#63 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Middleware/TimeTrackerInitialization.php(49): class@anonymous->handle()
#64 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(138): TYPO3\CMS\Frontend\Middleware\TimeTrackerInitialization->process()
#65 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/MiddlewareDispatcher.php(67): class@anonymous->handle()
#66 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/AbstractApplication.php(108): TYPO3\CMS\Core\Http\MiddlewareDispatcher->handle()
#67 /var/www/typo3_src-9.5.31/typo3/sysext/frontend/Classes/Http/Application.php(69): TYPO3\CMS\Core\Http\AbstractApplication->handle()
#68 /var/www/typo3_src-9.5.31/typo3/sysext/core/Classes/Http/AbstractApplication.php(120): TYPO3\CMS\Frontend\Http\Application->handle()
#69 /var/www/typo3_src-9.5.31/index.php(24): TYPO3\CMS\Core\Http\AbstractApplication->run()
#70 /var/www/typo3_src-9.5.31/index.php(25): {closure}()
#71 {main}
Report level key: 10
messageDebug:
Type: User Report Exception
SQL before evaluation: 1
SQL final:
SQL Params:
Report column index: 1
Report column name: title
Report column value: Edit date of last assessment
current sip:
array (
'__dbIndexData' => '1',
'form' => 'bachelor_last-assessment',
'r' => '318',
's' => '63078f07f3ab6',
'urlparam' => '__dbIndexData=1&form=bachelor_last-assessment&r=318',
)
Page Id: 53
Content Id 135
FE User testsa
</pre> QFQ - Bug #14531 (New): slaveId, sqlInsert and sqlUpdate should be renamedhttps://project.math.uzh.ch/issues/145312022-07-28T16:06:41ZNicola Chiapolini
<p><code>slaveId</code> , <code>sqlInsert</code> and <code>sqlUpdate</code> are a lot more generic then their name suggests. They should probably be called <code>condition</code>, <code>sqlIf</code>, <code>sqlElse</code></p> 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 #14305 (Closed): Inline Report editing does not create history entrieshttps://project.math.uzh.ch/issues/143052022-06-10T09:55:05ZNicola Chiapolini
<p>Inline Report edition does not create entries in the history of the typo3 CE, making the modification history useless</p> QFQ - Bug #14304 (Rejected): table sorter view safer does not workhttps://project.math.uzh.ch/issues/143042022-06-10T09:49:46ZNicola Chiapolini
<p>The following code</p>
<p>@<br />1.sql = SELECT '<th>Name</th><th>Type</th><th>Facutly</th><th>Uni</th>'<br />1.head = <table {{ 'orgs' AS _tablesorter-view-saver }} class="tablesorter tablesorter-filter tablesorter-column-selector" id="orgs"><br />1.rbeg = <thead class="qfq-sticky"><tr><br />1.rend = </tr></thead><tbody><br />1.tail = </tbody></table></p>
<p>1.10.sql = SELECT name_de, type, faculty, university FROM org_units<br />1.10.rbeg = <tr><br />1.10.fbeg = <td><br />1.10.fend = </td><br />1.10.rend = </tr><br />@</p>
<p>correctly shows the filter, column-selector and view-saver buttons (at least I think it does):<br /><img src="https://project.math.uzh.ch/attachments/download/6249/clipboard-202206101148-hwdvp.png" alt="" /></p>
<p>however I can not save the view. (I assume the unlabled button is the save button and I am just missing the font.)</p> QFQ - Bug #14303 (Closed): datetime broken with pickerhttps://project.math.uzh.ch/issues/143032022-06-10T08:52:55ZNicola Chiapolini
<p>We do have a lot of SQL date and datetime fields in our database, the corresponding forms use date and datetime form-elements.<br />Extension config: config.dateFormat = yyyy-mm-dd, so all input is YYYY-MM-DD and YYYY-MM-DD HH:mm respectively</p>
<p>When adding the relevant CSS and JS files, these fields are all broken.</p>
Without manual intervention:
<ul>
<li>the fields only show datepicker even for datetime fields</li>
<li>existing dates and newly selected dates end up like <code>2022-37-Fr</code> (when selecting 2022-06-10 or if the record in the DB contains that date)</li>
</ul>
Adding <code><br />dateFormat = YYYY-MM-DD HH:mm<br />datetimeSideBySide = true<br /></code> to <code>FormElement.parameter</code> of a datetime field:
<ul>
<li>date and time picker are shown correctly</li>
<li>datetime picked is displayed correctly</li>
<li>datetime is stored correctly</li>
<li>stored values from the record are not shown anymore, instead the filed is displayed as if empty</li>
</ul>
Wishes:
<ul>
<li>stored values should be loaded correctly</li>
<li>the default dateFormat should respect the global config (an not require a manual intervention on every single date or datetime field.)</li>
<li>datetimeSideBySide should be true for datetime fields</li>
</ul>
<p>Further minor wish: When the first field in a form is a date or datetime field, the picker is only opened after it looses and regains focus. It would be nice if the picker was opened on load directly. (but this is probably a Browser-Javascript problem.)</p> QFQ - Bug #14302 (Closed): Form-Field Dokumentation: datetime / extra brokenhttps://project.math.uzh.ch/issues/143022022-06-10T08:27:34ZNicola Chiapolini
<p><a class="external" href="http://docs.qfq.io/en/master/Form.html#type-datetime">http://docs.qfq.io/en/master/Form.html#type-datetime</a></p>
<p><img src="https://project.math.uzh.ch/attachments/download/6248/clipboard-202206101027-qqung.png" alt="" /></p> QFQ - Bug #14091 (New): inconsistent template path for twighttps://project.math.uzh.ch/issues/140912022-04-19T16:36:32ZNicola Chiapolini
<p>When using <code>10.twig = file:...</code> Twig looks for the template relative to the <site path> (i.e. the webroot)<br />instead of the project path (as given in <code>qfq.project.path.php</code>) where reports are located. <br />Twig prevents loading templates outside the configured pathes, so one can not just use <code>..</code> to get there, if it is outside the webroot.</p>
<p>(In addition, it would be nice, if _script was relative to the project path as well)</p> QFQ - Feature #14090 (New): Nützliche _script funktionenhttps://project.math.uzh.ch/issues/140902022-04-19T13:00:02ZNicola Chiapolini
<p>Ich habe eben wieder mit _script gespielt.</p>
<p>Funktionen die ich nützlich fände und die ich nicht gefunden habe:</p>
<ul>
<li>Ich möchte in meiner php-Funktion nicht nur auf einen Record sonder auf das ganze Resultat eines Queries zugreifen. <br />(Lässt sich erreichen, indem ich meine Funktion in einem Subquery aufrufe. Dann muss ich aber mein Zwischenergebnis jeweils über den Var-Store weiterreichen.)</li>
</ul>
<ul>
<li>Ich möchte gerne dem Var-Store nicht bloss einen einzelnen Wert sondern ganze Arrays hinzufügen und diese dann in einem späteren _script Aufruf oder in twig nutzen.<br />(für den _script-Aufruf funktioniert das mit (de)serialize, aber für Twig habe ich keine Lösung gefunden)</li>
</ul>
<p>Gibt es andere Workarounds für meine Wünsche bzw. habt ihr entsprechende erweiterungen geplant?</p> QFQ - 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 - Feature #13657 (Closed): Twig-Beispielehttps://project.math.uzh.ch/issues/136572022-01-14T12:00:29ZNicola Chiapolini
<ul>
<li>Nicola hat in seiner Mail vom 13.1.22 nochmal auf sein Twig Template vom 30.9.2019 hingewiesen.</li>
<li>Besprechung im Team ob wir den Report fuer FormEditor auf TWIG umstellen sollen.
<ul>
<li>CR: Nein, das ist der einzige QFQ Report Code den wir mitliefern und dient gleich als Anschauungsbeispiel. Wenn der zu kompliziert ist (TWIG lesen braucht Einarbeitung) ist das abschreckend.</li>
</ul></li>
</ul>
<p>-------------<br />Hoi Carsten</p>
<p>Ich habe heute Nachmittag zwei eurer Code-Beispiele mit Twig neu <br />implementiert. Du findest beide im Anhang.</p>
<p>(Beim FormEditor habe ich die Tabelle zudem noch etwas angepasst, da ich von <br />euren Spalten nicht überzeugt war. :-)</p>
<p>härzlichi Grüäss<br />Nicola</p> QFQ - Support #13107 (Closed): Fehler bei _script - Call to undefined function IMATHUZH\Qfq\Core\...https://project.math.uzh.ch/issues/131072021-10-02T07:57:58ZNicola Chiapolini
<p>Hoi Carsten</p>
<p>Ich wollte eben die _script-Column ausprobieren. Wenn ich euer Beispiel aus <br />der Doku umsetze bekomme ich aber den Fehler unten.</p>
<p>Any ideas?</p>
<p>härzlichi Grüäss<br />Nicola</p>
<p>UniqId:: 6156a20259e76<br />------------------------------------------------<br />toUser:: Function execution failed.<br />support:: Error message:<br />Call to undefined function IMATHUZH\Qfq\Core\Report\curl_init()</p>
<p>Function: my_function</p>
<p>Parameters:<br />Array<br />(<br />[a1] => Hello<br />[a2] => World<br />[F] => studentadmin/qfqscripts/example.php<br />[call] => my_function<br />[arg] => a1=Hello&a2=World<br />)</p>
<p>Timestamp:: 2021.10.01 07:52:02 +0200<br />Code:: 1<br />Message:: Function execution failed.<br />Report level key:: 10<br />Type:: User Report Exception<br />Report column index:: 1<br />Report column name:: _script<br />Report column value:: F:studentadmin/qfqscripts/example.php|call:my_function|<br />arg:a1=Hello&a2=World<br />current sip:: array ()<br />Page Id:: 9<br />Content Id:: 714<br />FE User:: nichia<br />File:: /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Exception/Thrower.php<br />Line:: 30<br />CWD:: /var/www/htdocs<br />IP Address:: 89.206.112.10<br />Stacktrace:: <br />#0 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/ColumnScript.php(82): <br />IMATHUZH\Qfq\Core\Exception\Thrower::userReportException()<br />#1 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(1057): <br />IMATHUZH\Qfq\Core\Report\ColumnScript::render()<br />#2 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(980): <br />IMATHUZH\Qfq\Core\Report\Report->renderColumn()<br />#3 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(683): <br />IMATHUZH\Qfq\Core\Report\Report->collectRow()<br />#4 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(249): <br />IMATHUZH\Qfq\Core\Report\Report->triggerReport()<br />#5 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/QuickFormQuery.php(1732): <br />IMATHUZH\Qfq\Core\Report\Report->process()<br />#6 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/QuickFormQuery.php(285): <br />IMATHUZH\Qfq\Core\QuickFormQuery->doReport()<br />#7 /var/www/htdocs/typo3conf/ext/qfq/Classes/Controller/QfqController.php(46): <br />IMATHUZH\Qfq\Core\QuickFormQuery->process()
==================================================</p> QFQ - Bug #12974 (New): Sanitize Queries in Action-Elementshttps://project.math.uzh.ch/issues/129742021-08-31T18:29:16ZNicola Chiapolini
<p>I just waisted an hour because qfq does not complain at all if the value after <code>sqlXXX = </code> is invalid. This should not happen.</p>
<p>QFQ should never silently ignore bad input unless it has been explicitly told to.</p> QFQ - Support #11769 (Closed): fehlende Tabelle in der Dokumentationhttps://project.math.uzh.ch/issues/117692020-12-17T16:00:34ZNicola Chiapolini
<p>unter<br /> <a class="external" href="http://docs.qfq.io/en/master/Variable.html#sanitize-class">http://docs.qfq.io/en/master/Variable.html#sanitize-class</a><br />fehlt die Tabelle mit den Klassen</p>
<pre>
For QFQ variables and FormElements:
Only in FormElement:
+------+------+--------------+
| auto | Form | Only sup ... |
</pre> 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 - Feature #10763 (New): form accessed and submitted despite logout?https://project.math.uzh.ch/issues/107632020-06-16T09:43:02ZNicola Chiapolini
<p>Wir hatten ein Problem in der DB, das ich auf folgende (annonymisierte) Log-Zeilen zurückführen konnte:</p>
<p><code><br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][INSERT INTO `phd_graduation` ( `shortname`, `student_id`, `name`, `firstname`, `salutation`, `birthday`, `mail_uzh`, `mail_private`, `nationality`, `subject_of_study`, `title_of_thesis`, `colloquium_start`, `disputation_start` ) VALUES ( 'aaaaaa', '12-345-678', 'Muster', 'Pauline', 'Frau', '1991-02-02', 'pauline.muster@uzh.ch', 'muster@example.com', 'FR', '50646022', 'A Thesis Title', '2020-08-04 13:00', '2020-08-04 13:00' )]<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][ID: 492 - affected rows: 1]<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][UPDATE `phd_graduation` SET `pdf_of_thesis` = 'studentadmin/phd/thesis/aaaaaa-thesis.pdf' WHERE id = '492']<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][Affected rows: 1]<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][UPDATE phd_graduation SET title_hash=MD5(title_of_thesis) WHERE shortname='aaaaaa']<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][Affected rows: 1]<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][UPDATE phd_graduation SET reg_done=NULL WHERE reg_done="0000-00-00 00:00:00"]<br />[2020.06.15 17:58:16 +0200][89.206.112.13][FE:aaaaaa,Page:8,tt:43,form:phd_reg-graduation][Affected rows: 0]<br />[2020.06.15 17:59:04 +0200][89.206.112.13][form:phd_reg-graduation][INSERT INTO `Dirty` (`sip`, `tableName`, `recordId`, `expire`, `recordHashMd5`, `tabUniqId`, `feUser`, `qfqUserSessionCookie`, `dirtyMode`, `remoteAddress`, `created`) VALUES ( '5ee79a9c90289','phd_graduation','492','2020-06-15 18:14:03','dfb854d090d8febd3b6d2e976c1c5f88','1593618907666','','6ba6k9hj4je4lgf2puhnmrsddh','exclusive','89.206.112.13','20200615175904' )]<br />[2020.06.15 17:59:04 +0200][89.206.112.13][form:phd_reg-graduation][ID: 20386 - affected rows: 1]<br />[2020.06.15 17:59:12 +0200][89.206.112.13][Page:8,tt:43,form:phd_reg-graduation][DELETE FROM `Dirty` WHERE `id`='20386' LIMIT 1]<br />[2020.06.15 17:59:12 +0200][89.206.112.13][Page:8,tt:43,form:phd_reg-graduation][Affected rows: 1]<br />[2020.06.15 17:59:12 +0200][89.206.112.13][Page:8,tt:43,form:phd_reg-graduation][INSERT INTO `FormSubmitLog` (`formData`, `sipData`, `clientIp`, `feUser`, `userAgent`, `formId`, `recordId`, `pageId`, `sessionId`, `created`)VALUES ('{"email":"","username":"","password":"","recordHashMd5":"dfb854d090d8febd3b6d2e976c1c5f88","reg_done-492":"2020-06-15 17:58:20","mail_private-492":"muster@example.com","title_of_thesis-492":"<p>A Thesis Title<\/p>","pdf_of_thesis-492":"5ee79a9c8ebcf","colloquium_start-492":"2020-08-04 13:00","disputation_start-492":"2020-08-04 13:00","_sipForTypo3Vars":"5ee79a9c90172"}', '{"birthday":"1991-02-02","firstname":"Pauline","form":"phd_reg-graduation","mail_uzh":"pauline.muster@uzh.ch","name":"Muster","nationality":"FR","r":"492","salutation":"Frau","shortname":"aaaaaa","student_id":"12-345-678","subject_of_study":"50646067","s":"5ee79a9c90289","urlparam":"birthday=1991-02-02&firstname=Pauline&form=phd_reg-graduation&mail_uzh=pauline.muster@uzh.ch&name=Muster&nationality=FR&r=492&salutation=Frau&shortname=aaaaaa&student_id=12-345-678&subject_of_study=50646067"}', '89.206.112.13', '', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36', '1000', '492', '8', '6ba6k9hj4je4lgf2puhnmrsddh', NOW())]<br />[2020.06.15 17:59:12 +0200][89.206.112.13][Page:8,tt:43,form:phd_reg-graduation][ID: 42051 - affected rows: 1]<br />[2020.06.15 17:59:12 +0200][89.206.112.13][Page:8,tt:43,form:phd_reg-graduation][UPDATE `phd_graduation` SET `shortname` = 'aaaaaa', `student_id` = '12-345-678', `name` = 'Muster', `firstname` = 'Pauline', `salutation` = 'Frau', `birthday` = '1991-02-02', `mail_uzh` = 'pauline.muster@uzh.ch', `mail_private` = 'muster@example.com', `nationality` = 'FR', `subject_of_study` = '50646067', `title_of_thesis` = 'A Thesis Title', `reg_done` = '2020-06-15 17:58:20', `colloquium_start` = '2020-08-04 13:00', `disputation_start` = '2020-08-04 13:00' WHERE id = '492']<br /></code></p>
<p>Für die zweite Hälfte des Logs fehlt der feUser - es scheint der User hat/wurde ausgeloggt. Das Problem damit ist, dass die SIP-Links für die Formulare nur mit Login sichtbar sind und das Formular deshalb davon ausgeht, dass der FE-User definiert ist. Natürlich ist es unser Fehler, dass wir das im Formular nicht abfangen. Allerdings bricht QFQ sowohl hier wie auch bei <a class="issue tracker-1 status-4 priority-2 priority-default" title="Bug: Formular trotz Timeout gespeichert (Feedback)" href="https://project.math.uzh.ch/issues/9898">#9898</a> das intuitive Verständnis von Login/Logout. Sicherer und User-freundlicher wäre es, wenn ein Logout sich sofort auf alle SIP und Formulare auswirkt. Konkret also.</p>
<p>Aufgefallen ist uns das ganze, weil in der letzten Zeile `subject_of_study` falsch ist (da das in einem Extra-Feld mit einem Query <code>... WHERE shortname='{{ feUser:TE }}'</code> gefüllt wird)</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 #10658 (New): processReadOnly brokenhttps://project.math.uzh.ch/issues/106582020-05-27T15:39:36ZNicola Chiapolini
<p>In QFQ 20.4.0, processReadOnly seems not to work.</p> QFQ - Bug #9898 (Feedback): Formular trotz Timeout gespeicherthttps://project.math.uzh.ch/issues/98982020-01-17T09:02:45ZNicola Chiapolini
<p>In den letzten Monaten ist es schon zwei mal vorgekommen, dass ein Formular gespeichert wurde, obwohl das Frontend-Login scheinbar abgelaufen war. Scheinbar, weil ich das nur aus Hinweisen schliesse: zum Einen wurde der Report auf der "Forward URL" des Formulars nicht ausgeführt (der feuert ein weiteres UPDATE query und sendet ein E-Mail) und zum Anderen zeigt das sql.log einen neuen Login direkt nach dem speichern (vgl. unten)</p>
<p>Ich verstehe aber auch nicht wirklich, weshalb das Frontend-Login abläuft. Die Typo3 Config ist <br /><pre>
[FE][lifetime] = 0
[FE][sessionDataLifetime] = 86400
[FE][permalogin] = 0
</pre><br />und auch <code>session.gc_maxlifetime=86400</code></p>
<p>das annonymisierte SQL Log:<br /><pre>
[2020.01.16 11:45:59 +0100][130.60.95.112][FE:SHORT,Page:84,tt:171,level:40.10][UPDATE typo3_studentadmin.fe_users SET usergroup='4,1' WHERE username='SHORT' AND deleted='0' LIMIT 1]
[2020.01.16 11:45:59 +0100][130.60.95.112][FE:SHORT,Page:84,tt:171,level:40.10][Affected rows: 1]
[2020.01.16 11:48:06 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][INSERT INTO Dirty (`sip`, `tableName`, `recordId`, `expire`, `recordHashMd5`, `feUser`, `qfqUserSessionCookie`, `dirtyMode`, `remoteAddress`, `created`) VALUES ( '5e203efef41d2','phd_graduation','400','2020-01-16 12:03:05','c4472b22659d70b6861455db23ca999c','SHORT','s6kua7c734irt5f2mhsi7m1k7t','exclusive','130.60.95.112','20200116114806' )]
[2020.01.16 11:48:06 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][ID: 13539 - affected rows: 1]
[2020.01.16 12:03:07 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][DELETE FROM Dirty WHERE id='13539' LIMIT 1]
[2020.01.16 12:03:07 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][Affected rows: 1]
[2020.01.16 12:03:07 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][INSERT INTO Dirty (`sip`, `tableName`, `recordId`, `expire`, `recordHashMd5`, `feUser`, `qfqUserSessionCookie`, `dirtyMode`, `remoteAddress`, `created`) VALUES ( '5e203efef41d2','phd_graduation','400','2020-01-16 12:18:06','c4472b22659d70b6861455db23ca999c','SHORT','s6kua7c734irt5f2mhsi7m1k7t','exclusive','130.60.95.112','20200116120307' )]
[2020.01.16 12:03:07 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][ID: 13546 - affected rows: 1]
[2020.01.16 15:53:01 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][DELETE FROM Dirty WHERE id='13546' LIMIT 1]
[2020.01.16 15:53:01 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][Affected rows: 1]
[2020.01.16 15:53:01 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][INSERT INTO Dirty (`sip`, `tableName`, `recordId`, `expire`, `recordHashMd5`, `feUser`, `qfqUserSessionCookie`, `dirtyMode`, `remoteAddress`, `created`) VALUES ( '5e203efef41d2','phd_graduation','400','2020-01-16 16:08:00','c4472b22659d70b6861455db23ca999c','SHORT','s6kua7c734irt5f2mhsi7m1k7t','exclusive','130.60.95.112','20200116155301' )]
[2020.01.16 15:53:01 +0100][130.60.95.112][FE:SHORT,form:phd_check-head][ID: 13574 - affected rows: 1]
[2020.01.16 15:55:46 +0100][130.60.95.112][FE:SHORT,Page:19,tt:48,form:phd_check-head][DELETE FROM Dirty WHERE id='13574' LIMIT 1]
[2020.01.16 15:55:46 +0100][130.60.95.112][FE:SHORT,Page:19,tt:48,form:phd_check-head][Affected rows: 1]
[2020.01.16 15:55:46 +0100][130.60.95.112][FE:SHORT,Page:19,tt:48,form:phd_check-head][INSERT INTO FormSubmitLog (formData, sipData, clientIp, feUser, userAgent, formId, recordId, pageId, sessionId, created)VALUES ('{"email":"","username":"","password":"","recordHashMd5":"c4472b22659d70b6861455db23ca999c","nodb_check-student-400":"1","nodb_check-committee-400":"1","nodb_student-info-400":"STUDENT","colloquium_start-400":"2020-03-05 15:00","colloquium_duration-400":"01:00","colloquium_place-400":"WAD P106a","disputation_start-400":"2020-03-05 16:00","disputation_duration-400":"01:00","disputation_place-400":"WAD P106a","_sipForTypo3Vars":"5e203efef412a"}', '{"__dbIndexData":"1","check_head_done":"2020-01-16 11:46:22","form":"phd_check-head","r":"400","s":"5e203efef41d2","urlparam":"__dbIndexData=1&check_head_done=2020-01-16 11:46:22&form=phd_check-head&r=400"}', '130.60.95.112', 'SHORT', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36', '1002', '400', '19', 's6kua7c734irt5f2mhsi7m1k7t', NOW())]
[2020.01.16 15:55:46 +0100][130.60.95.112][FE:SHORT,Page:19,tt:48,form:phd_check-head][ID: 31466 - affected rows: 1]
[2020.01.16 15:55:46 +0100][130.60.95.112][FE:SHORT,Page:19,tt:48,form:phd_check-head][UPDATE `phd_graduation` SET `check_head_done` = '2020-01-16 11:46:22', `colloquium_start` = '2020-03-05 15:00', `colloquium_duration` = '01:00', `colloquium_place` = 'WAD P106a', `disputation_start` = '2020-03-05 16:00', `disputation_duration` = '01:00', `disputation_place` = 'WAD P106a' WHERE id = '400']
[2020.01.16 15:55:46 +0100][130.60.95.112][FE:SHORT,Page:19,tt:48,form:phd_check-head][Affected rows: 1]
[2020.01.16 15:55:50 +0100][130.60.95.112][FE:SHORT,Page:84,tt:171,level:40.10][UPDATE typo3_studentadmin.fe_users SET usergroup='4,1' WHERE username='SHORT' AND deleted='0' LIMIT 1]
[2020.01.16 15:55:50 +0100][130.60.95.112][FE:SHORT,Page:84,tt:171,level:40.10][Affected rows: 1]
</pre></p>
<p><code>UPDATE typo3_studentadmin.fe_users</code> feuert beim Login</p>
<p>Any Ideas wo das Problem herkommt und wie ich das vermeiden kann? (und betrifft das wirklich nur uns?)</p> QFQ - Feature #9394 (New): REST: allow for non numerical ids in get requestshttps://project.math.uzh.ch/issues/93942019-10-18T12:48:40ZNicola Chiapolini
<p>we want to use a REST API to transfer student data. So the best common identifier would be the shortname, but QFQ does not allow for a text in the id...</p>
<p>(We can probably work around this by using the student id and removing the "-" signes, but this is not really elegant)</p> QFQ - Bug #9281 (Feedback): Allow STRICT_TRANS_TABLEShttps://project.math.uzh.ch/issues/92812019-10-02T09:08:00ZNicola Chiapolini
<p>MariaDB > 10.2.4 (Debian Buster comes with 10.3) has STRICT_TRANS_TABLES set by default. (see <a class="external" href="https://mariadb.com/kb/en/library/documentation/mariadb-administration/variables-and-modes/sql-mode/">https://mariadb.com/kb/en/library/documentation/mariadb-administration/variables-and-modes/sql-mode/</a>)<br />This breaks QFQ as no defaults are set for text columns in Form or FormElement.</p>
<p>Setting a default for these tables does work but has the ugly side-effect that on load the QFQ-Form Editor shows two single quotes as default value for all text fields...<br />A better solution is to allow all non-mandatory fields without default values to be NULL.</p>
<pre>
ALTER TABLE `Form`
CHANGE `noteInternal` `noteInternal` text COLLATE 'utf8_general_ci' NULL AFTER `title`,
CHANGE `multiSql` `multiSql` text COLLATE 'utf8_general_ci' NULL AFTER `multiMode`,
CHANGE `parameter` `parameter` text COLLATE 'utf8_general_ci' NULL AFTER `bsNoteColumns`,
CHANGE `parameterLanguageA` `parameterLanguageA` text COLLATE 'utf8_general_ci' NULL AFTER `parameter`,
CHANGE `parameterLanguageB` `parameterLanguageB` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageA`,
CHANGE `parameterLanguageC` `parameterLanguageC` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageB`,
CHANGE `parameterLanguageD` `parameterLanguageD` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageC`;
ALTER TABLE `FormElement`
CHANGE `modeSql` `modeSql` text COLLATE 'utf8_general_ci' NULL AFTER `mode`,
CHANGE `note` `note` text COLLATE 'utf8_general_ci' NULL AFTER `rowLabelInputNote`,
CHANGE `adminNote` `adminNote` text COLLATE 'utf8_general_ci' NULL AFTER `note`,
CHANGE `value` `value` text COLLATE 'utf8_general_ci' NULL AFTER `placeholder`,
CHANGE `sql1` `sql1` text COLLATE 'utf8_general_ci' NULL AFTER `value`,
CHANGE `parameter` `parameter` text COLLATE 'utf8_general_ci' NULL AFTER `sql1`,
CHANGE `parameterLanguageA` `parameterLanguageA` text COLLATE 'utf8_general_ci' NULL AFTER `parameter`,
CHANGE `parameterLanguageB` `parameterLanguageB` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageA`,
CHANGE `parameterLanguageC` `parameterLanguageC` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageB`,
CHANGE `parameterLanguageD` `parameterLanguageD` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageC`,
CHANGE `clientJs` `clientJs` text COLLATE 'utf8_general_ci' NULL AFTER `parameterLanguageD`;
</code></pre>
<p>an alternative workaround is to deactivate STRICT_TRANS_TABLES by setting<br /><code>[init] => SET names utf8; SET sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";</code> <br />in the extension config of qfq (this might also be needed for existing installations as upgrading large databases where no care was used on allowing NULL or setting defaults is a pain)</p> QFQ - Bug #9274 (Closed): PHP Warnung mit PHP 7.3https://project.math.uzh.ch/issues/92742019-10-01T14:44:42ZNicola Chiapolini
<p>Nach meinem Debian-Upgrade eben triggert autocron jede minute die folgende Warnung:</p>
<p><code>PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Store/Store.php on line 801</code></p>
<p>die entsprechende Zeile zu "break" ändern, löst das Problem.</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 #9121 (New): sip links have r and __dbIndexData sethttps://project.math.uzh.ch/issues/91212019-09-13T13:52:57ZNicola Chiapolini
<p>If a link is using SIP, the <code>r=0</code> and <code>__dbIndexData=1</code> are defined even if not specified.</p>
<p>Possible Problems:</p>
<ul>
<li>lazy coders like me do not change the lookup-order, so the r from SIP might hide r from the expected stores (especially when using r inside reused content elements).</li>
<li>if no data is passed on, removing the sip rendering is ok, but one needs to remember to add it back if one adds data later (I use sip for all links)</li>
</ul> QFQ - Bug #9020 (Some day maybe): radio mit buttonClass und dynamicUpdate lassen sich nicht kombi...https://project.math.uzh.ch/issues/90202019-09-04T12:55:38ZNicola Chiapolini
<p>Wenn ich meinem Radio-Element eine buttonClass gebe um die Bootstrap-Buttons zu erhalten, funktioniert dynamic update nicht mehr.</p> QFQ - Feature #9019 (Closed): Unveränderte Formulare speichern https://project.math.uzh.ch/issues/90192019-09-04T12:54:07ZNicola Chiapolini
<p>Ich habe ein Formular, das in einem Grossteil der Fälle unverändert gespeichert werden kann. Leider wird der Save-Button aber erst aktiviert, wenn dich etwas verändert habe. Ein entsprechender Form-Parameter wäre da praktisch.</p> QFQ - Bug #9013 (New): Error in Twig template not handledhttps://project.math.uzh.ch/issues/90132019-09-04T08:28:17ZNicola Chiapolini
<p>Bei einem Fehler im Twig-Template wird die "Oops, an errro occured..." Meldung angezeigt und der Debug-Output ist nirgends sichtbar. (analog zu <a class="issue tracker-1 status-5 priority-2 priority-default closed" title="Bug: Oops, an error occurred! Code: 20181523130602aa65c6ca - Fehler in config.qfq.ini (Closed)" href="https://project.math.uzh.ch/issues/6216">#6216</a>)</p> QFQ - Feature #8962 (New): allow for form fields with identical nameshttps://project.math.uzh.ch/issues/89622019-08-29T19:41:37ZNicola Chiapolini
<p>We have a form with three Action-Elements all pointing to the same column. Each of them calculates the value based on a different dynamic-update form-field (restricted via requiredList).<br />This works perfectly, but I need to adjust the name directly in the database...</p>
<p>Could this check be removed? (At least for action elements, but I can imagine this to be useful even with native dynamic-update elements.)</p> QFQ - Support #8486 (Closed): html2pdf optionalhttps://project.math.uzh.ch/issues/84862019-06-05T15:17:58ZNicola Chiapolini
<ul>
<li>Ticket erfasst durch ME, nach muendlicher Mitteilung von Nicola.</li>
<li>Html2Pdf muss installiert sein damit qfq laeuft, auch wenn es nicht benutzt wird. (nach Nicola)</li>
</ul>
<p>Todo: html2pdf in Download.php nur dann laden wenn tatsaechlich auch ein pdf download link benutzt wird</p> QFQ - Bug #8316 (Closed): Documentation/Behaviour for Nested Queries and Record-Store confusinghttps://project.math.uzh.ch/issues/83162019-05-12T19:30:59ZNicola Chiapolini
<p>We got hit by a bug in our setup today, caused by the fact that an Store-Variable will remember the previous subquery.</p>
<p>e.g.</p>
<p>Given</p>
<pre>
Tabel: persons
pid | name
----+----------
1 | Carsten
2 | Nicola
Table: addresses
pid | address
----+---------
1 | foo
</pre>
<p>Then<br /><code>10.sql = SELECT pid AS _pid FROM persons<br />10.2.sql = SELECT address AS _adr FROM addresses WHERE pid={{pid:R}} <br />10.3.sql = SELECT {{pid:R}}, {{adr:RE}}<br /></code></p>
<p>prints<br /><code>1 foo<br />2 foo<br /></code></p>
<p>even though there is no address defined for 2, as {{adr}} still contains the result from the last iteration (pid = 1). This behavior is mentioned with <em>The STORE_RECORD will always be merged with previous content.</em> But it is nevertheless unexpected for a loop - and the example in the documentation is not very helpful either (I still don't understand what the explanation wants to tell me)</p>
<p>So the correct setup is<br /><code>10.sql = SELECT pid AS _pid FROM persons<br />10.1.sql = SELECT '' AS adr<br />10.2.sql = SELECT address AS _adr FROM addresses WHERE pid={{pid:R}} <br />10.3.sql = SELECT {{pid:R}}, {{adr:RE}}<br /></code></p> QFQ - Feature #8217 (New): if-elseif-else constructhttps://project.math.uzh.ch/issues/82172019-04-16T13:59:06ZNicola Chiapolini
<p>Prio2 für Nicola</p>
<p>Da if-elseif-else situationen ziemlich häuffig vorkommen, wäre es schön, wenn QFQ das direkt anbieten würde und wir nicht jeweils ein Pseudo-Query schreiben müssten.<br />(Intern könnte das aber natürlich problemlos über ein Pseudo-Query gelöst werden).</p>
<p>Mein Vorschlag für die Syntax wäre:</p>
<pre><code><code>10.if = "{{feUser:TE:alnumx:s}}"="nchiapol" <br />10 {<br />1.sql = SELECT shortname, mail FROM persons_ldap<br />[...]<br />}<br />11.elseif = "{{feUser:TE:alnumx:s}}"="crose" <br />[...]<br />12.else<br />[...]</code></code></pre>
<p>sollte identisch sein mit</p>
<pre><code><code>10.sql = SELECT 1 AS _ FROM (SELECT "") AS fake WHERE ("{{feUser:TE:alnumx:s}}"="nchiapol") LIMIT 1<br />10.1.sql = SELECT shortname FROM persons_ldap<br />[...]<br />11.sql = SELECT 1 AS _ FROM (SELECT "") AS fake WHERE NOT ("{{feUser:TE:alnumx:s}}"="nchiapol") AND ("{{feUser:TE:alnumx:s}}"="crose") LIMIT 1<br />[...]<br />12.sql = SELECT 1 AS _ FROM (SELECT "") AS fake WHERE NOT ("{{feUser:TE:alnumx:s}}"="nchiapol") OR ("{{feUser:TE:alnumx:s}}"="crose") LIMIT 1<br />[...]</code></code></pre>
<p>Falls für if-elseif-else statt 10-11-12 drei mal 10 verwendet werden kann, wäre das natürlich noch eleganter. Aber ich glaube schon diese Lösung wäre ein grosser Fortschritt.</p>
<p>Vorteile: * viel intuitivere Syntax * leichter lesbar * falls später Probleme entdeckt werden, können diese Zentral behoben werden.</p>
<p>Use Cases von Nicola: <a class="attachment" href="https://project.math.uzh.ch/attachments/3804">use-cases_conditions-functions.txt</a></p> QFQ - Support #8108 (Closed): Add an empty element to a Select-Listhttps://project.math.uzh.ch/issues/81082019-03-21T11:28:20ZNicola Chiapolini
<p>I do have a select-element with items <br /> <code>itemList=Prof. Dr.,PD Dr.,Dr.</code></p>
<p>Now we need to add an option for people without a title where the data base should store an empty string. <br />I could not figure out how to specify this. Explicitly giving keys, does not help as empty keys are not allowed either.</p> QFQ - Support #7852 (Closed): Bad User-Feedback when Store: USER - U times outhttps://project.math.uzh.ch/issues/78522019-02-11T11:06:51ZNicola Chiapolini
<p>On Login, we fill several constants into U. When a browser session is inactive for a few minutes, <br />the store gets lost, and the queries using the constants fail.</p>
<p>However the user only gets a generic SQL Error message. This generates several support requests <br />that can be solved by logging out and back in.</p>
<p>Could users automatically be informed about the timeout?</p>
Ideas for solutions
<ul>
<li>We could add an element to each page that checks for some constant and redirects otherwise (ugly and probably often forgotten)</li>
<li>Put something in QFQ that checks if the session store expires</li>
<li>Auto-Logout users from Typo3 after the correct amount of time</li>
</ul> QFQ - Bug #7838 (Closed): sqlValidate does not work with inner queryhttps://project.math.uzh.ch/issues/78382019-02-07T13:12:43ZNicola Chiapolini
<p>QFQ-Version: 19.01.1</p>
<p>I do have a beforeSave element with the following validation setup:<br /><code><br />sqlValidate={{!SELECT id FROM `phd_milestone_subrecords` WHERE milestone_id='{{id:R0}}' LIMIT {{SELECT subrecords FROM _milestone_types WHERE id='{{type:R0}}' }} }}<br />expectRecords = {{SELECT subrecords FROM _milestone_types WHERE id='{{type:R0}}' }}<br />messageFail = Wrong number of entries.<br /></code></p>
<p>This does not raise the error even if the needed number of subrecords are missing. When replacing the inner query with 1 everything works. <br />Other places where I use inner queries seem to work correctly.</p>
<p>The problem can be avoided with:<br /><code><br />sqlValidate={{!SELECT id FROM `phd_milestone_subrecords` WHERE milestone_id='{{id:R0}}' }}<br />expectRecords = {{SELECT GROUP_CONCAT(seq) FROM (SELECT seq FROM seq_0_to_30) AS positions WHERE seq >= (SELECT subrecords FROM _milestone_types WHERE id='{{type:R0}}') }} <br />messageFail = Wrong number of entries.<br /></code></p>
<p>I have not investigated this much further, but am happy to create a Minimal Not-Working Example if needed :-)</p> QFQ - Feature #7744 (Closed): Confirm delete for Subrecordshttps://project.math.uzh.ch/issues/77442019-01-25T15:02:30ZNicola Chiapolini
<p>It would be nice if the delete button shown by a form-element of type "subrecord" could trigger a confirmation-alert to prevent accidental deletes. (ideally one should be able to activate/deactivate this via paramerters).</p>
<p>(If this is implemented, I did not find it in the documentation)</p> QFQ - Support #7724 (Closed): qfq Elemente die via Referenz eingebunden werden, werden von Typo3 ...https://project.math.uzh.ch/issues/77242019-01-23T15:45:27ZNicola Chiapolini
<p>Wir haben ein mit QFQ manuell zusammengestelltes Menu. Das Content Element liegt in einem Storage Folder und wird dann mit einem "Insert Records" Content Element auf den relevanten Seiten eingebunden.<br />Änderungen am Menu werden erst nach dem löschen des FE-Caches auf den relevanten Seiten übernommen. Ich schliesse deshalb, dass das aus dem Cache ausgeliefert wird - und das kann wohl noch diverse weitere Probleme verursachen, insbesondere im Hinblick auf die SIP.</p>
<p>Habt ihr einen Vorschlag, wie das am Besten gelöst wird? Abgesehen davon einfach das Caching gleich ganz auszuschalten.</p> QFQ - Support #7677 (Closed): v19.01.1 -- Install via Extension manager broken - leading '0' in m...https://project.math.uzh.ch/issues/76772019-01-18T15:13:46ZNicola Chiapolini
<p><code><br />The T3X file "https://typo3.org/fileadmin/ter/q/f/qfq_19.01.1.t3x" could not be fetched. Possible reasons: network problems, allow_url_fopen is off, cURL is not enabled in Install Tool.<br /></code></p>
<p>Link on <a class="external" href="https://extensions.typo3.org/extension/qfq/">https://extensions.typo3.org/extension/qfq/</a> returns a file <code>qfq_19.1.1.t3x</code> (without 0 in month)</p> QFQ - Bug #7652 (Closed): messageFail not displayed if user is not logged in in BEhttps://project.math.uzh.ch/issues/76522019-01-15T11:51:24ZNicola Chiapolini
<p>Our form is validated with a beforeSave-Element. And the validation triggers correctly on errors. However, messageFail is only shown if a BE login exists. (See attached screenshots)</p>
<p>QFQ-Version: 18.10.3</p> QFQ - Feature #7342 (New): add content = hide_thishttps://project.math.uzh.ch/issues/73422018-11-23T10:19:19ZNicola Chiapolini
<p>When using a super-/subquery combination as an if-then construct, I want to hide the content of the super-query but show the result of sub-queries. At the moment this is not possible with the <code>content</code>-keyword. It would be nice to have the option to not hide the subqueries.</p>
<p>Personlly I would think it most logical to make this the default for <code>hide</code> and use e.g. <code>hide_all</code> to include subqueries. For backwards compatibility however, the new behaviour should probably get the new keyword. I suggest something like <code>hide_this</code></p> QFQ - Bug #7305 (Closed): Typo3 BE Editor screws up with indentationhttps://project.math.uzh.ch/issues/73052018-11-20T13:13:10ZNicola Chiapolini
<p>When I edit a report in the backend newlines usually start somewhere <br />in the middle of the editor window (i.e. the automatic indentation adds<br />a lot of unneeded spaces). It's rather annoying :-)</p>
<p>The number of spaces is not constant and I could not yet figure out<br />what the number of spaces depends on.</p> QFQ - Bug #7014 (New): Sending invalid emails succeeds when debug.redirectAllMailTo is sethttps://project.math.uzh.ch/issues/70142018-10-16T14:34:13ZNicola Chiapolini
<p>When <code>debug.redirectAllMailTo</code> is set, mails work without error even if they are sent to invalid mail addresses. <br />This makes spotting problems in development harder. It's probably hard to avoid this, but it might be useful to highlight this downside in the documentation.</p>
<p>(<a class="issue tracker-1 status-5 priority-2 priority-default closed" title="Bug: Messed up query numbering (Closed)" href="https://project.math.uzh.ch/issues/7013">#7013</a> prevented the sending of emails in our latest feature in production. Since the feature sends several identical emails we never noticed the mails with invalid to adresses in development - and it took a while to realize the bug really was present there as well.)</p> QFQ - Bug #7013 (Closed): Messed up query numberinghttps://project.math.uzh.ch/issues/70132018-10-16T14:20:55ZNicola Chiapolini
<p>(Running version: qfq 18.6.1)</p>
<p><code><br />1.sql = SELECT name AS _first FROM Form LIMIT 1<br />10.sql = SELECT name AS _second FROM Form LIMIT 1<br />10.1.sql = SELECT "hallo {{second:R::s}}" <br />10.1.head = <ul><br />10.1.tail = </ul><br />10.1.rbeg = <li><br />10.1.rend = </li><br /></code></p>
Will display a list with two entries, where only in the second the variable is replaced correctly:
<ul>
<li>hallo {{second:R::s}}</li>
<li>hallo absolventenLogin</li>
</ul>
<p>Using <code>5.sql = </code> in the first line fixes the problem, so it seems the subquery call somehow messes up the numbered queries...</p> QFQ - Feature #7012 (Closed): Memory Limit for File download (using wrong function)https://project.math.uzh.ch/issues/70122018-10-16T13:48:57ZNicola Chiapolini
<p>(Running version: qfq 18.6.1)</p>
<p>Downloading large (250 Mb) files triggers an PHP Error:<br /><code>PHP Fatal error: Allowed memory size of 134217728 bytes exhausted</code></p>
<p>To fix this one should use <code>readfile()</code> (see <a class="external" href="http://php.net/manual/en/function.readfile.php">http://php.net/manual/en/function.readfile.php</a>)</p>
<p>Patch for <code>typo3conf/ext/qfq/qfq/qfq/report/Download.php</code> attached.</p>