MyBB.de Forum
code auslagern - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: code auslagern (/thread-31897.html)

Seiten: Seiten: 1 2


code auslagern - hkkp - 20.04.2015

PHP-Code:
<script type="text/javascript">
ShoutBox.refreshInterval = {$mybb->settings[sf_sb_refresh_interval]};
ShoutBox.MaxEntries = {$mybb->settings[sf_sb_shouts_main]};
ShoutBox.lang = ['{$lang->sf_sb_posting}''{$lang->sf_sb_shoutnow}''{$lang->sf_sb_loading}''{$lang->sf_sb_flood_check}'"{$lang->sf_sb_no_perform}"];
{
$extra_js}


jQuery(document).ready(function($) {
    ShoutBox.showShouts();
    $(".sb_smilie").on("click", function() {
        $("#shout_data").focus();
        var smiley = $(this).attr("alt");
        $("#shout_data").replaceSelectedText(smiley " ");
        $("#shout_data").focus();

    });
   
});
</
script

ich habe schon ne weile probiert. wie schaffe ich es diese beiden segemente auszulagern in den ordner jscripts. jquery und darüberliegenden code in jeweils eine js-datei gepackt. funktioniert, aber dann wird ein missing argument bemängelt. da ich hier nicht weiter weiss, frag ich halt. danke


RE: code auslagern - StefanT - 20.04.2015

Der Teil mit den PHP-Variablen wird sich kaum auslagern lassen.


RE: code auslagern - hkkp - 20.04.2015

also der obere teil? mach ich dies nicht, dann meckert der validator bzw. die konsole wegen dem script? gibt es da noch eine lösung? den code iwie verpacken?

- habe jetzt den jquery teil in eine js-datei gepackt
- oberen teil in die headerinclude

Code:
<script type="text/javascript">
//<![CDATA[<!--var ShoutBox.refreshInterval = "{$mybb->settings[sf_sb_refresh_interval]}";var ShoutBox.MaxEntries = "{$mybb->settings[sf_sb_shouts_main]}";var ShoutBox.lang = "['{$lang->sf_sb_posting}', '{$lang->sf_sb_shoutnow}', '{$lang->sf_sb_loading}', '{$lang->sf_sb_flood_check}', "{$lang->sf_sb_no_perform}"]";// -->//]]></script>

dann sagt mir die konsole folgendes:

SyntaxError: missing ; before statement index.php:52:12 ---> var ShoutBox.refreshInterval = "7";
SyntaxError: expected expression, got ')'


RE: code auslagern - StefanT - 20.04.2015

Du kannst Javascript in einen HTML-Kommentar packen: http://stackoverflow.com/questions/1513871/xhtml-wont-validate-and-in-a-javascript-function/1513880#1513880


RE: code auslagern - hkkp - 20.04.2015

geht nicht....
so hab jetzt einige zeit probiert, evtl. kann mir da jemand helfen, weil ist doof, ausgerechnet auf der startseite nicht valide zu sein. danke!


RE: code auslagern - StefanT - 21.04.2015

Ohne zu wissen was du probiert hast und welches Problem auftritt, kann ich leider kaum konkret helfen.


RE: code auslagern - hkkp - 21.04.2015

anfang:

PHP-Code:
<tr>
 <td class="trow1"><div id="shoutbox_data" style="height: {$mybb->settings[sf_sb_height]}px; overflow:hidden;">{$lang->sf_sb_loading}</div></td>
</
tr>
<
tr>
 <td class="trow1" align="left">EingabeMax42 Zeichen<form onsubmit="ShoutBox.postShout(); jQuery('#shout_data').val(''); return false;" action="index.php"><input type="text" style="font-size:1.2em;" id="shout_data" size="25" maxlength="42"/><input type="submit" name="" value="Los" id="shouting-status" /></form></td>
</
tr>
<
script type="text/javascript">
//<![CDATA
[ShoutBox.refreshInterval = {$mybb->settings[sf_sb_refresh_interval]};
ShoutBox.MaxEntries = {$mybb->settings[sf_sb_shouts_main]};
ShoutBox.lang = ['{$lang->sf_sb_posting}''{$lang->sf_sb_shoutnow}''{$lang->sf_sb_loading}''{$lang->sf_sb_flood_check}'"{$lang->sf_sb_no_perform}"];
{
$extra_js}
jQuery(document).ready(function($) {    ShoutBox.showShouts(); 
$(".sb_smilie").on("click", function() {        
$("#shout_data").focus();
var 
smiley = $(this).attr("alt");        
$("#shout_data").replaceSelectedText(smiley " "); 
$("#shout_data").focus();
    });
});
//]]>
</script

dies in eine js-datei gepackt und in der headerinclude geladen:

PHP-Code:
//<![CDATA[
ShoutBox.refreshInterval = {$mybb->settings[sf_sb_refresh_interval]};
ShoutBox.MaxEntries = {$mybb->settings[sf_sb_shouts_main]};
ShoutBox.lang = ['{$lang->sf_sb_posting}''{$lang->sf_sb_shoutnow}''{$lang->sf_sb_loading}''{$lang->sf_sb_flood_check}'"{$lang->sf_sb_no_perform}"];
{
$extra_js}
jQuery(document).ready(function($) {
    
ShoutBox.showShouts();
    $(
".sb_smilie").on("click", function() {
        $(
"#shout_data").focus();
        var 
smiley = $(this).attr("alt");
        $(
"#shout_data").replaceSelectedText(smiley " ");
        $(
"#shout_data").focus();

    });    
});
//]]> 

soweit funktioniert es auch, aber:

siehe anhang 1

dann shout, eingabe

siehe anhang 2

dann refresh der seite, siehe anhang 1

dann hab ich versucht jquery und die variablen in den verschiedensten variationen in zwei js-dateien zu packen, hab ich nicht hinbekommen.


RE: code auslagern - StefanT - 21.04.2015

Wenn du bei
Code:
//<![CDATA[
zwischen drin einen Zeilenumbruch einfügst, wundert es mich nicht, dass damit der Code nicht mehr funktioniert.

Ob noch mehr Fehler drin sind, kann ich auf den ersten Blick nicht erkennen. Alles in einer Zeile ist auch mühsam zu lesen... Wink


RE: code auslagern - hkkp - 21.04.2015

obiges zur lesbarkeit optimiert.... wie zeilenumbruch?


RE: code auslagern - StefanT - 21.04.2015

Das ergibt doch so überhaupt keinen Sinn!? Jetzt hast du den gleichen Code einmal im Templates und einmal in einer Javascript-Datei (obwohl schon gesagt wurde, dass da PHP-Variablen drin sind und noch dazu mit CDATA).

So kann ich dir beim besten Willen nicht helfen. Sad