Marco Rizzi SPBlog

SharePoint, web and so many things.
SP2010 - Missing methods in PublishingWeb class

Lavorando sul porting di applicazioni da SharePoint 2007 e SharePoint 2010 mi sono imbattutto in un problema sul object model che non mi sarei apettato. Stavo creando una site collection partendo da una site definition custom e improssisamente un errore rovina quella che doveva essere una giornata ad alta produttività (tra l'altro una delle giornate d'inverno in cui si vede il sole a Milano dal mattino fino alla sera ... argggg):

 

Provisioning did not succeed. Details: The site template was not provisioned successfully. Delete this site collection in Central Administration, and then create a new site collection. OriginalException: Method not found: 'Void Microsoft.SharePoint.Publishing.PublishingWeb.ExcludeFromNavigation(Boolean, System.Guid)'.

 

Method not found?!? WTF

 

Nella classe PublishingWeb sono stati cancellati i metodi che permettono di configuare la navigation:

  • ExcludeFromNavigation
  • IncludeInNavigation

 

dopo qualche ho scoperto che "ovviamente" sono stati rimpiazati da altri:

  • IncludeInCurrentNavigation(boolean)
  • IncludeInGlobalNavigation(boolean)

 

che al loro interno, sulla base del valore del parametro, vanno a chiamare

  • PublishingWeb.Navigation.IncludeInNavigation(Boolean, System.Guid);
  • PublishingWeb.Navigation.ExcludeFromNavigation(Boolean, System.Guid);

 

I più attenti lettori avranno già intuito che i metodi in realtà sono stati spostati in un'altra classe che si chiama PortalNavigation.

Aprendo questa classe con Reflector si può finalmente leggere il codice in modo agevole dato che non è stata offuscata, come invece lo era su SharePoint 2007.

 

 

Bookmark and Share
Agenda SharePoint & Office Conference 2010

Come già annunciato da numerosi speaker e organizzatori dell'evento, è stata pubblicata online l'agenda della SharePoint Conference 2010, che si terrà a Milano dal 9 all'11 marzo 2010.

http://www.sharepointconference.it/agenda.aspx

Sono stati anche pubblicati i nomi di tutti gli speaker.
E' con grande piacere che potremmo conoscere e apprezzare anche in Italia persone di spicco a livello internazionale quali:
Mike Fitzmaurice uno dei padri di SharePoint, ora Vice President di Nintex
Jan Tielens autore di numerosi progetti pubblicati anche su CodePlex (in primis la SmartPart), già speaker della SharePoint Conference Italiana nel 2008
Wouter van Vugt speaker che ho avuto piacere di conoscere durante Ignite SharePoint di Amsterdam, membro di Critical Path e autore della Community Kit for SharePoint 2010.

Siamo arrivati all'ultima offerta per l'iscrizione a prezzi ridotti, i posti sono limitati quindi correte ad iscrivervi.

Posted: gen 18 2010, 11.51 by marcorizz | with no comments
Filed under: ,
SharePoint 2010 - First lap around Variations

Quella che vado a descrivere in questo post è una overview sul tema variations di SharePoint 2010.

I timer job delle variations hanno delle schedulazioni molto particolari che, se applicati ad ambienti di sviluppo, risultano essere alquanto improbabili.

Variations Job Definitions - Schedule

La schedulazione del timer job Variation Create Hierarchies Job Definition che si occupa di creare le variation labels, i siti root di ogni singola label, è giornaliera e incentrata in orario notturno. Come si può vedere dallo screenshot, il job gira dalle 0 alle 3. Non metto in discussione che su ambienti di produzione questa schedulazione possa essere stata pensata per favorire alcuni aspetti (?!). Le alternative per gli ambienti di sviluppo sono:

  • mantenere la scheduzione invariata e a comando, tramite il bottone Run Now, forzare l’esecuzione del job
  • cambiare la scheduzione impostandola ogni 5 minuti.

Questa seconda ipotesi è da considerarsi soprattutto per casi in cui la variation labels vengano create e cancellate frequentemente (vedi test applicativi).

Variations Create hierarchies job - schedule

Andando sulla site collection nella quale sono state configurate le variations, questa è la vista del variation logs. Come si può notare dall’ultimo log sito variation master è presente una folder con all’interno una pagina e questi oggetti vengono replicati sui siti target. Su SharePoint 2010 le variation sono in grado di replicare non solo in contenuto sulla root della lista Pages ma l’intera struttura folder comprese.

Variation Logs

Vista della lista Pages su sito variation master.

Publishing site - Pages list with folders

All’interno della Folder1 c’è una pagina. NOTA: peccato che in questa vista non ci sia una chiara indicazione del livello di profondità (folder) degli item.

Publishing site - Pages list - View inside folder

Nel sito target delle variations la folder1 è stata replicata.

Variations - Pages replication

In conclusione ecco i punti chiave delle variations di SharePoint 2010 descritti in questo articolo:

  • la scheduzione dei job delle variations potrebbero non corrispondere alle esigenze degli ambienti di sviluppo. Valutare di volta in volta se rischedulare i job o forzarne manualmente l’esecuzione
  • la lista Pages supporta le folder. E’ quindi possibile inserire pagine all’interno di folder
  • le logiche delle variations prendono in esame e ‘replicano’ anche le folder e le pagine in essere contenute

Nota: in passato ho usato spesso le variation di SharePoint 2007. Conoscendone approfonditamente i pro/contro, gli scenari di adozioni e gli internals scrissi un articolo che ne descriveva le caratteristiche. Purtroppo quell’articolo è andato ‘perso’ su internet. Sto già lavorando per recuperare i contenuti e ripubblicarlo. Stay tuned!

Technorati Tags: ,
Input device alternativi: i muscoli

Dopo aver visto questo video su youtube, creato da un centro ricerca di Microsoft in collaborazione con alcune università U.S.A., dal titolo Enable Always-Available Input with Muscle-Computer Interfaces sto pensando di attendere per l’acquisto della chitarra di Guitar Hero per XBox 360 ancora qualche anno per poter giocare senza strumento, direttamente e unicamente con le mie mani. Per non parlare del fatto che, come viene mostrato nel video, si potrebbe aprire il portabagagli dell’auto con le mani impegnate.

Non so se fantasticare un pò sulle possibili implementazioni e pensare al fatto che quando la moglie di chiede di fare qualcosa e il marito ha già tutte le mani impegnate questa volta non ci sarebbero più scuse! Meditate gente :-)

Sarò speaker alla Microsoft SharePoint & Office Conference 2010

Durante i primi giorni delle vacanze natalizie ho ricevuto una grandissima notizia: la sessione che avevo proposto per la Microsoft SharePoint & Office Conference 2010, che si terrà dal 9 al 11 Marzo 2010, è stata accettata. E’ sicuramente un buon modo per chiudere l’anno e festeggiare con un paio di Guinness!

Alla terza edizione della SharePoint Conference italiana parteciperanno 20 tra migliori speaker italiani (molti di questa sono MVP SharePoint), saranno presentate circa 60 sessioni tecniche distribuite in 3 giornate.

La sessione che presenterò in coppia con un collega nonchè compagno di avventura Alberto Casu, che nel suo blog ha già scritto un post in merito battendomi sul tempo :), tratterà l’area Social di SharePoint 2010.

Ecco l’abstract della sessione resa pubblica sul sito della conference.


SharePoint e Social Networking
Per fare social network occorre avere una chiara visione degli impatti che tali portali hanno nell'azienda in termini di sicurezza, privacy, raggiungibilità e politiche di adozione. E' necessario pianificare le funzionalità a step ed essere ricettivi ai feedback per plasmare al meglio l'evoluzione del portale. Gli utenti non sono più un link e un profilo, ma delle persone che partecipano alla vita della comunità e ne delineano le esigenze. Con le novità di SharePoint 2010 sull'area social verranno approfondite le caratteristiche del My Site con l'aggreazione dei contenuti, il tracking delle attività di altri utenti, la navigazione della gerarchia aziendale, il tagging e rating. Si parlerà poi di people search descrivendone caratteristiche quali la ricerca per metadati, la ricerca fonetica, ecc... e di Community, aree tematiche sulle quali gli utenti posso contribure tramite una serie di strumenti tipici dei social network

Bug nel valore restituito da SPWeb.Configuration nei subweb di un site se acceduti via SPWeb.Webs

Versioni SharePoint testate: 
- SharePoint 2007 con SP2 + varie update
- SharePoint 2010 beta. 

Segnalo un bug che mi ha tenuto impegnato negli ultimi giorni. Navigando via object model sui subweb di una sito tramite SPWeb.Webs, la proprietà SPWeb.Configuration restituisce correttamente il configuration ID del template utilizzato sul rootweb, mentre per tutti gli altri –1.

Ecco il codice di una console application per riprodurre il comportamento:

static void Main(string[] args)

{

    using (SPSite site = new SPSite(args[0]))

    {

        InspectWeb(site.RootWeb, true);

    }

}

static void InspectWeb(Microsoft.SharePoint.SPWeb web, bool bRecurse)

{

    Console.WriteLine("web.ID: " + web.ID);

    Console.WriteLine(" web.Configuration: " + web.Configuration);

    if (bRecurse)

    {

        foreach (Microsoft.SharePoint.SPWeb subweb in web.Webs)

        {

            try

            {

                InspectWeb(subweb, bRecurse);

            }

            finally

            {

                subweb.Dispose();

            }

        }

    }

}

Mentre se prima di leggere la proprietà Configuration leggo un'altra delle proprietà del web ad esempio SPWeb.WebTemplateID non si presenta più l'anomalia, SPWeb.Configuration restituisce il valore corretto.

Console.WriteLine("web.ID: " + web.ID);

Console.WriteLine(" web.WebTemplateId: " + web.WebTemplateId);

Console.WriteLine(" web.Configuration: " + web.Configuration);

Facendo un rapido approfondimento con Refector trovo che SPWeb.Configuration va ad inizializzare il web chiamando il metodo InitWeb solo se la variabile m_nProvisionConfig, di tipo Nullable<Int16>, ha un valore.

public short Configuration

{

    get

    {

        if (!this.m_nProvisionConfig.HasValue)

        {

            this.InitWeb();

        }

        return this.m_nProvisionConfig.Value;

    }

}

Indagando scopro che la variabile viene inzializzata con valore di default –1 quando si accedere a SPWeb.Webs e ciò naturalmente non permette di eseguire il metodo InitWeb() nella get della proprietà Configuration.
Questo invece è il codice di SPWeb.Title che l'inizializza correttamente l'oggetto Web

public string Title

{

    get

    {

        if (this.m_strTitle == null)

        {

            this.InitWeb();

        }

        return this.m_strTitle;

    }

}

Per tornare al discorso delle inizializzazioni con valori di default si può notare che la get del SPWeb.WebTemplateId esegue correttamente il test per decidere se eseguire o meno il metodo InitWeb escludendo correttamente il valore settato dal metodo SPWeb.Webs

public int WebTemplateId

{

    get

    {

        if (this.m_nWebTemplateId == -1)

        {

            this.InitWeb();

        }

        return this.m_nWebTemplateId;

    }

}

I workround sono:

  • leggere i subweb usando il metodo GetSubwebsForCurrentUser. Questo è il link per il dettaglio su MSDN.
  • leggere una property del web che inizializza correttamente l'oggetto prima di accedere a quella Configuration. Attenzione: non tutte le get delle property del SPWeb hanno le logiche sopra descritte per inizializzare l'oggetto (esempio ID e Url non lo fanno)

   

Technorati Tags: sharepoint,development,page layouts,bug

Installare Page layouts e renderli un-ghosted subito dopo l'attivazione della feature

Prefazione: scrivo questo una volta per tutte (speriamo!) in modo che rimanga ai posteri e agli attenti lettori del mio blog. :-)


Quando un page layout viene modificato da SharePoint Designer, il nostro “amicone” gli inserisce nella direttiva @Page due attributi:

meta:webpartpageexpansion="full"
meta:progid="SharePoint.WebPartPage.Document"

Questi attributi se presenti indicano a SharePoint che il page layout è un-ghosted (customized). Questo comportamento è OOB se il page layout viene aperto e modificato da SharePoint Designer.
Capita spesso che gli sviluppatori usino Designer per creare i page layout e li esportino poi su Visual Studio per includerli in feature. In questo caso è d’obbligo ricordarsi di rimuovere questi due attributi per avere page layout ghosted (uncustomized).

Se ci si accorge di non averli rimossi ma si è già installato le feature occorre effettuare il re-ghost tramite object model, dato che su SharePoint non c’è un’interfaccia che permette di farlo. Per semplicare la vita segnato che Gary LaPointe ha realizzato una custom extension che si occupa di visualizzare l’elenco dei page layout un-ghosted e di fare il re-ghost.

 

Creare liste con caratteri speciali nel Title

Quando si crea un lista e si inserisce nel Title una serie di caretteri ‘speciali’ SharePoint li rimuove nel creare la URL. Se la rimozione dei caratteri speciali produce una stringa vuota viene usanto un valore di default.

Ecco alcuni esempi creando liste con Title !"£$%&/()=?^é*§°ç:;><,.-òàù+èì'\@#[]€

Tipo lista

Url associato

Discussion, Task, Custom list … custom list like List
Document library, Picture library … document library like DocLib

Se esiste già un lista con la url di default viene aggiunto in coda alla stringa un contatore (esempio DocLib2).

Se invece nel Title ci sono anche delle lettere queste vengono prese e raggruppate per formare la Url della lista.

Posted: dic 14 2009, 05.12 by marcorizz | with no comments
Filed under: ,
SharePoint by day, SharePint by night

 

L'invito è rivolto a tutti gli appassionati delle bionde (le birre naturalmente J) e di SharePoint

Quando: Martedì 24 Novembre dalle 20:30 – fino alla chiusura del locale
Dove: Kofler in via Tito Livio 4 a Milano (http://www.birreriekofler.it)
Ospiti: Davide Colombo (Microsoft Technology Solution Specialist SharePoint), Igor Macori (MVP Office SharePoint Server), Paolo Pialorsi, Claudio Brotto (MVP Windows SharePoint Services)

UPDATE: tra gli ospiti avremo anche Pietro Brambati (Microsoft DPE)

UPDATE2: ha confermato la sua presenza anche Gabriele Del Giovine (MVP SharePoint)

Per segnalare la tua partecipazione aggiungiti all'evento:
http://www.facebook.com/event.php?eid=180483187097&ref=mf

SharePoint 2010 Training su Channel 9

A grandi line ho trovato la struttura del SharePoint Ignite Training su MSDN Channel 9 all'indirizzo http://channel9.msdn.com/learn/courses/SharePoint2010Developer. Naturalmente il livello di approfondimento non può essere paragonato a quello del training in persona. Sul portale sono stati pubblicati dei video introduttivi per ciascuno delle novità introdotte da SharePoint 2010 e presentati da Ted Pattison co-fondatore di Critical Path Training. Ecco l'elenco dei video:

  • Getting Started with SharePoint 2010
  • SharePoint 2010 Developer Roadmap
    • Whats new in SharePoint 2010
    • SharePoint 2010 Developer Primer
    • New Developer Tool for SharePoint 2010
    • SharePoint 2010 Integration with PowerShell
  • Visual Studio 2010 Tools for SharePoint 2010
    • Introduction to VS2010 SharePoint Tools
    • SharePoint Tools Project Template
    • Adding SPIs to a Project
  • UI Enhancements
    • The SharePoint Fluent User Interface
    • Sites as Collections of Pages
    • Managing Data with SharePoint 2010
  • List and Schemas
    • New and Improved Events
    • List Relationships and Joins
    • Large List support
    • Field and List Item Validation
  • LINQ to SharePoint
    • Accessing SharePoint List Data
  • Client Object Model
    • Overview of the Client Object Model
    • Silverlight Client Object Model
    • ECMAScript Client Object Model
  • Workflow
    • Whats new in SharePoint 2010 Workflow
    • Designing Workflows with SharePoint Designer
    • Developing Workflow with VS 2010
  • Services Architecture
    • Architectural and Logical Overview
    • Creating Custom Service Applications
  • Accessing External Data
    • Business Connectivity Services (BCS) Primer
    • Creating BCS Application
    • Creation .NET Assembly Connectors in VS 2010 support
  • Enterprise Content Management
    • ECM and Enterprise Metadata
    • Advanced Routing and Document Sets
    • In Place Records Management
  • Extending Search
    • The Connector Framework
    • Enhancing the Search User Interface
    • Creating Custom Ranking Models
  • PerformancePoint Services
    • Business Intelligence (BI) Primer
    • Excel Services
    • PerformancePoint Services
  • Sandboxed Solution
    • Introducing Sandboxed Solution
    • Executing Code in the Sandbox
  • SharePoint 2010 Security
    • Introduction to Claims based Security
Posted: nov 17 2009, 09.30 by marcorizz | with no comments
Filed under:
SharePoint Ignite Training @Amsterdam

E' una settimana che sono tornato da Amsterdam per l'evento organizzato da Microsoft su SharePoint 2010 ed ecco un breve resoconto:

L'evento è stato di alto livello e, a differenza di quello di Las Vegas, molto tecnico/operativo. Ho assistito alla track dedicata agli sviluppatori mentre nella stanza affianco l'audience era IT PRO. Il numero di attendees era piuttosto limitato, circa un'ottantina per track, e ciò è servito per instaurare un'ottimo clima collaborativo ricco di interazioni, domante/risposte con talvolta anche cambi di programma e di schedulazione per approfondire temi trattati a nostro avviso un pò superficialmente. Molti complimenti allo speaker Wouter Van Vugt di Critical Path che in completa autonomia ha trattato l'80% degli argomenti.

Una delle serate l'ho trascorsa con degli amici italiani (Max che gentilmente mi ha ospitato, Gilberto e Fabio) allo user group Olandese degli Information Worker in Microsoft al quale hanno partecipato alcuni MVP e MCM SharePoint europei.

Avrò modo nei giorni/mesi a venire di entrare uno ad uno negli argomenti trattati per presentarli, fare degli esempi di utilizzo (molti staranno dicendo "vogliamo il codice!!!") ed esprimere dei commenti. Il valore aggiunto di partecipare a questi eventi in prima persona non è da sottovalutare.

RICORDATE: non è sufficiente guardare le slide!

Posted: nov 15 2009, 05.42 by marcorizz | with no comments
Filed under:
MCPD per Office SharePoint Server

Tratto dal blog di Gerry O’Brien (Technical Product Planner Developer Certifications)

Early information but at this point, it looks as though there will be two new exams for SharePoint developers coming.  An MCTS and an MCPD for Office SharePoint Server.  Some of you asked for the MCPD at PDC and I indicated at the time that it would require audience research.  The SharePoint folks have provided that and as a result, there will be new exams forthcoming.

Rimaniano in attesa di ulteriori dettagli, sperando magari di poter dare la beta di questi esami.

Traduttori online

Questa sera ho perso un pò di tempo a fare delle prove di traduzione inglese-italiano con i  principali traduttori online: Live, Google e Yahoo. Sono rimasto sorpreso da una traduzione in particolare che qui riporto:
The SharePoint folks have provided that and as a result, there will be new exams forthcoming.

Ecco i risultati ottenuti:
LIVE
La gente di SharePoint che hanno fornito e di conseguenza, non ci saranno nuovi esami imminenti.

GOOGLE
SharePoint persone che hanno fornito e, di conseguenza, non vi saranno nuovi esami di prossima pubblicazione.

YAHOO
Le gente di SharePoint hanno a condizione che e di conseguenza, ci saranno nuovi esami prossimi.

La cosa che più mi stupisce è la differenza di significato nella traduzione sia da Live che da Google con quel NON introdotto dopo la virgola. Mentre quella di Yahoo non inserisce il NON ma è completamente incomprensibile.
Rimane il fatto che tutte le traduzioni sono completamente incomprensibili e che il livello di traduzione automatizzata continua ad essere insufficiente.

Auguro buon lavoro tutti i team di sviluppo che direi proprio sono parecchio indietro.

Technorati Tags:
Posted: lug 09 2009, 11.00 by marcorizz | with no comments
Filed under:
SharePint annullata

Con rammarico sono costretto ad annullare l'incontro data la scarsa partecipazione.
Pensavo che, tramite il passaparola, ci fosse un coinvolgimento maggiore sia degli esperti che delle persone che si avvicinano a questa piattaforma.

Personalmente sono dispiaciuto che non si riesca a creare una vera comunità online di appassionati di SharePoint. All'estero vengono organizzati eventi informali quali SharePint, SharePoint Saturday e SPBabies ... dire che SharePoint è la piattaforma che sta conoscendo una sempre maggiore adozione e sul quale ci sono i riflettori puntati per rilascio della nuova versione.

Spero che il messaggio che sto lanciando venga colto.

PS: ringrazio chi mi aveva dato la sua disponibilità a partecipare. La birra ve la offro io la prossima volta che ci vediamo :-)

Posted: giu 18 2009, 07.58 by marcorizz | with 1 comment(s)
Filed under:
Stsadm technical reference: aggregare dati con Silverlight

Segnolo un’interessante iniziativa di Microsoft per presentare graficamente in forma diversa dei contenuti presenti su MSDN. Sto parlando in particolare di STSADM e di tutte le operations e properties da esso esposte.

E’ stato realizzato un controllo Silverlight che permette la navigazione tra le operations e properties suddividendole per applicazione (Backup & Restore, ECM, Db, ecc…), per rilascio (SP1, SP2), per raggiungibilità (se tramite la UI di SharePoint o solo via STSADM).
Ecco il link:

http://technet.microsoft.com/en-us/office/sharepointserver/cc948709.aspx

A mio parere, data la mole di contenuti su MSDN e technet sarebbe opportuno una ristrutturazione con conseguente miglioramento della ricerca e navigazione. Ne avevo già parlato con una persona del team che segue la pubblicazione dei contenuti su MSDN dell’area dedicata a SharePoint e spero che questa pagina sia solamente una briciola, giusto per testare l’audience.

More Posts Next page »