Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-28T11:41:14ZProject @ iMath
Redmine QFQ - Feature #18236 (New): MultiForm re order via drag&drophttps://project.math.uzh.ch/issues/182362024-03-28T11:41:14ZZhoujie Li
<p>MultiForm wie subrecord per drag&drop neu anordnern</p> QFQ - Feature #18235 (Priorize): MultiForm add rowshttps://project.math.uzh.ch/issues/182352024-03-28T10:18:34ZZhoujie Li
<p>Es sollte möglich sein in einem Multiform neue Rows hinzuzufügen als button, die Record = 0 sind.(ähnlich wie subrecord einfach das button unterhalb) Die Motivation dahinter ist die Implementierung eines 'Form Wizard', der es ermöglichen schnell neue Formulare zu erstellen. Aber könnte auch für andere use case nützlich sein.</p> QFQ - Feature #18141 (New): In Config/Dynamic neue fill store 'SYSTEM' by SQL ROW mit variablen ...https://project.math.uzh.ch/issues/181412024-03-14T07:18:20ZZhoujie Li
<p>Es wurde herausgestellt, dass man eine neue Config/Dynamic input möchte, indem man den fillstore 'SYSTEM'-Speicher durch SQL-ROW die variablen ersetzt, um beispielsweise pIdUser aus dem system store zu holen anstatt {{feUser}}.</p>
<p>Beispiel<br />SELECT p.id AS pIdUser FROM Person AS p WHERE p.account = '{{feUser:T}}'</p>
<p>pIdUser ist dann im Systemstore gespeichert.</p> QFQ - Feature #17821 (New): Check projects export/autocron access templatehttps://project.math.uzh.ch/issues/178212024-02-05T13:07:58ZEnis Nuredini
<p>Es muss bei allen Projekten das Typo3 Template für den Zugriff auf den Autocron überprüft werden. Für den Zugriff über Production muss noch die jeweilige IP Adresse entnommen werden:<br /><pre>
hostname -I
</pre></p>
<p>Template vom Medtool:<br /><pre>
*Constants*
----------------
# List of IP addresses to grant access: webwork22, medtool
site.allowIP.list = 127.0.0.1,::1,130.60.244.239
*Setup*
-----------
# Layout neu aufbauen
page = PAGE
page.typeNum = 0
# Show content
[ ip('{$site.allowIP.list}') || frontend.user.isLoggedIn]
# Access granted
page.10 < styles.content.get
[else]
page.10 = TEXT
page.10.value = Please log in or access this page from an authorized host. Your current IP address:&nbsp;
page.20 = TEXT
page.20.data = getenv : REMOTE_ADDR
[end]
</pre></p>
<p>Das Template muss auch bei den Options konfiguriert werden:<br /><img src="https://project.math.uzh.ch/attachments/download/9158/Clipboard%20-%20February%205,%202024%202_05%20PM.png" alt="" /></p>
<p>Ebenfalls noch hinzuzufügen bei Includes:<br /><img src="https://project.math.uzh.ch/attachments/download/9161/includes.png" alt="" /></p> QFQ - Feature #17441 (ToDo): Report Notation 2.2: fireIf :Statement to trigger the root level que...https://project.math.uzh.ch/issues/174412023-12-07T12:42:31ZZhoujie Li
<p>Es wurde über mögliche Verbesserungen des if-Statements aus den Tickets <a class="issue tracker-2 status-10 priority-2 priority-default" title="Feature: Report: UPDATE / INSERT / DELETE statements should trigger subqueries, depending on the result. (ToDo)" href="https://project.math.uzh.ch/issues/5345">#5345</a> und <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Report Notation 2.1: 'if then else' / 'for' / 'while' (New)" href="https://project.math.uzh.ch/issues/17319">#17319</a> diskutiert. Wir kamen zu dem Vorschlag, dass mit 'fireIf' lediglich bestimmt wird, ob der Root-Level ausgeführt wird oder nicht. Das andere wäre 'fireSubIf', womit bestimmt wird, ob ein Subquery ausgeführt wird, auch wenn keine Records von der Root-Query kommen.</p>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<p>Query-Ausführung für das Root-Level:</p>
<pre>
10 {
sql = UPDATE table set ...
fireIf = {{variable}} =|>|<|>=|<=|!=
altsql = SELECT ... (wird aus geführt wenn fireIf false ist)
}
</pre>
<p>Query-Ausführung für das Child-Level:</p>
<pre>
10 {
sql = UPDATE table set ...
fireSubIf = {{variable}} =|>|<|>=|<=|!=
20.sql = INSERT INTO ...
}
</pre> QFQ - Feature #17412 (In Progress): Per Form: note, tag, reminder date, done flaghttps://project.math.uzh.ch/issues/174122023-12-05T22:38:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In unseren QFQ Applikationen fuer die Benutzer aber auch fuer die Applikationsentwickler waere folgende Funktion nett:</p>
<ul>
<li>Auf einem Formular gibt es einen <strong>Button</strong> via dem man sich Notizen zum aktuellen Record (Antrag, ...) macht (entweder als Popup oder Modal).</li>
<li>Die Option kann an/abgeschaltet werden (auch dynamisch je nach eingeloggtem User)</li>
<li>Die Logik soll fix in QFQ mittels form/qfqr Files hinterlegt sein. </li>
<li>Durch toolspezifische Formulare/Reports kann es an das Tool angepasst werden.</li>
<li>Titel sollte veränderbar sein.</li>
</ul>
<p>Details:</p>
<ul>
<li>Eine Notiz kann private, <group> oder public sein.
<ul>
<li>Welche <group's> es gibt kann konfiguriert werden. Bsp: admin, developer, dekanat, ...</li>
<li>Es stehen nur solche Gruppen zur Verfuegung in der man selbst Member ist.</li>
</ul></li>
</ul>
<ul>
<li>Der <strong>Button</strong> zeigt die Anzahl Notizen an. Symbol: Blatt Papier mit der Anzahl Notizen als kleine Zahl in einer Ecke. Sobald es min. eine Notiz gibt hat das Blatt eine Farbe.</li>
<li>Hover/Tooltip zeigt die letzten 5 Notizen an (Note, Tag, Author, Created, Reminder, Resubmission).</li>
<li>Die Tags sollen dazu verwendet werden die Notizen zu klassifizieren: todo / feedback / hold / not yet / ...
<ul>
<li>Pro Notizen koennen beliebig viele Tags vergeben werden.</li>
<li>Neue Tags koennen on the fly erzeugt werden.</li>
<li>Die Tags werden mit Typeahead erfasst.</li>
</ul></li>
</ul>
<ul>
<li>Auf dem allgemeinen Dashboard werden die eigenen/group/all Notizen als Summe angezeigt - ein Klick darauf fuehrt in die Listenansicht.</li>
<li>In der Listenansicht werden die eigenen/<group>/alle Notizen angezeigt werden.
<ul>
<li>Sortiert nach 'last modified', Filter auf a) 'user'/'group', b) Inhalt, c) Tags</li>
<li>In der Listenansicht kann von der Notiz direkt zum Antrag / Form / ... gesprungen werden.
<ul>
<li>Damit das funktioniert muessen im Hintergrund weitere Informationen bei der Notiz abgelegt werden (Formular, detail Parameter, ...).</li>
</ul></li>
</ul>
<ul>
<li>Es koennen Notizen angelegt werden, die keinem Form/Record zugeordnet sind. Anwendung: persoenliche Todo Liste, Bsp: 'morgen unbedingt nach Urlaub fragen'.</li>
</ul></li>
</ul>
<ul>
<li>Im Dashboard und in der Listenansicht werden Notizen mit abgelaufenem Reminder besonders hervorgehoben.</li>
<li>Ist das reminder date abgelaufen wird eine Mail versendet.</li>
<li>Pro Notiz kann das Flag 'done' gesetzt werden (dann wird kein Reminder versendet).</li>
</ul>
<p>Anmerkungen:</p>
<ul>
<li>Eine Notiz kann als 'Ticket' gesehen werden (erscheint im Dashboard, kann auf 'done' gesetzt werden, kann tags zur Klassifizierung enthalten).</li>
<li>In dem aktuellen Konzept hat die Notiz mehr einen 'History' Character als Ticket.</li>
<li>Zukunft: zu einer Notiz koennten weitere Informationen abgelegt werden (Assignee, Due Date, ...), damit waere dann ein Ticketsystem moeglich. </li>
<li>Im jetzigen Konzept werden die Notizen i.d.R. einem Table/Record zugeordnet. </li>
<li>Bei z.B. Rueckfragen oder Diskussion waere zusaetzlich eine Thread-ID interressant.</li>
<li>Mit dem Thread Konzept waere das eine interessante Moeglichkeit eine 'minimale Chat Logik' mit QFQ auszuliefern. Das koennte direkt in BEF fuer die Rueckfragen verwendet werden.</li>
</ul> QFQ - Feature #17374 (New): ReST QFQ Doc: local rendernhttps://project.math.uzh.ch/issues/173742023-11-28T16:01:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aktuell haben wir keinen Preview fuer unsere Dokumentation - es muss immer auf Develop oder Master committet werden. Gute waere eine lokale Vorschau.</p>
<p>Bitte versuchen das zu implementieren</p> QFQ - Feature #17295 (New): Pipe-separated column names as processorshttps://project.math.uzh.ch/issues/172952023-11-16T15:25:40ZKrzysztof Putyra
The syntax<br /><pre> <value> AS 'col1|col2|col3' </pre><br />can represent a processing queue of <code>value</code> by three processors with the output of last one taken as the column value. In this example the process queue is<br /><pre>
+------+ +------+ +------+
<value> -->--| col1 |-->--| col2 |-->--| col3 |-->-- <processed>
+------+ +------+ +------+
</pre><br />A column processor may populate more values into a store, that are accessed using the notation <code><colname>.<property></code>. Standard properties include
<ul>
<li><code>in</code> - the value that the processor has received</li>
<li><code>out</code> - the output of the processor (the rendered input)</li>
</ul>
<p>Processors of special columns can add more properties. For instance, <code>link</code> can populate <code>url</code>, <code>tooltip</code>, <code>text</code>, etc.</p>
<p><em>Should the values be inherited by following processors? For instance, with the column name <code>_link|myvar</code> should <code>{{myvar.url:R}}</code> be defined?</em></p>
Notes:
<ul>
<li>a column name that do not begin with an underscore is processed by the default processor that saves the value in the R-store and forwards it to the next processor</li>
<li>a column name <code>_<name></code> that is not a special column name is semantically equal to <code>_hide|<name></code></li>
</ul>
<p><b>Example 1</b><br /><pre>
10.sql=SELECT 'Hello world!' AS 'plain|_encrypt|encrypted|_hide'
10.10.sql=SELECT 'Plain text: {{plain:R}}<br>Encrypted text: {{encrypted:R}}'
</pre><br />produces<br /><pre>
Plain text: Hello world!
Encrypted text: <encrypted>
</pre></p>
<p><b>Example 2</b><br /><pre>
10.sql=SELECT 'Hello world!' AS message|_+p
20.sql=SELECT '{{message:R}}'
</pre><br />produces<br /><pre>
<p>Hello world!</p>
Hello world!
</pre></p>
<p><b>Example 3</b><br /><pre>
10.head=<ul>
10.tail=</ul>
10.sql=SELECT url FROM Link
10.10.sql=SELECT 'u:{{url:R}}|c:nicelink' AS '_link|_+li'
</pre><br />wraps links into <code>li</code> elements. This example does not work currently, because it is not allowed to specify more than one special column.</p>
<p><b>Example 4</b><br /><pre>
10.head=<ul>
10.tail=</ul>
10.sql=SELECT encryptedValue AS '_decrypt|_+li' FROM data
</pre><br />displays a list of decrypted values.</p>
<p><b>Compatibility</b></p>
This feature can be implemented in a way compatible with the current behavior.
<ol>
<li>Currently only one special column (except <code>_nowrap</code> and <code>_hide</code>) is allowed and they are expected to be listed as first. These columns only affect the rendered content and not the value.
<ul>
<li>For a compatible behavior the value <code>{{colname:R}}</code> must be always the initial value, whereas the rendered value is <code>{{&colname:R}}</code>.</li>
<li>A more natural behavior would be to make <code>{{colname:R}}</code> the <em>rendered value</em>. How much would break with this change?</li>
<li>Note that <code>{{&colname:R}}</code> is obsolete as the same value can be obtained with <code>{{colname.out:R}}</code>. Removing <code>&</code>-values breaks compatibility.</li>
</ul>
</li>
<li>The behavior of <code>_hide</code> and <code>_nowrap</code> is unchanged - these processors are not expected to change the value of the column.</li>
<li>A mixed behavior can be implemented with a special command to set the parsing mode (legacy or new).</li>
</ol> QFQ - Feature #17265 (In Progress): Column parametershttps://project.math.uzh.ch/issues/172652023-11-10T12:52:19ZKrzysztof Putyra
<p>The column _encrypt takes one optional parameter, but currently there is no concept for column parameters.<br />Because of that fetching the parameter is hard coded only for this column.</p>
<p>The column parameter concept intends to improve the situation by introducing a general way to pass parameters to the column renderer. After a vote it was decided to use the functional syntax:</p>
<pre>
# _color column takes two optional parameters:
# - text color
# - background color
# It outputs then the content with the given colors
10.sql = SELECT "red on blue" AS '_color(red,blue)|content'
20.sql = SELECT "red content" AS '_color(red)|content'
30.sql = SELECT "blue backgr" AS '_color(,blue)|content'
</pre>
<p>A special attention must be paid to the column <code>_+<html attrs></code>, because HTML attributes may contain brackets.</p> QFQ - Bug #17257 (New): Migrate QFQ system tables: set default valuehttps://project.math.uzh.ch/issues/172572023-11-09T20:42:54ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #17252 (In Progress): Renderer Refactoringhttps://project.math.uzh.ch/issues/172522023-11-09T11:38:24ZPhilipp GröbelbauerQFQ - Feature #17218 (In Progress): JavaScript WebSockethttps://project.math.uzh.ch/issues/172182023-10-31T16:07:04ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/websocket.md">https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/websocket.md</a></p> QFQ - Feature #17217 (In Progress): Logging mechanism for QFQhttps://project.math.uzh.ch/issues/172172023-10-31T16:04:27ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/logging.md">https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/logging.md</a></p> QFQ - Feature #17204 (In Progress): load = async for reportshttps://project.math.uzh.ch/issues/172042023-10-31T12:42:15ZPhilipp Gröbelbauer
<p>At the start of a report (like form = ...) the line:</p>
<p>load = async</p>
<p>(or similar) could be introduced. Async Content will not be loaded for the initial page.<br />Instead, a request will be sent via JS to fetch that content asynchronously.<br />While the content is being fetched, a spinning wheel acts as a placeholder.</p>
<p>The Link class can also be extended, so that a link might re-fetch an already displayed report instead of triggering a page reload.</p> QFQ - Bug #16994 (New): Stacktrace in QFQ error messagehttps://project.math.uzh.ch/issues/169942023-10-04T19:21:08ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8519/clipboard-202310042120-brzfz.png" alt="" /></p> QFQ - Feature #16635 (New): Config: allowedFromAdresseshttps://project.math.uzh.ch/issues/166352023-07-20T15:24:05ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Die ZI bestehen darauf das wir nur Emails versenden duerfen mit einer FROM Adresse die eine Share Emailbox entspricht (keine persoenlilchen Adressen).</li>
</ul>
<p>Damit das sichergestellt ist, neue Config Option einfuehren 'allowedFromAdresses'.</p>
<p>CSV Liste mit Emailadressen.</p> QFQ - Feature #16630 (In Progress): QFQ Dev Panelhttps://project.math.uzh.ch/issues/166302023-07-19T15:07:51ZPhilipp Gröbelbauer
<p>Idea: A (floating and movable/minimizable?) panel that is accessible on each page with a QFQ record, if logged in in the backend.<br />The panel gives access to "QFQ Dev Tools" that increase quality of life for the developer, such as:</p>
<p>- Display all variables per Store (C/S/U/Y/T/?)<br />- Allow manipulation of viariables per store, maybe a shortcut for Switch User (=setting {{feUser:U}})<br />- Generate and open a SIP link (by typing the link in a textbox and clicking a button next to it)<br />- Quick access to sql.log, qfq.log, mail.log, ideally more than the last 10 lines<br />- Truncate table 'Dirty'<br />- Quick Access to all Forms and FormElements<br />- Display Info (SW and Versions, e.g. QFQ Version, PHP Version, webserver, ...?)<br />- Show Query Times (Slow Query Detection)</p> QFQ - Bug #16580 (New): custom.css Typo3 handlinghttps://project.math.uzh.ch/issues/165802023-07-07T10:44:36ZEnis Nuredini
<p>Dies ist ein Beispiel der Einbindung vom custom.css in LSZGS. Folgender Eintrag erfolgt in Constants vom Template:</p>
<pre>
# Instance Dependent: absolute path to custom css and images
[request.getNormalizedParams().getHttpHost() == 'webwork22.math.uzh.ch']
cd.stylesheet = https://webwork22.math.uzh.ch/lszgs/fileadmin/template/cd/lszgs.custom.css
[end]
[request.getNormalizedParams().getSiteUrl() == 'https://join.lszgs.uzh.ch/']
cd.stylesheet = https://join.lszgs.uzh.ch/fileadmin/template/cd/lszgs.custom.css
[end]
[request.getNormalizedParams().getSiteUrl() == 'https://join.lszgs.uzh.ch/preview/']
cd.stylesheet = https://join.lszgs.uzh.ch/preview/fileadmin/template/cd/lszgs.custom.css
[end]
</pre>
<p><strong>Achtung</strong> : Der Pfad sollte sein `fileadmin/template` (template, nicht templates).</p>
<p>Falls weitere spezielle Elemente mit einem fileadmin beginnenden relativen Pfad gibt, dann kann in Setup die gleiche Abfrage verwendet werden.</p>
<p>Anpassungen müssen noch bei diversen Tools umgesetzt werden. Checkliste im Anschluss:</p> QFQ - Feature #16137 (Ready to sync (develop)): Form: Refactor AbstractElement, Trennung von Rend...https://project.math.uzh.ch/issues/161372023-05-03T11:48:08ZPascal Rössler
<p>Erstellen der 'AbstractElement' Klasse. <br />Erstellen der 'ElementInput' Klasse extends 'AbstractElement'.<br />Werden die AbstractBuildForm und BuildFormBootstrap weiterhin gebraucht?<br />Später sollen alle FormElement Typen in einer eigenen 'Element...' Klasse definiert werden.<br />Eine klare Trennung der Element Klassen und des Renderings.<br />In den einzelnen Element Klassen soll kein HTML/Bootstrap erzeugt werden. <br />Es soll ein Array/Objekt mit allen bearbeiteten Parametern und Angaben der RenderBootstrap3/5 Klasse übergeben werden.<br />In der Rendering Klasse soll eine Funktion names 'process()' erstellt werden, die den/das Array/Objekt entgegennimmt und den korrekten HTML Code erzeugt.<br />Durch diese Trennung soll es einfach möglich sein die Bootstrap version zu wählen, in der man das Element rendern will.</p>
<p>Erstellen einer RenderBootstrap3 Klasse.<br />Erstellen einer RenderBootstrap5 Klasse.</p>
In Render-Klasse<br />Switch Case Statement
<ul>
<li>buildInput</li>
<li>buildSubrecord</li>
<li>etc.</li>
</ul> QFQ - Bug #16074 (New): Image missing in PDFhttps://project.math.uzh.ch/issues/160742023-04-24T14:38:55ZJan Haller
<p>SVG-Datei wird teilweise nicht in PDF eingesetzt.<br />10 PDFs generiert im Abstand von 10 Sek.</p>
<table>
<tr>
<td>PDF</td>
<td>Page</td>
<td>Img</td>
<td>Text</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>3</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>3</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>4</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>5</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>5</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>6</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>6</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>7</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>7</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>8</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>8</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>9</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>9</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>10</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>10</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
</table>
<p>X: vorhanden; O: fehlt<br />PDFs unter: /scratch/tmp/180/16074</p>
<p>Es kommt auch vor, dass das Bild nur auf einer Seite gerendert wird. Seltener kann es vorkommen, dass der Header-Text nicht gerendert wird.<br />Wird das PDF gespeichert und erneut geöffnet, kann es vorkommen, dass das Bild plötzlich vorhanden ist (vgl. gespeicherte PDFs).</p>
<p>Setup:</p>
<ul>
<li>Medtool Dev</li>
<li>Body: QFQ tt_content</li>
<li>Header: HTML tt_content</li>
</ul>
<p>Anmerkung: Der Fehler wurde auf Medtool Preview und QFQ-Dev noch nicht beobachtet.</p> QFQ - Feature #15970 (New): Inline Editinghttps://project.math.uzh.ch/issues/159702023-04-06T12:48:56ZPhilipp Gröbelbauer
<p>Sammelticket für alles related to Inline Editing in QFQ.</p>
<p>IPA proess - Umsetzung von zwei Varianten:<br /><code><br />SELECT 'table=tableName&column=colName&type=text&r=myId' AS _edit<br />SELECT 'form=formName&fe=feName&r=myId' AS _edit</code></p>
<p>Weitere, schlanke Variante diskutiert am 6.4.23 (crose, pgroeb):<br />(implizites Edit, wenn tableName ODER formName angegeben ist, und eine Spalte mit Alias selektiert wird, der dem FE-Name oder Column-Name entspricht)</p>
<p><code>10{<br />sql = SELECT p.id AS _r , CONCAT(p.firstName, ', ', p.lastName) AS personName<br />formName = ...<br />tableName = ...<br />}</code></p> QFQ - Feature #15812 (New): Upload: download button appears after uploading filehttps://project.math.uzh.ch/issues/158122023-03-16T12:01:35ZJan Haller
<p>Weiterentwicklung von <a class="issue tracker-1 status-1 priority-2 priority-default" title="Bug: Upload: download button not shown after pressing save (New)" href="https://project.math.uzh.ch/issues/15795">#15795</a>:<br />Nach dem Upload (Datei auswaehlen, noch kein Save gedrueckt) soll ein Downloadbutton erscheinen, um die Datei direkt wieder herunzerzuladen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7532/clipboard-202303161301-3ezmi.png" alt="" /></p> QFQ - Bug #15795 (New): Upload: download button not shown after pressing savehttps://project.math.uzh.ch/issues/157952023-03-14T13:02:17ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Bei r=0: alles ok</li>
<li>Bei r>0: Fehler wie beschrieben.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7498/clipboard-202303141400-waqtc.png" alt="" /></p>
<p>Before pressing save:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7499/clipboard-202303141400-zzrl9.png" alt="" /></p>
<p>After pressing save:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7500/clipboard-202303141401-v6ybl.png" alt="" /></p> QFQ - Bug #15794 (Feedback): Tablesorter filter funktionieren nach Reload nicht mehrhttps://project.math.uzh.ch/issues/157942023-03-14T10:08:07ZNicola Chiapolini
<p>Wenn ich in meinen Filtern eine Suche eintrage funktioniert zuerst alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7489/screenshot1.png" alt="" /></p>
<p>Wenn ich danach aber die Seite neu Lade, verschwinden die view-saver funktionen und die Suche hat keinen Effekt mehr.<br />Das Problem scheint der unten markierte Eintrag im local storage. Wird dieser Gelöscht, funktioniert wieder alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7490/screenshot2.png" alt="" /></p> QFQ - Feature #15528 (Ready to sync (develop)): Form/subrecord: Design for 'no record'https://project.math.uzh.ch/issues/155282023-02-12T10:12:52ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Neue Option (SYSTEM, FORM, FORM_ELEMENT): <code>subrecordEmpty=hide|mute|show:<text></code>
<ul>
<li>hide: wenn keine Records selektiert sind und es kein 'NEW' gibt - kein subrecord Element anzeigen (auch keinen Subrecord Titel).</li>
<li>mute: wenn keine Records selektiert sind und es kein 'NEW' gibt - Titel 'muted' anzeigen.</li>
<li>show:<text> - den <text> hinter dem Titel anzeigen falls keine Records selektiert sind.
<ul>
<li>Titel 'muted' anzeigen, '<text>' normal.</li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>Zur Diskussion (bin nicht sicher ob das gut ist): Anzahl der Records vor dem Batch im Titel anzeigen. Auch das konfigurierbar (SYSTEM, FORM, FORM_ELEMENT).</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7254/clipboard-202302121120-djvuw.png" alt="" /></p>
<ul>
<li>Aktuell ist das Rendering unterschiedlich, je nachdem ob 'Edit,Delete=off' oder 'Edit'=on ist. Es waere gut wenn auch bei 'Edit=on' keine Extra Zeile gerendert wird.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7253/clipboard-202302121108-951zm.png" alt="" /></p> QFQ - Bug #15013 (New): Excel Import does not work with multiple importRegionhttps://project.math.uzh.ch/issues/150132022-11-10T15:56:12ZPhilipp Gröbelbauer
<p>Aus einem Excel sollen die Spalten A,B und D importiert werden.</p>
<p>A soll in die Spalte 'klasse', B in die Spalte 'stufe' und D in die Spalte 'grundlohn'.<br />Formelement.parameter wurde wie folgt gesetzt:</p>
<p>importToTable = lohn<br />importToColumns = klasse, stufe, grundlohn<br />importRegion = 1,A,6,B,904|1,D,6,D,904<br />importMode = append <br />importType = auto<br />accept = *<br />fileDestination = fileadmin/protected/imports/pay_regulations.xlsx<br />fileReplace = always</p>
<p>Spalten A und B funktionieren korrekt. Die Spalte D, welche in einer zweiten 'importRegion' angegeben wurde, wird jedoch nach 'klasse' importiert, anstatt nach 'grundlohn'.<br />Wenn eine 2. importRegion angegeben wird, dann sollte nicht auf die 1. angegebene DB-Spalte zurückgesprungen werden!</p> QFQ - Feature #14494 (In Progress): Bootstrap 5 Migrationhttps://project.math.uzh.ch/issues/144942022-07-10T08:17:45ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>QFQ per Extension Config auf BS3 oder BS5 schalten</li>
<li>Grafischer Formulareditor</li>
<li>Formulare sollen gut aussehen auf einem kleinen Screen und auf einem grossen.
<ul>
<li>D.h. es gibt eine maximale Breite bei einem Form.</li>
</ul></li>
</ul>
<ul>
<li>FormEditor nach Moeglichkeit grafische Unterstuetzung: d.h. Elemente per Drag'n'Drop anordnen.</li>
</ul> QFQ - Feature #13843 (Ready to sync (develop)): Create JWT via QFQhttps://project.math.uzh.ch/issues/138432022-02-25T08:58:02ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Fuer AMS / SeminarLive benotigen wir JWT token</li>
<li>Ein erste Idee ist dieses in einem 10.sql zu berechenen und das dann via Record Store weiter zu verwednen umd API Calls zu machen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/5890/clipboard-202202241613-xshwv.png" alt="" /></p> QFQ - Feature #13757 (New): QR / Bar-Code Pluginhttps://project.math.uzh.ch/issues/137572022-02-06T09:46:28ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Fuer eine Studenteneinlasskontrolle bei Klausuren waere es gut wenn wir einen QR/Bar-Code Scanner in QFQ haetten.</li>
<li>Scheinbar gibt es diverse Plugins, fuer JQuery z.B.: <a class="external" href="https://www.bestjquery.com/demo/barcode-scanner/">https://www.bestjquery.com/demo/barcode-scanner/</a></li>
<li>Folgende Modi koennten sinnvoll sein:
<ul>
<li>Als Formularelement.</li>
<li>In einem Report, am besten so:
<ul>
<li>das gescannt werden kann ohne einen Button zur Bestaetigung zu druecken,</li>
<li>der Wert direkt mit der Datenbank verglichen wird (check das die Person bekannt ist und noch nicht eingetreten ist) </li>
<li>wenn die Person bekannt ist, der Eintrag gemacht wird das sie eingetreten ist.</li>
</ul></li>
</ul></li>
</ul>
<p>Der Request kommt von Karin Niffeler. In der Biologie wird aktuell eine App verwendet mit der die Einlasskontrolle umgesetzt ist. Die Idee ist das bestehende RemoteExam Tool um die Funktion der Einlasskontrolle zu erweitern. Das RemoteExamtool bekommt damit ein weiteres Feature fuer die Administration von Klausuren.</p> QFQ - Feature #13609 (New): QFQ Introduction: Seite aufloesenhttps://project.math.uzh.ch/issues/136092022-01-04T11:57:28ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Unter <a class="external" href="https://project.math.uzh.ch/projects/qfq/wiki">https://project.math.uzh.ch/projects/qfq/wiki</a></p>
<ul>
<li>Habe ich eine Deine Konzept Seite verschoben unter das Tutorial</li>
<li>Eine neue Seite 'bitte aufloesen' angelegt - bitte anschauen ob da etwas in das Tutorial ubernommen werden kann und anschliessend bitte loeschen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/5718/clipboard-202201041255-qm7vz.png" alt="" /></p> QFQ - Feature #13330 (In Progress): Multi Form: Uploadhttps://project.math.uzh.ch/issues/133302021-11-07T08:32:33ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Fuer das medtool (EN) wird ein Multi Upload benoetigt.</p>
<p>Gut waere wenn man ein Multi Form nehmen koennte.</p> QFQ - Feature #12632 (New): TinyMCE: Prepare CSS classes for imageshttps://project.math.uzh.ch/issues/126322021-06-04T06:26:51ZPhilipp Gröbelbauer
<p>Ziel: es soll einfach sein (Mausklick) Images mit einer CSS Klasse spezielle Eigenschaften zuzuweisen. Z.B. einen Rahmen, damit sich das Bild vom Hintergrund abhebt oder mit einer Transparenz, um deutlich zu machen das bei einem Screenshot die Buttons keine aktiven Elemente sind sondern nur zur illustration dienen.</p>
<p>Scheinbar hat TinyMCE schon etwas vorbereitet:</p>
<ul>
<li><a class="external" href="https://stackoverflow.com/questions/16221704/tinymce-add-class-to-img-tag">https://stackoverflow.com/questions/16221704/tinymce-add-class-to-img-tag</a></li>
<li><a class="external" href="https://www.tiny.cloud/docs/plugins/opensource/image/">https://www.tiny.cloud/docs/plugins/opensource/image/</a></li>
<li><a class="external" href="https://www.tiny.cloud/docs-4x/plugins/image/#image_class_list">https://www.tiny.cloud/docs-4x/plugins/image/#image_class_list</a></li>
</ul> QFQ - Feature #12262 (In Progress): Form buttons on top: more customablehttps://project.math.uzh.ch/issues/122622021-03-25T15:57:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn man beliebige Buttons oben im Form anbieten koennte.</li>
<li>Die bisherigen Buttons (New, Save, Close, Trash) sollten neu durch den gleichen PHP Code gerendert werden. U.a. um ein guten debug Tooltip zu haben.</li>
<li>Alle Funktionen die '... AS _link' kennt, sollten moeglich sein. Z.B.
<ul>
<li>Popups mit custom message, inkl yes/no zum abbrechen.</li>
<li>Tooltip</li>
<li>Button active/disabled</li>
<li>dynamic update waere nett, aber nicht zwingend in einer erste Version. Waere nur noetig wenn eine Custom definiton gegeben ist.</li>
</ul></li>
</ul>
<p>Notation:</p>
<ul>
<li>Die bisherigen werden supported, sind aber deprecated:
<ul>
<li>saveButtonText,saveButtonTooltip,saveButtonClass,saveButtonGlyphIcon</li>
<li>Dleete*, save*, close*</li>
</ul></li>
</ul>
<ul>
<li>Neu
<p>saveButton = p:..|b:..|s:..|o:...|q:...|t:.. ...</p></li>
</ul>
<p>Anwendung:</p>
<ul>
<li>Delete ist disabled sobald slave records existieren. Beispiel `deleteButton = p:..|b:..|r:{{select <br /> ...}}|o:...'</li>
<li>Mit <a class="issue tracker-2 status-5 priority-3 priority-high3 closed" title="Feature: As _link: content before/after link (Closed)" href="https://project.math.uzh.ch/issues/13945">#13945</a> kann Inhalt davor und dahinter ausgegeben werden. Z.B. `col-md-...` oder `<div class="button-group">`</li>
</ul> QFQ - Feature #12186 (New): TinyMCE Config für Objektehttps://project.math.uzh.ch/issues/121862021-03-20T07:50:24ZElias Villiger
<p>Es gibt einige TinyMCE Optionen, die nicht als String, sondern als Objekt angegeben werden. Mit QFQ werden jedoch alle Configs als String übergeben, wodurch diese Optionen nicht gesetzt werden können.</p>
<p>Beispiel: <a class="external" href="https://www.tiny.cloud/docs/configure/content-filtering/#exampleusinginvalid_stylesobject">https://www.tiny.cloud/docs/configure/content-filtering/#exampleusinginvalid_stylesobject</a></p>
<p>Z.B. im FE.parameter (deaktivieren von fixen Tabellengrössen):<br /><pre>
editor-invalid_styles: { 'td': 'width height', 'th': 'width height' }
</pre></p>
<strong>Mögliche Lösungen:</strong>
<ul>
<li>QFQ erkennt, wenn ein Parameter mit {} gewrapped ist und umgibt solche Parameter nicht mit Quotes.</li>
<li>Spezielle Notation in QFQ, um einen Parameter als Objekt zu markieren?</li>
</ul> QFQ - Bug #11237 (New): Radiobutton / parameter.buttonClass= btn-default - kein dirty Triggerhttps://project.math.uzh.ch/issues/112372020-09-30T16:10:08ZElias Villiger
<p>Bei Radio buttons mit buttonClass=btn btn-default wird kein dirty-Event (mehr) getriggert (d.h. Save-Button wird nicht aktiviert). Ohne class="btn" funktioniert es.</p> QFQ - Feature #10119 (In Progress): Dropdown (selectlist) &TypeAhead: format and catagorize listhttps://project.math.uzh.ch/issues/101192020-02-13T12:27:19ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Gewuenscht ist das man Bereiche (z.B. Tags) von Items in Gruppen einteilen kann. Bsp:</p>
<ul>
<li>Formatierung der Eintraege:
<ul>
<li>Subtitle: non clickable, style: grau, oder fett schwarz, ..</li>
<li>Regular Item: mit glyphicons, fa, icons.. - fett, kursiv, hover (tooltip).</li>
</ul></li>
</ul>
<ul>
<li>Es gibt die Gruppen, z.B. 'Farbe', 'Fruechte', 'Auto'.</li>
<li>User tippt 'a'.</li>
<li>Angezeigt werden im Dropdown jeweils die 3 Gruppen, pro Gruppe die Matches auf 'a'.</li>
</ul>
<p>Darstellung der Listen</p>
<ul>
<li>Vermutlich kann man im JSON Datastring HTML Code angeben. Damit koennten dann die Eintraege formatiert werden.</li>
<li>Wichtig ist das im Value Feld HTML gesendet werden.</li>
</ul> QFQ - Feature #10115 (New): TypeAhead: static listhttps://project.math.uzh.ch/issues/101152020-02-13T09:34:27ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Neues Attribute: data-typeahead-list.</p>
<p>Inhalt JSON kodiert, genau wie die bisherige AJAX Response.</p> QFQ - Bug #9789 (New): Record Lock: release to early on 'leave page'https://project.math.uzh.ch/issues/97892019-12-17T19:58:55ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Form oeffnen</li>
<li>Record veraendern - lock wird angefordert: ok</li>
<li>Auf irgendeinen Link klicken (Form verlassen)</li>
<li>Sofort wird ein 'Release Lock' gesendet (und ausgefuehrt), obwohl der User via Dialog gefragt wird ob er die Daten verlieren moechte: BAD</li>
</ul>
<ul>
<li>Anschliessend arbeitet das Form ohne Lock weiter - das ist nicht gut!</li>
<li>Min. in der Version 19.7.0 war das Verhalten noch ok (w16.math.uzh.ch/ort)</li>
<li>Die Screenshots zeigen das Verhalten bei 19.7.0 und 19.12.0. In der 19.7.0 ist der Dialog 'leave site' offen, ohne das 'dirty release' getriggert wurde, bei 19.12.0 wurde dirty release faelschlicherweise getriggert.</li>
</ul> QFQ - Bug #9691 (Priorize): Checkbox: dynamic update > readonlyhttps://project.math.uzh.ch/issues/96912019-12-03T09:27:55ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Die Klasse 'qfq-disabled' muss auf dem Label liegen.</li>
<li>readonly sollte weiterhin auf den Options sein.</li>
</ul>
<p>Das ganze testen fuer <br /><pre>
checkbox
single
plain
button
multi
plain
button
radio
plain
button
</pre></p> QFQ - Feature #9517 (Priorize): Input multiple tags with typeaheadhttps://project.math.uzh.ch/issues/95172019-11-06T16:27:58ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Fuer Suchfilter waere es gut wenn man Tags eingeben koennten, die via Typeahead vorgeschlagen werden.</li>
<li>Die Vorschlagsliste wird gebaut mit den tags die zuvor mal eingegben wurden.</li>
</ul>
<p>Folgende Libs koennten intressant sein:</p>
<ul>
<li><a class="external" href="https://maxfavilli.com/jquery-tag-manager">https://maxfavilli.com/jquery-tag-manager</a> (Twitter Typeahead)</li>
<li><a class="external" href="https://soliantconsulting.github.io/tagmanager/">https://soliantconsulting.github.io/tagmanager/</a></li>
<li><a class="external" href="https://vuejsfeed.com/blog/add-tags-using-an-input-with-typeahead-support">https://vuejsfeed.com/blog/add-tags-using-an-input-with-typeahead-support</a></li>
</ul> QFQ - Bug #9275 (New): autcron: t3 page, which takes to long to respond, is not reported properlyhttps://project.math.uzh.ch/issues/92752019-10-01T18:09:29ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Auf w16 werden ueber ein AutoCron Skript gitlab Berechtigungen erzeugt. Dieses Script benoetigt mehrere Minuten. Scheinbar hat der CLI PHP Interpreter einen Timeout, der das Skript hart abbrechen laesst.<br />Der System Cron sendet dann eine Mail:<br /><pre>
FROM: root@math.uzh.ch
TO: www-data@math.uzh.ch
SUBJECT: Cron <www-data@w16> /usr/bin/php /var/www/html/my/typo3conf/ext/qfq/Classes/External/autocron.php
DATE: 01.10.2019 - 13:03:01
PHP Warning: file_get_contents(https://w16.math.uzh.ch/my?id=updateGitlabPrivileges&token=secret....&nId=all): failed to open stream: HTTP request failed! in /var/www/html/my/typo3conf/ext/qfq/Classes/Core/Helper/DownloadPage.php on line 73
</pre></p> QFQ - Feature #8522 (Some day maybe): build QFQ - npm warningshttps://project.math.uzh.ch/issues/85222019-06-12T09:18:03ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wenn auf CI ein Build angestossen wird gibt es folgende Meldungen in der Console:<br /><pre>
npm install
npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3
npm WARN prefer global coffeescript@1.10.0 should be installed with -g
npm WARN prefer global jshint@2.9.7 should be installed with -g
</pre></p> QFQ - Feature #7480 (ToDo): Record History (Undo / Redo)https://project.math.uzh.ch/issues/74802018-12-13T12:59:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn es in QFQ eine History der Records gaebe.</li>
<li>Schoen waere auch ein Undo/Redo</li>
</ul>
<p>Tipp von Marc:</p>
<p>Stackoverflow Frage: <br /><a class="external" href="https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records">https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records</a></p>
<p>Loesung MYSQL Triggers + history tabellen:<br /><a class="external" href="https://stackoverflow.com/a/12657012">https://stackoverflow.com/a/12657012</a></p> QFQ - Feature #6609 (New): Formlet: JSON API erweiternhttps://project.math.uzh.ch/issues/66092018-09-04T08:28:51ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Im QFQ 'PROTOCOL.md' ist ein Standard QFQ API mit einigen wenigen Feldern definiert.</p>
<p>Gut waere wenn die folgenden supported waeren:</p>
<p>"status": "success"|"error",<br />"message": "<message>" <br />"redirect": "no" | "url" | "url-skip-history" | "auto" | "close" <br />"redirect-url": "<url>"</p>
<p>Die waeren dann also auf der gleichen (obersten) Ebene wie 'elements'.</p> QFQ - Feature #6602 (New): Inline-Edit (Formlet): in Report auf Mausklick ein mini-form oeffnenhttps://project.math.uzh.ch/issues/66022018-09-02T21:57:01ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Anforderung: im Report soll der User an einer beliebigen Stelle ein Miniform oeffnen koennen (AJAX), ohne das er die Seite verlaesst. </li>
<li>Beispiel:
<ul>
<li>PhpMyadmin</li>
<li>Tabelle in <a class="external" href="https://editor.datatables.net/examples/inline-editing/simple">https://editor.datatables.net/examples/inline-editing/simple</a></li>
</ul></li>
</ul> QFQ - Feature #5345 (ToDo): Report: UPDATE / INSERT / DELETE statements should trigger subqueries...https://project.math.uzh.ch/issues/53452018-02-03T17:51:12ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Wunsch"></a>
<h2 >Wunsch<a href="#Wunsch" class="wiki-anchor">¶</a></h2>
<p>Falls ein UPDATE [keine] Records veraendert, waere es gut wenn stattdessen subqueries ausgefuehrt werden - und die Entscheidung wird in PHP evaluiert, ohne das eine weitere Query abgefeuert werden muss. Vergleichbar mit althead (wird ausgefuehrt sobald das sql keine Records selektiert).<br />Damit wuerden Queries der Form UPDATE ... WHERE 1=0 (mit '0={{<level>.line.count}}') gar nicht erst gefeuert.</p>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<pre>
10.sql = UPDATE ....
10.affected = 0|1|>0|>1|always
20.sql = INSERT ... SELECT ...
20.affected = 0|1|>0|>1|always
30.sql = DELETE ...
40.sql = SELECT
</pre>
<p>Bsp. 1)<br /><pre>
10.sql = UPDATE ... WHERE 1=0
10.affected = >0
10.head = update
10.althead = kein update
</pre></p>
<p>Ausgabe: kein update</p>
<p>Bsp. 2)<br /><pre>
10.sql = UPDATE Person SET name='john' LIMIT 1
10.affected = >0
10.head = update
10.althead = kein update
</pre></p>
<p>Ausgabe: update</p>
<a name="Anmerkungen"></a>
<h2 > Anmerkungen<a href="#Anmerkungen" class="wiki-anchor">¶</a></h2>
<ul>
<li>Der Wert von affected kann auch eine Query der From '10.affected = {{SELECT <abbr title="20.line.insertId > 100, 'no','yes'">IF</abbr> }}' sein.</li>
<li>'affected' wird ausgewertet nachdem query gefeuert wurde.</li>
<li>head / tail / althead / alttail / altsql wird in Abhaengigkeit von affected ausgegeben.</li>
<li>affected kann auch bei 'SELECT' angegeben werden. Mit 'affected=always' wird child einmal getriggert, auch wenn das keine records selektiert wurden.</li>
<li>Hinweis: bei updates die erfolgreich sind (Record existiert), aber keine Veraenderung stattgefunden hat, kommt vermutlich 'affected_rows=0' zurueck. Bei folgendem Klassiker sollte die Aktualisierung von `modified` dem vorbeugen (BTW: die Verwendung von altsql ist oben nicht beschrieben, waere aber nett)<br /><pre>
10 {
sql = UPDATE EzBookingImport SET `data`='{{dataC:R}}', modified=modified + INTERVAL 1 SEC WHERE ez_start='{{thisMonday:R}}' AND ez_objectID='{{ez_objectID:R}}'
altsql = INSERT INTO EzBookingImport (`data`, `ez_start`, `ez_objectID`, `raum_id`)
VALUES ('{{dataC:R}}', '{{thisMonday:R}}' , '{{ez_objectID:R}}', '{{raId}}' )
}
</pre></li>
</ul> QFQ - Feature #4869 (New): Dynamic Update (show, hide, readonly?, required?) for Template Group E...https://project.math.uzh.ch/issues/48692017-11-04T10:36:18ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Requested in <a class="issue tracker-1 status-5 priority-3 priority-high3 closed behind-schedule" title="Bug: Dynamic updates Pill - show/hide (Closed)" href="https://project.math.uzh.ch/issues/4865">#4865</a></li>
<li>Die Umsetzung sollte nicht so schwierig sein um eine komplette TG-Group aus/einzublenden.</li>
<li>Ob 'readonly' und 'required' Sinn machen ist nicht klar.</li>
<li>Dynamic Update innerhalb einer TG pro FE ist vermutlich schwierig - wird aber benoetigt (siehe unten)</li>
</ul> QFQ - Bug #3613 (Some day maybe): note /note unchecked -> note div (col-md) wird weiterhin gerenderthttps://project.math.uzh.ch/issues/36132017-04-21T16:41:23ZElias Villiger
<p>FormElement - Tab Layout:</p>
<p>Wenn z.B. die Checkboxes note und /note deaktiviert werden, wird der note-div weiterhin gerendert, ausser man setzt die "BS Note Columns" explizit auf 0.</p>
Erwartet wäre:
<ul>
<li>Deaktivierung von note führt dazu, dass <div class='col-md-x qfq-note'> nicht gerendert wird</li>
<li>Deaktivierung von /note führt dazu, dass der entsprechende </div> nicht gerendert wird</li>
</ul> QFQ - Feature #3402 (Some day maybe): Syntax Highlighting via CodeMirrorhttps://project.math.uzh.ch/issues/34022017-03-22T14:20:56ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Requirement: Texarea Feld mit Syntax Highlight</p>
<ul>
<li><a class="external" href="https://codemirror.net/">https://codemirror.net/</a></li>
<li>Min. SQL, optional weitere</li>
<li>Konfiguration wie bei TinyMCE via `data-...` - d.h. der Redakteur kann in QFQ Einfluss nehmen auf die diversen Optionen von CodeMirror.</li>
</ul> QFQ - Feature #1623 (Some day maybe): RealURLhttps://project.math.uzh.ch/issues/16232016-02-05T12:44:23ZCarsten Rosecarsten.rose@math.uzh.ch
URL Path:
<ul>
<li>Language</li>
<li>Type: standard, print, wide (wie standard, nur breiter), pure (kein HTML), xml</li>
<li>koennen die DBQ2 / FORM2 Parameter genauso verwendet werden wie bisher: GET & POST</li>
<li>Optional: Gibt es Aenderungen wie DBQ2 interne Links bauen muss? Bsp.: bisher "index.php?id=1234". Mit Real URL soll der Link zeigen auf "www.math.uzh.ch/vorleseung/mat123"</li>
</ul>