Seite 1 von 2

Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 17:19
von Mike-on-Tour
Ich schreibe gerade an einer Möglichkeit, dass Nutzer neue POIs zur Usermap hinzufügen können. Dazu habe ich ein Skript geschrieben, das ein modales Fenster öffnet, sobald ein Rechtsklick auf die Karte erfolgt. Das klappt auch soweit alles, die Eingaben werden übernommen und können abgespeichert werden - aaaber (und da drehe ich mich jetzt im Kreis und sehe nur noch Mauern um mich rum, gehe also vermutlich um die Litfasssäule und denke, ich bin eingemauert).
In dem Eingabeformular soll auch BBCode möglich sein, also habe ich ein entsprechendes HTML-Skript erstellt, das eine eingeschränkte Auswahl an BBCodes bereitstellt, es handelt sich um die Klassiker B, i, u, URL und Schriftgröße. Damit das funktioniert, muss assets/javascript/editor.js eingebunden werden, und da setzen meine Probleme ein:
1. Versuch: {% INCLUDEJS '{{ T_ASSETS_PATH }}/javascript/editor.js' %} führt zur Fehlermeldung, dass dieses Skript in der Erweiterung nicht gefunden wird, stimmt ja auch, weil es da nicht ist (selbst eine angelegte Verknüpfung wurde nicht erkannt und ich möchte nicht unbedingt eine Kopie in die Extension einfügen). {{ T_ASSETS_PATH }} ist übrigens gültig und liefert einen Wert zurück.

2. Versuch: {% include('{{ ASSETS_DIR }}/javascript/editor.js') %} mit {{ ASSETS_DIR }} als selbst gesetzter Pfad brachte die Fehlermeldung, dass die Ressource innerhalb der Extension nicht gefunden werden kann.

3. Versuch: Auf die altmodische Art (<!-- INCLUDEJS {T_ASSETS_PATH}/javascript/editor.js -->) gibt es zwar keine Fehlermeldung, aber das Skript wird auch nicht eingebunden. Und es erfolgt auch keine Fehlermeldung, wenn ich den Pfad verändere, also z.B. "javascrip" statt "javascript" schreibe, was ich eigentlich erwartet hätte.

Ich bin mir sicher, dass ich die ganze Zeit auf die Lösung starre und sie nicht erkenne, würde jemand so freundlich sein und mich in die korrekte Richtung schubsen?

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 17:49
von Kirk
Probier es doch mal so:

Code: Alles auswählen

	<link href="{T_ASSETS_PATH}/javascript/editor.js?assets_version={T_ASSETS_VERSION}">

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 19:52
von Mike-on-Tour
Ergibt keine Fehlermeldung, führt aber auch nicht zum Erfolg :(
Und der Gegentest mit dem bewussten Verändern des Pfades ergibt auch keine Fehlermeldung, diese Version wird also genauso ignoriert wie mein Versuch Nr. 3

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 20:31
von Kirk
Ich hatte dies in die overall_header_head_append.html von einer meiner EXT eingetragen, da wurde es mir im Quelltext angezeigt. Deswegen hatte ich vermutet das es funktionieren könnte. Eine weitere Idee habe ich leider auch nicht.

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 20:33
von chris1278
Hier wäre dann die Frage in welcher datei du das einfügen willst. html php oder js Weil ich denke je nachdem was für eine Datei musst du auch auf das richtige Format achten.

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 21:01
von Kirk
Evtl. funktioniert es so:

Code: Alles auswählen

	<script src="{{ BOARD_URL }}assets/javascript/editor.js?assets_version={{ T_ASSETS_VERSION }}"></script>

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 19.12.2020 21:04
von Dr.Death
Ich habe es so mal testweise einbinden können: (relativer Pfad aus Sicht der Extension)

{% INCLUDEJS './../assets/javascript/editor.js' %}

Die Variable {{ T_ASSETS_PATH }} ist zwar auch in einer Extension vorhanden und gefüllt, kann aber nicht innerhalb von INCLUDEJS genutzt werden.

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 20.12.2020 03:14
von Mike-on-Tour
Danke Doc, das war es. Funktioniert jetzt.

Und auch Danke an Kirk für die Vorschläge.

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 12.09.2021 11:11
von LukeWCS
Moin Mike

Auch wenn das hier schon längst Geschichte ist, noch eine Ergänzung um dir eine Variante zu zeigen. Ich habe heute Morgen nach INCLUDEJS gestöbert (zu einem anderen Thema) und bin dabei auch auf dein Thema hier gestossen.
Mike-on-Tour hat geschrieben: 19.12.2020 17:19 1. Versuch: {% INCLUDEJS '{{ T_ASSETS_PATH }}/javascript/editor.js' %} führt zur Fehlermeldung, dass dieses Skript in der Erweiterung nicht gefunden wird
Dein Ansatz war schon gut und wie Doc ja schrieb, wird die Variable T_ASSETS_PATH nicht von INCLUDEJS interpretiert. Aber von Twig wird sie sehr wohl interpretiert und wenn man deine Codezeile nur ein klein wenig umstellt, funktioniert das auch wie es von dir beabsichtigt war:

Aus dem:
{% INCLUDEJS '{{ T_ASSETS_PATH }}/javascript/editor.js' %}

Wird das:
{% INCLUDEJS T_ASSETS_PATH ~ '/javascript/editor.js' %}

Dadurch wird die Template Variable T_ASSETS_PATH schon vorab von Twig interpretiert und dann mit '/javascript/editor.js' verkettet. Anschliessend wird der komplette Pfad als fertiger Parameter an INCLUDEJS übergeben und die Kiste läuft.

Re: Einbinden von Javascript aus Verzeichnis /assets

Verfasst: 21.09.2021 12:49
von Mike-on-Tour
Ich habe das jetzt mal so implementiert und es läuft wunderbar, also kein Grund mehr, das über ein Konstrukt wie
<script src="{{ T_ASSETS_PATH }}/javascript/editor.js"></script>
zu machen.

Danke