venerdì 18 luglio 2008

DotNetNuke - Creare Skin personalizzate

Oggi vediamo come personalizzare le skin di DotNetNuke per rendere il nuostro portale più accattivante. Intanto diamo un'occhiata a come è strutturato DNN per quanto riguarda l'aspetto grafico.

DotNetNuke prevede due tipologie di oggetti per la customizzazione dell'aspetto: le skin e i container.

La Skin definisce l'aspetto generale del portale, la posizione degli oggetti all'interno delle colonne, dell'header e del footer. Tramite la manipolazione della skin possiamo configurare il nostro portale nella maniera classica (header,tre colonne e footer) oppure sbizzarrirci con dei layout meno convenzionali come ad esempio quelli dei blog che prevedono un header, una colonna per il contenuto, una per i banner e altri box e infine il footer.

Si può dunque partire da un qualsiasi layout per ralizzare le nostre skin, a patto di inserire nei posti giusti gli oggetti di DNN e di nominare le colonne per il corretto posizionamento dei contenuti.

Gli oggetti di DNN che possono essere posizionati sono i seguenti:

  • LOGO: il logo definito in configurazione del portale
  • BANNER: il banner
  • NAV: il menu di navigazione
  • SEARCH: la ricerca sul portale e sul web
  • LANGUAGE: selezione della lingua
  • CURRENTDATE: data di oggi
  • BREADCRUMB: la posizione di navigazione attuale
  • USER: info utente
  • LOGIN: login/logout
  • COPYRIGHT: copyright del portale
  • TERMS: link ai termini e condizioni
  • PRIVACY: link all'informativa sulla privacy
  • DOTNETNUKE: link al sito ufficiale di DotNetNuke

Di seguito uno schema riepilogativo del layout standard con il posizionamenti degli oggetti di DNN.

di seguito la struttura dei file di uno skin:



e qui la definizione degli oggetti da inserire nella pagina ascx dello skin



<%@ Control language="vb" CodeBehind="~/admin/Skins/skin.vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Skins.Skin" %>
<%@ Register TagPrefix="dnn" TagName="LOGO" Src="~/Admin/Skins/Logo.ascx" %>
<%@ Register TagPrefix="dnn" TagName="BANNER" Src="~/Admin/Skins/Banner.ascx" %>
<%@ Register TagPrefix="dnn" TagName="NAV" Src="~/Admin/Skins/Nav.ascx" %>
<%@ Register TagPrefix="dnn" TagName="SEARCH" Src="~/Admin/Skins/Search.ascx" %>
<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<%@ Register TagPrefix="dnn" TagName="CURRENTDATE" Src="~/Admin/Skins/CurrentDate.ascx" %>
<%@ Register TagPrefix="dnn" TagName="BREADCRUMB" Src="~/Admin/Skins/BreadCrumb.ascx" %>
<%@ Register TagPrefix="dnn" TagName="USER" Src="~/Admin/Skins/User.ascx" %>
<%@ Register TagPrefix="dnn" TagName="LOGIN" Src="~/Admin/Skins/Login.ascx" %>
<%@ Register TagPrefix="dnn" TagName="COPYRIGHT" Src="~/Admin/Skins/Copyright.ascx" %>
<%@ Register TagPrefix="dnn" TagName="TERMS" Src="~/Admin/Skins/Terms.ascx" %>
<%@ Register TagPrefix="dnn" TagName="PRIVACY" Src="~/Admin/Skins/Privacy.ascx" %>
<%@ Register TagPrefix="dnn" TagName="DOTNETNUKE" Src="~/Admin/Skins/DotNetNuke.ascx" %>

La prima riga definisce che il file in questione è un file di skin e le successive servono per registrare gli oggetti/controlli di DNN.


I Container invece definiscono l'aspetto dei singoli moduli all'interno della struttura della skin e possono essere applicati anche container differenti all'interno della stessa pagina.

La conformazione di un container è molto semplice e meno rigida di quella della skin. Anche i conteiner hanno degli oggetti di DotNetNuke da poter posizionare a piacere:

  • ACTIONS: il menu del modulo
  • ICON: l'icona del modulo
  • TITLE: il titolo del modulo
  • ACTIONBUTTON: i pulsanti per definire le azioni del modulo
  • VISIBILITY: l'icona per ridurre il modulo e ampliarlo



di seguito la struttura dei file di un container:


e qui la definizione degli oggetti da inserire nella pagina ascx del container


<%@ Control language="vb" CodeBehind="~/admin/Containers/container.vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Containers.Container" %>
<%@ Register TagPrefix="dnn" TagName="ACTIONS" Src="~/Admin/Containers/SolPartActions.ascx" %>
<%@ Register TagPrefix="dnn" TagName="ICON" Src="~/Admin/Containers/Icon.ascx" %>
<%@ Register TagPrefix="dnn" TagName="TITLE" Src="~/Admin/Containers/Title.ascx" %>
<%@ Register TagPrefix="dnn" TagName="ACTIONBUTTON1" Src="~/Admin/Containers/ActionButton.ascx" %>
<%@ Register TagPrefix="dnn" TagName="ACTIONBUTTON2" Src="~/Admin/Containers/ActionButton.ascx" %>
<%@ Register TagPrefix="dnn" TagName="ACTIONBUTTON3" Src="~/Admin/Containers/ActionButton.ascx" %>
<%@ Register TagPrefix="dnn" TagName="ACTIONBUTTON4" Src="~/Admin/Containers/ActionButton.ascx" %>
<%@ Register TagPrefix="dnn" TagName="ACTIONBUTTON5" Src="~/Admin/Containers/ActionButton.ascx" %>
<%@ Register TagPrefix="dnn" TagName="VISIBILITY" Src="~/Admin/Containers/Visibility.ascx" %>


dove la prima riga definisce che il file in questione è un file di container e le successive servono per registrare gli oggetti/controlli di DNN.

Ovviamente sono fondamentali le conoscenze di HTML per realizzare una skin completa e che ci soddisfi a pieno, per non parlare dell'utilizzo dei CSS.

In allegato a questo articolo ho voluto mettere a disposizione uno skin che riepiloga quello che ho appena illustrato: DotNetNuke Ita Skin.
Il file prevede un layout tableless con il posizionamento dei DIV tramite CSS per rendere più flessibile la struttura. Ho, inoltre, inserito accanto al logo del portale anche il nome del portale.

Dimanticavo ... per importare i file di skin e dei container basta accedere a DNN con l'utenza di host e accedere al menù 'Skin'. A questo punto potete importare direttamente i file zip sia per le skin sia per i container e impostarli per il vostro portale.

Buon divertimento.

domenica 13 luglio 2008

RSSNuke - Modulo RSS Feed per DotNetNuke

Sono lieto di annunciare che DotNetNuke Ita ha rilasciato la settimana scorsa il primo modulo per DotNetNuke. Si tratta di un modulo per visualizzare i Feed RSS provenienti da altri siti.

Il modulo è gratuito e liberamente scaricabile (sia in versione compilata, sia con i codici sorgenti) a questo indirizzo: RSSNuke

Ecco uno screenshoot di come si possono inserire più feed in una pagina:


All'interno del codice potete vedere come implementare i metodi per la gestione dei settaggi, come localizzare le pagine, come parametrizzare il layout del feed in funzione delle impostazioni del modulo.

Al più presto pubblicherò un tutorial per la creazione di Skin personalizzate.

giovedì 10 luglio 2008

ModuleFactory

Interessante articolo uscito su CodeProject in cui si parla di un modulo (A Module Code Generator Framework on DotNetNuke) per la generazione automatica di contenuti.

In sostanza si tratta di un meccanismo che permette agli sviluppatori di DNN di generare codice basato su metadati da un database o da file. Con Code Generator, gli sviluppatori possono risparmiare quel noioso lavoro di routine (ad esempio, la scrittura delle classi del layer di accesso ai dati , l'impostazione manuale di controlli delle property, ecc.), concentrandosi sullo sviluppo dei propri moduli.

Vi consiglio di dare una letta a questo interessante articolo.

lunedì 7 luglio 2008

Rilasciato Wiki 04.01.00

E' di oggi la notizia che sul sito ufficiale di DotNetNuke conferma il rilascio della nuova versione del modulo Wiki, arrivato alla release 04.01.00.



Come si legge sul post ufficiale

This version of the Wiki module has quite a few bug fixes from the 04.00.01 release from 2007. It also has some new functionality such as

  • The ability to add a page without having to "edit" another page
  • IPortable functionality (thanks to Stefan Cullmann)
  • SEO Support for Wiki Pages (define page title, keywords, descriptions)

In questa versione sono stati risolti diversi bug e aggiunte alcune funzionalità:
  • La possibilità di aggiungere pagine senza doverne modificare altre
  • La funzionalità IPortable
  • Supporto a SEO per le pagine Wiki (definizione del titolo della pagina, chiavi, descrizioni)
Sul sito di DNN è possibile scaricare il modulo dopo aver effettuato la login.