-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mögl. Datenverlust mit Tiny 5/6b in MBlock Datenblöcken nach Umsortieren #62
Comments
Einfaches Modulbeispiel zum Testen (MForm und MBlock benötigt): INPUT
OUTPUT
|
ich werde erstmal die vorhandenen Issues entfernen und einen Stand fertigstellen, mit welchem man ein Release machen kann. Im Moment ist die aktuelle Version von tinymce 6.8.3 .. deswegen verhält sich vielleicht auch einiges schon anders |
Danke für das neue Release! Leider bleibt das Issue bestehen – ich habe das gerade mit der neuen Version getestet und habe bei dem o.g. Testaufbau wieder das gleiche Ergebnis wie vorher. Insofern halte ich es nach wie vor für riskant, TinyMCE in Kombination mit MBlock einzusetzen, da man sich beim Ändern der Reihenfolge und anschließendem Speichern u. U. Inhalte löscht, ohne es gleich zu merken! |
Einige weitere Beobachtungen dazu: Mblock-IDs: Wenn man für einen MBlock Textfelder und -areas definiert und dann in einem Block mehrfach einsetzt, dann haben die beim Artikel-Editieren zunächst HTML-IDs wie Sobald man die MBlock-Sortierung ändert, werden für alle MBlöcke neue IDs nach einem anderem Muster generiert: Das ist in MBlock wohl Standardverhalten – war mir bisher nicht bewusst, ist aber m.E. für das folgende relevant. In dieser Betrachtung haben die Textareas die Klasse "tiny-editor", sollen also wie im obigen Modul-Beispiel als Tiny-Editoren genutzt werden. TinyMCE-Addon - assets/tinymce/scripts/base.js: Die Funktion "tiny_init" initialisiert neue Editor-Instanzen aus allen Seiten-Elementen mit der CSS-Klasse "tiny-editor". Sowohl beim ersten Aufruf (on rex:ready), als auch beim wiederholten (on rex:change). Dieser Vorgang passiert anscheinend erst "on rex:change", also nachdem MBlock bereits neu sortiert und neue IDs vergeben hat. Tiny scheint die Editoren intern mit der ursprünglich genutzten ID zu verwalten. Die neu sortierten und generierten IDs greifen deshalb vermutlich jeweils auf den falschen Editor zu. So lange alle diese Editor-Instanzen nur removed werden, sollte das wohl keinen Unterschied machen ... Es sei denn, das ID-Benennungsmuster ändert sich ... und genau das passiert beim ersten Ändern der Reihenfolge in MBlock (s.o.). Das führt dazu, dass Tiny die ursprünglichen Instanzen mit der neuen ID nicht mehr findet und entfernen kann. Sie bleiben tinymce-intern bestehen, während zusätzliche initialisiert werden. Das kann man nachvollziehen, wenn man sich am Ende der tiny_init Funktion von Tiny die Anzahl der Instanzen ausgeben lässt:
Wenn man am Anfang der tiny_init Funktion die bestehenden Editor-Instanzen in die Console ausgibt, dann kann man nach einem Sort die ursprünglichen Instanzen mit den alten IDs auch sehen:
Weiter bin ich hier mit meinem begrenzten Wissen nicht gekommen, aber ich vermute einen Zusammenhang mit dem beschriebenen Problem. Die zusätzlichen Instanzen scheinen Tiny bei zusätzlichen Sorts durcheinander zu bringen. Ich hoffe, dass diese Hinweise helfen können, das Problem zu beheben. Vielleicht jemand, der mit dem Tiny-Addon und MBlock vertraut ist? |
Ich kann das Verhalten nachstellen. Ich bin mir nicht sicher, ob dass Issue hier richtig ist. Denn für das Aufarbeiten zum Speichern der Daten, Verschieben der Blöcke und Erhalten der IDs ist MBlock verantwortlich. |
Die Daten gehen verloren, weil das |
Weshalb wird das Issue genau geschlossen? |
Es gibt ja den Nachfolger mit dem MForm Repeater, da funktioniert das mit den Editoren im übrigen auch nicht. Wäre vielleicht gut, erstmal nach vorne zu schauen und das dort zu lösen. Ansonsten Issue gerne wieder aufmachen. Nur 4-5% der Issues, die ich aktuell schließe, werden nochmal geöffnet. Ein Fix könnte auch seit einem Jahr beigesteuert werden. |
Das folgende Problem wurde vor einer Weile schon mal im Slack besprochen.
Da es hier bisher keinen Eintrag dazu gibt, stelle ich das mal ein, damit es nicht vergessen geht.
Voraussetzung:
(jeder vom Redakteur angelegte Datenblock erhält also eine Tiny-Instanz)
Testfall - Editieren des Blocks:
Ergebnis:
Die Editor-Inhalte mancher Blöcke sind nun entweder vertauscht oder gelöscht.
Beobachtungen:
das Problem wird erst nach dem Speichern und erneutem Aufruf sichtbar.
Vermutung:
Wenn ich es richtig verstehe, sollen vom Tiny-Addon beim Umsortieren von MBlock die TinyEditor-Instanzen beendet und nach Änderung der Reihenfolge erneut Initialisiert werden. Das scheint nicht so gut zu funktionieren. Evtl. ein Reihenfolge/Timing-Problem?
Evtl. verwandt:
tinymce/tinymce#8477
tinymce/tinymce#7753
https://fiddle.tiny.cloud/33faab (Tiny Version auf 5.x setzen und fiddle mit Run neu starten)
The text was updated successfully, but these errors were encountered: