MyBB.de Forum

Normale Version: [G] Fehler JavaScript jsTemplates (modal)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Nach dem Upgrade von 1.8.19 nach .20 ist mir ein Fehler bei der folgenden JavaScript-Ausführung aufgefallen:

Dieser Happen Code ist neu in .20 und befindet sich im Template headerinclude:

Code:
var templates = {
modal: '{$jsTemplates['modal']}',
modal_button: '{$jsTemplates['modal_button']}'
};

Nach dem Aufrufen werden die beiden modal-Templates generiert und abschließend folgender Quelltext erzeugt:

Code:
var templates = {
modal: '<div class=\"modal\">
\
<div style=\"overflow-y: auto; max-height: 400px;\">
\
<h3>__message__</h3>
\
<div class=\"trow1\">
\
<div class=\"modal_buttons\">__buttons__</div>
\
</div>
\
</div>
\
</div>',
modal_button: '
\
<input type=\"submit\" class=\"button\" value=\"__title__\"/>'
};
(Mein modal-Template ist geändert und entspricht nicht mehr dem Original - ist hier aber irrelevant)

Es werden Zeilenumbrüche/Maskierungen "verrutscht". Sie gehören an das Ende jeder Zeile. Jeder Versuch die Templates zu bearbeiten oder mit den Zeilenumbrüchen zu spielen, etc bringt keine Abhilfe.

Die Browser-Konsole zeigt logischerweise folgenden Fehler:
"SyntaxError: ' ' string literal contains an unescaped line break".

Durch diesen Fehler bricht die gesamte JS-Funktionalität des Forums zusammen.

Setze ich die verrutschten Maskierungen manuell an das entsprechenden Zeilenende oder verwende den harten Template-Code, ist die Funktion wieder gegeben - d.h. die JavaScript-Funktion scheint hier fehlerhaft zu generieren.

Ist dies bekannt, gibt es eine Abhilfe, oder doch Layer-8-Problem? Smile

Vielen Dank für jeden Hinweis

[ExiTuS]
(27.03.2019, 16:21)[ExiTuS] schrieb: [ -> ](Mein modal-Template ist geändert und entspricht nicht mehr dem Original - ist hier aber irrelevant)

Oh nein, das ist absolut relevant. Wenn die modal-Templates unverändert von den master-Templates geladen werden, ist alles in Ordnung. Sobald sie aber im ACP bearbeitet wurden (eigentlich reicht es schon, sie unverändert abzuspeichern) schon kommt es zu diesem Fehler.
Offenbar haben die über das ACP abgespeicherten Templates etwas andere Zeilenumbrüche als die über XML importierten master-Templates.

Die modal-Templates werden in der global.php (#941-945) geladen.
PHP-Code:
$jsTemplates = array();
foreach (array(
'modal''modal_button') as $template) {
    eval('$jsTemplates["'.$template.'"] = "'.$templates->get($template10).'";');
    $jsTemplates[$template] = str_replace("\n""\\\n"addslashes($jsTemplates[$template]));


Wenn man die anderen Zeilenumbrüche herausfiltert, sollte es auch mit verändertem modal-Template funktionieren (hat es zumindest bei mir)
PHP-Code:
$jsTemplates = array();
foreach (array(
'modal''modal_button') as $template) {
     eval('$jsTemplates["'.$template.'"] = "'.$templates->get($template10).'";');
     $jsTemplates[$template] = str_replace(array("\n","\r"), array("\\\n"""), addslashes($jsTemplates[$template]));

doylecc, kannst du das samt Fix an die Entwickler melden?
(27.03.2019, 19:03)StefanT schrieb: [ -> ]doylecc, kannst du das samt Fix an die Entwickler melden?

Ich denke ja.  Wink
https://community.mybb.com/thread-222491.html
Vielen Dank. Smile