Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892023-11-16T12:43:41ZProject @ iMath
Redmine QFQ - Bug #17293 (Closed): Undocumented Feature: emptyMeansNull works not just for text https://project.math.uzh.ch/issues/172932023-11-16T12:43:41ZNicola Chiapolini
<p><a class="external" href="http://docs.qfq.io/en/master/Form.html#formelement-parameter">http://docs.qfq.io/en/master/Form.html#formelement-parameter</a> mentiones <code>emptyMeansNull</code> for elements of type text.<br />However this seems to work for a checkbox with <code>emptyItemAtStart</code> just was well.<br />Since we now relay on this behavior (still in QFQ 23.3.1), I wanted to mention this here. <br />Would be great if this could be officially supported.</p> QFQ - Bug #15794 (Feedback): Tablesorter filter funktionieren nach Reload nicht mehrhttps://project.math.uzh.ch/issues/157942023-03-14T10:08:07ZNicola Chiapolini
<p>Wenn ich in meinen Filtern eine Suche eintrage funktioniert zuerst alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7489/screenshot1.png" alt="" /></p>
<p>Wenn ich danach aber die Seite neu Lade, verschwinden die view-saver funktionen und die Suche hat keinen Effekt mehr.<br />Das Problem scheint der unten markierte Eintrag im local storage. Wird dieser Gelöscht, funktioniert wieder alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7490/screenshot2.png" alt="" /></p> QFQ - Bug #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 #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 #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 #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 - Feature #9221 (Closed): typeAhead: Zeichenlimite ausschaltenhttps://project.math.uzh.ch/issues/92212019-09-24T12:38:46ZNicola Chiapolini
<p>Wir haben ein Formular, das via LDAP suche einen Shortname suchen und diesen dann in eine Tabelle speichern sollte.<br />Leider brauchen wir 2 Felder dafür, denn da die spalte "shortname" in der DB nur 8 Zeichen breit ist, können wir sonst im Suchfeld ebenfalls nur 8 Zeichen eintippen - und das reicht bei vielen Namen nicht aus.</p>
<p>Entweder sollte TypeAhead die limite automatisch deaktivieren, oder das sollte in der Feld-Konfiguration manuell möglich sein.</p> QFQ - Bug #9213 (Closed): Problems with Update to 19.9.1https://project.math.uzh.ch/issues/92132019-09-23T09:03:16ZNicola Chiapolini
<ul>
<li>The release-notes should explain, that 19.9.1 needs `SELECT` on `tt_content` (my db user was missing these rights, causing the updater to fail on page-load)
<ul>
<li>The "Special Column"-check misidentified columns starting with `file` as special:</li>
</ul></li>
</ul>
<pre>
SELECT
"{{text_label:R0}}" AS text_label, "{{weight_label:R0}}" AS weight_label, "{{file_label:R0}}" AS >>>_file_label,
text, weight, file_location, SUBSTRING_INDEX( file_location, '/', -1) AS >>>_file_name
FROM phd_milestone_subrecords WHERE milestone_id="{{r:S0}}"
</pre> 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 - 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 #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 #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 #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 #6116 (Priorize): value of checkbox not saved https://project.math.uzh.ch/issues/61162018-05-29T09:43:08ZNicola Chiapolini
<p>In one of our forms, we have the following checkbox:<br /><pre><code class="sql syntaxhl"><span class="k">INSERT</span> <span class="k">INTO</span> <span class="nv">`FormElement`</span> <span class="p">(</span><span class="nv">`id`</span><span class="p">,</span> <span class="nv">`formId`</span><span class="p">,</span> <span class="nv">`feIdContainer`</span><span class="p">,</span> <span class="nv">`dynamicUpdate`</span><span class="p">,</span> <span class="nv">`enabled`</span><span class="p">,</span> <span class="nv">`name`</span><span class="p">,</span> <span class="nv">`label`</span><span class="p">,</span> <span class="nv">`mode`</span><span class="p">,</span> <span class="nv">`modeSql`</span><span class="p">,</span> <span class="nv">`class`</span><span class="p">,</span> <span class="nv">`type`</span><span class="p">,</span> <span class="nv">`subrecordOption`</span><span class="p">,</span> <span class="nv">`encode`</span><span class="p">,</span> <span class="nv">`checkType`</span><span class="p">,</span> <span class="nv">`checkPattern`</span><span class="p">,</span> <span class="nv">`onChange`</span><span class="p">,</span> <span class="nv">`ord`</span><span class="p">,</span> <span class="nv">`tabindex`</span><span class="p">,</span> <span class="nv">`size`</span><span class="p">,</span> <span class="nv">`maxLength`</span><span class="p">,</span> <span class="nv">`bsLabelColumns`</span><span class="p">,</span> <span class="nv">`bsInputColumns`</span><span class="p">,</span> <span class="nv">`bsNoteColumns`</span><span class="p">,</span> <span class="nv">`rowLabelInputNote`</span><span class="p">,</span> <span class="nv">`note`</span><span class="p">,</span> <span class="nv">`adminNote`</span><span class="p">,</span> <span class="nv">`tooltip`</span><span class="p">,</span> <span class="nv">`placeholder`</span><span class="p">,</span> <span class="nv">`value`</span><span class="p">,</span> <span class="nv">`sql1`</span><span class="p">,</span> <span class="nv">`parameter`</span><span class="p">,</span> <span class="nv">`parameterLanguageA`</span><span class="p">,</span> <span class="nv">`parameterLanguageB`</span><span class="p">,</span> <span class="nv">`parameterLanguageC`</span><span class="p">,</span> <span class="nv">`parameterLanguageD`</span><span class="p">,</span> <span class="nv">`clientJs`</span><span class="p">,</span> <span class="nv">`feGroup`</span><span class="p">,</span> <span class="nv">`deleted`</span><span class="p">,</span> <span class="nv">`modified`</span><span class="p">,</span> <span class="nv">`created`</span><span class="p">)</span> <span class="k">VALUES</span>
<span class="p">(</span><span class="mi">164</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span> <span class="mi">380</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'reg_done'</span><span class="p">,</span> <span class="s1">'Final'</span><span class="p">,</span> <span class="s1">'hidden'</span><span class="p">,</span> <span class="s1">'{{SELECT IF( title_hash != </span><span class="se">\'\'</span><span class="s1"> AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student=(SELECT id FROM phd_graduation WHERE shortname=</span><span class="se">\'</span><span class="s1">{{shortname}}</span><span class="se">\'</span><span class="s1"> )) = 1,</span><span class="se">\'</span><span class="s1">show</span><span class="se">\'</span><span class="s1">, </span><span class="se">\'</span><span class="s1">hidden</span><span class="se">\'</span><span class="s1">) FROM phd_graduation WHERE shortname=</span><span class="se">\'</span><span class="s1">{{shortname}}</span><span class="se">\'</span><span class="s1"> }}'</span><span class="p">,</span> <span class="s1">'native'</span><span class="p">,</span> <span class="s1">'checkbox'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'specialchar'</span><span class="p">,</span> <span class="s1">'alnumx'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'row,label,/label,input,/input,note,/note,/row'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'{{!SELECT IF(reg_done, reg_done, NOW()) FROM phd_graduation WHERE id=</span><span class="se">\'</span><span class="s1">{{id:RE}}</span><span class="se">\'</span><span class="s1"> }}'</span><span class="p">,</span> <span class="s1">'checkBoxMode = single</span><span class="se">\r\n</span><span class="s1">label2 = Submit this form and start the process.'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">,</span> <span class="s1">'2018-05-29 09:34:25'</span><span class="p">,</span> <span class="s1">'2018-03-09 10:06:26'</span><span class="p">);</span>
</code></pre></p>
<p>This checkbox gets correctly displayed with all the values of <code>mode sql</code> below, but only saved to the DB for some of them:</p>
<p><strong>good</strong><br /><pre><code>
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname}}' }}
{{SELECT IF( title_hash != '' AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student=(SELECT id FROM phd_graduation WHERE shortname='{{shortname}}' )) = 1,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname}}' }}
</code></pre></p>
<p><strong>bad</strong><br /><pre><code>
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE id='{{id}}' }}
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname:R0}}' }}
{{SELECT IF( title_hash != '' ,'show', 'hidden') FROM phd_graduation WHERE shortname='{{shortname:FR0}}' }}
{{SELECT IF( title_hash != '' AND (SELECT SUM(head) FROM `phd_committee_members` WHERE phd_student='{{id:R0}}') = 1,'show', 'hidden') FROM phd_graduation WHERE id='{{id:R0}}' }}
</code></pre></p>
<p><code>shortname</code> is a nativ / extra field in the form, <code>id</code> is not part of the form.</p>
<p>In any case, a displayed field should also be saved ;-)</p> QFQ - Feature #5805 (New): TypeAHead SQL value instead of key storedhttps://project.math.uzh.ch/issues/58052018-04-10T13:16:59ZNicola Chiapolini
<p>Ich habe ein Textfeld mit folgenden Parametern:</p>
<p><code><br />typeAheadSql = SELECT shortname AS 'id', CONCAT(firstname, ' ', lastname, ', ', shortname) AS 'value' FROM _right_to_confer_phd WHERE lastname LIKE ? OR firstname LIKE ? or shortname LIKE ? ORDER BY lastname<br />typeAheadSqlPrefetch = SELECT CONCAT(firstname, ' ', lastname, ', ', shortname) AS value FROM _right_to_confer_phd WHERE shortname=?<br />typeAheadMinLength = 1<br />typeAheadLimit = 20<br />typeAheadPedantic = 0<br /></code></p>
<p>Die Suche funktioniert, aber beim Speichern wird der Value (firstname lastname, shortname) statt der id (shortname) gespeichert.<br />Problem scheint, dass JS im hidden Feld den Value statt der id einfügt...</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>