Windows SharePoint 2003 Products & Technologies – Personalizzazione Marco Bellinaso Senior trainer & consultant Code Architects S.r.l. Web: http://www.codearchitects.com E-mail: [email protected] 1 Biografia Consulenza, sviluppo e training con Code Architects Srl Collaboratore di Visual Basic & .NET Journal, Computer Programming, MSDN Magazine e ASP Today Coautore di “ASP.NET Website Programming”, “Fast Track ASP.NET” e “Visual C# .NET: a Guide for VB6 Developers” (Wrox Press) Sviluppatore di UGI SharePoint (www.ugisharepoint.it) Sviluppatore dei siti *2TheMax (www.dotnet2themax.com) (www.dotnet2themax.it ) e-mail: [email protected] http://www.codearchitects.com 2 Agenda Cosa sono i Custom Template Personalizzazioni da browser Personalizzazioni avanzate da FrontPage 2003 Cosa sono i Site Definition Quando usare gli uni o gli altri? http://www.codearchitects.com 3 Overview Tutto quello che è possibile creare in SharePoint è basato su template Siti Liste Pagine Documenti Due tipi di template per siti e liste: Site Definition: insieme di file XML sul file system, che definiscono la struttura di tutte le parti del sito Custom Template: personalizzazioni generate da browser e salvate sul DB dei contenuti http://www.codearchitects.com 4 Custom Template Personalizzazione di un Site Definition Delta tra il sito originale (creato dal Site Definition) e la versione personalizzata Il template è dipendente dal Site Definition dal quale è stato creato Salvato su DB, ma può essere salvato anche come file .STP Non può essere usato se il Site Definition originale non è presente Può essere rinominato con .CAB e aperto in Explorer Contiene un manifest.xml e tutte le pagine da creare Una volta personalizzata, la pagina diventa “unghosted” e sarà caricata da DB http://www.codearchitects.com 5 Custom Template – Liste Creati da browser, cliccando “Save As Template” da “Modify Settings and Columns” Vengono salvati nella “List Template Gallery” del sito radice Disponibile per tutti i siti della site collection Tipicamente dopo aver aggiunto o modificato colonne A patto che siano stati creati dalla stessa Site Definition, e basati sullo stesso linguaggio del sito dal quale il template è stato creato Per rendere disponibile un template per siti di altre site collection, scaricare il template su file system (file .STP) e farne l’upload dal sito target http://www.codearchitects.com 6 Custom Template – Siti Salva le modifiche/aggiunte dell’interno sito Opzionalmente include i contenuti (max 10MB) Salvati nella “Site Template Gallery” a livello di site collection Possono essere esportati in altre site collection, come avviene per i List Template Possono essere importati nella “Central Gallery” ed essere usati per la creazione di siti top-level (radice) Scaricare il template su file Usare “stsadm –o addtemplate –filename filename.stp Eseguire “iisreset” http://www.codearchitects.com 7 –title Titolo” Custom Template e FrontPage FrontPage 2003 permette di svolgere in modo molto semplice una serie di personalizzazioni Applicare, modificare e creare nuovi temi Modificare il layout di tutte le pagine, aggiungendo e modificando elementi grafici Inserire Web Part zone, e Web Part all’interno di esse Trasformare qualsiasi lista in una Web Part di tipo XSLT Data View Conditional formatting Layout / display view personalizzata Connessioni http://www.codearchitects.com 8 Site Definition Insieme di file XML (quindi salvati su file system) che definiscono la struttura dei siti ONET.XML WEBTEMP*.XML SCHEMA.XML (DOCICON.XML) (VWSTYLES.XML) (FLDTYPES.XML) Di default, tutti i siti che si possono creare sono basati su Site Definition http://www.codearchitects.com 9 Site Definition ONET.XML Barre di navigazione (Top, Quick Launch) Liste disponibili Template di documenti base type (Generic List, Doc Lib, Discussion Board, Survey, Issue Tracking) Configurazioni Moduli http://www.codearchitects.com 10 Site Definition Moduli Specifica una collezione di file da includere nel sito Nel caso di Web Part Page, si può anche specificare quali Web Part sono subito incluse di default nella pagina Configurazioni Lo stesso Site Definition può avere diverse configurazioni, che includono una selezione di liste e moduli disponibili Es: STS => Team Site, Blank Site e Document Workspace Ogni configurazione viene elencata nella pagina di selezione del template in fase di creazione del sito Tutte le altre configurazioni di ONET.XML sono condivise http://www.codearchitects.com 11 Site Definition WEBTEMP*.XML Elenca le configurazioni da rendere disponibili Se si creano nuovi Site Definition o configurazioni, creare un file WEBTEMP{QUALCOSA}.XML invece che modificare quello di default (Es. WEBTEMPWEBCAST.XML) SharePoint fa automaticamente il merge di tutti i file WEBTEMP*.XML SCHEMA.XML Definisce colonne, viste e contenuti di default di una lista La struttura è definita in CAML ONET.XML referenzia le liste da rendere disponibili per la creazione nella sua sezione ListTemplates http://www.codearchitects.com 12 Site Definition Creare un nuovo Site Definition piuttosto che modificare uno di quelli di base Si può partire copiando e rinominando la directory STS (o altra dir della definizione da usare come base) Modificare una definizione esistente può causare problemi l’applicazione di service pack può sovrascrivere le proprie modifiche Custom template basati sul Site Definition modificato, o altri Site Definition che referenziano sue liste, potrebbero smettere di funzionare Se proprio si deve modificare una definizione esistente (e in uso) assicurarsi di apportare solo AGGIUNTE, non rimuovere o modificare elementi già presenti http://www.codearchitects.com 13 Custom template o site definition? Site Definition PRO: I dati sono salvati come file su file system => più veloce che leggerli da DB Maggiori possibilità di personalizzazione delle liste intervenendo direttamente sui file SCHEMA.XML Nuovi tipi di file, documenti di default, stili per le view e voci di menu possono essere aggiunte solo nei site definition CONTRO: Richiede parecchio lavoro e conoscenza di CAML Una volta usato da un sito, non si dovrebbe più modificarne la struttura, per evitare di corrompere siti esistenti Non si possono creare due liste dello stesso tipo, anche se con diverso contenuto di default Non si può specificare il tema di default E’ richiesto l’accesso al file system => normali utenti non possono creare nuovi Site Definition http://www.codearchitects.com 14 Custom template o site definition? Custom Template PRO: Molto facili da creare (tutto tramite browser e FrontPage) Tutte le modifiche fatte da browser (o da FrontPage) possono essere salvate come template Possono essere modificati senza corrompere siti esistenti basati su di essi CONTRO: Meno efficienti, perché salvati su DB => richiedono più query Sono personalizzazioni di un Site Definition => se il Site Definition originale non è presente, il Custom Template non può funzionare http://www.codearchitects.com 15 Creare siti e liste da codice L’object model permette di creare siti e liste basati su template di default o custom Creare un sito basato su template di default SPSite site = new SPSite("http://localhost/sites/webcast"); site.AllWebs.Add("dev", "Sito sviluppatori", "My dev site", 1040, SPWebTemplate.WebTemplateSTS, false, false); Creare un sito basato su template custom SPWebTemplate template = site.GetCustomWebTemplates(1040)["DevSite"]; site.AllWebs.Add("dev", "Sito sviluppatori", "Il sito degli sviluppatori", 1040, template, false, false); Applicare un template custom ad un sito esistente SPWeb web = site.AllWebs["dev"]; SPWebTemplate template = site.GetCustomWebTemplates(1040)["DevSite"]; web.ApplyWebTemplate(template); http://www.codearchitects.com 16 Creare siti e liste da codice Creare liste Basate su tipi base SPSite site = new SPSite("http://localhost/sites/webcast"); SPWeb web = site.AllWebs["dev"]; SPListTemplate template = SPListTemplateType.Events; web.Lists.Add("Eventi", "Lista di eventi", template); Basate su template custom SPListTemplate template = site.GetCustomListTemplates(web)["ProjList"]; web.Lists.Add("Progetti", "Lista di progetti", template); http://www.codearchitects.com 17 Domande? http://www.ugisharepoint.it http://www.dotnet2themax.it/blog http://www.codearchitects.com 18