IGWiki Main Page

IGSuite Howto

Documenti correlati
   

Ricerca pagine

SourceForge Logo

IGSuiteScrivere Plugin per il FrameWork di IGSuite (Documento scaduto)
  Modifica PaginaStorico paginaProprietàGet PdfCalcTranslatorVisualizza il documento in formato stampabile.Posso Aiutarti

Scrivere Plugin per il Framework di IGSuite

A partire dalla release 3.2.4 di IGSuite è possibile realizzare ed integrare nella suite dei "plugin" per modificare o espandere le funzionalità del framework di IGSuite.

Il sistema dei plugin è molto flessibile e si basa sulla possibilità di "intercettare" l'output di alcune funzioni del framework prima che questo venga passato all'applicazione che ne fa richiesta. Il plugin può essere scritto da zero oppure realizzato modificando un modello di default presente all'interno del pacchetto che spiega passo passo quale il suo contenuto.

Fondamentalmente occorrerà scrivere degli "Hook" delle funzioni che agganciano rispettivamente le funzioni "core" del framework. Per esempio una delle funzioni disponibili ad essere agganciate è FormHead() che si occupa di aprire un form html di dati. In genere una chiamata a FormHead è scritta in questo modo:


 my $html = FormHead( name      => 'myform',
                      method    => 'POST',
                      cgiaction => 'mycgiscript' );

Mettiamo il caso volessimo scrivere un plugin che (solo per esempio) modifichi tutti i form dello script "letters" cambiando il metodo di <form> da 'GET' a 'POST' il contenuto minimo del nostro plugin (solo a titolo d'esempio) sarebbe questo:


my $PluginDescription = 'Piccolo esempio';
my $NeedIgSuiteVersion = '3.2.4',
my %HooksFunctions = ( FormHead => 'fake_form_head' );

## Necessario alla registrazione del plugin
sub init
 {
  my $PluginName = shift;
  return IG::PluginRegister( version     => $NeedIgSuiteVersion,
                             name        => $PluginName,
                             description => $PluginDescription,
                             functions   => \%HooksFunctions );
 }

## Ecco la nostra procedura
sub fake_form_head
 {
  my ($text, $arguments_ref) = @_;
  return $text if $IG::cgi_name ne 'letters';
  return $text if $$arguments_ref{method} eq 'POST';
  $text =~ s/(<form.+?method=\")GET\"/$1POST"/gi;
  return $text;
 }               


NOTE: alla funzione fake_form_head() il framework di IGSuite passa due argomenti: L'Html generato dalla funzione agganciata ( FormHead() in questo caso) e un riferimenti all'hash degli argomenti ad essa passati. In questo esempio grazie a $$arguments_ref{method} abbiamo intercettato quale metodo è stato passato a FormHead().

Una volta realizzato il plugin e salvato all'interno del percorso /cgi-bin/data/plugins/ (generato in automatico anche da mkstructs.pl) con un nome che rispetti questa regular expression /^[a-zA-Z0-9\_]+\.pm$/, per renderlo effettivo occorre "registrarlo" semplicemente attraverso questo comando:

igsuited --register-plugins


Le funzioni disponibili ad essere utilizzate con il sistema dei plugin sono:

HtmlHead() HtmlFoot() DocHead()HttpHead() TaskHead()
TaskFoot() Button() FormHead() FormFoot() ParseLink()
MkTaskPage()


N.B. in ambienti mod_perl qualora si modifichino o scrivano nuovi plugin occorrerà riavviare Apache


Nome: Scrivere Plugin per IG - Revisione: 2 - Autore: LucaS (19.07.2007) - Modificata da: LucaS (05.09.2008) - Categoria: HowTo - Scadenza: 18.07.2010 - Permessi di visualizzazione: Tutti indistintamente - Permessi di modifica: Condiviso con tutti gli utenti - Approvata da: LucaS - Copyright © LucaS All right reserved