Ergebnis 1 bis 21 von 21

Thema: Javascript Code einfügen

  1. #1
    Contao-Nutzer
    Registriert seit
    23.06.2009.
    Beiträge
    21

    Standard Javascript Code einfügen

    Hallo,

    vielleicht kann mir jemand helfen. Ich möchte "Multibox" nutzen. Damit kann man alle möglichen Inhalte (JPG, FLV, HMTL) in einer Lightbox abbilden. Damit ich mehrere Gelerien platzieren kann muss ich für jede Galerie auf der Seite den folgenden Javascript-Code individuell bei jeder Galerie mitgeben:

    <script type="text/javascript">
    var box = {};
    window.addEvent('domready', function(){
    box = new MultiBox('mb', {
    useOverlay: true,
    container: document.body,
    contentColor: '#FFF',
    showNumbers: true,
    descClassName: 'multiBoxDesc',
    path: 'multibox/'
    });
    });
    </script>

    Dabei wird "box = new MultiBox('mb', {" jeweils abgeändert.

    Wenn ich versuche den Code über das Modul "Eigenes HTML" einzubinden wird immer der TAG <script> einfach gelöscht.

    Weiss da jemand eine Lösung?

    Vielen Dank

  2. #2
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Unter "Einstellungen" im Adminbereich kannst du <script> als erlaubtes HTML-Element angeben.

  3. #3
    Contao-Nutzer
    Registriert seit
    23.06.2009.
    Beiträge
    21

    Standard

    Super hat geklappt, vielen Dank

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Dachte das sollte man nicht?
    Hab das gelesen bei den Unterlagen von Leo vom Usertreffen?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Standard

    den <script>-Tag zu verwenden ist BÖSE und das sollte man tunlichst vermeiden.

    Eine bessere Möglichkeit wäre die Verwendung des {{file::mbox_js.php}} Insert-Tags. Den Javascript-Code lagerst du einfach in die mbox_js.php im templates-Ordner aus.

    Grüße,
    Christoph


    ### EDIT
    Jetzt habe ich überlesen, dass du 'mb' jeweils ändern willst. Das wäre so zu lösen:
    {{file::mbox_js.php?mb=myMbWert}}

    mbox_js.php Inhalt
    PHP-Code:
    <script type="text/javascript">
    var box = {};
    window.addEvent('domready', function(){
    box = new MultiBox('<?php echo $this->Input->get('mb');?>', {
    useOverlay: true,
    container: document.body,
    contentColor: '#FFF',
    showNumbers: true,
    descClassName: 'multiBoxDesc',
    path: 'multibox/'
    });
    });
    </script>
    Geändert von Psi (23.06.2009 um 18:38 Uhr)

  6. #6
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Psi Beitrag anzeigen
    den <script>-Tag zu verwenden ist BÖSE und das sollte man tunlichst vermeiden.
    Ich versteh, dass es ein Sicherheitsrisiko sein kann. Wie aber sollte man dann (aus meiner Sicht) legitime Aufrufe wie hier im Tutorial vornehmen?

  7. #7
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Zusätzlicher XSS-Schutz
    ● Das <script>-Tag gehört nicht in der Liste der erlaubten Tags
    ● Die Einbindung von JavaScript ist sonst in allen Feldern möglich,
    in denen HTML-Eingaben erlaubt sind!
    Nachzulesen hier: http://https://contao.org/raw-attach...-TYPOlight.pdf
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  8. #8
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Im Modul "Eigener HTML-Code" funktioniert es dann aber nicht. Somit müsste man die Änderung direkt im fe_page.tpl machen, was ich eigentlich möglichst wegen Zusatzaufwand bei Updates vermeiden will.

  9. #9
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Hmm, dann müsste wohl Leo sagen, wie es genau gemacht werden muss

    Ich füge es einfach immer als zusätzlichen <head> Tag ein
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  10. #10
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Wie wäre es mit einem Modul vom Typ "eigener HTML Code"?

    Mache ich jedenfals meistens so. Wieso das nicht gehen soll kann ich nicht ganz nachvollziehen. Dieses Modul kannst du dann ja direkt als Element im Artikel einfügen, dazu musst du doch nicht extra das Template abändern?
    Geändert von acenes (23.06.2009 um 19:38 Uhr)

  11. #11
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn man vermeiden will, dass <script> in den erlaubten HTML-Elementen bei den Einstellungen steht, kann man das Modul "Eigener HTML-Code" nicht verwenden. Das löscht sonst die script-Teile wieder raus. Genau das ist ja der Haken.

  12. #12
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Hmm. Ich denke mit folgenden Eintrag im dcaconfig.php könnte man es gezielt nur für html Module freischalten:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['fields']['html']['eval'] =
      array(
    'preserveTags'=>true'class'=>'monospace'); 
    Ohne Gewähr, habs jetzt nicht ausprobiert.

    Falls das nicht geht, klappt wahrscheinlich folgendes statt dessen:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['fields']['html']['eval']['preserveTags'] = true
    Geändert von acenes (23.06.2009 um 20:08 Uhr)

  13. #13
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ja natürlich, aber sowas können wir ja anderen TL-Neulingen nicht antun oder?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  14. #14
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Ja natürlich, aber sowas können wir ja anderen TL-Neulingen nicht antun oder?
    Wieso nicht, man wächst doch an solchen Aufgaben

    Spass beiseite, ich plädiere auch dafür beim Modul "Eigener HTML Code" das bereits ab Werk so einzustellen.

  15. #15
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Information

    Okay, ich versuche meine Methode nochmal zu erläutern.

    Jeglicher Javascript-Code wird einfach in eine PHP-Datei im Templatesverzeichnis ausgelagert. Hier kommt man vom Backend aus nicht ran, sondern nur über FTP o.ä.
    Also kein Redakteuer kann was dummes anstellen.

    Dieser Ausgelagerte JS-Code wird dann über den file-InsertTag an eine beliebige Stelle der Website eingefügt - zum Beispiel in ein extra dafür vorgesehenes HTML-Code Inhaltselement, oder in ein Modul oder oder. Dabei muss der <script>-Tag nicht in den erlaubten Tags stehen, da er in den Eingabefeldern ja nirgends auftaucht.

    Wird die Website von TYPOlight über das Frontend ausgegeben, ersetzt das System den {{file}}-InserTag ziemlich zum Schluss durch den Inhalt der Datei.

    => Ergo. Javascript-Code eingefügt ohne dabei für alle <script> zuzulassen.

    Natürlich kann jeder Redakteuer jetzt auch über diesen file-Insert-Tag die Javascript-Datei inkludiern, aber eben nur genau diese eine Datei! Und der Inhalt wurde ja von euch vorgegeben und ist "harmlos".

  16. #16
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn ich dich richtig verstehe, schlägst du also vor:

    • PHP-Datei anlegen und den gewünschten Script-Code reinschreiben
    • Die Datei z. B. beispiel_js.php nennen und per FTP in den /templates-Ordner laden
    • Dann z. B. einfach ins Modul "Eigener HTML-Code" das Insert Tag {{file::beispiel_js.php}} schreiben und dieses Modul im Seitenlayout einbinden (damit es übergreifend überall auftaucht)


    Nachtrag: Funktioniert perfekt. Ich schreibe gerade mein Tutorial entsprechend um. Danke für den Tipp

  17. #17
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Standard

    Nun, für den speziellen Fall, dass es ÜBERALL auftauchen soll, kannst du auch gleich das Feld "Zusätzliche <head>-Tags" im Seitenlayout verwenden. Dieses ist wird nicht vom Script-Tag bereinigt (seltene Ausnahme).

  18. #18
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Bei meinem Script ist eine Mischung aus beidem notwendig (head-Tag und Modul), damit man es an beliebiger Stelle auf der Seite hinterlegen kann. Funktioniert nun prima (gerade getestet).

    Ich habe das Tutorial entsprechend angepasst.

  19. #19
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Standard

    Na super! Bin ich froh, dass ich dir auch mal helfen konnte.

  20. #20
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Psi Beitrag anzeigen
    Na super! Bin ich froh, dass ich dir auch mal helfen konnte.
    *lach* Wäre ja langweilig wenn ich alles wüsste

  21. #21
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    681

    Standard

    An der Stelle möchte ich jetzt gerne noch mal nachhaken.

    Wo genau besteht denn die Gefahr, die Verwendung von Scripts zuzulassen?

    Ich sehe zwei potenzielle Risiken:

    1. Ein Redakteur bindet im BE (wissentlich oder unwissentlich) schadhaften Code als HTML-Element ein.
    2. Ein Nutzer versucht im FE, schadhaften Code über ein Kontaktformular oder die Kommentarfunktion einzuschleusen.

    zu 1.: Habe ich Redakteure? Falls nein, wäre die Gefahr nur theoretisch.
    zu 2.: Ich kann die Verwendung von HTML unterbinden. Gefahr gebannt (?).

    Überseh ich da noch was?

    Gruß Alex

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. JavaScript Code (.js) einbinden in Artikel
    Von Lengen1971 im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 08.08.2011, 13:26
  2. HTML Element: JavaScript einfügen nicht möglich?
    Von Tina im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 09.02.2011, 17:51
  3. Einfügen von PHP-Code möglich?
    Von Andreas_L im Forum Sonstiges zu Contao
    Antworten: 16
    Letzter Beitrag: 28.09.2010, 19:28
  4. eigener JavaScript Code wird ausgegeben
    Von schman im Forum Layout / Templates / Holy Grail
    Antworten: 5
    Letzter Beitrag: 02.06.2010, 09:55
  5. Wie JavaScript Code in Suchformular (input) einbinden?
    Von minstyle im Forum Sonstiges zu Contao
    Antworten: 2
    Letzter Beitrag: 08.09.2009, 10:47

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •