Read this article in your language 
|

|

|

In questi ultimi giorni mi sono trovato a dover sviluppare un'applicazione DotNetNuke che sfruttasse le potenzialità di un qualche framework JavaScript per la generazione di qualche effetto grafico come transizioni e fading. Dopo un'analisi accurata dei vari tipi di framework presenti in internet, e dopo ovvie ricerche di compatibilità/incompatibilità con DNN ho deciso di sfruttare le doti, ma soprattutto la leggerezza, offerte da jQuery.
jQuery è uno dei framework JS più leggeri in circolazione, ha una svariata serie di plugin che ci permettono di fare più o meno tutto, è supportata da molti sviluppatori ed è facilmente integrabile all'interno di un'applicazione DNN.
Durante le mie ricerche ho notato che sfortunatamente ci sono davvero poche guide su come poter far interagire delle librerie js esterne a DNN.
Questo particolare mi ha indotto a pensare che il lavoro potesse essere ostico, ma in realtà non è così. Ed anche in questa situazione di possibili problemi all'orizzonte jQuery ci viene in aiuto.
Partiamo da una piccola premessa. Le ultime versioni di DNN hanno al proprio interno una serie di js che ci permettono di eseguire delle operazioni Ajax (qui una bella spiegazione per chi non sapesse cos'è Ajax) che però si scontrano con la totalità delle librerie esterne che possiamo decidere di utilizzare con DNN.
jQuery ci viene in aiuto tramite la semplicissima chiamata alla funzione:
Tramite la chiamata alla funzione noConflict, noi indichiamo a jQuery di non utilizzare le chiamate ai metodi di utilità comuni a quasi tutti i framework js, e per nostra fortuna tali chiamate una volta disabilitate non creano più alcun problema a DNN.
Passiamo ora alla piccola spiegazione su come sia possibile incorporare jQuery in DNN.
Prima di tutto andiamo sul sito ufficiale di jQuery e scarichiamo l'ultima versione del framework.
Una volta decompresso l'archivio appena scaricato, e messo il file di jQuery all'interno della cartella del modulo (o del portale) dove dobbiamo utilizzarlo, possiamo passare all'inclusione del nostro file tramite la seguente chaiamata:
1: Page.ClientScript.RegisterClientScriptInclude("jQuery","path/to/jquery/jqeury.js")Manca solo un piccolo passaggio da fare prima di poter dire di essere pronti per utilizzare il nostro amato jQuery. Apriamo il file ascx dove il nostro jQuery dovrà operare ed inseriamo le seguenti righe di codice subito dopo le varie inclusioni server-side di DNN.
1: <script language="javascript">
2: jQuery.noConflict();
3: jQuery(document).ready(function(){ 4: //place jQuery code here!
5: });
6: </script>
Bene. Ora siamo pronti. Diamo una bella compilata, facciamo partire il nostro portale e verifichiamo la presenza di errori JS. Se tutto è andato a buon fine non ci saranno errori JS. Gli errori che si potrebbero verificare in questa prima fase, relativa alla semplice inclusione della libreria, sono le possibili incompatibiltà date dalle librerie core di DNN, ma è impossibile che si verifichi un errore del genere se il path relativo al file di inclusione di jQuery è corretto. Pertanto se ci fossero problemi la prima cosa da controllare sarebbe proprio che tale path sia raggiungibile e corretto. Altrimenti ci sono gli ottimi forum di jQuery in cui si può trovare risposta a tutto, nonchè i gruppi di google relativi al mondo JavaScript.
Prima di concludere c'è da fare una piccola riflessione finale. Non tutti sanno che DotNetNuke assegna dei valori univoci ai controlli inseriti nelle pagine. Per esempio se noi inseriamo un linkbutton di asp, e gli diamo ID="lnk_test", DNN durante il processo di generazione della pagina trasformerà tale ID in una cosa del genere ID="dnn_ctl_...._lnk_test". Questo piccolo dettaglio ci impedisce di trovare tale link nella pagina tramite la comoda funzione di jQuery $('ID_Oggetto_Da_Cercare').
Ma possiamo in ogni caso recuperare il suo ID all'interno dei nostri script tramite la chiama server-side alla proprietà ClientID di ogni controllo ASP.Net; in questa maniera dovremo però scrivere tutti nostri script jQuery all'interno dei nostri file .vb o .cs (a seconda del linguaggio server-side da noi preferito) e quando dovremo recuperare un'id la chiamata da fare sarà simile alla seguente (sintassi VB.Net):
1: dim jQueryScript as string
2: [...]
3: jQueryScript = jQueryScript & "$('" & lnk_test.ClientID & "');" 4: [...]
A questo punto saremo in grado di recuperare ogni controllo ASP.Net presente all'interno delle nostre pagine DNN. Queste indicazioni valgono anche per le semplici applicazioni ASP.Net se vogliamo la certezza di recuperare sempre il controllo corretto.
Direi che a questo punto siamo arrivati alla fine di questa piccola guida. Mi auguro di essere stato utile ed esauriente nel trattare questo argomento, credo, ancora poco conosciuto. In ogni caso sono a disposizione per eventuali domande/chiarimenti e quant'altro.