Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892022-09-20T13:10:52ZProject @ iMath
Redmine 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 #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 #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 - 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 - 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 #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 - Bug #9355 (Closed): Column Header in MailLog zu schmalhttps://project.math.uzh.ch/issues/93552019-10-14T10:23:17ZNicola Chiapolini
<p>Bei einem Mail mit zwei Anhängen sind wir eben an die Zeichengrenze der "Header" Column gestossen (vgl. Unten). Wir haben die Spaltenbreite nun einfach auf 900 erhöht. Damit klappt das Mail. Allerdings wäre es schön, wenn der Logging-Code dieses Problem abfangen und korrekt lösen könnte.</p>
<pre>
==================================================
UniqId:: 5da449a5027f8
------------------------------------------------
toUser:: SQL error
os:: [ mysqli: 1406 ] Data too long for column 'header' at row 1
Timestamp:: 2019.10.14 12:10:45 +0200
Code:: 2001
Message:: SQL error
Report level key:: 10.12
Type:: Db Exception
SQL final:: INSERT INTO MailLog (`receiver`, `cc`, `bcc`, `sender`, `subject`, `body`, `header`, `attach`, `grId`, `xId`, `xId2`, `xId3`, `src`, `modified`, `created`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW() )
SQL Params:: array (
0 => 'it-dekanat@mnf.uzh.ch',
1 => '',
2 => '',
3 => 'it-dekanat@mnf.uzh.ch',
4 => 'Graduation Master',
5 => 'All QFQ outgoing mails are caught and redirected to you.
Original receiver(s) are ...
TO: baum@example.org
CC:
BCC:
SENDER: nicola.chiapolini@mnf.uzh.ch
WEBSITE: https://mnf-32.uzh.ch
==========================================
Dear Peter Baum
We have received all required documents from you. Your degree will be validated on 2019-12-13. You will receive a confirmation of your degree by mail within the next few days.
Please reserve Friday, 2020-10-05 from 5.00 pm for the graduation ceremony. We look forward to welcoming you and your companions to this event. Two weeks before the ceremony you will receive an invitation email from us.
If the final documents are ready for dispatch before the ceremony, we will send them to you by registered mail so that you can apply with the complete documents or present them to your employer as soon as possible.
Please do not hesitate to contact us if you have any questions (044 635 40 07) or come and see us during our opening hours (Tuesdays + Thursdays, 09.45 - 12.30 + 13.45 - 16.15 and Wednesdays, 09.45 - 12.00; closed in the afternoons during the lecture-free period).
best wishes
Office of Students Affairs ',
6 => 'OoO:on
Attachment: 0=0=F:studentadmin/msc/confirmations/msc_uww_confirmation_bama_en_7a2c1ff9e6fce809ab437967c23d9188.pdf&1=d:msc_uww_confirmation_en.pdf&1=0=F:studentadmin/msc/confirmations/msc_uww_confirmation_bama_de_7a2c1ff9e6fce809ab437967c23d9188.pdf&1=d:msc_uww_confirmation_de.pdf',
7 => '-a /tmp/qfq.temp.T3WJjN/msc_uww_confirmation_en.pdf -a /tmp/qfq.temp.TFzybf/msc_uww_confirmation_de.pdf',
8 => 0,
9 => 0,
10 => 0,
11 => 0,
12 => 'Report: T3 pageId=125, T3 ttcontentId=279, Level=10.12',
)
current sip:: array (
'r' => '0',
'student' => 'msc_uww',
's' => '5da423e88ddbf',
'urlparam' => 'r=0&student=msc_uww',
)
Page Id:: 125
Content Id:: 279
FE User:: hewebe
File:: /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Database/Database.php
Line:: 397
IP Address:: 130.60.23.163
Stacktrace::
#0 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Database/Database.php(208): IMATHUZH\Qfq\Core\Database\Database->prepareExecute('INSERT INTO Mai...', Array, '', Array, '')
#1 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/SendMail.php(315): IMATHUZH\Qfq\Core\Database\Database->sql('INSERT INTO Mai...', 'regular', Array)
#2 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/SendMail.php(100): IMATHUZH\Qfq\Core\Report\SendMail->mailLog(Array, '-a /tmp/qfq.tem...')
#3 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(1083): IMATHUZH\Qfq\Core\Report\SendMail->process(Array)
#4 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(799): IMATHUZH\Qfq\Core\Report\Report->renderColumn(0, 'sendmail', 'to:baum@example...', '10.12', 1, true)
#5 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(566): IMATHUZH\Qfq\Core\Report\Report->collectRow(Array, Array, '10.12', 1, Array)
#6 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(572): IMATHUZH\Qfq\Core\Report\Report->triggerReport(2, Array, 2)
#7 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/Report/Report.php(243): IMATHUZH\Qfq\Core\Report\Report->triggerReport()
#8 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/QuickFormQuery.php(1624): IMATHUZH\Qfq\Core\Report\Report->process('5.sql = SELEC...')
#9 /var/www/htdocs/typo3conf/ext/qfq/Classes/Core/QuickFormQuery.php(248): IMATHUZH\Qfq\Core\QuickFormQuery->doReport()
#10 /var/www/htdocs/typo3conf/ext/qfq/Classes/Controller/QfqController.php(43): IMATHUZH\Qfq\Core\QuickFormQuery->process()
==================================================
</pre> QFQ - Bug #9300 (Closed): creating rest forms brokenhttps://project.math.uzh.ch/issues/93002019-10-04T19:18:23ZNicola Chiapolini
<p>in 19.9.1 creating rest forms is broken. The "Permit REST" can not be stored as the column in the database is called `restMethod` while the field in the form has name= 'prestMethod' including a p. Correcting the field name fixes the</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 #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 #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 - Bug #8113 (Closed): Fehler in Dokumentation für Default valuehttps://project.math.uzh.ch/issues/81132019-03-22T06:57:21ZNicola Chiapolini
<p>Aktuell: <br /><code>{{SELECT IF('{{column:RE}}'='','custom default',{{column:R}}) }}</code></p>
<p>Korrekt:<br /><code>{{SELECT IF('{{column:RE}}'='','custom default','{{column:R}}') }}</code></p>
<p>('' um den "else"-Wert)</p>
<p>PS: Könnte Default nicht als separates Feld angeboten werden? Das würde ziemlich viele Wiederholungen vermeiden.</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 - Feature #8043 (Closed): Escape Class "Exception"https://project.math.uzh.ch/issues/80432019-03-14T13:32:54ZNicola Chiapolini
<p>When eine Variable in den anderen definierten Stores nicht gefunden wird, soll QFQ einen Fehler auslösen und abbrechen.</p>
<p>UseCase: <br /><code>{{feUser:TX:alnumx:s}}</code></p>
<p>(Wenn der User nicht definiert ist, sollte der Report nicht funktionieren und die Seite nicht gerendert werden - auch dann nicht, wenn alle anderen Infos im SIP-Store vorhanden sind und wir vergessen haben, im Typo3 einen Login für diese Seite zu verlangen. Problem mit dieser Lösung: möglicherweise sind bereits einige Queries ausgeführt und die DB ist in einem inkonstenten Zustand. Schön wäre natürlich wenn jede Page oder jedes Typo3 Content element eine eigenen Transaction hätte...)</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 - 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 - Bug #7743 (Closed): FormElement.min = 0 has no effecthttps://project.math.uzh.ch/issues/77432019-01-25T14:37:16ZNicola Chiapolini
<p>I do have an input field for ECTS points, so I would like to enforce the value in [0, 1, 2, ...)<br />However even after setting FormElement.min = 0, the "cycle buttons" still go to negative numbers and these are not marked as "error" (A not very useful message BTW) when entered directly. It seems min is considered to be unset when the value is 0.</p>
<p>Choosing digit as Sanitize class enforces positive integers, however it would be nice if the interface suggested correct values only (And the error message there is probably too cryptic for normal users too, I would not show the pattern unless there is a user logged in in the backend.)</p> QFQ - Bug #7714 (Closed): autocron fails to open logfileshttps://project.math.uzh.ch/issues/77142019-01-22T12:43:55ZNicola Chiapolini
<p><code>PHP Warning: fopen(fileadmin/protected/log/sql.log): failed to open stream: No such file or directory in /var/www/htdocs/typo3conf/ext/qfq/Source/core/helper/Logger.php on line 44<br /></code></p>
<p>Ich vermute das Problem ist, dass autocron.php nicht in <code>API_DIR_EXT = 'Source/api'</code> liegt...</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 - Bug #7461 (Closed): Bug in Dokuhttps://project.math.uzh.ch/issues/74612018-12-11T17:25:04ZNicola Chiapolini
<p><a class="external" href="https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#a-simple-example">https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#a-simple-example</a><br />dritter codeblock, zweite Zeile, sollte:<br /><code>10.rsep = <br></code><br />sein</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 - Feature #7223 (Closed): Allow '-' in Filenames from "type: upload"-Fieldshttps://project.math.uzh.ch/issues/72232018-11-09T15:59:38ZNicola Chiapolini
<p>Die Dokumentation zu "fileDestination" erwähnt im Moment korrekt, dass</p>
<p><code>The original filename will be sanitized: only '<alnum>', '.' and '_' characters are allowed. [...] All non valid characters will be replaced by '_'.</code></p>
<p>Allerdings wäre es schön, wenn auch noch '-' akzeptiert würden, insbesondere für ISO 8601 Datum-Angaben.</p>
<p>Sogar das aktuelle Beispiel in der Dokumentation verwendet im moment '-': <br /><code>fileDestination={{SELECT 'fileadmin/user/pictures/', p.name, '-{{filename}}' FROM Person AS p WHERE p.id={{id:R0}} }}</code></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> QFQ - Bug #6465 (Closed): newline in action-Query fails silentlyhttps://project.math.uzh.ch/issues/64652018-07-30T10:52:55ZNicola Chiapolini
<p>The following action elements are never executed but there is no error raised either. Everything works fine if the newline is removed.</p>
<pre>
slaveId = 0
sqlInsert = {{ INSERT INTO test_table (`field1_int`, `field2_varchar`, `field3_datetime`, `field4_null`) VALUES
(1, 'inserted by test_error-newline', NOW(), -1) }}
</pre>
<pre>
slaveId = 5
sqlUpdate = {{ UPDATE test_table SET `field2_varchar`='changed by
test_error-newline', `field3_datetime`=NOW() WHERE id=1 }}
</pre> QFQ - Bug #6462 (New): File Upload: Nutzlose Fehlermeldung wenn Datei zu grosshttps://project.math.uzh.ch/issues/64622018-07-27T14:55:58ZNicola Chiapolini
<p>Ich habe eben <a class="issue tracker-1 status-5 priority-2 priority-default closed" title="Bug: File Upload: keine Fehlermeldung wenn Datei zu gross (Closed)" href="https://project.math.uzh.ch/issues/6139">#6139</a> mit 18.6.1 getestet. Ich bekomme nun zwar eine Fehlermeldung, die ist aber nicht sehr informativ:</p>
<pre>
2018.07.27 16:53:23 +0200, Reference: 5b5b31e3f0447
SIP invalid:
</pre> QFQ - Bug #6139 (Closed): File Upload: keine Fehlermeldung wenn Datei zu grosshttps://project.math.uzh.ch/issues/61392018-06-04T13:23:45ZNicola Chiapolini
<p>Mit qfq 0.25.15 haben wir ein analoges Problem zu <a class="issue tracker-1 status-5 priority-4 priority-high2 closed" title="Bug: File Upload: Client (Browser) zeigt keine Fehlermeldung an (Closed)" href="https://project.math.uzh.ch/issues/6023">#6023</a>: Wenn eine Datei zu gross ist, dreht sich das Rädchen unendlich weiter, ohne Fehlermeldung.</p> QFQ - Bug #6134 (Closed): Default Value NULL breaks Action Elementhttps://project.math.uzh.ch/issues/61342018-06-01T13:11:45ZNicola Chiapolini
<p>I have an action defined as follows</p>
<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">483</span><span class="p">,</span> <span class="mi">1008</span><span class="p">,</span> <span class="mi">0</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">'laudator'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'show'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'action'</span><span class="p">,</span> <span class="s1">'afterSave'</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">'auto'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">80</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">''</span><span class="p">,</span> <span class="s1">'slaveId = 0</span><span class="se">\r\n\r\n</span><span class="s1">sqlInsert = {{ INSERT INTO ceremony_laudators (`shortname`,`title`,`lastname`, `firstname`, `mail`) VALUES ( </span><span class="se">\'</span><span class="s1">{{nodb_search_laudator:FE:allbut:s}}</span><span class="se">\'</span><span class="s1">, </span><span class="se">\'</span><span class="s1">{{nodb_laudator_title:FE:allbut:s}}</span><span class="se">\'</span><span class="s1">, </span><span class="se">\'</span><span class="s1">{{nodb_laudator_lastname:FE:allbut:s}}</span><span class="se">\'</span><span class="s1">,</span><span class="se">\'</span><span class="s1">{{nodb_laudator_firstname:FE:allbut:s}}</span><span class="se">\'</span><span class="s1">,</span><span class="se">\'</span><span class="s1">{{nodb_laudator_mail:FE:allbut:s}}</span><span class="se">\'</span><span class="s1"> ) }}</span><span class="se">\r\n</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">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-06-01 12:58:09'</span><span class="p">,</span> <span class="s1">'2018-05-29 16:01:39'</span><span class="p">);</span>
</code></pre>
<p>Laudator is a column in a separate table and laudator is only updated correctly if its the default value is 0 and not NULL. (However NULL is necessary if the two tables should be linked with a FK-relation...)</p> QFQ - Bug #6124 (Closed): Dynamic Update -- requiring and storing wrong fieldshttps://project.math.uzh.ch/issues/61242018-05-31T09:19:10ZNicola Chiapolini
<p>I see two probably related bugs when a field is dynamically activated. (SQL-Code for my test setup below):</p>
<ol>
<li>A field that gets hidden by after a dynamic update is still saved to the database on submit.</li>
<li>The mode "required" is always used from the form load, even if it changes by dynamic updates: (load stays required even if mode changes to hidden by a dynamic update and if a different field switches to required it can still be empty.)</li>
</ol>
<p>Scenarios in my test setup:</p>
<ul>
<li>Load form -> toggle checkbox -> fill Varcchar -> submit => <strong>IS</strong> Warning "Form incomplete" / <strong>SHOULD</strong> Saves Varchar + defaults from DB for other fields</li>
<li>Load form -> toggle checkbox -> fill Varcchar -> toggle checkbox -> fill Int -> submit => <strong>IS</strong> both int and varchar saved / <strong>SHOULD</strong> only int is saved, varchar uses default from DB</li>
</ul>
<p>When replacing <code>required</code> with <code>show</code> for <code>field1_int</code>:</p>
<ul>
<li>Load form -> toggle checkbox -> submit => <strong>IS</strong> saved with default values from db / <strong>SHOULD</strong> Warning "Form incomplete" raised</li>
</ul>
<p><b>Table</b><br /><pre><code class="sql syntaxhl"><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="nv">`test_table`</span> <span class="p">(</span>
<span class="nv">`id`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">11</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
<span class="nv">`field1_int`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">11</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
<span class="nv">`field2_varchar`</span> <span class="nb">varchar</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
<span class="nv">`field3_datetime`</span> <span class="nb">datetime</span> <span class="k">NOT</span> <span class="k">NULL</span>
<span class="p">)</span> <span class="n">ENGINE</span><span class="o">=</span><span class="n">InnoDB</span> <span class="k">DEFAULT</span> <span class="n">CHARSET</span><span class="o">=</span><span class="n">utf8mb4</span><span class="p">;</span>
</code></pre></p>
<p><b>Form</b>*<br /><pre><code class="sql syntaxhl"><span class="k">INSERT</span> <span class="k">INTO</span> <span class="nv">`Form`</span> <span class="p">(</span><span class="nv">`id`</span><span class="p">,</span> <span class="nv">`name`</span><span class="p">,</span> <span class="nv">`title`</span><span class="p">,</span> <span class="nv">`noteInternal`</span><span class="p">,</span> <span class="nv">`tableName`</span><span class="p">,</span> <span class="nv">`permitNew`</span><span class="p">,</span> <span class="nv">`permitEdit`</span><span class="p">,</span> <span class="nv">`escapeTypeDefault`</span><span class="p">,</span> <span class="nv">`render`</span><span class="p">,</span> <span class="nv">`requiredParameterNew`</span><span class="p">,</span> <span class="nv">`requiredParameterEdit`</span><span class="p">,</span> <span class="nv">`dirtyMode`</span><span class="p">,</span> <span class="nv">`showButton`</span><span class="p">,</span> <span class="nv">`multiMode`</span><span class="p">,</span> <span class="nv">`multiSql`</span><span class="p">,</span> <span class="nv">`multiDetailForm`</span><span class="p">,</span> <span class="nv">`multiDetailFormParameter`</span><span class="p">,</span> <span class="nv">`forwardMode`</span><span class="p">,</span> <span class="nv">`forwardPage`</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">`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">`recordLockTimeoutSeconds`</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">1019</span><span class="p">,</span> <span class="s1">'bug_dynamic-required'</span><span class="p">,</span> <span class="s1">'Minimal Example for Bug'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'test_table'</span><span class="p">,</span> <span class="s1">'sip'</span><span class="p">,</span> <span class="s1">'sip'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'bootstrap'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'exclusive'</span><span class="p">,</span> <span class="s1">'new,delete,close,save'</span><span class="p">,</span> <span class="s1">'none'</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">'client'</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">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">900</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-31 08:48:39'</span><span class="p">,</span> <span class="s1">'2018-05-31 10:48:33'</span><span class="p">);</span>
<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">732</span><span class="p">,</span> <span class="mi">1019</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'nodb_checkbox'</span><span class="p">,</span> <span class="s1">'Toggle'</span><span class="p">,</span> <span class="s1">'show'</span><span class="p">,</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">'auto'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">10</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">''</span><span class="p">,</span> <span class="s1">'checkBoxMode = single</span><span class="se">\r\n</span><span class="s1">label2 = external speaker</span><span class="se">\r\n</span><span class="s1">itemList = 1: </span><span class="se">\r\n</span><span class="s1">checked = 1</span><span class="se">\r\n</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">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-31 08:50:12'</span><span class="p">,</span> <span class="s1">'2018-05-31 10:50:12'</span><span class="p">),</span>
<span class="p">(</span><span class="mi">733</span><span class="p">,</span> <span class="mi">1019</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'field1_int'</span><span class="p">,</span> <span class="s1">'Enter Int'</span><span class="p">,</span> <span class="s1">'show'</span><span class="p">,</span> <span class="s1">'{{ SELECT IF(</span><span class="se">\'</span><span class="s1">{{nodb_checkbox:FR0}}</span><span class="se">\'</span><span class="s1">=</span><span class="se">\'</span><span class="s1">1</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">, </span><span class="se">\'</span><span class="s1">required</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">'text'</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">'digit'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">20</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">''</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">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-31 08:51:45'</span><span class="p">,</span> <span class="s1">'2018-05-31 10:50:33'</span><span class="p">),</span>
<span class="p">(</span><span class="mi">734</span><span class="p">,</span> <span class="mi">1019</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'field2_varchar'</span><span class="p">,</span> <span class="s1">'Enter Varchar'</span><span class="p">,</span> <span class="s1">'show'</span><span class="p">,</span> <span class="s1">'{{ SELECT IF(</span><span class="se">\'</span><span class="s1">{{nodb_checkbox:FR0}}</span><span class="se">\'</span><span class="s1">=</span><span class="se">\'</span><span class="s1">1</span><span class="se">\'</span><span class="s1">, </span><span class="se">\'</span><span class="s1">required</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">) }}'</span><span class="p">,</span> <span class="s1">'native'</span><span class="p">,</span> <span class="s1">'text'</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">'auto'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">30</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">''</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">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-31 08:53:22'</span><span class="p">,</span> <span class="s1">'2018-05-31 10:52:17'</span><span class="p">);</span>
</code></pre></p> QFQ - Bug #5788 (Closed): DoS-String für TypeAHeadhttps://project.math.uzh.ch/issues/57882018-04-06T13:44:33ZNicola Chiapolini
<p>Ich habe ein äusserst komisches Problem, bei dem ich mich auch nach mehreren Stunden noch keine Ursache oder Lösung sehe:</p>
<p>Das LDAP-Suchfeld in unserem Formular funktioniert einwandfrei - ausser die Suche ist nach dem String "Maruschka Balzer Zurkinden, <a class="email" href="mailto:maruschka.zurkinden@mnf.uzh.ch">maruschka.zurkinden@mnf.uzh.ch</a>". Bei dem String scheint irgendwo ein Timeout zu greiffen...</p>
<p>Im Anhang findet ihr den Vergleich von zwei Suchen. Bei der Suche nach Maruschka dauert die anfrage 5s und die Response ist leer.<br />Ausserdem ist danach die SIP nicht korrekt gesetzt und das Formular tot.</p> QFQ - Bug #5767 (Rejected): datetimeJQW lädt keine gespeicherten Datenhttps://project.math.uzh.ch/issues/57672018-03-29T14:35:35ZNicola Chiapolini
<p>Mein datetimeJQW Feld Speichert Datum und Zeit korrekt, wenn ich ein Formular mit bestehenden Daten lade, wird aber immer das aktuelle Datum und 00:00 angezeigt. Entweder ist das ein Bug oder unzureichend Dokumentiert.</p> QFQ - Bug #5576 (New): Using MySQL 'DROP' requires privilege - wich is not really necessary.https://project.math.uzh.ch/issues/55762018-02-28T17:40:58ZNicola Chiapolini
<p>Auf unserer neuen Installation hat das Anlegen der System-Tabellen (wieder) nicht geklappt. Dieses Mal habe ich das Problem identifiziert.</p>
<p>Die Datei <code>qfq/sql/formEditor.sql</code> enthält ein nicht auskommentierten DROP-Befehl. Entweder muss der auskommentiert werden (patch im Anhang) oder dann muss in der Doku DROP als nötiges Recht für den QFQ-DB-User erwähnt werden.</p> QFQ - Bug #5445 (Closed): Lizenzproblemhttps://project.math.uzh.ch/issues/54452018-02-15T09:21:33ZNicola Chiapolini
<p>Ich habe eben begonnen den Report-Source anzuschauen und bin dabei auf ein Lizenzproblem gestossen:</p>
<p>qfq/qfq $ grep Glowbase * <del>r -A1 <br />report/Link.php: * (c) 2010 Glowbase GmbH <<a class="email" href="mailto:support@glowbase.com">support@glowbase.com</a>><br />report/Link.php</del> * All rights reserved<br />--<br />report/Variables.php: * (c) 2010 Glowbase GmbH <<a class="email" href="mailto:support@glowbase.com">support@glowbase.com</a>><br />report/Variables.php- * All rights reserved<br />--<br />report/Report.php: * (c) 2010 Glowbase GmbH <<a class="email" href="mailto:support@glowbase.com">support@glowbase.com</a>><br />report/Report.php- * All rights reserved<br />--<br />report/Error.php: * (c) 2010 Glowbase GmbH <<a class="email" href="mailto:support@glowbase.com">support@glowbase.com</a>><br />report/Error.php- * All rights reserved</p>
<p>Das verträgt sich schlecht mit GPLv3... Das sollte möglichst rasch geklärt werden. Falls Glowbase die Rechte an diesem Code wirklich zusteht, müssten die Dateien wohl durch eigene Implementationen der gleichen Funktionalität ersetzt werden.</p>
<p>Und dann wäre es sicher keine dumme Idee, in allen anderen Dateien einen Lizenz-Header zu ergänzen...</p> QFQ - Support #5419 (Closed): Fluid UZH-Stylehttps://project.math.uzh.ch/issues/54192018-02-10T08:14:49ZNicola Chiapolini
<p>Hoi Carsen</p>
<p>[Der erste Versuch mit Anhang hat an eurem Mailserver gebounced:<br />BANNED:554 5.7.0 .asc,Resources/Public/js/jquery.min.js<br />deshalb nun via Weblink]</p>
<p>Ich habe mich gestern und heute mit Fluid beschäftigt und dabei auch begonnen <br />euer Template für Fluid anzupassen. Das Basistemplate funktioniert nun auf <br />meinem System weitgehend (die Suche fehlt noch).</p>
<p>Du findest das resultierende Zip unter:<br /><a class="external" href="http://www.physik.uzh.ch/~nchiapol/uzh_cd_template.zip">http://www.physik.uzh.ch/~nchiapol/uzh_cd_template.zip</a><br />Wenn du mir die nötigen Rechte gibst pushe ich meinen `fluid`-Branch gerne in <br />euer Repo.</p>
<p>Nächste Wochen werde ich mich dann wohl wieder primär mit funktionellen <br />Aspekten beschäftigen. Aber bei Gelegenheit werde ich wohl den ganzen <br />Template-Code noch genauer anschauen und auf unnötigem Code überprüfen.</p>
<p>härzlichi Grüäss<br />Nicola</p> QFQ - Bug #5316 (Closed): Help on how to send an E-Mail is wronghttps://project.math.uzh.ch/issues/53162018-01-30T10:40:26ZNicola Chiapolini
<p>In all Code Listings under<br /><code>https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#column-sendmail</code><br />the from-field is wrong. According to the table, the from-address is given with <code>f</code> not <code>F</code>.</p>
<p>PS: I would prefere speaking but case-insensitive field-names (<code>to:</code>, <code>from:</code>, <code>file:</code> instead of <code>t:</code>, <code>f:</code>, <code>F:</code>). More to type, but a lot easier to read.</p> QFQ - Bug #5311 (Closed): Konflikt zwischen zwei SQL aus zwei Form-Elementenhttps://project.math.uzh.ch/issues/53112018-01-29T10:26:53ZNicola Chiapolini
<p>Ich habe ein Formular mit diversen FE. Die Relevanten beiden sind wohl:</p>
<p>1) Bild:<br />name: title_img<br />class: native<br />Type: note<br />order: 35<br />Value:<br /><pre>
#!report
10.sql = SELECT CONCAT("php -f /var/www/htdocs/tmp/gen_pdf.php '", title_of_thesis, "' '", shortname, "'") AS _exec FROM phd_graduation WHERE shortname='{{shortname}}'
</pre></p>
<p>2) Extra-Feld:<br />name: title_hash_extra<br />class: native<br />type: extra<br />order: 100<br />value: <br /><pre>{{ SELECT MD5({{title_of_thesis:F}}) }}</pre></p>
<p>(Das Forumlar funktioniert nicht, ich kann mein Ziel aber mit einem Action-Element erreichen).</p>
<p>Der Bug ist hier ist aber was anderes. Irgendwo mischt qfq die beiden Queries (vgl. "SQL before execution" und "SQL final" im Screenshot)</p> QFQ - Bug #5127 (Closed): Dublicate Form funktioniert nichthttps://project.math.uzh.ch/issues/51272017-12-15T10:08:07ZNicola Chiapolini
<p>Wenn ich bei meinem Form auf den Button "Dublicate form" klicke, bekomme ich folgende Fehlermeldung:</p>
<p>Form not found or multiple forms with the same name. Expected one record, got 0: SELECT * FROM Form AS f WHERE f.name LIKE ? AND f.deleted='no'</p> QFQ - Bug #5066 (Closed): Fehlermeldungen im Typo3 Backendhttps://project.math.uzh.ch/issues/50662017-12-06T14:28:18ZNicola Chiapolini
<p>Seit dem Update auf 0.25.6 generiert QFQ bei vermutlich jedem Aufruf folgende Fehler:</p>
<p>ERROR Error handler Core: Error handler (FE): PHP Warning: Declaration of qfq\BuildFormTable::head() should be compatible with qfq\AbstractBuildForm::head($mode = qfq\FORM_LOAD) in /var/www/htdocs/typo3conf/ext/qfq/qfq/qfq/BuildFormTable.php line 0</p> QFQ - Bug #5030 (Closed): Dokumentation: Code-Beispiel enthält Sicherheitsproblemhttps://project.math.uzh.ch/issues/50302017-11-30T10:44:07ZNicola Chiapolini
<p><a class="external" href="https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#person-search-form">https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#person-search-form</a></p>
<p>Die Sanitizer in den Variablen ist falsch (all statt alnumx).</p>
<p>Im Bereich HTML erlaubt das Cross-Site Scripting.</p>
<p>Suche zum Beispiel nach: <br /> '><h1>Hallo Welt</h1><br style='</p>
<p>SQL Injection scheint dank dem Default Escape blockiert, wäre sonst aber wohl auch möglich.</p> QFQ - Bug #5029 (Closed): Dokumentation: Code entspricht nicht Beschriebhttps://project.math.uzh.ch/issues/50292017-11-30T10:19:52ZNicola Chiapolini
<p><a class="external" href="https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#person-search-form">https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/Manual.html#person-search-form</a><br />Der Titel spricht von einer Personen Suche, der Code sucht aber Formulare.</p> QFQ - Bug #5028 (Closed): Dokumentation: Links im FormularEditor zeigen ins Leere (Fehlende Ziel-...https://project.math.uzh.ch/issues/50282017-11-30T10:17:30ZNicola Chiapolini
<p>Im Formular-Editor auf dem Tab "Access" sind bei mir die meisten "Info" <br />Links nur zum Start des Manuals (sieht aus als würden die Anker fehlen). Auch <br />SQL1 bei der Feld-Definition funktioniert nicht.</p>