screezeHead - dynamisches Einbinden von <head> informationen

Dieser Bereich dient dazu, eure Tricks und Erweiterungen vorzustellen, damit diese auch andere Anwender nutzen können. // This area can be used to publish your tricks and extensions to the APF to be used by other developers.
Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 14:59:05

Hmm die getbodyjs-Taglib würde ich gerne genauso gestalten wie die von gethead, dass lediglich ein Platzhalter definiert wird, der dann per Filter ersetzt wird. Ich würde das aber gerne in einem Filter zusammenfassen.

Um den Filter aber nicht 2 mal auszuführen wäre es notwendig überprüfen zu können ob der Filter bereits vorhanden ist. Hierzu fehlt mir im AbstractFilterChain jedoch eine Methode wie "getFilters()", um an das Filter-Array zu kommen und dieses nach dem HtmlHeaderOutputFilter zu durchsuchen.
Wäre es möglich diese Funktion noch hinzuzufügen?

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 14.09.2011, 15:00:59

Aber wie soll das aussehen? Werden dann einfach alle JS Dateien am Ende des bodys ausgegeben oder soll man das noch irgendwie steuern können?
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 15:06:49

Nein.
Es wird einen Schalter bei den JS-Nodes geben z.b. "showinbody", und der Filter welcher die Platzhalter am Ende ersetzt wird diesen Schalter beachten und die JS nodes für den Body seperat behandeln.

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 19:08:49

So, abgesehen von der oben noch offenen Änderung habe ich nun eine ausführliche Doku im Wiki angelegt, hat zwar ein paar Stunden gekostet, aber mich hat vorher schon bei allen 3 die Mangelnde Doku immer wieder gestört, deshalb hab ich das jetzt mal ordentlich gemacht. Bitte mal jemand durchlesen, dass ich da keine Fehler gemacht habe.

Link -> http://wiki.adventure-php-framework.org ... rweiterung

Ich habe in den alten 3 Dokus je einen Hinweis platziert auf die neue ab 1.15, außerdem dies auf der Extensions-Übersicht vermerkt.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von dr.e. » 14.09.2011, 23:26:56

Hübsche Doku! Gefällt mir. :)
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von ma2604121 » 14.09.2011, 23:40:07

Ist das so noch aktuell?

Code: Alles auswählen

$HHM = $this->__getServiceObject('extensions::htmlheader::biz','HtmlHeaderManager'); 
Oder müsste es nicht so lauten?

Code: Alles auswählen

$HHM = $this->getServiceObject('extensions::htmlheader::biz','HtmlHeaderManager'); 

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von dr.e. » 15.09.2011, 08:18:29

Für 1.13 ist das ok, in 1.14 ist __getServiceObject() deprecated und in 1.15 komplett entfernt.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 15.09.2011, 08:45:23

Screeze hat geschrieben:Hmm die getbodyjs-Taglib würde ich gerne genauso gestalten wie die von gethead, dass lediglich ein Platzhalter definiert wird, der dann per Filter ersetzt wird. Ich würde das aber gerne in einem Filter zusammenfassen.

Um den Filter aber nicht 2 mal auszuführen wäre es notwendig überprüfen zu können ob der Filter bereits vorhanden ist. Hierzu fehlt mir im AbstractFilterChain jedoch eine Methode wie "getFilters()", um an das Filter-Array zu kommen und dieses nach dem HtmlHeaderOutputFilter zu durchsuchen.
Wäre es möglich diese Funktion noch hinzuzufügen?
@Christian das ging an dich...

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 15.09.2011, 10:10:03

Für 1.13 ist das ok, in 1.14 ist __getServiceObject() deprecated und in 1.15 komplett entfernt.
Da das ganze für 1.15 ist, würde da ein Fehler auftreten
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 15.09.2011, 10:11:36

Ja is ja gut ich hab schon verstanden dass ich da nen c&p Fehler aus der alten Doku gemacht habe ;) Konnte das nur vom Handy vorhin schlecht ausbessern, ist nun nachgeholt ;)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von dr.e. » 15.09.2011, 21:24:22

Screeze hat geschrieben:
Screeze hat geschrieben:Hmm die getbodyjs-Taglib würde ich gerne genauso gestalten wie die von gethead, dass lediglich ein Platzhalter definiert wird, der dann per Filter ersetzt wird. Ich würde das aber gerne in einem Filter zusammenfassen.

Um den Filter aber nicht 2 mal auszuführen wäre es notwendig überprüfen zu können ob der Filter bereits vorhanden ist. Hierzu fehlt mir im AbstractFilterChain jedoch eine Methode wie "getFilters()", um an das Filter-Array zu kommen und dieses nach dem HtmlHeaderOutputFilter zu durchsuchen.
Wäre es möglich diese Funktion noch hinzuzufügen?
@Christian das ging an dich...
Hallo Ralf,

du könntest via removeFilter() vor dem Hinzufügen sicherstellen, dass der Filter noch nicht registriert ist...
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 15.09.2011, 22:06:38

Wäre es nicht sinnvoller testen zu können ob der Filter nocht schon existiert anstatt ihn zu löschen auf verdacht?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von dr.e. » 15.09.2011, 22:24:05

Idee der Chain war, dass du diese eigentlich garnicht als komplettes manipulieren können solltest. Erlaubst du das, läufst du Gefahr, dass die Chain bei der Abarbeitung inkonsistent wird. Insofern würde ich ein prophylaktisches Löschen einer direkten Bearbeitung des Stacks vorziehen.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 15.09.2011, 22:54:16

Äh moment ich will sie ja garnicht manipulieren. Ich würde eher das Löschen als Manipulation ansehen.
Was ich machen will ist lediglich zu prüfen, ob ein Filter mit einem bestimmten Name bereits vorhanden ist, und nur falls dies nicht der Fall ist, ihn nochmal hinzufügen.
Dadurch manipuliere ich ja nichts, im Gegensatz zum prophylaktischen Löschen.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von dr.e. » 15.09.2011, 23:12:26

Wenn du keine Manipulation benötigst, bin ich dabei. Ich baue das demnächst in's Interface und in die Basis-Implementierung ein.

Update: reicht dir das?

Code: Alles auswählen

   public function isFilterRegistered($class) {
      for ($i = $this->offset; $i < $this->count; $i++) {
         if ($this->filters[$i] instanceof $class) {
            return true;
         }
      }
      return false;
   } 
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast