Syntaxhighligher_XH

Third Party Plugins to CMSimple - how to install, use and create plugins

Moderator: Tata

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Syntaxhighligher_XH

Post by frase » Tue Aug 15, 2017 10:00 am

Nochmal zusammengefasst:
Das Speichern-Problem tritt nur im Firefox (55.01) auf.
Und egal, ob mit der originalen oder der geänderten plugin.min.js.

IE11, Vivaldi und Opera machen es richtig.

Nachtrag:
Bei dem Versuch es in einem alten (Windows)Safari zu testen kommt:
tinymce not present! Either offline or local library missing.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Syntaxhighligher_XH

Post by frase » Tue Aug 15, 2017 10:59 am

Jetzt wird es noch verrückter:
CMSimple_XH 1.7 im Auslieferungszustand.
Firefox 55.01

Mit dem Plugin folgenden Code als JScript einfügen - immer am Ende einer Seite:

Code: Select all

extended_valid_elements: 'span[*]'
Ergebnis:
Seite "Start" = keine Probleme
Seite "Content" = keine Probleme
Seite "Templates" = Problem
Seite "Plugins" = Problem
Seite "Languages" = Problem
Seite "Menu Levels" = keine Probleme
neu angelegt sonst leer "Test" = keine Probleme

Es muss auf den Problem-Seiten irgendetwas "wirken"!

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Syntaxhighligher_XH

Post by frase » Tue Aug 15, 2017 11:23 am

Nach seeeeehr laaaaaanger Suche bin ich auf Folgendes gestoßen:

Der TinyMCE4 fügt bei externen Links während der Bearbeitung ein Attribut ein:

Code: Select all

data-mce-href
Ich denke, dass das die Ursache ist.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Syntaxhighligher_XH

Post by cmb » Tue Aug 15, 2017 12:54 pm

frase wrote:
cmb wrote:
frase wrote:Prüfe, dass session.use_only_cookies deaktiviert ist … Warnung
Hat das damit zu tun?
Sehr unwahrscheinlich. Das solltest du aber trotzdem ändern, falls die Seite öffentlich zugänglich ist.
Das ist bei allen meinen Installationen so - mir ist noch kein Problem aufgefallen.
Ist das die Browsereinstellung "Cookies von Drittanbietern ..."?
Nein, diese Einstellung wirkt nur serverseitig, und verhindert (wenn aktiviert), dass die Session-ID in der URL übermittelt wird, falls keine Cookies erlaubt sind. Da die Session bei CMSimple_XH i.d.R. sensible Informationen enthält, sollte man eine solche URL-Übermittlung besser ausschließen – nicht dass man versehentlich mal eine solche URL postet. Siehe auch https://cmsimpleforum.com/viewtopic.php?f=36&t=7076.
frase wrote:Nach seeeeehr laaaaaanger Suche bin ich auf Folgendes gestoßen:

Der TinyMCE4 fügt bei externen Links während der Bearbeitung ein Attribut ein:

Code: Select all

data-mce-href
Ich denke, dass das die Ursache ist.
Hm, bei mir ist aber auch dann der Speichern-Schalter nach dem Speichern bzw. Laden der Seite ausgegraut (auch in FF 55.0.1). Ist bei dir vielleicht eine Browsererweiterung im Spiel (ganz vielleicht ein Ad-Blocker)?
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Syntaxhighligher_XH

Post by frase » Tue Aug 15, 2017 1:21 pm

cmb wrote:Ist bei dir vielleicht eine Browsererweiterung im Spiel (ganz vielleicht ein Ad-Blocker)?
Diesmal konnte ich mich erinnern ...
Nein, der Adblocker ist es nicht.
Außerdem tritt das Problem wirklich nur bei Syntaxhighligher auf.
Und dort auch nur bei Seiten, auf denen externe Links vorhanden sind.
Wäre ein Zusammenhang mit rel="noopener noreferrer" möglich? Oder mit target="_blank"?

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Syntaxhighligher_XH

Post by frase » Tue Aug 15, 2017 1:32 pm

Nochmal:
Füge ich zum Beispiel auf der Startseite ganz unten ein:

Code: Select all

<pre class="brush: jscript">extended_valid_elements: 'span[*]</pre>
Dann ist alles in Ordnung.

Füge ich aber einen Link davor ein, z.B. so:

Code: Select all

<p><a href="http://example.com">Testlink</a></p>
<pre class="brush: jscript">extended_valid_elements: 'span[*]</pre>
Dann tritt das Problem auf.

Quellcode aus der Konsole kopiert:

Code: Select all

<p>
<a href="http://example.com" data-mce-href="http://example.com">Testlink</a>
<br data-mce-bogus="1">
</p>
<pre class="brush: jscript" contenteditable="false" data-mce-selected="1">extended_valid_elements: 'span[*]</pre>
<div id="sel-mce_0" class="mce-offscreen-selection" data-mce-bogus="all" style="top: 1990.5px;">
<pre class="brush: jscript" contenteditable="false">extended_valid_elements: 'span[*]</pre>
</div>

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Syntaxhighligher_XH

Post by cmb » Tue Aug 15, 2017 1:36 pm

frase wrote:Nochmal:
Füge ich zum Beispiel auf der Startseite ganz unten ein:

Code: Select all

<pre class="brush: jscript">extended_valid_elements: 'span[*]</pre>
Dann ist alles in Ordnung.

Füge ich aber einen Link davor ein, z.B. so:

Code: Select all

<p><a href="http://example.com">Testlink</a></p>
<pre class="brush: jscript">extended_valid_elements: 'span[*]</pre>
Dann tritt das Problem auf.
Ah, danke. Nun kann ich es im FF 55.0.1 reproduzieren, und gehe mal debuggen.
Christoph M. Becker – Plugins for CMSimple_XH

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Syntaxhighligher_XH

Post by cmb » Tue Aug 15, 2017 2:13 pm

Okay, das Problem liegt bei editor.undoManager.transact(). Selbst wenn ich diesen Code ändere zu:

Code: Select all

editor.undoManager.transact(function() {});
glaubt der Firefox eine Änderung gefunden zu haben. Die Doku zu transact() sagt aber:
Executes the specified mutator function as an undo transaction. The selection before the modification will be stored to the undo stack and if the DOM changes it will add a new undo level. Any logic within the translation that adds undo levels will be ignored. So a translation can include calls to execCommand or editor.insertContent.
Da in diesem Fall keine Änderung am DOM erfolgt, dürfte auch kein neuer Undo-Level hinzugefügt werden – das riecht nach einem Bug in TinyMCE. Da du den Bug gefunden hast, darfst du ihn auch behalten. ;)

Allerdings, sehe ich zunächst auch keinen triftigen Grund, diesen Code beim ersten mal als rückgängigmachbare Änderung laufen zu lassen. Man könnte also die gesamte Routine ändern zu:

Code: Select all

        editor.on('SetContent', function() {
            function processUnprocessedCodeSamples(unprocessedCodeSamples) {
                unprocessedCodeSamples.each(function(idx, elm) {
                    $(elm).find('br').each(function(idx, elm) {
                        elm.parentNode.replaceChild(editor.getDoc().createTextNode('\n'), elm);
                    });

                    elm.contentEditable = false;
                    elm.innerHTML = editor.dom.encode(elm.textContent);
                    elm.className = $.trim(elm.className);
                });
            }
            var unprocessedCodeSamples = $('pre').filter(trimArg(Utils.isCodeSample)).filter(function(idx, elm) {
                return elm.contentEditable !== "false";
            });
            
            if (unprocessedCodeSamples.length) {
                if (initialSetContent) {
                    processUnprocessedCodeSamples(unprocessedCodeSamples);
                    initialSetContent = false;
                } else {
                    editor.undoManager.transact(function() {
                        processUnprocessedCodeSamples(unprocessedCodeSamples);
                    });
                }
            }
        });
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Syntaxhighligher_XH

Post by frase » Tue Aug 15, 2017 3:28 pm

danke. Bugs habe ich persönlich schon genug ;-)

Test mit dem Code-Tausch (de-minifiziert):
Konsole wrote:ReferenceError: initialSetContent is not defined ... plugin.min.js (Zeile 301, Spalte 1)
Der Seitenwechsel klappt zwar - aber sämtlich Styles sind weg.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Syntaxhighligher_XH

Post by cmb » Tue Aug 15, 2017 3:35 pm

frase wrote:Test mit dem Code-Tausch (de-minifiziert):
Konsole wrote:ReferenceError: initialSetContent is not defined ... plugin.min.js (Zeile 301, Spalte 1)
Upps! Da muss auch noch diese Zeile angepasst werden:

Code: Select all

	var addedInlineCss, trimArg = Utils.trimArg, initialSetContent = true;
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply