Plugin: Extended Header v00.02.01 |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
Plugin: Extended Header v00.02.01 |
Fri. 17. August 2007, 16:08
Beitrag
#1
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Hallo!
Hier eine neue Version meines Plugins, das es Modulen ermöglicht den Seitenheader zu beeinflussen, oder genauer gesagt eigenen einträge zuzufügen. Damit können dynamische Webformuler erstellt werden, die JS brauchen, Module können eigene CSS-Dateien laden, oder Meta-Tags können gesetzt werden. Und ich mußte dazu nicht einmal sehr den Core von Sefrengo verbiegen. Nur in der index.php des Projekts muß ich zwei Events abfeuern. Wäre toll, wenn die Events in die Standardversion von Sefrengo einfließen könnten. Hier ist noch mal ein Link zum FR, den ich damit umsetze: Header als letztes abarbeiten, Module fügen JS und CSS hinzu (Web2.0-Fähigkeit) QUELLTEXT Changelog legend: # -> Bug Fix + -> Addition ^ -> Change - -> Removed ! -> Note 00.02.01 - released 17.08.2007 ------------------------------------------------------------------------------------------------ # bug with file path containing backend/projekt-dir twice 00.02.00 - released 17.08.2007 ------------------------------------------------------------------------------------------------ # missing space in script tag + only unique header additions + check for existence of files 00.01.00 - released 16.08.2007 ------------------------------------------------------------------------------------------------ ! first release CODE Pluginname: --------------------------------------------------------------------------- exteneded header Status: --------------------------------------------------------------------------- alpha Bechreibung: --------------------------------------------------------------------------- Das Plugin stellt ein globales Objekt zur Verfügung, über das Module eigene Angaben in den HTML-Header einfügen können, zum Beispiel Scripte oder CSS laden. Funktioniert zur Zeit nur mit einer angepaßten Version der index.php im Projektverzeichnis Features: --------------------------------------------------------------------------- - Fügt Headerangaben aus Modulen herraus zu. - Vor dem Eintragen wird bei Scripten und CSS geprüft ob die Dateien existieren. - Jeder Eintrag wird nur einmal vorgenommen, auch wenn er mehrmals zugefügt wird. Autor(en): --------------------------------------------------------------------------- Marcus J. Ertl (tiggr) Lizenz: --------------------------------------------------------------------------- GPL2 Benötigte Sefrengo Version: --------------------------------------------------------------------------- >= 01.04.00 Installation: --------------------------------------------------------------------------- Wechseln Sie in Ihrer Sefrengo Version in den Bereich "Administration -> Plugins". Klicken Sie oben rechts auf "Plugin importieren". Am unteren Ende des Bereichs befindet sich ein Uploadfeld. Wählen Sie hier die gewünschte "*.cmsplug"- Datei aus. Mit einem Klick auf das Diskettensymbol wird das Plugin in das CMS importiert. Das Plugin ist nun innerhalb des CMS nutzbar. Installieren Sie das Plugin mit einem klick auf das Plugin-Importieren-Symbol in der Pluginzeile. Kopieren sie die Datei hack/index.php über die entsprechende Datei im Projektverzeichnis. Änderungeng gegenüber der Orginalversion sind mit '// extended_header' gekennzeichnet. Im wesentlichen werden zwei Events abgefeuert. Update/ Migration: --------------------------------------------------------------------------- Ein Update können Sie einfach über den Sefrengo- Pluginmanager einspielen. Das Plugin führt dann automatisch das Update durch. Dokumentation: --------------------------------------------------------------------------- Das Objekt $cms_header ist nahezu selbsterklärend und trivial. Die Parameter der Methoden können im Quelltext der Datei inc/class.extended_header.php gefunden werden. Für mehr Infos kann das Beispielmodul angesehen werden. Im Beispielmodul sieht das dann wie folgt aus: CODE <CMSPHP> // Plaintext, wird so übernommen, wie hier angegeben... $cms_header->addPlain('<!-- Plain-Text, der im Header eingefügt wird, hier als Kommentar -->'); // fiktives css, erscheint nicht, da File nicht existiert $cms_header->addStyle('/path/to/my/style.css'); // fiktives js, erscheint nicht, da File nicht existiert $cms_header->addScript('/path/to/my/script.js'); // css, das es wirklich gibt, wird deswegen auch im Header eingebaut $cms_header->addStyle('/tpl/standard/css/tabs.css'); // nochmal das selbe, wird trotzdem nur einmal eingebaut! $cms_header->addStyle('/backup/tpl/standard/css/tabs.css'); // prüfen der Existens von Dateien deaktivieren $cms_header->setFilecheck(''); // das fiktive CSS erscheint deswegen $cms_header->addStyle('/path/to/my/unchecked/style.css'); // wir wollen wieder prüfen ob die Datei im Frontend oder // Backend existiert $cms_header->setFilecheck('frontend,backend'); // urls gehen ungeprüft durch $cms_header->addStyle('http://www.somewhere.demo/path/to/my/remote/style.css'); // und ein Script, das direkt angegeben wird! $cms_header->addScript('alert("Test !!!")', 'src'); </CMSPHP> Was dann zu folgenden Headerzeilen führt: CODE <link rel="stylesheet" type="text/css" href="/backup/tpl/standard/css/tabs.css" /> <link rel="stylesheet" type="text/css" href="/path/to/my/unchecked/style.css" /> <link rel="stylesheet" type="text/css" href="http://www.somewhere.demo/path/to/my/remote/style.css" /> <script type="text/javascript"> alert("Test !!!") </script> <!-- using extended_header-plugin v00.02.00 --> <!-- Plain-Text, der im Header eingefügt wird, hier als Kommentar --> Ein Dankeschön an 'bkm', dessen Idee es war, zu prüfen, ob die Dateien wirklich existieren! Und wie üblich der Code im SVN: http://code.google.com/p/extendedheader/ Tschüss Tiggr (aka Marcus)
Angehängte Datei(en)
-------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Fri. 17. August 2007, 16:38
Beitrag
#2
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Mist, da ist noch ein Bug drin, wenn ich prüfe, ob es das File im Backend/Frontend gibt, das klappt beim Frontend nur, wenn das Frontend nicht in einem Projektverzeichnis liegt, beim Backend nie... :-(
Das Problem ist das jeweilige Unterverzeichnis, das kommt zum einen aus dem $cms_cfg['path'] bzw. $cms_cfg['cms_path']. Irgendwie muß ich den Pfand normalisieren, ohne zu wissen wie das Projektverzeichnis heißt, oder ob es eines gibt! Beim Backend kann ich ja noch annehmen, dass das letzte Verzeichnis in $cms_cfg['cms_path'] das Backendverzeichnis ist. Jemand eine Idee? Tschüss Tiggr (aka Marcus) -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Fri. 17. August 2007, 17:33
Beitrag
#3
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
So, hab's, hab die Download-Datei gewechselt, alles OK, hoffe ich!
Hab es nur auf einem Linux-Server getestet, keine Ahnung, ob es auch unter Windoof tut! -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Sun. 19. August 2007, 12:38
Beitrag
#4
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 541 Mitglied seit: 27.06.2006 Mitglieds-Nr.: 8 |
Hi,
ich finde die Idee nicht schlecht, auch die Umsetzung ist im Rahmen der vorhandenen SF-Möglichkeiten minimal invasiv. Doch möchte ich anmerken das mir der Mißbrauch dieser Schnittstelle nicht gefällt. Wie gesagt trotzdem zur Zeit die beste Lösung! Das Event-System ist dafür zwar nicht gedacht dennoch könnte es das mal werden was andere Systeme als Call-Back kennen; register_tick('event', function()), register_callback('event', function())... Man könnte so eine schöne Schnittstelle schaffen, die Arbeit alle sinnvollen Events im System zu registrieren und im gegenzug auch Sicherheitsrelevente Bereiche davon auszuschließen müsste natürlich angegangen werden. Auch Überlegt werden muss dabei wie sinnvoll es sein kann einen Call-Back aufzurufen bevor eine bestimmte Funktionalität ausgeführt wird, nicht erst danach (was ja die eigentliche Event-Idee war)! Das müsste sicherlich in einem andere Thread behandelt werden.... (irgendwann in ...) Gruss |
|
|
Sun. 19. August 2007, 13:11
Beitrag
#5
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Hiho!
Doch möchte ich anmerken das mir der mißbrauch dieser Schnittstelle nicht gefällt. ZITAT Das Event-System ist dafür zwar nicht gedacht dennoch könnte es das mal werden was andere Systeme als Call-Back kennen; register_tick('event', function()), register_callback('event', function())... Wieso Mißbrauch? Ich dachte genau für sowas sei das Eventsystem gedacht? Call-Backs, Events, Delegates, ich dachte die Idee sei Code auszuführen, wenn ein Ereignis eintritt... Falls das Eventsystem nicht dafür gedacht ist, dann ist das schade, weil sowas fehlt dann dringend in SF. Wo diskutieren wir das weiter? Weil sowas würde SF sehr helfen, man könnte den Core schlank halten, die Coreentwickler entlasten, und versuchen Funktionalitäten als Plugins zu realiseren. Tschüss Tiggr (aka Marcus) -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Fri. 28. September 2007, 15:34
Beitrag
#6
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
ZITAT(Tiggr) man könnte den Core schlank halten, die Coreentwickler entlasten, und versuchen Funktionalitäten als Plugins zu realiseren. Vorweg erstmal: Ich find das Plugin bzw. die dahinterliegende Idee einfach Spitze. Danke an Tiggr. Stellt sich nun eine wichtige Frage: Wie geht es weiter mit diesem Plugin? Sollten andere Module / Plugins darauf aufbauen? Oder fliegt das in der nächsten Version von SF wieder raus? Falls es rausfliegt: Die Möglichkeit, direkt in den Header zu schreiben ist sehr praktisch. Welche Alternativ-Ansätze werden in kommenden SF-Versionen favorisiert? @Tiggr: Was fehlt, um das Plugin als stable ansehen zu können? Viele Grüße Jan -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Fri. 28. September 2007, 18:51
Beitrag
#7
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Hiho!
Wie geht es weiter mit diesem Plugin? Sollten andere Module / Plugins darauf aufbauen? Oder fliegt das in der nächsten Version von SF wieder raus? Ich werde es erstmal bei mir für eigene Module verwenden, was andere damit machen, keine Ahnung! Die Idee finde ich wichtig, dass man aus dem Käfig "body" ausbrechen kann. Ich werde es vor allem benutzen um JS für Formulare zu bauen! ZITAT @Tiggr: Was fehlt, um das Plugin als stable ansehen zu können? Erfahrungen und Testergebnisse! Und da es im Moment eine Core-Datei hackt, ist es für mich nicht stable! Tschüss Tiggr (aka Marcus) -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Fri. 28. September 2007, 19:12
Beitrag
#8
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
ZITAT(Tiggr) Und da es im Moment eine Core-Datei hackt, ist es für mich nicht stable! leuchtet ein - aber damit wäre z.B. TinyMCE auch nie stable Damit geht die Frage an einen anderen Adressaten: Liebe Core-Entwickler, wie sieht es mit diesem Plugin aus? Bisher gab es zu diesem wertvollen Plugin keine Offizielle Stellungnahme.
-------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Sat. 29. September 2007, 01:33
Beitrag
#9
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
ZITAT(Tiggr) Umpf, im Archiv hat ne Datei gefehlt: index.php. Hier da Komplette Archiv, oben kann ich das nicht mehr ändern. Hi Marcus, die index.php ist nun 2x im Archiv...
Da beide Dateien absolut identisch sind, bin ich grad etwas verwirrt.. Viele Grüße Jan -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Sat. 29. September 2007, 10:08
Beitrag
#10
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Uhm, kein Grund verwirrt zu sein, dann hab ich das übersehen! Vergiss einfach das Posting von oben!
Tschüss Tiggr (aka Marcus) -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Sun. 9. December 2007, 23:57
Beitrag
#11
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 112 Mitglied seit: 31.08.2006 Wohnort: Berlin Mitglieds-Nr.: 219 |
Hallo,
ich war grad auf der Suche nach einer Möglichkeit den title-Tag aus einem Modul heraus zu ändern, da ist mir dies hier unter gekommen und ich habe es fix erweitert um den title ändern zu können. Hier die Änderungen: in inc/class_extended_header.php neu einfügen: CODE var $title; function setTitle($title) { $this->title = $title; } function getTitle() { return $this->title; } in process.php ab zeile 7 einfügen: CODE if(strlen($cms_header->getTitle()) > 0) { $output = preg_replace('/<title>.*<\/title>/', "<title>".$cms_header->getTitle()."</title>", $output); } Oder gibt es eine andere Möglichkeit, fernab von diesem Plugin, die sich mir noch nicht erschlossen hat? Gruß, Oliver -------------------- |
|
|
Mon. 10. December 2007, 00:46
Beitrag
#12
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
ZITAT Oder gibt es eine andere Möglichkeit, fernab von diesem Plugin, die sich mir noch nicht erschlossen hat? Hallo Oliver, derzeit scheint mir das die einzige Möglichkeit zu sein. Schade ist, dass diese Plugin wohl auch in der 1.6 nicht übernommen wird. Björn verspricht aber für die 1.6 eine andere Möglichkeit, mit so etwas umzugehen. Viele Grüße Jan -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Sun. 16. December 2007, 22:11
Beitrag
#13
|
|
Administrator Gruppe: Members Beiträge: 1.092 Mitglied seit: 16.06.2006 Wohnort: Köln Mitglieds-Nr.: 1 |
Wo hat Björn was versprochen?
-------------------- Es wird, es wird...
|
|
|
Sun. 16. December 2007, 22:43
Beitrag
#14
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
siehe Feature-Request zu diesem Thema: Extended Header als Standard für SF 1.6
Der Vorschlag klingt vom Grunde her gut. Ich möchte das noch ein wenig globaler haben, sprich, dass ich ein Output Objekt habe, wo verschiedene Änderungen reingeworfen werden können. [...] Mal schauen, was ich da in der 1.6 tun kann. Klingt für mich zumindest so, als ob das mal mit ähnlicher Funktionalität übernommen werden könnte. -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Sun. 16. December 2007, 22:49
Beitrag
#15
|
|
Administrator Gruppe: Members Beiträge: 1.092 Mitglied seit: 16.06.2006 Wohnort: Köln Mitglieds-Nr.: 1 |
Tja, etwas versprechen und sich versprechen liegen halt nahe beieinander. Bei Zitierungen meinerseits bitte ein wenig Vorsicht walten lassen, den am Ende bin ich es, der die daraus entstandenen Synergien wieder geraderücken darf.
-------------------- Es wird, es wird...
|
|
|
Mon. 17. December 2007, 02:08
Beitrag
#16
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
ZITAT Tja, etwas versprechen und sich versprechen liegen halt nahe beieinander. Bei Zitierungen meinerseits bitte ein wenig Vorsicht walten lassen Hallo Björn, so ganz verstehe ich Deinen Einwand nicht. Was genau meinst Du nun mit "Versprecher"?
Unabhängig davon: Mein Verweis zielt vielmehr darauf ab, dass dieses Thema an sich nicht begraben ist und es bei der zukünftigen Entwicklung zumindest im Auge behalten wird (und das ist eine wichtige Info für viele Nutzer). Insofern denke ich auch nicht, dass Du da wieder etwas gerade rücken musst. Es sei denn, es ist schon jetzt klar, das Thema für SF generell gestorben ist. Viele Grüße Jan -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Sat. 29. December 2007, 02:01
Beitrag
#17
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
Hallo Tiggr,
vielleicht ist das jetzt eine ganz dumme Frage, aber Dein Plugin wird ja über 2 Events (page_start bzw. page_end) getriggert. Dazu muss ja die index.php des Projektes leicht erweitert werden. Könnte man das Gleiche nicht über die bereits eingebauten Autostarts erreichen? Hier das Beispiel für das Snippet-Replacement: QUELLTEXT INSERT INTO {table_prefix}values VALUES ('', {client_id}, 0, 'cfg_client', 'autostart', 'frontend', 'snippet_replacement', '', 'snippet_replacement/inc.replacer.php', 111, '', NULL, 'txt', NULL, NULL, '1'); INSERT INTO {table_prefix}values VALUES ('', {client_id}, 0, 'cfg_client', 'autostart', 'backend', 'snippet_replacement', '', 'snippet_replacement/inc.replacer.php', 111, '', NULL, 'txt', NULL, NULL, '1'); In der inc.replacer.php wird dann analog zur process.php des Extended-Header Plugins ein str_replace ausgeführt um den $output zu manipulieren. Viele Grüße Jan -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Sat. 29. December 2007, 02:47
Beitrag
#18
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
Hab nochmal ein Bißchen tiefer gewühlt
Meine Vermutung ist, dass die Autostarts zu spät "losschießen", also erst nach dem Aufruf von Frontend bzw. Backend. Das Objekt cms_header steht damit nicht früh genug zur Verfügung, um von Modulen "befüllt" zu werden, d.h. also:
Meine Hochachtung , das Plugin ist schon ziemlich genial. -------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Fri. 15. February 2008, 16:49
Beitrag
#19
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 587 Mitglied seit: 01.07.2006 Mitglieds-Nr.: 62 |
Einen Vorschlag zur Implementierung der Funktionalität des Plugins Extended Header ohne Änderung des Core habe ich unter Plugin jQuery v00.03.00, Case Study - Module schreiben in den Header veröffentlicht.
-------------------- Zufall ist das Pseudonym, das Gott sich zugelegt hat, wenn er unerkannt bleiben möchte.
|
|
|
Vereinfachte Darstellung | Aktuelles Datum: 4.5.24 - 16:34 |