Read this article in your language 
|

|

|

Con oggi inizio una mini serie di post dove andrò a spiegare cos'è un'estensione di BlogEngine 1.4 e come fare per scriverne una. Iniziamo!
Definiamo il termine estensione in BlogEngine
Un'estensione in BlogEngine non è altro che un semplice file di codice che ci permette di eseguire determinate azioni in maniera automatica al verificarsi di uno degli eventi che il core di BlogEngine espone. Per esempio possiamo eseguire una data azione al rendering della pagina, quando salviamo un commento, quando inseriamo un nuovo post o altri eventi. Per maggiori dettagli vi rimando alla pagina della wiki del progetto che ci mostra la lista completa dei suddetti eventi.
E' ora di scrivere la nostra prima estensione
Per cominciare ho deciso di scrivere un'estensione semplicissima, per poi passare nei prossimi post a qualcosa di più avanzato, che non fa altro che mettere in caratteri maiuscoli il corpo del nostro post. Lo so che è una cosa assolutamente inutile ma ci permette di capire come muovere i primi passi.
Come ho scritto poche righe sopra le estensioni non sono altro che semplici file di codice, che dobbiamo inserire nella cartella App_Code\Extensions di BlogEngine. Questi file devono avere una particolarità per far si che il core di BlogEngine li riconosca come estensioni valide devono essere taggate nel seguente modo
1: [Extension("HelloWorldExt", "1.0", "dextr")]
Possiamo scrivere le estensioni con un qualsiasi editor di testo, ma è consigliabile utilizzare Visual Studio, sia esso in versione Express, 2005 o 2008. L'importante nell'utilizzare Visual Studio è tenere presente che se non si importa la soluzione completa del progetto (che troviamo qui) possiamo semplicemente creare un nuovo progetto al quale aggiungeremo tra i riferimenti la dll di BlogEngine in maniera tale da avere pieno accesso a tutte le sue funzionalità. Di seguito è mostrato il semplicissimo codice della nostra prima estensione
1: #region Using
2:
3: using System;
4: using BlogEngine.Core.Web.Controls;
5: using BlogEngine.Core;
6:
7: #endregion
8:
9: #region Code
10:
11: /// <summary>
12: /// Simple HelloWorld Extension. Make your post body UpperCase
13: /// </summary>
14: [Extension("HelloWorldExt", "1.0", "dextr")]
15: public class HelloWorldExt
16: {
17: public HelloWorldExt()
18: {
19: Post.Serving += new EventHandler<ServingEventArgs>(ServingHandler);
20: }
21:
22: private void ServingHandler(object sender, ServingEventArgs e)
23: {
24: e.Body = e.Body.ToUpper();
25: }
26: }
27:
28: #endregion
Come mostrato nell'immagine a sinistra se il codice è corretto il core di BlogEngine processa la nostra estensione e ne esegue le istruzioni. Nel nostro caso il corpo del nostro post sarà in maiuscoletto.
Passiamo ora a spiegare un pò il codice
Prima di tutto vanno importate le librerie che dobbiamo utilizzare quindi oltre alla System, dovremo poi importare le librerie BlogEngine.Core e BlogEngine.Core.Web.Controls per far si che la nostra estensione possa avere accesso alle varie funzionalità offerte da BlogEngine.
Il secondo passaggio è quello di "taggare" la nostra classe con la dicitura [Extension(...)] in modo che il core di BlogEngine all'avvio dell'applicazione riconosca tale file come estensione ed al verificarsi di una data azione collegata all'estensione esegua il codice della stessa. Questo attributo ha tre parametri che sono il nome dell'estensione, la versione e l'autore della stessa.
Dobbiamo poi definire la nostra classe/estensione in modo che abbia un costruttore di default pubblico e senza parametri. All'interno del nostro costruttore dovremo definire a quale evento la nostra estensione si attiverà. Nel nostro caso specifico l'evento è Post.Serving. All'evento Post.Serving va agganciato un handler, in modo che allo scoccare di tale evento (caricamento del post in questo caso) si attivi il metodo handler da noi creato.
Stupidamente nel nostro esempio ogni volta che l'evento Post.Serving si attiva, parte ServingHandler e imposta il corpo del nostro post in caratteri maiuscoli.
Più nello specifico il metodo che viene generato ad ogni caricamento delle nostre pagine è OnServing
1: public static void OnServing(Post post, ServingEventArgs arg)
Questo metodo prende due parametri in entrata: Post e ServingEventArgs.
- Post non è altro che il post che verrà manipolato.
- ServingEventArgs che è l'evento da controllare per eseguire l'estensione.
ServingEventArgs ha due proprietà fondamentali che sono Body e Location
- Body non è altro che il corpo del nostro post rappresentato in forma di stringa.
- Location che specifica il tipo di visualizzazione del post. Questo può essere, nel nostro caso usando Post.Serving, PostList o SinglePost.
La proprietà body ci permette di accedere al contenuto del post e di manipolarlo secondo le nostre esigenze. Nel nostro esempio non facciamo altro che utilizzare il metodo ToUpper di Body per impostare il testo in maiuscoletto.
Verifichiamo la presenza della nostra estensione
Cliccando sulla voce di menu relativa alle estensioni possiamo verificare se la nostra estensione è presente.Nel pagina delle estensioni possiamo decidere se abilitare o meno una data estensione, visualizzarne il codice sorgente e se ci sono dei parametri di configurazione possiamo impostarli.
Come vedete è davvero semplice creare una prima piccola estensione anche senza avere delle conoscenze profonde di BlogEngine.
Nel mio prossimo articolo vedremo come utilizzare i Settings delle estensioni e come utilizzare l'ExtensionManager di BlogEngine 1.4