Project

General

Profile

Feature #9600

Report als File

Added by Carsten Rose 11 months ago. Updated 2 months ago.

Status:
Priorize
Priority:
Normal
Assignee:
Target version:
Start date:
20.11.2019
Due date:
% Done:

0%

Estimated time:
Discuss:

Description

Nach Diskussion mit BB, ME soll QFQ umgebaut werden, so das die T3 QFQ tt-content Records den Inhalt aus dem Filesystem laden koennen.

  • Damit sollte (fuer bestehende tt-content records) ein GIT commit/pull (mergen) durch mehrere Entwickler moeglich werden.
  • Im QFQ tt-content Record wird ein Keyword 'filebased' angegeben. Damit weiss QFQ das es filebased arbeiten soll und dann den Inhalt im Filesystem.

Es sind noch etliche Detailfragen zu loesen - insbesondere beim mergen. Evtl. koennen extended attributes helfen um den Dateinamen sprechend zu machen.

  • Moegliche Directory Struktur
    • Page als Verzeichnis: id-<title>
    • Content als Datei: id-[column]-[language id]-<title> (column: lnrb)
  • Ist der Inhalt im tt-content record neuer als die Datei, wird die Datei aktualisiert. Timestamps werden aktualisiert.
  • Ist der Inhalt in der Datei neuer als der tt-content record, wird der Record aktualisiert. Timestamps werden aktualisiert.
  • Somit kann auf Filesystemebene und im Browser gearbeitet werden.

Related issues

Related to QFQ - Feature #9602: Form definition as JSONNew2019-11-20

Associated revisions

Revision 39fa2e75 (diff)
Added by Marc Egger 3 months ago

Refs #9600 add todos, parse file keyword

Revision 11fa9e42 (diff)
Added by Marc Egger 3 months ago

Refs #9600 report export and file read works.

Revision 29ac8bc8 (diff)
Added by Marc Egger 3 months ago

Refs #9600 todos

Revision 00d02c9d (diff)
Added by Marc Egger 3 months ago

Refs #9600 Edit report file using frontend editor.

Revision 1eac8e30 (diff)
Added by Marc Egger 2 months ago

Refs #9600 Edit report file using frontend editor.

Revision b4537ff1 (diff)
Added by Marc Egger 2 months ago

Refs #9600 Todos

History

#1 Updated by Carsten Rose 11 months ago

  • Related to Feature #3402: Syntax Highlighting via CodeMirror added

#2 Updated by Carsten Rose 11 months ago

#3 Updated by Carsten Rose 11 months ago

  • Related to deleted (Feature #3402: Syntax Highlighting via CodeMirror)

#4 Updated by Carsten Rose 10 months ago

  • Status changed from New to Some day maybe

#5 Updated by Carsten Rose 10 months ago

  • Status changed from Some day maybe to New

#6 Updated by Carsten Rose 9 months ago

  • Tracker changed from Support to Feature

#7 Updated by Carsten Rose 9 months ago

  • Target version changed from 146 to next

#8 Updated by Carsten Rose 9 months ago

  • Target version changed from next to next2

#9 Updated by Marc Egger 5 months ago

  • Status changed from New to Priorize
  • Assignee changed from Carsten Rose to Marc Egger

#10 Updated by Marc Egger 5 months ago

  • Subject changed from T3 tt-content record (Report) fuer QFQ: File based to Report als File

#11 Updated by Marc Egger 3 months ago

Ich bin mir nicht ganz sicher ob die oben genannte Lösung die beste ist.

Nach der Implementierung von Form As File, habe ich erlebt, wie kompliziert es sein kann, eine "simple" Synchronisation zwischen Files und Datenbank zu implementieren. Befolgen wir die obige Lösung, müssen wir nicht nur Files sondern auch die Ordnerstruktur synchronisieren. Natürlich wird es dadurch einfacher, dass wir die Ids mit synchronisieren, dies bindet die Files aber wiederum sehr stark an die Datenbank. Wie interpretieren wir drag-and-drop und copy-paste der files, wenn diese von der Datenbank id abhängig sind?

Ich würde folgende Alternative vorschlagen:

  • Zusätzlich zu dem bisherigen qfq tt-content record, führen wir einen qfq-file tt-content record ein.
  • Mittels Dropdown oder Textfeld kann man ein report file diesem tt-content record zuweisen.
  • Wenn das qfq-file tt-content record gerendert wird, wird das referenzierte File geladen und gerendert.
  • Ein file kann in mehreren tt-content records referenziert werden.

Vorteile:

  • Keine Synchronisation !!!
  • Files sind unabhängig von tt-content ids und page ids.
  • Files koennen problemlos zwischen verschiedenen Typo3 Instanzen hin und her kopiert werden.
  • File Struktur darf, muss aber nicht die Page Struktur wiederspiegeln.
  • Ich schätze den Aufwand kleiner ein.
  • Die Lösung ist unabhängig von Typo3, Einsatz von QFQ in anderen CMS/Frameworks wird ermöglicht.
  • Diese Lösung erscheint mir stabiler gegenüber Typo3 updates.
  • Update auf die neue QFQ Version (mit Report as File) ändert nichts an bestehender QFQ Applikation. Kann also nichts kaputt machen.

Nachteile:

  • Beim erstellen des tt-content records muss ein File ausgewählt (oder erstellt) werden.
  • Die Filestruktur spiegelt nicht automatisch die page Struktur.
  • Der Report kann nicht innerhalb von Typo3 bearbeitet werden.
    • Wir könnten allerdings einen eigenen web-editor in qfq bauen und diesen im Typo3 Interface verlinken.
  • Es wird keine automatische History der Reports mehr erstellt. Versioning muss komplett über Git stattfinden.
  • Die T3 Datenbank muss nachwievor synchronisiert werden. (Dies ist aber auch in der vorgesehenen Lösung der Fall und ist kaum zu verhindern)

#12 Updated by Benjamin Baer 3 months ago

ich wuerde die id ignorieren und automatisch eine speaking url aus dem ordnernamen generieren fuer die page und beim tt-content record einfach title = dateiname.

#13 Updated by Marc Egger 3 months ago

Falls wir meine Variante machen, haette Benj gerne ein Feature, mit dem man einmalig alle bestehenden tt-content records in report files exportieren und umwandeln kann.

hmm aber ja, kannst es auch so machen wie du gesagt hast
vermutlich besser, dann haben wir nicht viel mit der typo3 datenbank am hut
solange du ein ~sync~ export script macht der beim ersten mal alles schoen in ordner ablegt die nach pages benannt sind <3

- Benj

#14 Updated by Marc Egger 3 months ago

CR und ME entschieden:

  • Es gibt kein neues tt-content element.
  • Stattessen führen wir ein neues keyword ein: File=<path>
    • Ist das keyword gesetzt, wird der report aus angegebenem file geladen.
    • Ist es nicht gesetzt, wird der tt-content pfad im filestystem einmalig abgebildet und der inhalt tt-content bodytext in ein file in diesem pfad kopiert. Der bodytext des tt-content element wird ersetzt mit File=<path>.
  • Den inhalt der report files kann man nicht im T3 backend direkt bearbeiten.
  • Im Frontend wird weiterhin ein edit symbol angezeigt, wenn man im T3 backend eingeloggt ist. Damit kann man den inhalt des report files bearbeiten.

#15 Updated by Marc Egger 3 months ago

  • Status changed from Priorize to In Progress

#16 Updated by Marc Egger 3 months ago

Implemented first working version with frontend report editor:

Branch: F9600ReportAlsFile

Unittests fail. Have to be corrected.

#17 Updated by Marc Egger 2 months ago

Fertig implementiert.

TODO:
- Mit Carsten die Notes in FormAsFile.php besprechen
- Selenium tests schreiben

#18 Updated by Marc Egger 2 months ago

  • Status changed from In Progress to Priorize

Also available in: Atom PDF