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:
Das Ergebnis ist im Frontend wie erwartet:<div>Kontrolltext: <!-- text: Ein Testfeld; --></div>
<div><!-- ifSet: Ein Testfeld; --><!-- text: Ein Testfeld; --><!-- /ifSet --></div>
Kopiert man jetzt im Template-Editor die zweite Templatezeile zuKontrolltext: Dies ist der Inhalt des Feldes
Dies ist der Inhalt des Feldes
dann wird's heikel, denn das Frontend-Ergebnis sieht so aus:<div>Kontrolltext: <!-- text: Ein Testfeld; --></div>
<div><!-- ifSet: Ein Testfeld; --><!-- text: Ein Testfeld; --><!-- /ifSet --></div>
<div><!-- ifSet: Ein Testfeld; --><!-- text: Ein Testfeld; --><!-- /ifSet --></div>
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.Kontrolltext: Dies ist der Inhalt des Feldes
Dies ist der Inhalt des Feldes
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!