Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

 
Reply to this topicStart new topic
> Plugin jQuery v00.03.00, Case Study - Module schreiben in den Header
smail
Beitrag Fri. 15. February 2008, 16:42
Beitrag #1


Advanced Member
********

Gruppe: AdvancedMembers
Beiträge: 587
Mitglied seit: 01.07.2006
Mitglieds-Nr.: 62



Um was geht es?
Verschiedentlich ist bereits der Wunsch geäußert worden, dass Module auf den Header zugreifen können sollten. Mein Feature-Request Extended Header als Standard für SF 1.6 fasst dazu die wichtigsten Aspekte zusammen.

Das von Tiggr entwickelte Plugin Extended Header war eine erste sehr vielversprechende Implementation der verschiedenen Feature-Requests. Das Problem dieser Implementation lag jedoch darin, dass dazu der Core von Sefrengo leicht angepasst werden musste.


Ziel des jQuery Plugins
Dieses Plugin soll demonstrieren, dass Module & Plugins auch ohne Eingriff in den Core in der Lage sind, eigene Informationen in den Header zu schreiben. Es besteht dabei die Möglichkeit, die Reihenfolge der Ausgaben im Header zu steuern.

Es geht hierbei nicht vorrangig um eine Implemetation von jQuery, der Nutzen der o.g. Funktionalität lässt sich jedoch schön am Beispiel von jQuery verdeutlichen.


Idee und Realisierung
Damit Module Informationen in den Header schreiben können, muss es ein zentrales Objekt geben, dass diese Informationen sammelt.
Kernpunkt der Implementation ist dazu die Realisation der jQuery-Klasse als Singleton-Pattern. Dadurch wird das zentrale Objekt erst genau dann erzeugt, wenn es auch wirklich gebraucht wird.

Die Steuerung über Events (wie beim Plugin Extended Header) entfällt damit, was den Eingriff in den Core überflüssig macht.

Fazit
Mit diesem Beispiel möchte ich gerne andere Entwickler anregen, diesen Ansatz weiter zu verfolgen. Eine Weiterentwicklung dieses Plugins ist von mir derzeit nicht geplant.

Neben der allgemeinen Funktionsdemonstration enthält das Plugin bereits einige Ansätze für eine vollständigere Implementation von jQuery. Diese Ideen werde ich bei Interesse gerne weiter ausführen.

Über Feedback (auch von den Core-Entwicklern) würde ich mich freuen.

Viele Grüße
Jan



QUELLTEXT
Pluginname:
---------------------------------------------------------------------------
jQuery


Status:
---------------------------------------------------------------------------
alpha   - das Plugin demonstriert nur die Umsetzbarkeit eines
          Anwendungsfalles.



Bechreibung:
---------------------------------------------------------------------------
Stellt die jQuery Bibliothek zur Verfügung.
Ermöglich die späte Bindung von Headern durch Module.


Features:
---------------------------------------------------------------------------
- jQuery Version 1.2.1
- Automatische Einbindung von jQuery in den Header
- späte Bindung von Headern durch Module

- Beispielmodul zur Demonstration


Hinweise:
---------------------------------------------------------------------------
Das Plugin wurde bisher nur unter php5 getestet. Das Plugin ist  durch
die aktuell verwendete Singleton-Implementation nicht php4 kompatibel.
Eine Verwednung unter php4 kann zum Abstutz führen, daher sollte das
Modul NICHT in Produktivsystemen getestet werden.


Autor(en):
---------------------------------------------------------------------------
Jan Hoffmann


Lizenz:
---------------------------------------------------------------------------
GPL


Benötigte Sefrengo Version:
---------------------------------------------------------------------------
>= 01.04.00 (Sefrengo 1.4 final)
(Möglicherweise auch frühere, wurde aber nicht getestet.)


Installation:
---------------------------------------------------------------------------
Wechseln Sie in Ihrer Sefrengo Version in den Bereich "Administration->
Plugins". Wechseln Sie dort in den Bereich "Plugin importieren". Am
unteren Ende des Bereichs befindet sich ein Uploadfeld. Wählen Sie hier die
gewünschte "*.cmsplugin"- Datei aus. Mit einem Klick auf das Diskettensymbol
wird das Plugin in das CMS importiert. Das Plugin ist nun innerhalb des CMS
nutzbar.


Update/ Migration:
---------------------------------------------------------------------------
Das automatische Update wurde noch nicht implementiert.
Für ein Update bitte zuerst die vorige Version komplett deinstallieren.


Dokumentation:
---------------------------------------------------------------------------
"Keine vorhanden"


Angehängte Datei  Plugin_jQuery_v00.03.00.zip ( 49.83KB ) Anzahl der Downloads: 19


--------------------
Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
Go to the top of the page
 
+Quote Post
smail
Beitrag Sun. 17. February 2008, 13:09
Beitrag #2


Advanced Member
********

Gruppe: AdvancedMembers
Beiträge: 587
Mitglied seit: 01.07.2006
Mitglieds-Nr.: 62



Beim Reload der Seite geht der manipulierte Header verloren, es wird also auch kein js mehr eingebunden. Vermutlich ein Caching-Problem.

Wenn man im Modul die normalen PHP-Tags durch die SF eignen ersetzt, sollte es gehen.
QUELLTEXT
statt:  <?php   ?>
besser: <CMSPHP>  </CMSPHP>


Danke an bkm für die Rückmeldung incl. Lösungsvorschlag.


--------------------
Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
Go to the top of the page
 
+Quote Post
pawel
Beitrag Sat. 23. February 2008, 18:56
Beitrag #3


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



Sehr praktisch, da steig ich doch glatt komplett auf php5 um rolleyes.gif ;-) Könnte ich damit bereits jetzt auch andere Dateien (z.B. Prototype wink.gif ;-) ) einbinden?


--------------------
Go to the top of the page
 
+Quote Post
smail
Beitrag Sat. 23. February 2008, 19:40
Beitrag #4


Advanced Member
********

Gruppe: AdvancedMembers
Beiträge: 587
Mitglied seit: 01.07.2006
Mitglieds-Nr.: 62



ZITAT
Könnte ich damit bereits jetzt auch andere Dateien (z.B. Prototype wink.gif ;-) ) einbinden?

Klar, geht das. Langfristig wäre einen mehrere Plugins für verschiedene Bibliotheken denkbar.

Die Änderung ist sogar mit relativ wenig Aufwand möglich (wenn Du in Kauf nimmst, dass die Klassen erstmal nach wie vor jQuery heißen dürfen)
  • Prototype Dateien ins Pluginverzeichnis kopieren (gleiche Stelle wie jetzt jQuery)
  • Im Beispiel-Modul einfach die anderen Datein einbinden (bisher ist jQuery nicht fest verdrahtet)
    QUELLTEXT
    require_once($cfg_cms['cms_path']."plugins/jquery/class.jquery.php");
      $jquery = jquery::getInstance();
      $jquery->addHeaderItem("<script type=\"text/javascript\" src=\"".$cms_path.
                             "Pfad zu Prototype\"></script>", 4);
Dann sollte es gehen.

Noch ein Hinweis: Einen Grund zum Umsteigen auf PHP5 sollte dieses Plugin nicht sein. Es ist nur eine Case-Study! Also Vorsicht in Produktivsystemen.

Gruß
Jan


--------------------
Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
Go to the top of the page
 
+Quote Post
pawel
Beitrag Sat. 23. February 2008, 21:42
Beitrag #5


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 442
Mitglied seit: 02.07.2006
Wohnort: Halle
Mitglieds-Nr.: 71



Das mit dem umsteigen war auch nicht ganz ernsthaft gemeint...
Im Grunde sollte es header-plugin heißen. Damit hast du eigentlich in jedem Modul eine einfache Möglichkeit Code in den header zu schreiben (sowas geht ja bei wordpress und co auch). Das ist irgendwie logischer, als das parsen des outputs (was ich bei meinem Googlemapsmodul auch gemacht habe). Das kann viles erleichtern. Im Moment kopiere ich das Layout, füge die JS dazu und noch ein Template... So wäre es einfacher.


--------------------
Go to the top of the page
 
+Quote Post
Guest_bkm_*
Beitrag Sat. 23. February 2008, 21:48
Beitrag #6





Guests






ZITAT(pawel @ Sat. 23. February 2008, 21:42) *
Im Grunde sollte es header-plugin heißen.

wird wohl seinen grund haben, weil es ein extended header plugin schon gibt wink.gif
Go to the top of the page
 
+Quote Post
smail
Beitrag Sun. 24. February 2008, 14:35
Beitrag #7


Advanced Member
********

Gruppe: AdvancedMembers
Beiträge: 587
Mitglied seit: 01.07.2006
Mitglieds-Nr.: 62



ZITAT(bkm @ Sat. 23. February 2008, 21:48) *
wird wohl seinen grund haben, weil es ein extended header plugin schon gibt wink.gif


Richtig smile.gif Ich hätte auch nichts dagegen, wenn mann beide Plugins vereint. So verschieden sind die beiden Ansätze nun auch wieder nicht.

Der Grund für ein eigenes Plugin "jQuery" lag darin zu zeigen, dass man sehr elegant alle benötigten Source-Files im Plugin ablegen kann. Sonst muss man die Dateien wieder extern ablegen... einfacher ist das sicher nicht.

Was man sich natürlich auch vorstellen könnte, wäre den Extended-Header so zu erweitern, dass er die wichtigsten js-Frameworks on Board mitbringt und diese dann einfach von jedem Modul aus eingebunden werden können. Jaja, man kann viel machen... tongue.gif


--------------------
Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
Go to the top of the page
 
+Quote Post
duffy
Beitrag Fri. 7. March 2008, 00:14
Beitrag #8


Advanced Member
****

Gruppe: AdvancedMembers
Beiträge: 112
Mitglied seit: 31.08.2006
Wohnort: Berlin
Mitglieds-Nr.: 219



Hallo,

da ich gerade an einem Modul zur Schriftgrößenänderung arbeite bin ich über dieses Plugin gestolpert. Ich finde das Klasse und habe es so umgemodelt, dass es auch auf php4 läuft. Daraus ist dann das Plugin Add Headerelement geworden.

Gruß,

Oliver


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 19.4.24 - 11:59

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.