Gelöst: Inkompatibilität mit Firefox 3.6!

Allgemeine Diskussionen zu ConPresso 4. Handhabung, Möglichkeiten, Verständnisfragen.
Achtung: Bitte benutzt wenn möglich die themenspezifischen Foren!
Antworten
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Gelöst: Inkompatibilität mit Firefox 3.6!

Beitrag von Mr. Magpie »

Ich hatte heute Nacht ein Problem, das mich ganz schön Nerven gekostet hat!
Irgendwann in den letzten Tagen hatte ich von Firefox 3.5.7 (Windows) auf Firefox 3.6 upgedatet. Soweit, so gut.

Während der Arbeit mit ConPresso-Templates fielen mir plötzlich Ungereimtheiten auf, die ich mir nicht erklären konnte und (zunächst) schon gar nicht in Zusammenhang mit dem FF-Update brachte.

Das Problem: Template-Bedingungen wurden einfach ignoriert!

Inzwischen konnte ich's eingrenzen auf einen Fehler, der erst seit FF 3.6 beim Kopieren von Template-Abschnitten auftritt, wenn Platzhalternamen ein oder mehrere Leerzeichen enthalten.

Testcase:

Folgendermaßen sehe ein im Template-Editor (bspw. im Feld "Rubrikseite") erstelltes Template aus:
<div>Kontrolltext: <!-- text: Ein Testfeld; --></div>
<div><!-- ifSet: Ein Testfeld; --><!-- text: Ein Testfeld; --><!-- /ifSet --></div>
Das Ergebnis ist im Frontend wie erwartet:
Kontrolltext: Dies ist der Inhalt des Feldes
Dies ist der Inhalt des Feldes
Kopiert man jetzt im Template-Editor die zweite Templatezeile zu
<div>Kontrolltext: <!-- text: Ein Testfeld; --></div>
<div><!-- ifSet: Ein Testfeld; --><!-- text: Ein Testfeld; --><!-- /ifSet --></div>
<div><!-- ifSet: Ein Testfeld; --><!-- text: Ein Testfeld; --><!-- /ifSet --></div>
dann wird's heikel, denn das Frontend-Ergebnis sieht so aus:
Kontrolltext: Dies ist der Inhalt des Feldes
Dies ist der Inhalt des Feldes
Man kann nun den Fehler manuell beheben, indem man im zweiten <!-- ifSet: Ein Testfeld; --> das Leerzeichen zwischen "Ein" und "Testfeld" über die Tastatur durch ein Leerzeichen ersetzt.

Noch abstruser wird's mit einem Platzhalter, welcher mehr als ein Leerzeichen enthält, bspw. <!-- ifSet: Name der Uni; -->, denn dann reicht es (nach der Kopieraktion) aus, das zweite Leerzeichen, das zw. "der" und "Uni" zu ersetzen. Ersetzt man dagegen nur das erste Leerzeichen, schafft das keine Abhilfe.

Schlussbemerkungen:
* Getestet wurde sowohl mit dem Standard-Parser von ConPresso 4.0.9 als auch mit mod_parser_enhanced.
* Firefox 3.6 wurde ohne zusätzliche Add-ons verwendet.
* Nach Reinstallation des Firefox 3.5.7 trat der Fehler nicht mehr auf.

Ich bin mir nicht sicher, wer jetzt der eigentliche Verursacher des Problems ist bzw. wo das Problem am schnellsten gelöst werden kann - beim Firefox oder bei ConPresso. Deshalb hab' ich's auch nicht bei den ConPresso-Bug gepostet. Solange ich nicht weiß, was da beim Kopieren genau geschieht, kann ich's halt auch nur schlecht der Mozilla-Community als Bug melden.
Natürlich könnte ich ausschließlich Platzhalter ohne Leerzeichen verwenden, aber 1) sieht's mit Leerzeichen im Artikeleingabe-Formular besser aus, da der Platzhalter-Name dort ja verwendet wird; 2) wäre es echt viel Arbeit, die vielen bestehenden Templates deshalb umzuarbeiten, von den entspr. Artikeln ganz zu schweigen.

EDIT: Es ist auch ganz egal, ob man die Template-Zeile über die Zwischenablage kopiert oder per Drag-and-Drop kopiert oder auch nur verschiebt!
Zuletzt geändert von Mr. Magpie am 08.02.2010 11:36, insgesamt 1-mal geändert.
Günther Ludwig
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Hatte jetzt einmal ein wenig Muße, um in die Datenbank zu schauen.
FF 3.6 sprenkelt beim Kopieren scheinbar willkürlich Leerzeichen ein, die man aber im Template-Editor nicht sieht.
Beim FF 3.5.7 geschieht dies definitiv nicht, übrigens auch nicht beim IE8.
Günther Ludwig
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

hast du testweise alle Erweiterungen deaktiviert?
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Nachdem ich die Ungereimtheiten entdeckt hatte, habe ich ein Downgrade auf 3.5.7 gemacht - wie zu erwarten traten die Probleme dann nicht mehr auf.
Anschl. habe ich den FF 3.6 in ein separates Programmverzeichnis installiert und ein neues FF-Profil erstellt, ganz ohne Erweiterungen/Add-ons. Aus den nachfolgenden Tests entsprang dann der obige Testcase
Günther Ludwig
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Magpie,

wie hast Du den Platzhalter kopiert? ctrl-c, ctrl-v?

Ich werde mal versuchen, das hier nachzuvollziehen.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Re: Inkompatibilität mit Firefox 3.6!

Beitrag von Mr. Magpie »

Hallo Balu, ich hatte doch geschrieben:
Mr. Magpie hat geschrieben:[...]EDIT: Es ist auch ganz egal, ob man die Template-Zeile über die Zwischenablage kopiert oder per Drag-and-Drop kopiert oder auch nur verschiebt!
Wenn das niemand nachvollziehen kann, bin ich völig ratlos :cry:
Günther Ludwig
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi,

es gibt manchmal Unterschiede im Verhalten, ob man das Kopieren über das Bearbeiten-Menü macht oder per ctrl-c / ctrl-v.

Darum frage ich :-)

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Okay, ich habe nie das Bearbeiten-Menü benutzt, welches ja im Template-Editor auch gar nicht zur Verfügung steht.
Auch die Buttons des Template-Editors habe ich - wahrscheinlich - nicht benutzt.

Ich habe ausschließlich mit der Maus per Drag 'n' Drop kopiert bzw. verschoben oder per Tastatur (^c/^x und ^v)
Günther Ludwig
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

So, Problem gefunden.

Mozilla hatte vor Jahren bereits einen Bug in diese Richtung, den ich im CPO per Workaround umgehen musste. Darum findet sich in _admin/templates.php der folgende Code:

Code: Alles auswählen

                // Mozilla wrongly converts space to CR+LF in innerHTML so let's try to fix that
                // https://bugzilla.mozilla.org/show_bug.cgi?id=89780
                $_REQUEST[$v] = preg_replace("/(\r\n|\n|\r)/", ' ', $_REQUEST[$v]);
                $_REQUEST[$v] = preg_replace('%<br( /)?>%i', "\n", $_REQUEST[$v]);
Das Problem hat sich jetzt wohl wieder eingeschlichen, tritt aber (hoffentlich) nur beim Einfügen von Text auf. Das Problem ist, dass dort eine neue Zeile eingefügt wird.

Früher war es so, dass die eingefügten Zeichen durch ein Leerzeichen ersetzt werden mussten (Newline = Whitespace). Jetzt ist es wohl besser, es durch "nichts" zu ersetzen:

Code: Alles auswählen

                // Mozilla wrongly converts space to CR+LF in innerHTML so let's try to fix that
                // https://bugzilla.mozilla.org/show_bug.cgi?id=89780
                $_REQUEST[$v] = preg_replace("/(\r\n|\n|\r)/", '', $_REQUEST[$v]);
                $_REQUEST[$v] = preg_replace('%<br( /)?>%i', "\n", $_REQUEST[$v]);
Probier das mal aus, ich hoffe, das wirkt sich nicht noch auf andere Teile aus und wird bald behoben.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Funktioniert hervorragend! Bisher alle Tests ohne negative Nebeneffekte!
Günther Ludwig
Antworten