Einbinden von Javascript aus Verzeichnis /assets

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1075
Registriert: 13.01.2020 21:09
Kontaktdaten:

Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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?
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7870
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag von Kirk »

Probier es doch mal so:

Code: Alles auswählen

	<link href="{T_ASSETS_PATH}/javascript/editor.js?assets_version={T_ASSETS_VERSION}">
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1075
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7870
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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.
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7870
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag von Kirk »

Evtl. funktioniert es so:

Code: Alles auswählen

	<script src="{{ BOARD_URL }}assets/javascript/editor.js?assets_version={{ T_ASSETS_VERSION }}"></script>
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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.
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1075
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag von Mike-on-Tour »

Danke Doc, das war es. Funktioniert jetzt.

Und auch Danke an Kirk für die Vorschläge.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1075
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Einbinden von Javascript aus Verzeichnis /assets

Beitrag 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
Antworten

Zurück zu „Extension Bastelstube“