Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892023-12-05T22:38:13ZProject @ iMath
Redmine 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 - Bug #17169 (Closed): FE.type=datetime: missing dirty on 'remove date'https://project.math.uzh.ch/issues/171692023-10-25T09:21:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Missing dirty on 'remove date',</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8635/clipboard-202310251111-b6vne.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/8636/clipboard-202310251113-gpdgl.png" alt="" /></p> QFQ - Bug #16381 (Closed): Form titel: dynamic update brokenhttps://project.math.uzh.ch/issues/163812023-06-12T05:46:15ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Nach-dem-laden-vor-dem-speichern"></a>
<h2 >Nach dem laden / vor dem speichern:<a href="#Nach-dem-laden-vor-dem-speichern" class="wiki-anchor">¶</a></h2>
<p><img src="https://project.math.uzh.ch/attachments/download/8030/clipboard-202306120745-zovu5.png" alt="" /></p>
<a name="Nach-dem-speichern"></a>
<h2 >Nach dem speichern:<a href="#Nach-dem-speichern" class="wiki-anchor">¶</a></h2>
<p><img src="https://project.math.uzh.ch/attachments/download/8031/clipboard-202306120746-o2sq4.png" alt="" /></p>
<a name="Code-im-Form"></a>
<h2 >Code im Form:<a href="#Code-im-Form" class="wiki-anchor">¶</a></h2>
<pre>
Person : {{last_name:RE}}, {{first_name:RE}} <span class="badge">{{id:R0}}</span>
<div class="pull-right">{{ 'p:{{pageSlug:T}}?form={{form:S}}&r={{r:S}}&feUser={{uzhShortName:RE}}|b|s|G:glyphicon-user|o:Switch user|q:Switch user to\: {{first_name:RE}} {{last_name:RE}}?' AS _link}}</div>
</pre> 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 #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 #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 - Support #11926 (Closed): Anmerkungen zu FormAsFilehttps://project.math.uzh.ch/issues/119262021-01-31T19:46:23ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Unit-Tests"></a>
<h2 >Unit Tests<a href="#Unit-Tests" class="wiki-anchor">¶</a></h2>
<ul>
<li>Aktuell werden die Forms (waehrend der QFQ Entwicklung, nachdem ich die Unit Tests laufen gelassen habe) reproduzierbar zerstoert (webwork16/crose/qfq). Die Forms sind dann noch da, aber die FormElemente sind weg.</li>
<li>Bitte selbst oder mit mir anschauen warum das passiert.
<ul>
<li>Aktuell bekomme ich bei den Unit Tests oft die Meldung 'Please create qfq config file 'qfq.json' in the conf directory' wenn ich einzelne Testfiles laufen lassen. Lasse ich den gesamten Test laufen, tritt der Fehler nicht auf. Nach einem Full-Run laufen dann auch einzelne Files ohne Probleme.</li>
</ul></li>
</ul>
<a name="_backup"></a>
<h2 >_backup<a href="#_backup" class="wiki-anchor">¶</a></h2>
<p>Es gibt ein 'fileadmin/qfq/protectec/qfqProject/form/_backup' Verzeichnis.</p>
<ul>
<li>Bitte '_backup' umbenennen in '.backup'. Grund: Bei der Anzeige via `ls` wird '_' einsortiert zwischen Kleinbuchstaben und Grossbuchstaben (in meinem Fall mitten drin zwischen allen Forms). Beginnt der Directory Name mit '.' waere er ganz am Anfang und faellt schneller auf.</li>
</ul>
<ul>
<li>Aktuell wird beim Bakup aus `wizard.json` das File `wizard.2021-01-31_17-55-41.file.json`. Bitte so etwas nehmen wie `wizard.json.2021-01-31_17-55-41.file`. Grund: dann ist das herstellen einfacher, weil man einfach den vorderen Teil kopieren kann.</li>
</ul>
<ul>
<li>Aktuell habe ich knapp 17k Files im _backup Verzeichnis. Das haengt vermutlich mit dem ersten Problem zusammen. Bitte schauen ob die Zahl nachwievor so rasant steigt bei den Unit Tests wenn der Fehler gefixt ist.</li>
</ul> QFQ - Bug #10554 (Closed): extraButtonLock: seems to be brokenhttps://project.math.uzh.ch/issues/105542020-05-10T20:18:31ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Feature #9600 (Closed): Report als Filehttps://project.math.uzh.ch/issues/96002019-11-20T09:14:37ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Nach Diskussion mit BB, ME soll QFQ umgebaut werden, so das die T3 QFQ tt-content Records den Inhalt aus dem Filesystem laden koennen.</p>
<ul>
<li>Damit sollte (fuer bestehende tt-content records) ein GIT commit/pull (mergen) durch mehrere Entwickler moeglich werden.</li>
<li>Im QFQ tt-content Record wird ein Keyword 'filebased' angegeben. Damit weiss QFQ das es filebased arbeiten soll und dann den Inhalt im Filesystem.</li>
</ul>
<p>Es sind noch etliche Detailfragen zu loesen - insbesondere beim mergen. Evtl. koennen extended attributes helfen um den Dateinamen sprechend zu machen.</p>
<ul>
<li>Moegliche Directory Struktur
<ul>
<li>Page als Verzeichnis: id-<title></li>
<li>Content als Datei: id-[column]-[language id]-<title> (column: lnrb)</li>
</ul></li>
</ul>
<ul>
<li>Ist der Inhalt im tt-content record neuer als die Datei, wird die Datei aktualisiert. Timestamps werden aktualisiert.</li>
<li>Ist der Inhalt in der Datei neuer als der tt-content record, wird der Record aktualisiert. Timestamps werden aktualisiert.</li>
<li>Somit kann auf Filesystemebene und im Browser gearbeitet werden.</li>
</ul> QFQ - Bug #8668 (Closed): Pill disabled: dyamic mode 'hidden' not respected - FE is still requiredhttps://project.math.uzh.ch/issues/86682019-07-03T15:28:44ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Ist ein FE in einem Pill und dieses Pill ist disabled, dann sollten diese FE bei einem Save nicht beachtet werden.</p>
<p>Das ist vermutlich fuer FE mit static mode bereits implementiert. Fuer FE bei denen der mode dynamisch ermittelt <br />wird, fehlt es noch.</p>
<p>Evtl. tritt der Fehler auch nur auf bei FE wenn sie auf einem Pill sind das dynamic mode hat.</p>
<p>Fehler ist aufgetreten in #8651</p> QFQ - Bug #8601 (Rejected): After PSR4 migration: autocron.php can't be loadedhttps://project.math.uzh.ch/issues/86012019-06-22T01:22:08ZCarsten Rosecarsten.rose@math.uzh.ch
<p>PHP Fatal error: Uncaught Error: Class 'IMATHUZH\Qfq\Core\External\AutoCron' not found in /var/www/html/preview/typo3conf/ext/qfq/Classes/External/autocron.php:36<br />Stack trace:<br />#0 {main}<br /> thrown in /var/www/html/preview/typo3conf/ext/qfq/Classes/External/autocron.php on line 36</p> QFQ - Feature #7863 (Closed): pill title red: 'FE.mode=required'https://project.math.uzh.ch/issues/78632019-02-12T21:26:51ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wenn ein Form mehrere Pills hat und ein Element leer ist aber required, muss man alle Pills durchklicken um alle zu finden.</p>
<p>Gut waere wenn Pills, auf denen FormElemente sind mit 'required' failed, der Pill title rot dargestellt wird.</p>
<p>Das rot sollte verschwinden sobald alle required emlemente des aktuellen Pills gefuellt sind.</p> QFQ - Feature #7650 (Closed): Optional do not show 'required' sign on FormElementhttps://project.math.uzh.ch/issues/76502019-01-15T08:18:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In Sonderfaellen kann es gewuenscht sein, das ein FormElement Label nicht mit dem roten Stern (=required) markiert ist.</p>
<p>Bitte Flag einbauen das man es fuer ein Element ausschalten kann.</p> QFQ - Feature #7534 (Rejected): Bitte 'extension/Vendor' min. eine Ebene hoeher schiebenhttps://project.math.uzh.ch/issues/75342018-12-21T21:25:01ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Hallo Marc</p>
<p>wenn es keine zwingende Gruende dagegen gibt, koenntest Du das Verzeichnis 'extension/Vendor' min. ebene hoeher schieben? Das muesste dann vermutlich im composer.json entsprechend eingetragen sein.</p>
<p>Hintergrund: bei einer Stand 'deploy' config (ohne Pfade zu excluden) wird das Verzeichnis immer mit gesynct ... und das dauert.</p>
<p>Vielen Dank</p>
<p>CU<br />Carsten</p> QFQ - Support #7502 (Closed): Makefile 'bootstrap' anpassen nachdem Vendor/composer.json verschob...https://project.math.uzh.ch/issues/75022018-12-17T19:14:15ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls die beiden composer.json zusammengefasst werden, muss auch das Makefile/bootstrap angepasst werden:<br /><pre>
bootstrap: .npmpackages .plantuml_install .virtual_env
npm update
grunt default
composer update
cd extension/Resources/Private; composer update
</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 - Bug #7454 (Rejected): Drag'n'Drop: throws 'general' Error in Version '18.12.0'https://project.math.uzh.ch/issues/74542018-12-11T09:10:14ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Warum sieht man im Dialog, wenn man im T3 BE eingeloggt ist, nicht die ganze Fehlermeldung?</li>
<li>Bug scheint in 'DragAndDrop.php / Line: 146 / Undefined index: ord' zu sein<br /><pre>
------------------------------------------------
toUser:: General error - please report.
support:: File: /var/www/html/crose/qfq/typo3conf/ext/qfq/qfq/qfq/form/DragAndDrop.php / Line: 146 / Undefined index: ord
Timestamp:: 2018.12.11 10:08:07 +0100
Code:: 8
Message:: General error - please report.
Type:: Code Exception
current sip:: array (
'__dbIndexData' => '0',
'dnd-subrecord-form-id' => '49',
'dnd-subrecord-id' => '15775',
'dndTable' => 'FormElement',
'orderColumn' => 'ord',
'orderInterval' => '10',
'r' => '0',
's' => '5c0f7e737e935',
'urlparam' => '__dbIndexData=0&dnd-subrecord-form-id=49&dnd-subrecord-id=15775&dndTable=FormElement&orderColumn=ord&orderInterval=10&r=0',
)
Page Id:: -
FE User:: -
File:: /var/www/html/crose/qfq/typo3conf/ext/qfq/qfq/qfq/exceptions/ErrorHandler.php
Line:: 36
IP Address:: 192.168.133.210
HTTP User Agent:: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.76
QFQ Cookie:: l2q5amfcq8c986jujbufue669n
Stacktrace::
#0 /var/www/html/crose/qfq/typo3conf/ext/qfq/qfq/qfq/form/DragAndDrop.php(146): qfq\ErrorHandler::exception_error_handler(8, 'Undefined index...', '/var/www/html/c...', 146, Array)
#1 /var/www/html/crose/qfq/typo3conf/ext/qfq/qfq/qfq/form/DragAndDrop.php(94): qfq\DragAndDrop->reorder(Array, '647', 'before', '646', 'ord', '10', 'FormElement')
#2 /var/www/html/crose/qfq/typo3conf/ext/qfq/qfq/qfq/QuickFormQuery.php(1560): qfq\DragAndDrop->process()
#3 /var/www/html/crose/qfq/typo3conf/ext/qfq/qfq/api/dragAndDrop.php(61): qfq\QuickFormQuery->dragAndDrop()
</pre></li>
</ul> QFQ - Support #7410 (Closed): Einarbeitung QFQhttps://project.math.uzh.ch/issues/74102018-12-04T08:17:34ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="PersonAdressverwaltung"></a>
<h1 >Person/Adressverwaltung<a href="#PersonAdressverwaltung" class="wiki-anchor">¶</a></h1>
<ul>
<li>Formular Person (Name, Vorname, Email)</li>
<li>Formular Address (street, city)
<ul>
<li>Einer Person koennen mehrere Adressen zugeordnet sein.</li>
</ul>
</li>
<li>Report erstellen, der alle Personen anzeigt.</li>
<li>Report erstellen, der alle Personen mit allen Adressen anzeigt.</li>
</ul>
<ul>
<li>Wenn die beiden ersten Formualre fertig sind, bitte das 'Person' Formular erweitern, so das die Adressen als `subform` bearbeitet werden koennen.</li>
<li>Beim loeschen einer Person sollen auch gleich alle Adressen geloescht werden (alles via Form).</li>
</ul>
<ul>
<li>Zu einer Person beliebig viele 'Persoenliche Funktionen' zuordnen.
<ul>
<li>Student, Assistent, Sprecher, Hilfskraft, Sekretariat</li>
<li>Zeitdauer der Anstellung 'start', 'end'</li>
</ul></li>
</ul>
<a name="Links"></a>
<h2 >Links<a href="#Links" class="wiki-anchor">¶</a></h2>
<ul>
<li>Liste
<ul>
<li>Button der ein Formular aufruft,
<ul>
<li>der Button soll farbig sein (CSS: btn-alert)</li>
<li>Bei Klick soll eine Sicherheitsabfrage kommen: Soll das Formular geoeffnet werden.</li>
<li>Mit SIP und ohne SIP</li>
</ul></li>
</ul>
<ul>
<li>Mail versenden via 'Report'</li>
</ul></li>
</ul>
<a name="Uploads"></a>
<h2 >Uploads<a href="#Uploads" class="wiki-anchor">¶</a></h2>
<ul>
<li>Person / Upload:
<ul>
<li>Bild hochladen
<ul>
<li>Thumbnail anzeigen</li>
</ul></li>
</ul>
<ul>
<li>PDF hochladen
<ul>
<li>Thumbnails anzeigen</li>
</ul></li>
</ul></li>
</ul> 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 #4026 (Closed): sqlLog.sql: log number of FE.idhttps://project.math.uzh.ch/issues/40262017-07-02T14:52:17ZCarsten Rosecarsten.rose@math.uzh.ch
<p>It migth be usefull to know the FormElement number and 'column/parameter', who fires a query.</p> QFQ - Bug #4008 (Rejected): FormElemen.type=sendmail: wrong 'TO' if 'real name<rea@mail.to>' is usedhttps://project.math.uzh.ch/issues/40082017-06-29T20:14:51ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Aufgetreten bei ZGSM Anmeldeformular</li>
<li>mailTo=Math Admisson <<a class="email" href="mailto:admission@zgsm.ch">admission@zgsm.ch</a>></li>
<li>Es wurde versucht eine Mail an 'math' und 'admission' zu versenden.</li>
</ul> QFQ - Feature #3981 (Closed): Record Lockinghttps://project.math.uzh.ch/issues/39812017-06-27T11:17:44ZCarsten Rosecarsten.rose@math.uzh.ch
<p>QFQ benoetigt einen Mechnismus fuer ein Form/Record Locking.</p>
<a name="Variante-A-polling-websockets"></a>
<h1 >Variante A: polling / websockets<a href="#Variante-A-polling-websockets" class="wiki-anchor">¶</a></h1>
<ul>
<li>User A bearbeitet Record X.</li>
<li>User B moechte den Record zum bearbeiten oeffnen.
<ul>
<li>Er bekommt einen Hinweis das A ihn geoeffnet hat und wird gefragt ob A informiert werden soll das Form zu schliessen.</li>
<li>Falls 'bitte informieren': User A hat 30 Sekunden Zeit darauf zu reagieren. </li>
</ul>
</li>
<li>Weiteres Verhalten noch nicht definiert..</li>
</ul>
<a name="Variante-B-Nur-Hinweis"></a>
<h1 >Variante B: Nur Hinweis<a href="#Variante-B-Nur-Hinweis" class="wiki-anchor">¶</a></h1>
<ul>
<li>User A oeffnet auf Form 1 den Record X.</li>
<li>QFQ merkt sich 'primary' Table von 'Form 1', Record ID, User, IP, Zeitpunkt.</li>
<li>QFQ loescht den Lock, sobald das Form geschlossen wird oder User A ein Typo3 FE Session Timeout hat.</li>
<li>User B meochte den Record zum bearbeiten oeffnen und erhaelt einen Hinweis, das der Record bereits durch User A geoeffnet wurde (wann, IP). User kann waehhlen 'edit' oder 'cancel'.</li>
<li>Klickt User A auf Save, wird das 'modified' Datum mit dem urspruenglichen Wert verglichen (wird beim Form Load auf dem Server gespeichert, evtl als SIP).
<ul>
<li>Gibt es eine Aenderung kann der User auswaehlen was er tun moechte. </li>
<li>Der Unterschied wird in Form eine Tabelle angezeigt.</li>
</ul></li>
</ul>
<a name="Hinweis-3980"></a>
<h1 >Hinweis - <a class="issue tracker-3 status-5 priority-3 priority-high3 closed" title="Support: Client: Bei Form Submit den Status 'submit_reason=save|save,close' mitsenden (Closed)" href="https://project.math.uzh.ch/issues/3980">#3980</a><a href="#Hinweis-3980" class="wiki-anchor">¶</a></h1> QFQ - Support #3980 (Closed): Client: Bei Form Submit den Status 'submit_reason=save|save,close' ...https://project.math.uzh.ch/issues/39802017-06-27T11:03:44ZCarsten Rosecarsten.rose@math.uzh.ch
Die Information soll verwendet werden fuer
<ul>
<li>Record Locking</li>
<li>Redirection Target auf Server Seite bestimmen.</li>
</ul> QFQ - Support #3928 (Closed): chromedriver aus package.json entfernthttps://project.math.uzh.ch/issues/39282017-06-17T14:00:56ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Der Build der QFQ Packages lief nicht mehr durch. Er blieb beim chromedriver haengen. Ich habe ihn aus dem package.json rausgenommen. Anschliessend wurden die Pakete wieder gebaut.</p>
<ul>
<li>CR soll unter Anleitung von RO das Problem debuggen.</li>
</ul>
Weitere Punkte:
<ul>
<li>CR soll testweise einen neuen Buildjob installieren </li>
<li>Wo liegt das Verzeichnis w3.math.uzh.ch/qfq/... ?</li>
<li>Wie fuehrt man den Buildjob interaktiv aus (z.B.: ssh root@alfred14; su - jenkins; cd ~/workspace/...; make snapshot ), um zu schauen wo es hakt?</li>
</ul> QFQ - Support #3924 (Closed): Update der Third Party JS Libs: Best Practicehttps://project.math.uzh.ch/issues/39242017-06-16T16:24:24ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wie ist das Procedere um von allen eingsetzten Libs auf die neueste Version upzudaten?</p>
Bsp:
<ul>
<li>jquery</li>
<li>Chart.js</li>
<li>Codemirror</li>
</ul>
<p>Ein 'make bootstrap' mit anschliessendem Grunt scheint zumindest Chart.js nicht von 2.5 auf 2.6 aktualisiert zu haben.</p>
<p>bower.json hat sehr alte Versionsnummern, Gruntfile.js hat keine Versionsnummern.</p> QFQ - Support #3855 (Closed): Frage zu a) QfqForm.js, b) window.location.replacehttps://project.math.uzh.ch/issues/38552017-06-04T16:27:25ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://project.math.uzh.ch/projects/qfq/repository/revisions/b6cb6285c1ce6597fe8ca6d72d8d2f5b77fa304c/diff/javascript/src/QfqForm.js">https://project.math.uzh.ch/projects/qfq/repository/revisions/b6cb6285c1ce6597fe8ca6d72d8d2f5b77fa304c/diff/javascript/src/QfqForm.js</a></p>
<p>a) Zeile 506 (und weitere): Macht das '||' Sinn? Ich habe es gegen '&&' getauscht.</p>
<p>b) QfqForm.js benutzt erfoglreich an mehreren Stellen:</p>
<pre><code>window.location = data['redirect-url'];</code></pre>
<p>Bei der Erweiterung von 'url' zu 'url-skip-history' haette ich erwartet das folgendes funktioniert:</p>
<pre><code>window.location.replace = data['redirect-url'];</code></pre>
<p>Da gibt es aber eine exception: attribute 'replace' is readonly. <br />Folgendes funktioiniert:</p>
<pre><code>window.location.replace(data['redirect-url']);</code></pre> QFQ - Support #3700 (Closed): QFQ - Web Penetration Testinghttps://project.math.uzh.ch/issues/37002017-05-10T08:37:21ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte QFQ intensiv testen:</p>
<p>Sacha Schweizer wird QFQ mit folgendem Tool untersuchen: <a class="external" href="https://github.com/zaproxy/zaproxy">https://github.com/zaproxy/zaproxy</a></p> QFQ - Support #3616 (Closed): User Session uebergeben an wkhtmltopdfhttps://project.math.uzh.ch/issues/36162017-04-23T17:12:15ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Gibt es eine Moeglichkeit die aktuelle Typo3 FE-User Session an wkhtmlpdf zu uebergeben?</p>
<p>wkhtmlpdf wird lokal aus einem PHP Skript (Apache) heraus aufgerufen. Damit fuer wkhtmltopdf jede Seite so aussieht wie fuer den akutellen User, waere es gut wenn wkhtmltopdf die Identitatet des aktuellen Users annehmen koennte.</p>
<p>Optionen: <a class="external" href="https://wkhtmltopdf.org/usage/wkhtmltopdf.txt">https://wkhtmltopdf.org/usage/wkhtmltopdf.txt</a></p> QFQ - Feature #3522 (Closed): QFQ: Selenium QFQ Testshttps://project.math.uzh.ch/issues/35222017-04-06T12:48:51ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Support #3465 (Closed): Save button: optional 'active after form load'https://project.math.uzh.ch/issues/34652017-03-30T05:02:16ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aktuell gibt es ein Formular das nur eine Mail ausloesen soll. Dieses Form kann nicht ausgeloest werden, da der Save Button erst aktiv wird nach der ersten Aenderung.</p>
<p>Es waere gut wenn es eine Option geben wuerde, um beim Form load den Button gleich aktiv zu machen.</p> QFQ - Support #3399 (Closed): templateGroup: Hide 'add' if limit is reachedhttps://project.math.uzh.ch/issues/33992017-03-22T08:34:37ZCarsten Rosecarsten.rose@math.uzh.ch
<p>After reaching maximum number of instances it makes no sense to still show the 'Add' button.</p>
<p>Please hide the 'add element' or assign a user definable class (e.g. make them grey and unclickable).</p> QFQ - Support #3397 (Closed): DBQ2 / QFQ: SQL Schluesselwoerter gross schreibenhttps://project.math.uzh.ch/issues/33972017-03-22T07:41:57ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bitte eine Loesung evaluieren, mit der man SQL Keywords automatisiert in Grossbuschstaben aendern kann.</p>
<p>Idee 1: direkt in TinyMCE / CodeMirror implementieren<br />Idee 2: ein Plugin fuer Pluma (gedit) schreiben. Beispiel Pluma: Edit > Preferences > Plugins > Change Case</p>
<p>Ticket ggfs. Benj, Dario zuordnen</p> QFQ - Support #3249 (Closed): templateGroup: after clicking 'remove' the 'save'-button is still n...https://project.math.uzh.ch/issues/32492017-02-23T17:28:16ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Support #3207 (Closed): Syntax Hightlight (SQL) - CodeMirrorhttps://project.math.uzh.ch/issues/32072017-02-15T11:45:45ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://en.wikipedia.org/wiki/Comparison_of_JavaScript-based_source_code_editors">https://en.wikipedia.org/wiki/Comparison_of_JavaScript-based_source_code_editors</a></li>
<li><a class="external" href="http://codemirror.net">http://codemirror.net</a>, <a class="external" href="https://ace.c9.io">https://ace.c9.io</a>, <a class="external" href="http://codepress.sourceforge.net">http://codepress.sourceforge.net</a> ... - nach Studium der Wikipedia Seite scheinen ACE und codemirror die besten zu sein.
<ul>
<li>Schlanke Version evaluieren.</li>
</ul>
</li>
<li>Sollte implementiert werden wie TinyMCE</li>
<li>Aktuelle Verwendung fuer die FormEditor Felder 'value', 'sql1', 'parameter'.</li>
<li>Default:
<ul>
<li>Mode: SQL</li>
<li>Line numbering</li>
<li>Editor on/off</li>
</ul></li>
</ul> QFQ - Support #1982 (Closed): Alerts mit Frage: sollte modal seinhttps://project.math.uzh.ch/issues/19822016-05-11T13:37:35ZCarsten Rosecarsten.rose@math.uzh.ch
Bsp:
<ul>
<li>User drueckt 'close' auf einem modifizierten Form.</li>
<li>Anschliessend drueckt er 'Delete Upload'.<br />Nun sind zwei Alerts offen, mit je einer Frage.</li>
</ul> QFQ - Support #1966 (Closed): Client: warn before loosing unsaved datahttps://project.math.uzh.ch/issues/19662016-05-10T04:54:24ZCarsten Rosecarsten.rose@math.uzh.ch
Wenn moeglich bitte einen Hinweis einbauen der warnt, falls in einem Formular Daten veraendert wurden und der User von dem Form wegnavigiert:
<ul>
<li>Back Button</li>
<li>Window Close</li>
<li>Link irgendwo im Tan.</li>
</ul> QFQ - Support #1951 (Closed): Client: bei *allen* Formelementen wird 'required' gesetzt.https://project.math.uzh.ch/issues/19512016-05-03T16:18:06ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Direkt nach dem ausliefern des Forms haben im Client alle Formelemente das required Attribute gesetzt:</p>
<p>server: <input name="name:1" class="form-control" type="text" size="0" maxlength="128" value="Doe" data-hidden="no" data-disabled="no" data-required="no" ><br />client: <input required="" name="name:1" class="form-control" size="0" maxlength="128" value="Doe" data-hidden="no" data-disabled="no" data-required="no" type="text"></p> QFQ - Feature #1930 (Closed): (a) start > New Record > (b) modify > '+' & save > (c) modify > clo...https://project.math.uzh.ch/issues/19302016-04-29T12:50:54ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Von (a) einem Report oder Form aus koennen neue Records via einem Formular angelegt werden.</li>
<li>User gibt auf dem Form (b) einen neuen Record ein, klickt anschliessend '+' und 'save'</li>
<li>der User wiederholt den voherigen Schritt x mal.</li>
<li>Nach x-mal klickt er nicht mehr auf '+' sondern auf close.</li>
<li>Man wuerde nun erwarten man kommt zurueck auf (a). Der Client geht aber auf (x-1).</li>
</ul>
<p>Vorschlag: bei jedem '+' das auf einem '+' folgt, wird nichts an die Browser History angehaengt.</p> QFQ - Feature #1929 (Closed): Form > Save > Error: Tab mit problematischem Feld sollte aktiviert ...https://project.math.uzh.ch/issues/19292016-04-29T11:11:40ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Speichert man einen Record und ein Feld verletzt die Regel, so dass nicht gespeichert werden kann, dann sollte der Tab mit dem problematischen Feld angezeigt werden.</li>
<li>Bsp: Wird ein neues Form angelegt (die meisten Felder leer) und man waehlt den letzten Tab und drueckt 'save', so werden required Felder auf dem ersten Tab angemeckert, man muss aber zuerst hinspringen.</li>
</ul> QFQ - Support #1896 (Closed): Enable Button 'Save' auf Tastendruck: <input, type=date / datetime-...https://project.math.uzh.ch/issues/18962016-04-24T15:47:26ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei Input Felder mit type = date | datetime-local | time wird der Save Button nicht beim ersten Keypress in dem Inputfeld aktiviert. <br />Bei Input Felder mit typ=text ist das der Fall - das ist sinnvoll damit der User nicht erst in das Form klicken muss um anschliessend 'save' druecken zu koennen.</p> QFQ - Support #1881 (Closed): QFQ: Falls moeglich 'press return'=save()https://project.math.uzh.ch/issues/18812016-04-20T07:17:15ZCarsten Rosecarsten.rose@math.uzh.ch
Falls es einfach moeglich ist:
<ul>
<li>Fuer Input Felder soll das druekcen der Returntaste identisch sein mit druecken des SAVE Buttons.</li>
</ul> QFQ - Support #1874 (Closed): QFQ: 'New' Button - Hinweis Texthttps://project.math.uzh.ch/issues/18742016-04-18T17:44:11ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aktueller Text fuer 'Close' und 'New' Button</p>
<pre>
You have unsaved changes. Do you want to close?
Yes | No | Save & Close
</pre>
<ul>
<li>Der Text passt nicht gut fuer 'New'.</li>
</ul> QFQ - Support #1868 (Closed): QFQ / Client: save.php wird aufgerufen, auch wenn 'required' eines ...https://project.math.uzh.ch/issues/18682016-04-16T17:52:42ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>save wird aufgerufen auch wenn 'required' eines Formelments nicht erfuellt ist.</li>
<li>Statt 'save.php' aufzurufen sollte eine Fehlermeldung kommen.</li>
<li>Gleiches gilt auch fuer 'pattern' und 'min' / 'max'.</li>
</ul> QFQ - Support #1798 (Closed): QFQ: 'New' Button sollte hinweisen das Daten verloren gehenhttps://project.math.uzh.ch/issues/17982016-04-11T07:43:58ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls die Daten im Formular geaendert wurden und man dann 'New' drueckt, sollte ein Hinweis erscheinen das ungesicherte Daten vorhanden sind.</p> QFQ - Support #1622 (Closed): Back Button: Formularfelder sind bei https anschliessend leer.https://project.math.uzh.ch/issues/16222016-02-05T12:43:05ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird ein Form ueber HTTPS aufgerufen, Submit gedrueckt, und anschliessend der Back Button gedrueckt, so sind alle Felder leer (bei New Record).</li>
<li>Der Back Button ist dann interessant wenn beim Save() das Form nicht akzeptiert wird und der Save Vorgang abgebrochen wird.</li>
</ul> QFQ - Feature #1621 (Closed): Pill: Back button >> activate last active pill againhttps://project.math.uzh.ch/issues/16212016-02-05T12:13:17ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird der Back Button im Browser benutzt, sollte die letzte aktive Pill automatisch wieder aktiviert werden.</li>
<li>By default kommt dann immer die erste Pill.</li>
</ul> QFQ - Feature #956 (Closed): Form: Moeglichkeit das man das Formular als Redakteur sofort bearbei...https://project.math.uzh.ch/issues/9562015-08-28T09:21:39ZCarsten Rosecarsten.rose@math.uzh.ch