Moin Moin, :morning:
Ich hab da ein kleines Problem mit der settings.php (admin.php?op=Configure), wenn ich via Theme bootstrap einsetze:
$("input[type=\'radio\']").each(function(){
var radiobuttonname = $(this).prop(\'name\');
$(this).wrap("<div class=\'switch radio-button-"+radiobuttonname+"\' data-on-label=\'<i class=\"icon-ok icon-white\"></i>\' data-off-label=\'<i class=\"icon-remove\"></i>\'></div>");
$(".radio-button-"+radiobuttonname+"").on(\'switch-change\', function () {
$(".radio-button-"+radiobuttonname+"").bootstrapSwitch(\'toggleRadioState\');
});
});
Es werden in der settings.php alle Javascripte unterbrochen.
Entferne ich jetzt diese Zeilen:
$(".radio-button-"+radiobuttonname+"").on(\'switch-change\', function () {
$(".radio-button-"+radiobuttonname+"").bootstrapSwitch(\'toggleRadioState\');
});
werden wieder alle Scripte ausgeführt. Was könnte die Ausführung verhindern?
Ok habe das Problem eingrenzen können.
Diese Zeilen machen Probleme:
echo '<td align="center"><input type="radio" value="1" name="htmlallow[' . htmlspecialchars($htmltag) . ']"' . $sel[1] . '/></td>';
echo '<td align="center"><input type="radio" value="2" name="htmlallow[' . htmlspecialchars($htmltag) . ']"' . $sel[2] . '/></td>';
echo '<td align="center"><input type="radio" value="0" name="htmlallow[' . htmlspecialchars($htmltag) . ']"' . $sel[0] . '/></td>';
Evtl. das:
echo '<td align="center"><input type="radio" value="1" name="htmlallow[' . htmlspecialchars($htmltag) . ']"' . $sel[1] . '/></td>';
Nein den "/" haben ja alle Inputfelder.
Es wird ja mit var radiobuttonname = $(this).prop(\'name\');
die Namen der Radio Inputs ausgelesen und alle Felder ohne [] hinter dem Namen, werden ja korrekt umgewandelt.
Selbst bei diesen Code:
$(this).wrap("<div class=\'switch radio-button-"+radiobuttonname+"\' data-on-label=\'<i class=\"icon-ok icon-white\"></i>\' data-off-label=\'<i class=\"icon-remove\"></i>\'></div>");
(Dieser Code schreibt einen div Container um die Radioinputfelder mit den Klassen switch radio-button-"+radiobuttonname+", wobei das "+radiobuttonname+" den ausgelesenden Radionamen schreibt.)
Werden korrekt alle Schalter gesetzt, selbst wenn [] hinter dem Namen steht.
Nur wenn
$(".radio-button-"+radiobuttonname+"").on(\'switch-change\', function () {
$(".radio-button-"+radiobuttonname+"").bootstrapSwitch(\'toggleRadioState\');
});
ins Spiel kommt, werden die Radio Inputs ab HTML Optionen nicht korrekt in Schalter umgewandelt, auch die nachfolgenden nicht und die Scripte brechen dann ab.
Zum nachvollziehen, es wird dieses Script eingesetzt: https://github.com/BdMdesigN/bootstrap-switch-BdMdesigN
Soooo ich hab den Übeltäter gefunden.
Das
'!--',
im Array der Funktion settingsGetHTMLTags() blockt und bring die Scripte zum Absturz.
Konnte das Problem mit diesen Code lösen:
if (radiobuttonname === \'htmlallow[!--]\') {var radiobuttonname = \'htmlallow[starttag-comment]\';};