Back to top

Autore Topic: Handler eventi  (Letto 3441 volte)

mau_develop

  • Visitatore
Handler eventi
« il: 21 Gen 2010, 16:02:49 »
ho scritto un plugin che dovrebbe gestire un'evento, supponiamo che sia "quando qualcuno appende un fragment pippo" all'uri

ora nel plugin ho messo l'handler onAppendiPippo()

ovviamente joomla non sa di questo evento, quindi devo aggiungerlo al mainframe

$mainframe->registerEvent('onAppendiPippo', 'Mio_plugin');

... dove va istanziato?

ho sempre usato eventi già esistenti in Joomla e nn risco a capire se mi serva obbligatoriamente un componenete per questo scopo,e  anche per il trigger

gracias

M.

[UPDATE] ... forse una cosa l'ho capita, $mainframe->registerEvent('onAppendiPippo', 'Mio_plugin');

va nel costruttore della mia classe/plugin

e il trigger?

« Ultima modifica: 21 Gen 2010, 16:23:16 da mau_develop »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Handler eventi
« Risposta #1 il: 21 Gen 2010, 18:32:31 »
ciao maurizio,

che io sappia non puoi creare nuovi eventi oltre quelli già esistenti, ma solo agganciare dei metodi agli handler già previsti.

quindi, a seconda, di quello che vuoi fare devi aggiungere il tuo metodo all'handler più opportuno... ad intuito dico:
 
plugin type: system
event handler: onAfterInitialise

se mi dai qualche dettaglio in più...

ps: registerEvent serve solo se non usi i nomi previsti dalla classe JPlugin

ciao, marco


ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
Re:Handler eventi
« Risposta #2 il: 21 Gen 2010, 19:26:31 »
ps: registerEvent serve solo se non usi i nomi previsti dalla classe JPlugin
------------------------------------------
esatto... quindi si possono aggiungere no?

guarda l'ultimo paragrafo qui:
http://blog.joocode.com/cms/joomla/gli-event-handlers-di-joomla/

e c'è una cosa simile su Mastering Joomla, solo che è un "proof of concept" e non riesco a capire

quello che ho capito è:
-faccio la mia classe plugin
-la costruisco
-nel costruttore aggiungo il mio evento (registerEvent) dicendogli che quando lo intercetta deve rivolgersi al tal plugin
-metto il metodo principale, quello da eseguire quando accade l'evento
- scrivo le funzioni di "contorno"

ora devo capire dove mettergli "qualcosa" che lo istruisca su qual'è questo evento, in pratica cosa deve succedere perchè quel che succede sia riconosciuto dal trigger...

è qui che mi perdo, mi viene da pensare che devo rivolgermi a un componente...

o magari non ho capito un tubo :) ... questa è una possibilità che non scarto mai!

M.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Handler eventi
« Risposta #3 il: 21 Gen 2010, 20:39:50 »
un momento, calma ;D

puoi sì creare tuoi event handlers, ma li poi sfruttare solo nel tuo codice, non in joomla.

ad esempio se devi creare un componente che deve essere facilmente 'espandibile', crei, per ogni oggetto di interesse, delle classi derivate da Jobservable, e così le puoi espandere tramite classi derivate da Jobservers, cioè con dei plugins.
a questo punto quando la tua classe principale 'lancerà', in un ben predeterminato punto del suo codice, un evento, il dispatcher chiamerà il metodo update() di tutti plugins (gli observer) registrati; il tipo dell'evento (più volgarmente il nome, nel nostro caso ;) ) deve però essere noto alla classe 'osservable'.

Citazione
ora devo capire dove mettergli "qualcosa" che lo istruisca su qual'è questo evento, in pratica cosa deve succedere perchè quel che succede sia riconosciuto dal trigger...

riassumendo o modifichi codice della classe joomla di interesse (il tipo di plugin) o ti attacchi ;) ... agli eventi già definiti.

ciao,
marco

ps: spero di non averti fatto venire mal di testa ...
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
Re:Handler eventi
« Risposta #4 il: 22 Gen 2010, 10:30:38 »
ma li poi sfruttare solo nel tuo codice, non in joomla.
-------------------------------------------------------
... quello che mi ha fatto supporre che servisse un componente

...quindi devo fare un componente che estenda JObservable?
+ o - così ?

http://docs.joomla.org/JObservable

M.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Handler eventi
« Risposta #5 il: 22 Gen 2010, 11:05:59 »
Citazione
... quindi devo fare un componente ...

dipende da che cosa vuoi fare.
 
da come hai aperto il topic penso di no, perché così facendo l'evento verrebbe lanciato solo quando joomla manda in esecuzione il codice del componente. a questo punto del flusso, il plugin potrebbe giusto modificare i dati gestiti dal componente, in base all'url; soluzione sicuramente elegante (alla gof ;) ), ma forse un po' eccessiva per la quasi totalità degli sviluppi.

ciao,
marco



mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
Re:Handler eventi
« Risposta #6 il: 22 Gen 2010, 12:02:11 »
...forse ho capito, seguimi un'attimo in qs "discorso astratto":

se io potessi, chessò nel com_login, mettere il trigger dell'evento, verrebbe richiamato il mio metodo nel plugin che verifica se l'evento c'è o no e "risponde" con le altre funzioni/metodi inseriti nel plugin.... è così???

.... pls dimmi una menzogna ma dimmi di sì ... :):)

M.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Handler eventi
« Risposta #7 il: 22 Gen 2010, 12:13:44 »
Citazione
.... pls dimmi una menzogna ma dimmi di sì ... :):)

sì... ma sto mentendo...

 ;D
scherzo, ci sei vicino.

in realtà è il dispacher della classe observable che verifica se il plugin è associato o meno a quel trigger e decide se richiamarlo o meno.

l'associazione all'evento avviene nel costruttore del plugin o nella classe (registerEvent)

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif