WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 12.07.2016 16:46:11

rjgamer
Mitglied

MultiScriptLoader

Hallo Leute,

vielleicht was für das WBCE resp. den jQuery Teil von WBCE.

Mit der Hilfe von Stackoverflow und Google hab ich diese kleine jQuery Funktionen gefunden und leicht angepasst. Damit kann man mehrere Scriptdateien nachträglich laden und danach seinen eigenen Code ausführen. Ideal geeignet um zB. im frontend.js ein paar jQuery Plugins nachzuladen. Klar geht es auch ohne diese Funktion, aber der Code wird stark reduziert.

[== JavaScript ==]
$.getMultiScripts = function (scripts, path) {
    scripts = $.map(scripts, function (scr) {
        return $.getScript((path || '') + scr);
    });

    scripts.push($.Deferred(function (deferred) {
        $(deferred.resolve);
    }));

    return $.when.apply($, scripts);
};

var scripts = [
    'module/foobar/js/jquery.dummy.min.js',
    'module/foobar/js/jquery.lorem.min.js',
];

$.getMultiScripts(scripts, WB_URL).done(function () {
    // all scripts loaded
    $('.foo').dummy();
});

Ich werde die Funktion bis auf weiteres standardmässig bei Fraggy v1.3.2 implementieren und für Fraggy Gallery auch gleich nutzen.

Gruss

Beitrag geändert von rjgamer (12.07.2016 16:46:23)

Offline

#2 12.07.2016 17:53:22

stefanek
Core-Team

Re: MultiScriptLoader

Ich weiß nicht, ob Du es wußtest, aber es gibt seit sehr langer Zeit die jQuery insert Methode, mit der Du ebenfalls weitere Scripte nachladen kannst. Die Wirkungsweise kannst Du in etlichen Modulen einsehen.
Als Beispiel hier: https://github.com/WBCE/WebsiteBaker_Co … ody.js#L20

Ich fände es jetzt ziemlich kontraproduktiv, wenn in Modulen etwas eingebaut würde, das dann nur mit einem bestimmten Theme funktionieren würde, obwohl es sich vermeiden ließe, wenn man die bisher funktionierende Methode verwendete.

Chris


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#3 12.07.2016 17:59:28

rjgamer
Mitglied

Re: MultiScriptLoader

Oh wusste ich nicht.

Danke für den Hinweis!

Offline

#4 12.07.2016 17:59:43

stefanek
Core-Team

Re: MultiScriptLoader

thumb_up


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#5 12.07.2016 18:00:46

grindbatzn
Gast

Re: MultiScriptLoader

@stefanek
Super, dass du das erwähnst. Ich habe heute eine Möglichkeit gesucht, jquery-ui nachzuladen, wenn nicht schon vorhanden.

Wie würde das mit Query insert funktionieren?

#6 12.07.2016 18:19:07

stefanek
Core-Team

Re: MultiScriptLoader

grindbatzn schrieb:

@stefanek
Super, dass du das erwähnst. Ich habe heute eine Möglichkeit gesucht, jquery-ui nachzuladen, wenn nicht schon vorhanden.

Wie würde das mit Query insert funktionieren?

Im Backend glaube ich ist die UI stets geladen...
Ich kann mich aber auch täuschen.

Im Prinzip würde es funktionieren wie hier:
http://stackoverflow.com/questions/1653 … -is-loaded

Man fragt nach einer bestimmten UI Komponente (im obigen Fall draggable).

Dein Code könnte dann so aussehen:

[== backend_body.js ==]
if (typeof(jQuery.ui.draggable) == 'undefined'){
    // UI draggable is NOT loaded
    $.insert(WB_URL+ '/jquery-ui.min.css');
    $.insert(WB_URL+ '/include/jquery/jquery-ui.js');
}

Wenn's so nicht wirkt, schreib mir PM/Mail, ich schaue es mir genauer an.

Gruß,
Chris


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#7 12.07.2016 20:06:12

rjgamer
Mitglied

Re: MultiScriptLoader

Ich weiss meine Aussage provoziert, aber die Insert Funktion ist in dieser Form unnötig. Mit $.getScript bietet jQuery die gleiche Lösung von Haus aus. Kann halt sein, dass es 2008 diese Lösung noch nicht gab. Oder bin ich Blind und sehen den Vorteil nicht?

Der Vorteil meiner oberen Funktion ergibt sich, dass schön auf das fertige Laden der Scripts gewartet wird. Manchmal ist nämlich der JS Code schneller ausgeführt als dass das Script geladen wird und dann erscheinen so tolle undefined Meldungen.

Bin zZ. unterwegs und konnte den Code von der Insert Funktion nicht komplet inspizieren.

Wenn keine Einwände würde ich vielleicht gerne die Insert Funktion auffrischen, ohne den Namen zu ändern oder die Funktionalität einzuschränken. Natürlich mit paar Features mehr, wenn möglich.

Aber was meinen die anderen?

Beitrag geändert von rjgamer (12.07.2016 20:14:37)

Offline

#8 12.07.2016 20:29:05

stefanek
Core-Team

Re: MultiScriptLoader

Deine Aussage provoziert überhaupt nicht.
getScript kam tatsächlich viel später. Und als es zunächst kam, haben wir die insert Funktion aufrechterhalten weil getScript des öfteren Probleme verursacht hat.

Nichts dagegen, wenn Du die insert Funktion auffrischst.
Mach einfach ordentlich und genügend Tests, sodass Module die es bereits verwenden nicht ausfallen.

Wenn alles funktioniert, denke ich läßt Norbert mit sich reden.
Ich habe bis jetzt sehr viel mit der Insert Funktion in sämtlichen Modulen gearbeitet.
Auch der neue PageTree bedient sich dieser Funktion. "Undefined" Meldungen haben sich in der Praxis bis jetzt nicht ergeben im Zusammenhang damit.

Gruß,
Chris


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#9 12.07.2016 20:32:10

rjgamer
Mitglied

Re: MultiScriptLoader

Alles klar. Werds mal angucken, bei Bedarf optimieren, testen und für Community Tests dann im Forum reinstellen bevor ich wieder ein Pull Request erstelle smile

Offline

#10 12.07.2016 21:49:15

rjgamer
Mitglied

Re: MultiScriptLoader

Kann mir jemand sagen warum mit jquery-include.js und jquery-insert.js zwei JS Funktionen vorliegen, die genau das gleiche können?

Braucht irgendwer die jquery-include.js?

Offline

#11 12.07.2016 22:03:38

stefanek
Core-Team

Re: MultiScriptLoader

Kann mir jemand sagen warum mit jquery-include.js und jquery-insert.js zwei JS Funktionen vorliegen, die genau das gleiche können?
Braucht irgendwer die jquery-include.js?

Historisch gesehen gab es mal jemanden bei den WB Developern, der auf die jquery-include stand. Und so war sie drin.
Ich weiß nicht, ob sie von vielen Modulen verwendet wird. Oder überhaupt welchen.
Ich habe mich damals an die insert Funktion gewöhnt seit dem sie drin war und sah keinen Grund etwas Neues zu nehmen.

Alles klar. Werds mal angucken, bei Bedarf optimieren, testen und für Community Tests dann im Forum reinstellen bevor ich wieder ein Pull Request erstelle smile

Gute Idee.

Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#12 12.07.2016 23:00:07

rjgamer
Mitglied

Re: MultiScriptLoader

Hab angefangen. Funktioniert sogar, aber irgendwie werden die Scripts verspätet geladen. Könnt es trotzdem gerne schonmal testen. Einfach die bestehende jquery.insert.js mit der im Anhang ersetzen. Natürlich vorher die Originalversion sichern smile

Die jquery.include.js plane ich im gleichen Atemzug zu ersetzen. Wobei auch in diesem Fall die Funktion bestehen bleibt und nur die Logik dahinter aktualisiert wird.

Beitrag geändert von rjgamer (12.07.2016 23:00:25)

Offline

#13 12.07.2016 23:11:25

stefanek
Core-Team

Re: MultiScriptLoader

Wenn Du da noch dran arbeitest, spare ich mir das testen.
Lass mich wissen, wenn Du eine Version hast, mit der Du zufrieden bist und nicht eine, an der Du noch was auszusetzen hast.
Es sei denn, Du brachst nen Tipp.

Chris


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#14 12.07.2016 23:12:06

rjgamer
Mitglied

Re: MultiScriptLoader

Alles klar. Morgen gibt es was...

Offline

#15 12.07.2016 23:16:39

stefanek
Core-Team

Re: MultiScriptLoader

thumb_up


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Fußzeile des Forums

up