martedì 30 dicembre 2008

Accessibilità con SharePoint 2007

Avendo dovuto affrontare il discorso di sito accessibile, per un recente progetto, da realizzarsi con MOSS 2007, ho fatto un po’ di ricerche in giro per vedere come affrontare il progetto. Su CODEPLEX ho trovato alcuni interessanti progetti, uno tra tutti GSPTV, che mettevano a disposizioni soluzioni interessanti per rendere accessibili: webpart zone, menu di navigazione, box di ricerca, content query web part etc. In più ho trovato molto interessante il progetto ARF, anch’esso mette a disposizione sia controlli che adapter per sistemare alcune magagne di SharePoint. A dirla tutto, come consiglio, non ho usato un unico progetto, ma una selezione di componenti di uno e dell’altro. Di ARF in particolare ho trovato molto interessanti il ARF:Menu e ARF:SiteMap. Una delle caratteristiche principali di ARF (Alternative Render Framework) è di utilizzare il linguaggio XML per descrivere gli oggetti di MOSS e una serie di fogli di stile XSL per renderizzare il codice HTML. In questo modo il controllo in mano allo sviluppatore è completo.

Riferimenti

GSPTV
ARF



lunedì 29 dicembre 2008

Personalizzare Content by Query WebPart (CQWP) e Summary Link (SL) con DDWRT in SharePoint 2007

Dopo aver brevemente accennato all’esistenza del namespace “CMSWRT” negli stili xsl delle CQWP di SharePoint 2007 e al fatto che ci sono pochi riferimenti a riguardo, passiamo a vedere un namespace decisamente più utile. DDWRT è un namespace per XSL derivante da SharePont 2003, che può comunque essere riutilizzato anche all’interno dei file si stile XSL di SharePoint 2007. Questo nemaspace ci mette a disposizione molte utili funzioni (per un completo elenco delle funzionalità), tra le quali GetFileExtension() che estrae l’estensione di un file dalla URL e MapToIcon() che restituisce l’icona associata con l’estensione del file. Di seguito un breve esempio di codice utilizzato in uno dei miei XSL.

<div class=”docicon-link-item”>
<img class=”docicon” alt=”Type” src=”/_layouts/images/{ddwrt:MapToIcon(”, ddwrt:GetFileExtension(string($SafeLinkUrl)))}”/>
<a href=”{$SafeLinkUrl}” target=”{$LinkTarget}” title=”{@LinkToolTip}”>
<xsl:value-of select=”$DisplayTitle”/>
</a>
</div>

Il risultato finale è il link a un file con a sinistra l'icona del tipo di documento, recuperata in base all'estensione del documento stesso. Il nome dell'icona viene preso dal file xml DOCICON. Quindi se associo un'icona diversa ai file pdf (per esempio) vedrò la stessa icona mostrata nelle liste.

sabato 22 novembre 2008

Personalizzare le Content Query WebPart con i WebControl Runtime

Indagando sull varie possibilità di utilizzo delle Content Query WebPart e della personalizzazione dei risultati mediante stili XSL personalizzati, mi sono imbattuto nel namespace “CMSWRT”.

Tale namespace si riferisce alle classi contenute nel namespace .NET SharePoint.Publishing.WebControls.WebPartRuntime. A dire la verità ispezionando con l’Object Viewer di Visual Studio 2008 il namespace Microsoft.SharePoint.Publishing.WebControls non ho trovato nessun WebRunTime e neanche tramite SDK sono riuscito a trovare informazioni utili. L’unica cosa che ho notato è che negli stili XSL di CQWP e Summary Links le funzioni appartenenti a questa classe sono principalmente tre:

RegisterFeedUrl(string, string)
GetPublishingResource(string)
EnsureIsAllowedProtocol(string)

Queste funzione vengono usate per gestire un feed RSS nei risultati delle sopra citate WebPart.

Tag Technorati:

lunedì 17 novembre 2008

Recuperare gli ID delle liste di sistema

In SharePoint le liste hanno ID dinamici, cioè vengono creati quando le liste sono instanziate nel sito, quindi se si vuole accedere ad una lista applicativamente senza utilizzare il suo URL (che in sharepoint è localizzato) bisogna trovare un sistema per recuperare gli ID delle liste.
Fortunatamente SharePoint memorizza gli ID delle liste di sistema in un dictionary a livello di Web (SubSite): la proprietà in questione è SPWeb.AllProperties.
Per esempio per recuperare l’ID della lista “Site Collection Images” (presente in un Publishing Portal) si può usare codice seguente:
SPList SiteCollectionImagesList = web.Lists[new Guid(web.AllProperties["__SiteColImagesListId"].ToString())];