WYSIWYG-Editor und Upload-Feld #250
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
hängt ab von #253
Upload-Feld
8d4a1d3
Fügt dem
StateManagerdie Methoden hinzu,OptionsFiles zu speichern und abzurufen.eceac6f
Fügt Endpunkte hinzu,
OptionsFiles hinzuzufügen und abzurufen.Es gibt keinen Endpunkt, um Dateien zu "löschen". Wenn eine Datei von einer Frage entfernt wurde, verbleiben die Daten erst mal. Da das System content-addressable ist, ist es nicht möglich zu wissen, ob eine andere Frage einen Inhalt referenziert, ohne alle Dateien in allen Feldern in allen Fragen in allen Packages zu scannen, also einen Garbage Collector zu implementieren. Ich habe das erst mal ausgeklammert, könnte aber durch
questionpy-sdk pruneo.ä. aufgerufen werden, ggf. sogar automatisch nach dem Entfernen einer Datei laufen.78541bd
Fügt
<FileUploadElement>im Frontend hinzu, inkl. einer Mini-Vorschau der hochgeladenen Dateien und die Möglichkeit einzelne Dateien zu entfernen.Hochgeladene Dateien werden dem zentralen Datei-Repository hinzugefügt. Das macht es sehr einfach Dateien hochzuladen, wenn die Frage noch gar nicht existiert (ohne Draft-Questions o.ä. temporäre Strukturen hinzuzufügen, die die Implementierung komplizierter machen würden).
WYSIWYG-Editor
5e767d4
Fügt
<WysiwygEditorElement>und<TinyMCE>hinzu.Basiert vor allem auf folgenden Inspirationen:
Ich hatte gehofft, einfach die Official TinyMCE Vue component zu verwenden, aber die scheint vor allem auf die Verwendung mit der TinyMCE Cloud™ optimiert zu sein, und kein Bundling und self-hosting zu unterstützen.
<WysiwygEditorElement>ist dasFormElementfürQuestionOptions.<TinyMCE>kapselt die Editor-Instanz und bietet einev-model-SchnittstelleuseTinyMCEInstancemanagt den Lebenszyklus der Editor-Instanz und Editor-EventsTinyMCEUI.scss):useContentCss/TinyMCEContent.css): Die Styles im iframe (eigentlicher Editor-Bereich). Auch hier habe ich auf das Default-Theme aufgebaut. Die dynamischen Werte müssen aber geupdatet und injiziert werden. Dafür bietet TinyMCE eine API, die ich verwende. Ich nutze dafür?rawauch so an die SCSS-Datei, dann ist die allerdings nicht kompiliert. Das ganze ist also nicht möglich, ohne Vite's Build Pipeline zu hacken. Ich fand die gewählte Variante wesentlich einfacher und intuitiver, und vor allem sauberer, weil so die Logik in der Komponente steckt.