pragmaMx Support Forum

pragmaMx => Individuelle Anpassungen => Thema gestartet von: AlternativeComputing in 14 Juli 2013, 14:05:58

Titel: [gelöst] jQuery, Bootstrap Probleme in der settings.php
Beitrag von: AlternativeComputing in 14 Juli 2013, 14:05:58
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?
Titel: Re:jQuery, Bootstrap Probleme in der settings.php
Beitrag von: AlternativeComputing in 15 Juli 2013, 12:22:09
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>';

Titel: Re:jQuery, Bootstrap Probleme in der settings.php
Beitrag von: maik3 in 15 Juli 2013, 12:54:04
Evtl. das:
echo '<td align="center"><input type="radio" value="1" name="htmlallow[' . htmlspecialchars($htmltag) . ']"' . $sel[1] . '/></td>';
Titel: Re:jQuery, Bootstrap Probleme in der settings.php
Beitrag von: AlternativeComputing in 15 Juli 2013, 14:35:08
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
Titel: Re:jQuery, Bootstrap Probleme in der settings.php
Beitrag von: AlternativeComputing in 15 Juli 2013, 15:16:24
Soooo ich hab den Übeltäter gefunden.

Das
'!--', im Array der Funktion settingsGetHTMLTags() blockt und bring die Scripte zum Absturz.
Titel: Re:jQuery, Bootstrap Probleme in der settings.php
Beitrag von: AlternativeComputing in 15 Juli 2013, 16:22:47
Konnte das Problem mit diesen Code lösen:

if (radiobuttonname === \'htmlallow[!--]\') {var radiobuttonname = \'htmlallow[starttag-comment]\';};