[CON-1792]: Backslashes gehen verloren

Alle bestätigten Fehler in CONTENIDO 4.9 (erledigte Fehler werden durch geschlossene Beiträge gekennzeichnet).
Antworten
derernst
Beiträge: 50
Registriert: Do 14. Aug 2008, 16:47
Kontaktdaten:

[CON-1792]: Backslashes gehen verloren

Beitrag von derernst » Di 11. Mär 2014, 23:00

Hallo Forum

Ob das jetzt ein Bug in 4.9.3 ist oder ein Feature, kann ich nicht sagen - aber es fällt mir auf, dass zumindest im Input von Modulen Backslashes in Javascript-Code verloren gehen. So funktionieren beispielsweise folgende Konstrukte nicht mehr, die ich haufenweise noch in 4.9.1 verwendet habe:

Code: Alles auswählen

echo "<a href='[...]' onClick='return loeschen(\'" . $name . "\')'>[x]</a>";
Das muss ich umständlich ändern in:

Code: Alles auswählen

$str = 'return loeschen("' . $name . '")';
echo "<a href='[...]' onClick='" . $str . "'>[x]</a>";
Oder bei:

Code: Alles auswählen

echo "<script type='text/javascript'>";
echo "\nfunction loeschen(nme) {";
echo "\nreturn window.confirm('Wollen Sie ' + nme + ' wirklich löschen?');";
echo "\n}</script>";
gehen die \ weg, die n bleiben. Natürlich braucht es die Newlines an sich nicht, Abstände reichen auch - aber wenn das Modul schon geschrieben ist, wirds mühsam, bis überall die Fehler gefunden sind.

Wenn man es weiß, kann man den Code entsprechend umschreiben, aber es ist natürlich umständlich. Insbesondere wenn man viele oder umfangreiche Module mit solchen Konstrukten im Einsatz hat, sollte man sich ein Upgrade von 4.9.1 auf 4.9.3 gut überlegen.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Backslashes von escapten Quotes in JS gehen verloren

Beitrag von homtata » Mi 12. Mär 2014, 00:37

Das hat mit Sicherheit auch in 4.9.0 schon nicht funktioniert, das war einer der Gründe, warum ich die frühere ArticleListAdvanced so massiv umgeschrieben habe - die eingebundenen Javascripte (noch dazu verschachtelt) wollten mit den Escapes und diversen Hochkommakonstrukten einfach nicht mehr funktionieren.
Ob das jetzt so gewollt ist oder ein Kollateralschaden der Neuprogrammierung? Keine Ahnung ;-)
Ich baue für meine Module die Inputbereiche inzwischen komplett anders, angelehnt an das, was ich z.B. beim XML-Sitemap-Modul vorgefunden habe...

derernst
Beiträge: 50
Registriert: Do 14. Aug 2008, 16:47
Kontaktdaten:

Re: Backslashes von escapten Quotes in JS gehen verloren

Beitrag von derernst » Mi 12. Mär 2014, 19:56

homtata hat geschrieben:Das hat mit Sicherheit auch in 4.9.0 schon nicht funktioniert
Das kann ich nicht bestätigen. Ich habe in einer 4.9.1-Installation die folgende Zeile, die funktioniert:

Code: Alles auswählen

echo "<button type='button' onClick='self.location.href=\"" . $_SERVER['PHP_SELF'] . "?" . Allgemein::implodeGetvars($qsvars, false) . "\"'>Abbrechen</button>";
Und auch das geht da:

Code: Alles auswählen

    echo "<script type='text/javascript'>";
    echo "\nfunction loeschen(nm) { return window.confirm('Wollen Sie ' + nm + ' unwiderruflich löschen?'); } "; 
    echo "</script>";
Diese beiden Konstrukte \" und \n gehen in 4.9.3 nicht.

Danke für den Hinweis auf das XML-Sitemap-Modul - sieht sehr aufgeräumt aus, das muss ich unbedingt näher anschauen.

mischa.holz
Beiträge: 86
Registriert: Do 28. Jun 2012, 15:30
Wohnort: Darmstadt
Kontaktdaten:

Re: Backslashes von escapten Quotes in JS gehen verloren

Beitrag von mischa.holz » Fr 14. Mär 2014, 15:44

Das ist in der Tat ein sehr merkwürdiges (und nicht erwünschtes) Verhalten.

Ich hab dafür mal ein Ticket (https://issues.contenido.org/browse/CON-1792) erstellt und werde mir das genauer ansehen ^.^
CONTENIDO Doku - API Doku - Git Repo - Bug Tracker - CONTENIDO 4.9.4!!
Arbeitet nicht mehr bei 4fb

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [CON-1792]: Backslashes gehen verloren

Beitrag von frederic.schneider_4fb » Do 20. Mär 2014, 11:24

Das Problem hat der Kolege übrigens behoben, in Version 4.9.4 sollte es also nicht mehr auftauchen. Die Entwicklerversion könnt Ihr hier "ziehen":
https://git.contenido.org

Verändert wurden folgende beiden Dateien:
  • contenido/includes/include.pretplcfg_edit_form.php
  • contenido/includes/include.tplcfg_edit_form.php
Frederic Schneider
Entwickler bei der four for business AG

Antworten