1.

Beta 2 Le novità di Visual Studio 2010 Beta 2 per SharePoint 2010 Data: 11/29/2009 Categoria: Sharepoint Codice d'esempio

La nuova versione di Visual Studio porta con se tante novità per gli sviluppatori SharePoint. Nelle versioni precedenti, siamo sempre stati abituati a dover installare degli add-in che fornissero le funzionalità di base per lo sviluppo di personalizzazioni sulla piattaforma di collaborazione Microsoft come i Visual Studio tools for SharePoint, WSP Builder o gli Smart Templates. Altrimenti, era necessario procedere con la creazione manuale di tanti oggetti come web part, handler, feature e soluzioni. Con Visual Studio 2010 invece, lo sviluppatore SharePoint ha tutto quello di cui ha bisogno: nuovi template specifici per ogni tipo di personalizzazione, un nuovo designer per la costruzione di feature e soluzioni, un nuovo set di configurazioni per progetti, una finestra per la visualizzazione del contenuto di una o più web application SharePoint e nuove funzionalità per il packaging dei componenti e per il deploy. Il tutto integrato direttamente all'interno dell'IDE di sviluppo, senza quindi dover installare alcun tipo di componente aggiuntivo. In fase di installazione, infatti, è possibile scegliere di installare o meno gli strumenti di sviluppo per SharePoint che ora fanno parte del pacchetto di Visual Studio 2010.

Una volta installati, avremo a disposizione tutte le nuove funzionalità per gli sviluppatori SharePoint; novità che vedremo ora nel dettaglio.

Nuovi template All'interno dei tools per SharePoint, sono stati introdotti una serie di template per lo sviluppo delle normali personalizzazioni che abbiamo la possibilità di installare all’interno di SharePoint. Sono presenti template sia per lo sviluppo sulla versione 2007 del prodotto (quindi anche su Windows SharePoint Services 3.0) sia per lo sviluppo sulla nuova versione 2010 (supportando SharePoint Server e SharePoint Foundation). Scegliendo di creare un nuovo progetto, infatti, l'IDE di sviluppo ci propone tale elenco dividendolo tra le due versioni appena citate e filtrando i template in base alla versione del .NET Framework scelta dall’utente.

Come è possibile vedere dalla figura, abbiamo template per la creazione di:
        

Visual Web Part (la nuova tipologia di web part introdotta in SharePoint 2010) Code Web Part (le normali web part a cui siamo abituati tutt'ora) Workflow (sia sequenziali che a stati) List definition Site definition Event handler Content type Modello per i Business Data Services (ex Business data catalog) Progetti SharePoint vuoti

Inoltre, è possibile anche importare all'interno di Visual Studio soluzioni (.wsp) e workflow creati in precedenza dell'arrivo delle versioni 2010 di entrambi i prodotti, in modo tale da poterle modificare all'interno del nuovo ambiente e poter usufruire di tutte le nuove funzionalità.

Aggiunte al Server Explorer Un'altra delle mancanze fondamentali di tutti gli add-in di sviluppo per SharePoint è sempre stata una visualizzazione generale di tutto il contenuto strutturale di una o più web application. Come contenuto è da intendersi il numero di siti creati, le liste e i relativi campi, le feature, i content type, le definizioni di sito e di liste installate e i workflow presenti. Tale visualizzazione è stata aggiunta all'interno della toolbox "Server Explorer". Qui è possibile aggiungere una o più web application, specificandone l'indirizzo, per poter poi visualizzare la struttura ad albero degli oggetti creati al suo interno e le relative proprietà di ognuno di essi (tramite la normale finestra delle proprietà di Visual Studio). Una visualizzazione di questo tipo permette allo sviluppatore di capire dove installare le proprie personalizzazioni e come svilupparle per raggiungere gli scopi prefissati. Per fare un esempio molto semplice, sotto ogni lista sono presenti sia l'elenco delle relative viste che quello dei vari campi utilizzati, fornendone sia il nome visualizzato ("display name") che il nome interno ("internal name"), così che possano essere utilizzati all'interno del progetto SharePoint corrente. In figura è possibile vedere l'albero espanso di un’installazione SharePoint 2010.

composte da più file di configurazione secondari. file di risorse e moduli. per quanto sicuramente efficaci per il raggiungimento di risultati di base. Feature designer Per quanto riguarda invece lo sviluppo di feature SharePoint. In Visual Studio 2010 questa mancanza è stata sopperita con la fruizione di un nuovo designer visuale per la costruzione di feature e del relativo package di progetto.Fino ad oggi. risultavano però poco ferrati sulla creazione di feature complesse. che . Tra i più famosi possiamo citare SharePoint Inspector o SharePoint Manager. per eseguire queste operazioni di ispezione della struttura di web application e siti SharePoint era necessario appoggiarsi a strumenti esterni all'IDE di sviluppo. Chiaramente queste operazioni erano a forte rischio di errori di sintassi o di referenze. obbligando quindi lo sviluppatore alla creazione manuale della struttura xml della feature principale e di tutti i file secondari. gli strumenti messi a disposizione dai tools for SharePoint per Visual Studio 2008.

la nuova toolbox è stata denominata "Packaging Explorer". ma tale operazione è disponibile direttamente scegliendo il tasto F5. Infatti ora si ha la possibilità di creare la struttura del proprio package (che in sostanza è il nuovo nome dato alle soluzioni SharePoint) direttamente all'interno di Visual Studio e di scegliere di compilarlo in un unico file con estensione . . Packaging del progetto Nuove funzionalità sono state aggiunte anche a tutto il meccanismo di compilazione e deploying dei componenti all'interno di SharePoint. non è più necessario attaccarsi al processo del web server per procedere poi al debugging dei propri componenti. è stata aggiunta una toolbox per la visualizzazione degli elementi che dovranno essere inseriti all’interno del package finale di progetto (la soluzione .attraverso un'interfaccia grafica davvero user-frienly. è in grado di permettere all'utente finale di scegliere quali dei componenti facenti parte del progetto dovranno essere installati tramite la feature. se Visual Studio 2010 è installato nel medesimo ambiente in cui è installato SharePoint (e ricordiamo che dalla versione 2010 SharePoint può essere installato anche su Windows 7). In questo ambito.wsp. quale dovrà essere il suo scope. E' ancora presente la possibilità di effettuare l'installazione delle proprie personalizzazioni direttamente dall'IDE di sviluppo e procedere poi con le normali operazioni di debug. L'aggiunta principale però è stata sicuramente quella del packaging del progetto. Assieme a questo nuovo designer. per poi procedere con l'installazione all’interno di altre farm SharePoint.wsp). quali le dipendenze e i campi testuali di descrizione e titolo.

era necessario crearsi degli script a parte per il compimento di operazioni di questo tipo. da eseguire a mano dopo aver lanciato il deploy da Visual Studio. Configurazioni di progetto specifiche per SharePoint Infine. Al suo interno è stata inserita la gestione degli eventi "pre-deployment" e "post-deployment" così da permettere allo sviluppatore di creare dei comandi da eseguire prima o dopo il deploy delle proprie personalizzazioni. è stata aggiornata la maschera delle proprietà dei progetti con l'aggiunta di un nuovo tab specifico per SharePoint.Il comando "Package" è disponibile sempre all’interno del menu "Build". Fino ad oggi. .

In più. Se il client con cui accede l'utente non ha installato Silverlight 3. in una normale installazione di SharePont 2010. Silverlight creation experience in SharePoint 2010 All'interno di SharePoint 2010. per la selezione delle varie tipologie di liste disponibili. Silverlight è totalmente integrato e presente di default attraverso un paio di web part di base (presenti sia nella versione Server che in SharePoint Foundation)..0 (o 4. in quanto offre una nuova user interface veramente ricca. Quest'ultima risulta davvero di notevole impatto..0). senza doversi appoggiare su prodotti esterni e questo risulta sicuramente un punto vincente.Conclusioni In questo articolo abbiamo visto una rapida panoramica di quanto ci offre la nuova versione di Visual Studio (attualmente in versione Beta 2) per lo sviluppo di personalizzazioni SharePoint. Sicuramente tutti i cambiamenti apportati risultano veramente utili in quanto sono frutto di un'attenta ricerca di tutte quelle mancanze proprie degli strumenti di sviluppo utilizzati fin'ora. Come al solito Microsoft. una web part per la visualizzazione grafica dell'organizzazione della propria azienda (presente solo in SharePoint Server 2010) e un meccanismo per la scelta del template con cui creare le nuove liste all'interno dei vari siti. questa pagina risulterà di aspetto e funzionalità medesime a quanto già avevamo nella versione 2007 di SharePoint. sono tutte funzionalità di cui si può usufruire direttamente dal medesimo ambiente." si viene portati alla pagina di selezione del tipo di lista da creare. Da notare è il fatto che il sistema si accorge della mancanza di Silverlight . scegliendo l'opzione "Site Actions > More Options . Quindi. ha scelto il nome più sborone che poteva trovare per tale interfaccia: "the creation experience".

Il controllo è visibile in questa figura. A breve vedremo anche tutto il resto non preoccupatevi.nel browser dell'utente e gli propone di installarlo attraverso un alert posto in alto a sinistra della pagina. ma dal vivo vi assicuro che è veramente bello ! Questa è una delle integrazioni già disponibili tra SharePoint 2010 e Silverlight. Una volta installato.. I nuovi event receivers di SharePoint 2010 Data: 12/18/2009 Categoria: Sharepoint Codice d'esempio . SharePoint renderizzerà una finestra modale che conterrà il nuovo controllo Silverlight utile a fornire all'utente finale una scelta del template di lista molto più immediata e gradevole. al posto della normale pagina di selezione del template di lista.

da quello di provisioning e da quello di incoming delle mail. A field was added A field is being added A field was removed A field is being removed A field was updated A field is being updated A list is being added A list is being deleted A list was added A list was deleted List item events Per quanto riguarda. Abbiamo infatti nuovi eventi riguardanti le operazioni effettuate dal motore di workflow. le operazioni effettuate su singoli elementi. An item is being added . invece. in quanto permettono la personalizzazione delle normali procedure che l'utente finale effettua tramite interfaccia grafica. l'elenco degli eventi disponibili è notevolmente aumentato.Gli event handler. all'interno dell'architettura di SharePoint sono da sempre stati uno degli strumenti più utilizzati dagli sviluppatori. sono stati aggiunti 4 nuovi eventi utili ad effettuare operazioni custom a fronte di un'aggiunta di una nuova lista o di una cancellazione. questo evento viene scatenato quando viene richiamata la classe SPContext all'interno di altri eventi sempre relativi all'elemento. In SharePoint 2010. è stato aggiunto un solo evento riguardante la reazione da parte del singolo elemento ad una chiamata dal contesto. In parole povere. senza che quest'ultimo si accorgo di effettivi cambiamenti all'interfaccia stessa. Vediamoli in dettaglio. List events Per quanto riguarda le operazioni effettuate su istanze di liste.

.An item is being updated An item is being deleted An item is being checked in An item is being checked out An item is being unchecked out An attachment is being added to the item An attachment is being removed from the item A file is being moved An item was added An item was updated An item was deleted An item was checked in An item was checked out An item was unchecked out An attachment was added to the item An attachment was removed from the item A file was moved A file was converted The list received a context event List e-mail events Su liste configurate per la ricezione di messaggi e-mail è stato. finalmente. Prima era necessario gestire gli eventi ItemAdding o ItemAdded effettuare il parsing della mail e controllare manualmente gli allegati. aggiunto un evento specifico appunto per la ricezione della mail.

The list received an e-mail message Workflow events Questi sono gli eventi che mi ha fatto più piacere trovare all'interno di SharePoint 2010. Eventi per gestire le operazioni di inizio e fine di uno o più workflow. siti e site collection. che prima fa scegliere all'utente finale quali degli eventi disponibili vuole gestire. crea tutte le . sono stati aggiunti due eventi (il sincrono e il rispettivo asincrono) per lanciare operazioni personalizzate a fronte del provisioning di un nuovo sito SharePoint 2010. è la possibilità di creare questi eventi direttamente all'interno di Visual Studio 2010 attraverso uno dei suoi template di progetto o elemento. Il template in questione è il template "Event receiver". A workflow is starting A workflow was started A workflow was postponed A workflow was completed Web events Per quanto riguarda invece. A site collection is being deleted A site is being deleted A site is being moved A site is being provisioned A site collection was deleted A site was deleted A site was moved A site was provisioned Ma la cosa più bella in assoluto. poi in base alla scelta fatta.

In allegato trovate un progetto Visual Studio 2010 con tutti i nuovi eventi gestiti (senza alcun tipo di implementazione però :) .vb) con la dichiarazione dei gestori degli eventi selezionati.cs o .strutture di configurazione XML per gli eventi e i relativi file di codice (.

tutti i file posti in tali cartelle mappate.UserProfileException was . An exception of type Microsoft. permettono allo sviluppatore di mappare la directory "IMAGES".Office. la directory "LAYOUTS" o un'altra delle directory presenti sotto il percorso: C:\program files\common files\microsoft shared\web server extensions\14\ all'interno della struttura del proprio package di progetto. ne abbiamo parlato già nel relativo articolo. utilizzato solitamente per l'inserimento di nuovi elementi all'interno della soluzione. mi sono scontrato tutte le volte con questo errore: Failed to create sample Data.. Così facendo. nei percorsi definiti dai relativi mapping. Errore: "Failed to create sample data" durante l'installazione di SharePoint 2010 Installando la beta di SharePoint 2010. verrano automaticamente inseriti all'interno della soluzione ed installati sul server SharePoint 2010. web part.) o vere e proprie applicazioni SharePoint.Questo articolo è stato scritto sulla versione Beta 2 di SharePoint 2010 e Visual Studio 2010 L'opzione di menu "SharePoint Mapped folder" di Visual Studio 2010 Riguardo le principali novità per sviluppatori SharePoint 2010. all'interno del menu "Add". ecc. In modo tale da poter essere disponibili per eventuali componenti personalizzati (come list o site definition. Una piccola cosa che ho tralasciato è la presenza di nuove voci di menu. La medesima funzionalità appena descritta. mentre era disponibile una volta installati uno degli add-in tra WSPBuilder o gli Smart Templates.UserProfiles. non era presente nei tools per Visual Studio legati alla versione 2007 di SharePoint.Server. Queste..

Fatto questo. Dopo la funzione di validazione su . Note that attribute names are case-sensitive (C:\Program Files\Common Files\Microsoft Shared\Web Server Extentions\14\WebClients\Profile\client. è necessario far ripartire a mano il Configuration Wizard di SharePoint 2010.config specificato nelle informazioni dettagliate dell'errore e togliere tutte le occorrenze dell'attributo "allowInsecureTransport". basta solamente aprire il file client.thrown. Addictional exception information: Unrecognized attribute 'allowInsecureTransport'.config line 56) visibile anche in figura: Per risolvere il problema. 2. Business Connectivity Services Screencast: SharePoint 2010 Business Connectivity Services Continua questa piccola serie di mini-screencast riguardo le novità presenti su SharePoint 2010.

Questo il link diretto al video: http://www. E' un breve video sull'utilizzo della nuova funzionalità di validazione di liste e colonne presente su SharePoint 2010.aspx Tale funzionalità ci permette di scrivere velocemente delle formule di validazione del contenuto di una o più colonna di una lista SharePoint.0). In parole povere i BCS sono una versione molto evoluta del Business Data Catalog di MOSS 2007. Per effettuare il provisioning di un campo del genere all'interno delle nostre list definition o all'interno dei nostri content type. tecnologia utile a leggere dati da fonti esterne a SharePoint e presentarli tramite le nuove interfaccie della piattaforma di collaborazione Microsoft.liste. la versione di SharePoint disponibile grauitamente con una licenza Windows Server.peppedotnet.it/Media/SharePoint%202010%20Li st%20validation. un esempio vale più di mille parole. ecco il link diretto: http://www.. Provisioning di un campo RichText in SharePoint 2010 Un campo di tipo RichText in SharePoint non è altro che un campo multilinea con abilitato l'editor di testo completo per la rappresentazione di contenuti "ricchi". Screencast: SharePoint 2010 list validation 5.. tabelle. quindi testi formattati. senza dover scrivere dei campi custom o degli event handler (cosa che invece era d'obbligo con MOSS 2007 o WSS 3. ecc. ecco quindi la sintassi del nostro campo: <Field ID="8EAA0ED0-A045-43AD-BA82-44CFAF312908" Type="Note" DisplayName="Sample Rich Text Field" Name="SampleRichTextField" . basta creare un campo di tipo "Note" ed aggiungere le proprietà "RichText" e "RichTextMode". immagini.peppedotnet.it/Media/SharePoint 2010 Business Connectivity Services.aspx 3. Se può interessare. Oggi ho inserito un nuovo screencast sotto la sezione "Media" di peppedotnet. Liste 4. valorizzandole rispettivamente a "TRUE" e "FullHtml". che risulta però disponibile anche in SharePoint Foundation 2010. Come si suol dire. questa è la volta dei Business Connectivity Services (BCS). link.

microsoft.com/sharepoint/v3" /> Se inseriamo questa definizione di campo all'interno di una feature e la attiviamo (o a livello di site collection o a livello di singolo sito).StaticName="SampleRichTextField" Group="PeppeDotNet. .Sample Fields" RichText="TRUE" RichTextMode="FullHtml" Sealed="FALSE" SourceID="http://schemas. troveremo il nostro campo di tipo RichText tra le site column disponibili.it .

Come potete vedere. il tipo di formattazione del testo specificato è proprio .

tables and hyperlinks)".RichText .it/zip/PeppeDotNet.zip 4. Ribbon Il nostro primo Ribbon per SharePoint 2010 La customizzazione dell'interfaccia di SharePoint 2010 può ritornarci molto utile per poter effettuare operazioni su liste ed elementi o per estendere il normale comportamento di SharePoint in modo da aggiungere funzionalità . Trovate i sorgenti a questo indirizzo: http://www. A titolo d'esempio.peppedotnet. in fase di inserimento o di modifica. un content type d'esempio e una list definition creata a partire da questo content type. avremmo a disposizione l'editor di testo avanzato all'interno della barra dei ribbon."Enhanced rich text (Rich text with pictures.Provisioning. Se poi decidiamo semplicemente di inserire il nostro campo all'interno di una lista SharePoint 2010 o se abbiamo intenzione di creare un content type ed inserirci il riferimento al nostro campo di tipo RichText. ho creato una soluzione SharePoint 2010 contenente il campo di tipo RichText.

Innanzitutto. Ma vediamo subito l'esempio. <?xml version="1. ci viene utile sviluppare un Ribbon se vogliamo fare operazioni su liste e singoli o multipli elementi di liste. il legame tra un Ribbon e le custom action che abbiamo conosciuto in MOSS 2007 è molto importante. è molto importante sapere che risulta una best practices utilizzare i Ribbon per tutte quelle operazioni che in MOSS 2007/WSS 3. In generale poi.0" encoding="utf-8"?> <Elements xmlns="http://schemas. Una delle personalizzazioni che possiamo fare è lo sviluppo di un Ribbon personalizzato da poter aggiungere alla barra dei Ribbon presente nel layout di default della nuova versione di SharePoint. per la definizione di un Ribbon all'interno di Visual Studio 2010 dobbiamo creare un progetto di tipo "Empty SharePoint Project" e scegliere di aggiungere un nuovo elemento di tipo "Empty element". utili alle nostre applicazioni.personalizzate. Detto questo. infatti per la definizione del nostro primo Ribbon personalizzato utilizziamo comunque il tag "CustomAction". Questa tipologia di template contiene un file xml vuoto all'interno del quale possiamo procedere con la definizione del nostro Ribbon. Come vi dicevo. che vale sicuramente più di mille parole.microsoft.com/sharepoint/"> <CustomAction Id="HelloWorld" .0 abbiamo fruito ai nostri utenti attraverso le custom action.

proprio come le custom action della precedente versione di SharePoint. il contesto in .Ribbon" RegistrationType="List" RegistrationId="101"> <CommandUIExtension> <CommandUIDefinitions> <CommandUIDefinition Location="Ribbon.Documents. possiamo scegliere di inserire il nostro Ribbon all'interno della relativa barra (tramite l'attributo "Location")._children"> <Button Id="Ribbon.Controls.Title="Hello World" Location="CommandUI." /> </CommandUIHandlers> </CommandUIExtension> </CustomAction> </Elements> Come potete vedere.Manage.HelloWorld" TemplateAlias="o1" Command="HelloWorld" LabelText="Hello world"/> </CommandUIDefinition> </CommandUIDefinitions> <CommandUIHandlers> <CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert('Hello world from ribbon !").

in uno dei vari tab a disposizione e che forniscano delle azioni personalizzate agli utenti finali. ho scelto di posizione la mia estensione all'interno del tab "Douments" presente in tutte le Document Library di SharePoint 2010 e all'interno del gruppo "Manage". novità rispetto alla vecchia versione.cui il nostro Ribbon dovrà apparire (attraverso gli attributi "RegistrationType" e "RegistrationId") e. L'estensione non è altro che un singolo controllo o una serie di controlli (nel nostro esempio un semplice bottone) che decidiamo che dovranno essere visualizzati all'interno della barra dei Ribbon. Nell'esempio. possiamo definire quale dovrà essere l'estensione all'interfaccia che il nostro Ribbon andrà a rappresentare. . Questa scelta viene specificata all'interno dell'attributo "Location" proprio dell'elemento "CommandUIDefinition" che rappresenta la mia estensione.

Controls._children Se volete la lista di tutti gli identificativi dei tab e dei gruppi che avete a disposizione.[Tab]. possiamo legare uno specifico comando. checkbox o altro che sia. ad ogni controllo (bottone.In generale.. vale la seguente regola: Ribbon. utile a definire appunto il comportamento che dovrà avere il nostro ribbon a fronte di un'operazione da parte dell'utente su di esso.microsoft. potete andare all'interno della documentazione a questo indirizzo: http://msdn. Questo comando sarà una o più istruzioni JavaScript che abbiamo la possibilità di definire all'interno dell'attributo "CommandAction" dell'elemento "CommandUIHandler".) presente all'interno della nostra estensione all'interfaccia di SharePoint.com/en-us/library/ee537543.[Group]. . per inserire i nostri Ribbon all'interno dei vari tab e dei vari gruppi.aspx Poi.

checkbox. Vi ricordo.com/vsixforsp Gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010 Come abbiamo visto dal nostro primo esempio. L'esempio visto nel precedente post infatti.. il gruppo "Manage" del tab "Documents" (proprio di ogni Document Library appartenente ad un sito SharePoint 2010).) verranno visualizzati come ultimi nel gruppo in cui il Ribbon è stato inserito..msdn. specificando il corretto valore all'interno dell'attributo "Location". subito dopo questi due. Nota: In questo senso. Se vogliamo invece spostare il nostro bottone personalizzato prima di tutti gli altri (o in qualsiasi altra posizione). Questi sono i controlli per la visualizzazione delle proprietà di un documento o per la loro modifica. Come possiamo vedere in figura.0" encoding="utf-8"?> . ecc. Se non definiamo nient'altro.microsoft. vede già la presenza di due controlli con l’attributo "TemplateAlias" valorizzato a "o1". in quanto questi controlli saranno visualizzati dopo tutti quelli definiti con il medesimo "TemplateAlias" (nei prossimi post daremo una spiegazione anche all'utilità di questo attributo). è necessario però definire bene il concetto di "ultimo".Non mi dilungo di più perchè di cose da dire ce ne sono davvero tante e dovrei riprenderle tutte nei prossimi post o in qualche articolo pubblicato da SharePointCommunity. lo potete trovare all'interno della Code Gallery di Microsoft a questo indirizzo: http://code. posiziona il nostro Ribbon personalizzato con etichetta "Hello world". dobbiamo dare un valore intero all'attributo "Sequence" del controllo che vogliamo posizionare. gli elementi facenti parte del nostro Ribbon (bottoni. possiamo aggiungere i nostri Ribbon personalizzati ad uno specifico tab ed uno specifico gruppo. che se volete un template di progetto già fatto per la scrittura di Ribbon. <?xml version="1.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="Ribbon.HelloWorld" RegistrationId="101" RegistrationType="List" Location="CommandUI.Ribbon" Title="Hello world ribbon"> <CommandUIExtension> <CommandUIDefinitions> <CommandUIDefinition Location="Ribbon.Documents.Manage.Controls._children"> <Button Id="Ribbon.HelloWorld.Button" LabelText="Hello world" TemplateAlias="o1" Sequence="1" Command="HelloWorld" /> </CommandUIDefinition> </CommandUIDefinitions> <CommandUIHandlers> <CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert('Hello world from Ribbon !');" /> </CommandUIHandlers> </CommandUIExtension> </CustomAction>

</Elements> Così, scegliendo di valorizzare tale attributo con il valore 1 (o comunque un numero minore di 10), abbiamo deciso che il nostro bottone custom deve essere renderizzato come primo all'interno del gruppo "Manage" del tab "Documents".

Specificando invece il valore 11 (quindi maggiore di 10 e minore di 20), il nostro Ribbon custom verrà posizionato tra il controllo di visualizzazione delle proprietà e quello di modifica.

Questo perchè ogni Ribbon già presente nella barra, ha un valore dell'attributo "Sequence" che parte da 10 (per il primo controllo da sinistra) e va avanti di 10 in 10 per ogni controllo successivo. Nel nostro esempio, i controlli presenti all'interno del gruppo "Manage" del tab "Documents" hanno i seguenti valori per il campo "Sequence":
 

View properties - 10 Edit properties - 20

Per visualizzare i corretti valori di ognuno dei controlli presenti all'interno della barra dei Ribbon e del gruppo specifico che abbiamo scelto per la visualizzazione della nostra personalizzazione all'interfaccia di SharePoint

2010, possiamo spulciare il file di definizione "CMDUI.XML" presente all'interno del percorso: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL\XML Ecco infatti, come sono definiti i due controlli in questione: <Button Id="Ribbon.Documents.Manage.ViewProperties" Sequence="10" ... TemplateAlias="o1" /> <Button Id="Ribbon.Documents.Manage.EditProperties" Sequence="20" ... TemplateAlias="o1" /> Se avete famigliarità con le custom action introdotte in WSS 3.0/MOSS 2007, vi sarete sicuramente accorti che il concetto di sequenza della visualizzazione delle azioni è esattamente il medesimo, con l'unica differenza che in questo specifico caso viene applicato alla barra dei Ribbon e non ai vari menu contestuali presenti all'interno dell'interfaccia di SharePoint. Nel prossimo post vedremo invece quali sono i template che abbiamo a disposizione per il rendering di un controllo posto all'interno di un gruppo già presente nella barra dei Ribbon di SharePoint 2010. Template di un controllo Ribbon posto all'interno di un gruppo preesistente Durante la customizzazione della barra dei ribbon, oltre a dover specificare il tab e il gruppo in cui i controlli relativi al nostro Ribbon personalizzato dovranno essere visualizzati (come abbiamo visto nel primo post di questa serie dedicata ai Ribbon), dobbiamo specificare anche il modo in cui questi controlli dovranno essere renderizzati. Per farlo, ogni controllo che possiamo inserire all'interno dell'estensione all'interfaccia di SharePoint che stiamo sviluppando, espone l'attributo TemplateAlias. Questo attributo serve a specificare l'identificativo del template che deve essere utilizzato per dare una larghezza ed una grandezza al controllo in questione, quando un particolare template è stato applicato al gruppo in cui abbiamo deciso di inserire il nostro Ribbon

abbiamo applicato al bottone il template con alias "o1".Documents.Button" LabelText="Hello world" TemplateAlias="o1" Image32by32="/_layouts/images/PeppeDotNet/HelloWorld32by32.personalizzato.0" encoding="utf-8"?> <Elements xmlns="http://schemas.Manage.HelloWorld" RegistrationId="101" RegistrationType="List" Location="CommandUI. Inoltre. Nel primo esempio.com/sharepoint/"> <CustomAction Id="Ribbon._children"> <Button Id="Ribbon.microsoft.Controls. <?xml version="1.HelloWorld. applica al bottone stesso l'immagine il cui URL è definito all'interno dell'attributo "Image32by32". Questo alias permette al sistema di rendering della barra dei Ribbon di SharePoint 2010 di dare larghezza e altezza massime al bottone.png" Sequence="31" Command="HelloWorld" /> </CommandUIDefinition> </CommandUIDefinitions> <CommandUIHandlers> .Ribbon" Title="Hello world ribbon"> <CommandUIExtension> <CommandUIDefinitions> <CommandUIDefinition Location="Ribbon.

che specifica la dimensione massima del testo.<CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert('Hello world from BIG Ribbon !').HelloWorld" RegistrationId="101" RegistrationType="List" Location="CommandUI. la posizione e l'utilizzo dell'immagine il cui URL è definito all'interno dell'attributo "Image16by16". dobbiamo specificare un nuovo valore per l'attributo TemplateAlias. Questo è il valore "o2".Ribbon" Title="Hello world ribbon"> . Ma se volessimo invece visualizzare il nostro Ribbon personalizzato nel formato un pò più piccolo. <?xml version="1." /> </CommandUIHandlers> </CommandUIExtension> </CustomAction> </Elements> Il risultato di un bottone con l'attributo TemplateAlias valorizzato a "o1" lo conosciamo già.com/sharepoint/"> <CustomAction Id="Ribbon.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.

possiamo giocare con i valori dell'attributo "Sequence" (come spiegato in questo post). Volendo poi spostarlo prima.HelloWorld. ._children"> <Button Id="Ribbon." /> </CommandUIHandlers> </CommandUIExtension> </CustomAction> </Elements> Una volta fatto deploy. cioè assieme a tutti quei controlli con altezza minima.Manage.<CommandUIExtension> <CommandUIDefinitions> <CommandUIDefinition Location="Ribbon. in mezzo o dopo gli altri controlli già presenti.Button" LabelText="Hello world" TemplateAlias="o2" Image16by16="/_layouts/images/PeppeDotNet/HelloWorld16by16. vedremo il nostro bottone personalizzato apparire nel secondo gruppo di controlli (sempre all'inteno del gruppo "Manage" proprio del tab "Documents").png" Sequence="31" Command="HelloWorld" /> </CommandUIDefinition> </CommandUIDefinitions> <CommandUIHandlers> <CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert('Hello world from LITTLE Ribbon !').Controls.Documents.

Le icone di un controllo personalizzato all'interno della barra dei Ribbon Nel precedente post abbiamo visto com'è possibile personalizzare la grandezza di un controllo Ribbon all'interno di un tab e un gruppo già presenti alla barra dei Ribbon. Abbiamo identificato due template principali. rispettivamente definiti dagli alias "o1" e "o2". possiamo allora definire i nostri template personalizzati per la visualizzazione dei controlli. Se decidiamo invece di creare dei tab e dei gruppi personalizzati. certi tipi di controlli possono essere rappresentati da due differenti immagini. ovviamente di diverse dimensioni:   Immagine 32 x 32: il cui URL va definito all'interno dell’attributo "Image32by32" Immagine 16 x 16: il cui URL va definito all'interno dell’attributo "Image16by16" I controlli che offrono la possibilità della visualizzazioni di questi due differenti formati di immagine sono i seguenti:     Button SplitButton ToggleButton FlyoutAnchor . Nel dettaglio. vengono visualizzate differenti immagini a rappresentare il nostro controllo. e abbiamo visto che in base alla scelta di un template al posto dell'altro.Gli alias di template visti fin'ora ("o1" e "o2") sono validi fin quando vogliamo inserire un controllo all'interno di uno dei gruppi già esistenti nella barra dei Ribbon di SharePoint 2010.

microsoft. Se volete maggiori informazioni riguardo lo schema di tutti i controlli che potete inserire all'interno della barra dei Ribbon.com/en-us/library/ff458369. abbiamo anche la possibilità di decidere quando tale Ribbon dovrà o meno essere abilitato. possiamo poi definire una serie ulteriore di attributi che ne modificano la visualizzazione. Eccoli nel dettaglio:    Image32by32Class / Image16by16Class: il nome della classe CSS che verrà applicata all'immagine. Ad effettuare il controllo vero e proprio invece. questa funzione dovrà essere inserita allÂ’interno dellÂ’attributo "EnableScript" proprio dell'elemento "CommandUIHandler" e dovrà ritornare un valore booleano. Nello specifico. quello che verrà abilitato (o disabilitato) sarà il comando che l'utente finale può eseguire facendo click sul Ribbon. potete consultare la documentazione on-line a questo indirizzo: http://msdn. Altri controlli che possono essere configurati in modo da visualizzare un'immagine all'interno della barra dei ribbon sono il controllo GalleryButton (tramite il suo attributo "Image") e il controllo Label (che contiene solamente l'attributo Image16by16). in modo che lÂ’interfaccia di SharePoint 2010 riesca a capire quando abilitare il controllo e quando invece .aspx Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente Se decidiamo di personalizzare la barra dei Ribbon. Image32by32Left / Image16by16Left: un valore negativo che rappresenta l'offset dal margine sinistro con cui deve essere renderizzata l'immagine. l'interfaccia di SharePoint 2010 si preoccuperà anche di renderizzare il Ribbon in maniera da far capire a colpo d'occhio che non è possibile eseguire operazioni sul contentuo della pagina a partire da quello specifico controllo. sarà una funzione Javascript che dovrà essere inserita all'interno della definizione del relativo comando del Ribbon. Image32by32Top / Image16by16Top: un valore negativo che rappresenta l'offset dal margine alto con cui deve essere renderizzata l'immagine.Su qualsiasi di queste due immagini. inserendo alcuni controlli custom in qualche particolare tab e gruppo. poi. Gli ultimi due attributi vengono utilizzati da SharePoint stesso per renderizzare parti di immagini contenenti più icone utili a differenti controlli. Chiaramente.

disabilitarlo. Per fare in modo di abilitare o disabilitare il controllo del nostro Ribbon in base alla selezione da parte dell'utente sugli elementi di una lista._children"> <Button Id="Ribbon.com/sharepoint/"> <CustomAction Id="Ribbon.Documents. Vediamo come: <?xml version="1.Manage.HelloWorld. dobbiamo utilizzare il Client Object Model per ECMAScript offerto da SharePoint 2010 e le sue classi per la selezione.HelloWorld" RegistrationId="101" RegistrationType="List" Location="CommandUI.0" encoding="utf-8"?> <Elements xmlns="http://schemas.Ribbon" Title="Hello world ribbon"> <CommandUIExtension> <CommandUIDefinitions> <CommandUIDefinition Location="Ribbon.microsoft.png" Sequence="31" Command="HelloWorld" /> </CommandUIDefinition> </CommandUIDefinitions> <CommandUIHandlers> .Button" LabelText="Hello world" TemplateAlias="o1" Image32by32="/_layouts/images/PeppeDotNet/HelloWorld32by32.Controls.

. disponibile attraverso l'uso della funzione CountDictionary().<CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert('Action for only one item !'). Nel blog del team di SharePoint trovate un'altra implementazione di questo comportamento.length == 1. Nel caso in cui lÂ’utente scelga di selezionare più elementi o nel caso in cui non ne abbia scelto ancora nessuno.getSelected Items(). abbiamo deciso che il nostro Ribbon di prova dovrà essere abilitato solamente quando l'utente ha selezionato un singolo elemento. il pulsante risulterà qunidi disabilitato.ListOperation."/> </CommandUIHandlers> </CommandUIExtension> </CustomAction> </Elements> Nell'esempio." EnabledScript="javascript:SP.Selection.

" . se volessimo invece effettuare operazioni su più di un elemento selezionato da una lista.Questo ci permette di effettuare operazioni su singoli elementi di una lista SharePoint. Allo stesso modo. dovremmo scrivere il codice che controlli che la selezione dell'utente contenga più di un singolo elemento (l'esatto contrario di quanto scritto prima). <CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert(Action for multiple items !').

ritornerà una collezione di elementi contenente tutti gli oggetti che sono stati selezionati dallÂ’utente. .Selection."/> Questo ci permettere di effettuare la medesima operazione su più documenti (o elementi) scelti dall'utente.Selection. propria del modello ad oggetti client-side per ECMAScript (di cui sicuramente vedremo un'introduzione).ListOperation. quella funzione ritornerà una collezione contenente un solo elemento. Nel caso di una selezione singola. utili ad effettuare poi le nostre operazioni personalizzate su di essi.EnabledScript="javascript:SP.getSelected Items(). Infatti.getSelectedItems().length > 1. compresi di identificativi. la funzione SP.ListOperation.

TAGS: [SharePoint] [SharePoint 2010] [Ribbon] [Client Object Model] Commenti(5) . <CommandUIHandler Command="HelloWorld" CommandAction="javascript:alert('Action only for work-hours !').= 18).&amp. tutto il codice Javascript utilizzato sia per l'abilitazione o la disabilitazione del controllo.getHours(). Volendo. e ricordandoci sempre che la funzione principale deve ritornare un valore booleano. abbiamo la possibilità di fare qualsiasi altro tipo di calcolo all'interno del nostro script.Posted @ 11/8/2010 9:25:37 AM . ora &lt."/> Nel prossimo post vedremo come spostare all'esterno del file XML di definizione del Ribbon personalizzato (quindi all'interno di un file .= 9 &amp. function ritornaOraCorrente() { var d = new Date(). } abilitaRibbon(). abbiamo utilizzato le classi esposte dal modello ad oggetti client-side per ECMAScript per abilitare o disabilitare il nostro controllo Ribbon. return (ora &gt. utilizzando una o più funzioni.In questi esempi. }.Categoria: Sharepoint . sia per l'azione vera e propria da compiare dopo un click da parte dellÂ’utente sul controllo stesso." EnabledScript="javascript:function abilitaRibbon() { var ora = ritornaOraCorrente(). return d.js specifico).

Volevo solo chiederti una cosa.scritto il 7/25/2011 11:20:59 AM ciao beppe. complimenti..bell'articolo.Share on twitter | facebook COMMENTI Autore: Gabriele Del Giovine . devi "giocare" con le list definition o con i content type. Integrazione con Visual Studio 2010 Errore: "Error occurred in deployment step 'Recycle IIS Application Pool'" Iniziando a sviluppare per SharePoint 2010 attraverso gli strumenti di sviluppo offerti da Visual Studio 2010..Permalink .scritto il 11/8/2010 2:27:07 PM Grazie gab ! .) Autore: Maurizio .molto utile. Così da associare il tuo ribbon custom solo a particolari liste che utilizzano le tue strutture (content type o list definition).scritto il 11/8/2010 9:54:17 AM Bell'articolo.scritto il 7/25/2011 3:29:45 PM ho risolto con qualche riga di javascript nell'EnabledScript. A presto Peppe 5..scritto il 7/25/2011 11:50:10 PM Ciao Maurizio e grazie . Avendo diverse librerie nel mio sito come posso fare per abilitare un gruppo di Ribbon solo in alcune di queste e non nelle altre? Grazie Ciao Maurizio Autore: Maurizio . vi troverete sicuramente di fronte al . Autore: Peppe ..) Per fare quello che ti serve.. ciao Autore: Peppe .

dobbiamo selezionare il progetto dalla toolbox "Solution Explorer" e successivamente aprire la toolbox delle proprietà. Spostando un progetto da un'ambiente di sviluppo ad un altro e provando a ricompilare. Spostando la soluzione e i vari file di progetto è necessario aggiornare a mano tale indirizzo. State attenti ad aprire la toolbox delle proprietà (visibile in figura) e NON le proprietà del progetto tramite l'utilizzo del tasto destro del mouse. Questo perchè. alla creazione di un nuovo progetto SharePoint. Fatto questo. che dovrà essere cambiata con il nuovo indirizzo della vostra site collection SharePoint 2010. Visual Studio chiede quale dev'essere l'indirizzo della site collection in cui effettuare il deploy e se lo salva all'interno delle proprietà del progetto. Make sure that this is a valid URL and the SharePoint site is running on the local computer. update the Site URL property of the project. Li troverete la proprietà "Site URL". L'errore generato sarà di questo tipo: Error occurred in deployment step 'Recycle IIS Application Pool': Cannot connect to the SharePoint site: http://YOUR_SITE_NAME/. ma andrà in errore durante la fase di deploy della vostra personalizzazione su SharePoint. basta provare a ricompilare e rieffettuare il deploy della soluzione.seguente problema. . If you moved this project to a new computer or if the URL of the SharePoint site has changed since you created the project. l'IDE di sviluppo completerà correttamente la fase di compilazione e creazione del package. Per farlo.

ma sono necessari dei passi aggiuntivi. Questo e tanto altro ancora.Come installare il VSeWSS upgrade tool per Visual Studio 2010 Microsoft ha rilasciato già da un pò.Eseguire il comando "devneve /installvstemplates" 8.Scaricare il tool a questo indirizzo: VSeWSS_Upgrade_Sample_Beta_20100108. che installa effettivamente il template all'interno di Visual Studio 6.msi 2. in versione beta.Avviare l'installer 4.msi". 1.Assicurarsi di aver chiuso tutte le istanze di Visual Studio 2010 3. Il tool è davvero ben fatto e facilita notevolmente l'upgrade delle personalizzazioni dalla vecchia versione di SharePoint alla nuova. Come disattivare l'attivazione di feature in fase di deploy in Visual Studio 2010 Quando sviluppiamo le nostre personalizzazioni su SharePoint 2010 utilizzando gli strumenti messi a disposizione da Visual Studio 2010.Andare alla cartella "C:\Program Files (x86)\Microsoft\VSeWSS Upgrade" 5. senza la necessità di fare troppe operazioni manuali. Per installarlo però. sarete in grado di utilizzare il tool di upgrade delle soluzioni VSeWSS a Visual Studio 2010.. non basta solamente scaricare l'eseguibile e lanciarlo. un tool per la migrazione dei progetti MOSS 2007 sviluppati tramite i VSeWSS a progetti Visual Studio 2010. . ci accorgiamo che tutte le nostre feature vengono attivate in automatico ogni volta che viene lanciata l'operazione di deploy della soluzione sul sito SharePoint scelto in fase di creazione del progetto.Aprire il command prompt dei tool di Visual Studio 7. riguardo l'aggiornamento di soluzioni MOSS 2007 a SharePoint 2010. nella mia sessione alla SharePoint Conference.Eseguire il file "VSeWSSUpgrade_Beta2_20091203. eccoli nel dettaglio.Aprire Visual Studio 2010 Una volta eseguite queste operazioni.

è possibile modificare tale configurazione e scegliere di non attivare la feature in automatico. Proprio per ovviare a questo problema.Questa è la configurazione di default che abbiamo all'interno dei tool di sviluppo per SharePoint 2010. in quanto Visual Studio 2010 non permette di effettuare l'operazione di deployment e quella di debug contemporaneamente. Molte volte però. Per farlo basta entrare nelle proprietà del progetto dalla toolbox "Solution Explorer". . scegliere il tab "SharePoint" e selezionare la configurazione "No Activation". Pensiamo solo allo sviluppo di un event receiver che gestisce gli eventi di attivazione o di disattivazione della feature. In questo caso specifico ad esempio. non siamo in grado di fare debug del nostro codice. questa configurazione può impedire le nostre azioni di debug del codice o delle funzionalità implementate.

abbiamo anche la possibilità di creare configurazioni personalizzate in cui inserire operazioni di deploy e retract della soluzione. tramite PowerShell) per poi metterci in debug del nostro codice. Così come abbiamo potuto disabilitare l'attivazione in automatico della feature all'interno del sito SharePoint scelto in fase di creazione del progetto. reciclo degli . ancora. ma potremmo farlo noi da interfaccia web (o tramite l'utility STSADM o. ad ogni successivo deployment non verranno attivate le feature della nostra soluzione in automatico.Così facendo.

In altri casi. vi accorgerete che tale libreria non può essere utilizzata con altre versioni del Framework se non con la versione 3.NET Framework 3. troverete questo errore: System.1 of the Microsoft . Le librerie di SharePoint 2010 possono essere usate solo su applicazioni compilate con il .5 ! Infatti.30319.dll tra le referenze del vostro progetto.PlatformNotSupportedException Microsoft SharePoint is not supported with version 4.SharePoint.0.application pool. usando una delle classi del modello ad oggetti lato server di SharePoint 2010.NET Framework come Target Platform e inserite la libreria Microsoft.5 Se provate a creare un nuovo progetto con la versione 4 del .Net Runtime. vi può succedere che subito dopo aver inserito la referenza alla dll di SharePoint tutto funzioni correttamente. attivazione di feature e esecuzione di comandi pre/post deployment. . intellisense e tutto il resto.

D'altronde è anche il motivo per cui adesso ci sono due GAC: http://msdn. Installazione SharePoint 2010 non supporta più l'installazione standalone su un domain controller Dalle prime installazioni della RTM di SharePoint 2010 arrivano le prime notizie. Non supportato.scritto il 10/6/2010 3:29:45 PM che sgarolata! Autore: Luigi Panariello . Microsoft ha deciso di nascondere dall'interfaccia grafica dell'utility di installazione del prodotto.Permalink .0 dobbiamo usare i webservices esposti.Posted @ 10/6/2010 2:31:59 PM .Categoria: Sharepoint .com/en-us/magazine/dd727509.Share on twitter | facebook COMMENTI Autore: john .microsoft. troverete tra le eccezioni scatenate la seguente: The type or namespace name 'SharePoint' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) Questo purtroppo è così e basta ! Microsoft direbbe "è così by desgin".aspx 6.Ma. alla prima compilazione. ovviamente.. questo perchè SQL Server Express 2008 non è supportato in un Domain Controller.scritto il 10/6/2010 4:32:14 PM Credo sia dovuto alle differenze tra i due CLR. infatti. non significa non funzionante :) Lanciando il setup da riga di comando. l'opzione di configurare SharePoint in modalità standalone da quelle macchine dove è già installato un Domain Controller. Se vogliamo leggere o modificare dati presenti in SharePoint da un'applicazione scritta utilizzando il . Quindi non possiamo farci niente. TAGS: [SharePoint] [SharePoint 2010] [Object Model] Commenti(2) . è possibile installare .NET Framework 4.

exe /? Come installare una farm SharePoint 2010 utilizzando un account locale Di tanto in tanto. L'errore in questione è il seguente: The specified user [USER NAME] is a local account.comunque la versione standalone di SharePoint 2010 su un Domain Controller (ovviamente fatelo SOLO su macchine di sviluppo o utilizzate per delle demo). Local accounts should only be used in stand alone mode . l'utility "SharePoint Products Configuration Wizard" ci ferma immediatamente dicendo che l'utenza con cui abbiamo deciso di far girare tutti i servizi di SharePoint e che si occuperà di accedere ai vari database è un account locale e che non è possibile creare una nuova farm utilizzando un account NON di dominio. Provando quindi ad installare SharePoint in modalità avanzata e iniziando la configurazione di una nuova farm. è il caso in cui un'installazione di tipo standalone ci sta stretta.exe /config FILES\SETUP\config. Questo.xml Ricordo che è possibile visualizzare la lista di tutti i parametri dell'utility di installazione eseguendo il comando: setup. Ecco i parametri per completare l'installazione standalone: setup. perchè si basa sulla versione Express di SQL. può capitare di dover installare SharePoint 2010 in una macchina fuori dominio e di aver bisogno di gestirne i database attraverso un'installazione di SQL Server Standard o Enterprise.

abbiamo la possibilità di creare comunque la nostra farm.. Se. il nome del database server e l'utenza con cui accedere a . ed ovviamente. SharePoint ha pienamente ragione. perchè una configurazione avanzata permette la creazione di una farm alla quale possiamo poi collegare altri server. però.Se ci pensiamo bene. siamo sicuri che la nostra macchina sarà l'unica facente parte della farm SharePoint. l'invio delle mail o altro. che chiederà come parametri di creazione il nome del database di configurazione. Il comando da lanciare è il comando "New-SPConfigurationDatabase". utilizzando Powershell. un account locale alla macchina in cui stiamo installando il prodotto non è in grado di "passare" tra una macchina e l'altra data la sua natura "local" (non è appartenente a nessun dominio). magari per l'indicizzazione.

La scelta dell'utente verrà fatta tramite la finestra di login di windows. verrà creato un nuovo database di configurazione di .questo database. Così facendo.

avviando nuovamente l'utility "SharePoint Products Configuration Wizard". Infatti. . quest'ultima si accorgerà della presenza di una farm SharePoint e ci permetterà così di procedere con l'installazione del prodotto.SharePoint all'interno di SQL Server che sarà la base della nostra nuova farm.

abbiamo la nostra installazione di SharePoint 2010 in modalità avanzata. in una macchina a sé stante. Come recuperare le Missing Web Part indicate nel report di upgrade a SharePoint 2010 Quando ci si prepara per un upgrade a SharePoint 2010 utilizzando la tecnica dell'attach del database di contentuo. Tra i vari messaggi. così che possiamo cercare il modo migliore di correggerli. Il problema è che quel report non ci indica ne l'assembly ne il nome del tipo della nostra . è buona regola lanciare il comando *Test-SPContentDatabase* tramite PowerShell.Fatto questo. ci sono anche tutti quelli riguardanti le web part mancanti sulla farm SharePoint 2010 e che invece sono presenti all'interno del database che abbiamo intenzione di migrare. Questo comando controlla il database di contenuto che abbiamo intenzione di migrare e produce un report contenente tutti gli warning relativi al processo di migrazione.

GetBytes(data). PublicKeyToken=71e9bce111e9429c" + "|" + "Microsoft.Office. Culture=neutral.Server.Office. di un pipe e del nome del tipo relativi alla web part.0. string WebPartID = hashGuid.web part mancanta.Search.ToString(). MD5 hashAlgo = new MD5CryptoServiceProvider().0.Unicode. Questo algorimo utilizzo un hashing MD5 per computare la stringa formata dalla concatenazione del nome dell'assembly. byte[] hash = hashAlgo. byte[] dataBytes = Encoding. qual'è l'assembly e quale la web part mancante.Server. Potete scaricare il tool da codeplex seguendo questo indirizzo: http://easywebparttypeidgen.aspx) genera l'identificativo della web part così come lo troviamo nel report di pre-migrazione.codeplex. il che rende impossibile capire di quale web part si sta parlando. Per questo ho creato un piccolo progetto su codeplex che dato l'assembly e il tipo di una web part (che possiamo tranquillamente recupare dalla pagina http://SERVERSHAREPOINT/_layouts/newdwp.com/ . La generazione di questo identificativo è fatta utilizzando lo stesso algoritmo che utilizza SharePoint per generare il GUID relativo alla web part e salvarlo nel database.ComputeHash(dataBytes). Guid hashGuid = new Guid(hash).WebControls. Esiste però il modo per recuperare a partire da quell'identificativo. string data = "Microsoft.AdvancedSearchBox". Version=12. ma ci presenta un GUID.Search.0.

per la creazione di un'azione personalizzata dovevamo creare una feature apposita e specificare lo scope per la nostra azione. possiamo legare azioni custom su singole liste già create all'interno dei nostri siti SharePoint. se applicabile a tutte le liste. Nella versione 2007 di SharePoint. Personalization Screencast: list item custom action con SharePoint Designer 2010 Una delle nuove funzionalità di SharePoint Designer 2010 è quella di permettere la creazione di custom action (o ribbon) direttamente su un'istanza di lista ed associare a tale azione un indirizzo personalizzato. se a singole tipologie (tramite l'identificativo di una list definition) o se a singoli content type. Per spiegare velocemente questa nuova funzionalità. senza dover passare per la creazione della relativa feature. ho registrato uno screencast che potete trovare all'interno della sezione "Media" di questo sito.7. Come scrivere un event handler che effettua un redirect in SharePoint 2010 . In SharePoint 2010 invece.

quindi senza eseguire alcuna operazione sull'interfaccia grafica. è stato aggiunto quello di poter decidere di stoppare l'evento e redirezionare l'utente su una particolare pagina (diversa quindi dalla solita pagina "errors. Tale classe definisce lo stato di un event handler e permette di scegliere se la sua computazione deve continuare.Il modello ad oggetti di SharePoint 2010 vede una novità per quanto riguarda la classe SPEventReceiverStatus. se deve stopparsi lasciando all'utente un errore o se deve stopparsi "in silenzio" diciamo. che sono gli unici la cui computazione può essere stoppata. Questo comportamento è definito dal valore CancelWithRedirectUrl e.RedirectEventReceiver { public class RedirectReceiver : SPItemEventReceiver { . possiamo scegliere di stoppare la cancellazione dell'elemento (proprio come abbiamo sempre fatto in MOSS 2007) e redirezionare l'utente su una pagina d'errore personalizzata. che all'interno di un gestore d'evento di tipo ItemDeleting. Oltre a questi comportamenti. dobbiamo settare le proprietà Status e RedirectUrl della classe SPItemEventReceiver: namespace PeppeDotNet. per intenderci). Vediamo quindi. così da offrire una grafica personalizzata per il messaggio d'errore o per qualsiasi altro tipo di personalizzazione. può essere utilizzato solamente all'interno di eventi di tipo sincroni (quindi tutti quelli che finiscono con "ing". Per farlo.SP2010.aspx"). nella nuova versione del prodotto di collaborazione Microsoft. come per gli altri.

con due righe di codice è stato possibile effettuare un redirect su una application page custom. properties.Status = SPEventReceiverStatus. } } }In questo esempio.CancelWithRedirectUrl. posta sotto la directory "LAYOUTS". Su questa pagina è stato inserito il testo d'errore personalizzato e un pulsante per ritornare alla pagina chiamante (che utilizza il valore preso dalla querystring "Source".RedirectUrl = "/_layouts/PeppeDotNet. valore inserito in automatico dall'handler una volta che effettua il redirect).public override void ItemDeleting(SPItemEventProperties properties) { base.aspx".ItemDeleting(properties).SP2010/DeleteMessage. Ed ecco il risultato: . properties.

Così facendo. possiamo effettuare delle azioni custom a fronte di una delle .

Forte no ? :) Come abilitare le informazioni per il debug di un'eccezione in SharePoint 2010 SharePoint ha sempre nascosto i messaggi di errore veri e propri e tutte le informazioni relative al debug dell'errore stesso. L'attributo "Mode" dell'elemento "CustomErrors" va portato a "Off" Così facendo. la schermata di errore classico passerà da. L'attributo "CallStack" dell'elemento "SafeMode" va portato a "true" 3. In SharePoint 2010 invece. è necessario modificare due differenti web.operazioni che l'utente finale può fare sugli elementi di una lista SharePoint 2010 ed effettuare un redirect su un secondo contesto personalizzato. Sappiamo già com'è possibile visualizzare per esteso le informazioni degli errori in WSS 3. Quello presente nella directory legata alla vostra web application SharePoint (se non cambiate il percorso di default.. ma così come l'han fatto è decisamente molto ma molto più pulito. modificando il file web. Quello presente all'interno della directory "LAYOUTS" posta sotto la SharePoint root (cioè il file presente al percorso: "[drive]:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS") Quello che rimane invariato rispetto alla versione precedente di SharePoint.config da modificare al percorso: "[drive]:\inetpub\wwwroot\wss\virtualdirectories\[port]") 2.config: 1. troverete il web. sono gli attributi da modificare all'interno del file web.0/MOSS 2007. effettuare un redirect all'interno di un event handler.config proprio della web application su cui stiamo facendo operazione di debug. In MOSS 2007 era possibile. per mantenere un buon rapporto con l'utente finale che il più delle volte si spaventa alla vista di tutte quelle scritte preferendo la solita frase "an error has occourred". con qualche trucco. .config: 1. L'attributo "Debug" dell’elemento "Compilation" va portato a "true" 2.

Se volete informazioni a riguardo.aspx 8. Se volete invece maggiori informazioni sull'esecuzione della pagina.microsoft. ne potete trovera all'interno della documentazione: http://msdn.. Client-Site API 9.a. Introduzione alle Client-Side API di SharePoint 2010 .com/enus/library/ff512745. potete abilitare la developer dashboard (una delle novità si SharePoint 2010 per sviluppatori).

10. ho apprezzato di più all'interno di SharePoint 2010. il tutto mantenedo il paradigma della programmazione ad oggetti. Il che è fantastico ! No ? :) 11. ecco il mio secondo articolo sul tema pubblicato su SharePoint . Non si parla più di web services. di dover formattare e parsare tutto quell'xml per interrogare SharePoint dall'esterno e leggere i risultati delle nostre interrogazioni. proprio come siamo sempre stati abituati utilizzando il modello ad oggetti lato server. Dopo l'articolo di introduzione sulle API per la programmazione client-side di SharePoint 2010. per lo sviluppo di applicazioni client-side che girano su Windows o all'interno del browser (Silverlight o personalizzazioni Javascript). E' una breve introduzione sulle API esposte dalla nuova versione di SharePoint.it/articles/Lists/Articles/Di spForm.sharepointcommunity. Operazioni CRUD con il Client Object Model di SharePoint 2010 12. personalmente.aspx?ID=11 L'introduzione delle API per la programmazione client-side sono sicuramente la novità che. dove sarà possibile vedere il codice per effettuare le normali operazioni di tipo CRUD su liste SharePoint utilizzando uno dei tre modelli ad oggetti per lo sviluppo lato client (per esser precisi quello per lo sviluppo di applicazioni Windows). Qua il link all'articolo: http://www. Seguirà un secondo articolo. E' appena stato pubblicato un mio nuovo articolo su SharePoint 2010 all'interno di SharePoint Community.

. è incentrato sulle operazioni di base che si possono fare su liste SharePoint utilizzando il Client Object Model e una banalissima applicazione Windows.Net. ClientContext context = new ClientContext("http://sharepoint2010").<>c__DisplayClass2.SecurityException ---> System. potete farlo direttamente da qua (sono gli stessi esempi visti all'interno della mia sessione per l'evento GroundZero di DotNetLombardia): http://www. Ho scelto di scriverci un articolo proprio perchè le operazioni CRUD (Create..BrowserHttpWebRequest.End of inner exception stack trace --- ...Security.).Net.Security.it/zip/Dev4Side.ExecuteQueryAsync(.aspx?ID=12 Se volete scaricare i sorgenti invece.. Ci si risente tra un pò .GroundZero. Delete) su liste. //… context. verso mare stupendo spero.b__0(Object sendState) --.peppedotnet.SecurityException: Security error.Net. Read. sto per andare in vacanza anche io.InternalEndGetResponse(IAsyncResult asyncResult) at System.<>c__DisplayClass5.Community.zip Finalmente.sharepointcommunity.b__4(Object sendState) at System. sono veramente le azioni che si fanno più spesso quando si sviluppano applicazioni che hanno a che fare con SharePoint e penso che sicuramente sarà utile a molti.AsyncHelper.) Errore "Security error" utilizzando il Client Object Model di SharePoint 2010 per Silverlight Se iniziate ad utilizzare il modello ad oggetti client-side di SharePoint 2010 per applicazioni Silverlight e provate ad istanziare un nuovo oggetto di tipo "ClientContext" passando come parametro al costruttore principale l'indirizzo di un sito SharePoint remoto (senza far girare l'applicazione Silverlight all'interno del contesto di SharePoint) . at System. Qui il link per l'articolo: http://www. //errore vi troverete a fare i conti con questo errore: {System. Questa volta però.it/articles/Lists/Articles/Di spForm.BrowserHttpWebRequest. Update.

Questo un'esempio classico: <?xml version="1.Net.at System.GetWebResponse(WebRequest request. Siccome il modello ad oggetti client-side ha.BrowserHttpWebRequest. in quanto pur scrivendo codice che mantiene il paradigma ad oggetti.OpenReadAsyncCallback(IAsyncResult result)} L'errore viene scatenato alla chiamata del metodo ExecuteQueryAsync per l'esecuzione della query dall'applicazione client a SharePoint 2010. trovate un articolo su SharePoint Community. è necessario che il web server che lo ospita abbia un file di policy che regolamenta la possibilità di utilizzo o meno del web service stesso da applicazioni remote.xml". una classe proxy che si occupa di chiamare il servizio "Client. per consumare un web services (che sia o meno esposto da SharePoint) all'interno di un'applicazione Silverlight. Per un introduzione sull'architettura del modello ad oggetti client-side di SharePoint 2010. Quindi. alla fine vengono comunque fatte delle chiamate ad servizio web (in questo caso un servizio WCF). Come è possibile leggere dal punto 2.AsyncHelper.Net. Ecco.Net.Net. IAsyncResult result) at System. che e va creato all'interno della root della nostra applicazione web. è bene sapere che questo errore può accadere per due principali motivi: 1. non funziona o non è raggiungibile tramite browser.Non avete inserito alcun file di policy ("ClientAccessPolicy.L'indirizzo che avete inserito come parametro del costruttore principale della classe ClientContext non esiste. Questo file è il file "ClientAccessPolicy.xml" all'interno della root della vostra web application SharePoint.xml") per regolamentare le connessioni ai web services di SharePoint dall'esterno.BeginOnUI(SendOrPostCallback beginMethod. in ambiente di sviluppo.svc" esposto da SharePoint 2010 e leggerne le risposte. potete mettere un file nominato "ClientAccessPolicy. Object state) at System. al suo interno.0" encoding="utf-8" ?> <access-policy> <cross-domain-access> <policy> .EndGetResponse(IAsyncResult asyncResult) at System.WebClient. 2. nella directory della vostra web application. anche tutte le applicazioni che ne utilizzano i vari membri dovranno fare i conti con il medesimo modello di policy.WebClient.

com/en-us/library/cc645032(VS.xml". Trovate invece più informazioni riguardo il modello di sicurezza per l'accesso a risorse esterne tramite applicazioni Silverlight qua: http://msdn. provate a raggiungere tale file tramite il browser in modo tale da essere sicuri che possa essere letto da tutti.<allow-from http-request-headers="*"> <domain uri="*" /> </allow-from> <grant-to> <resource path="/" include-subpaths="true" /> </grant-to> </policy> </cross-domain-access> </access-policy> Prima di procedere.microsoft. Se siete in produzione invece.95). utilizzando questo indirizzo: http://[servername]/ClientAccessPolicy. è meglio seguire le linee guida date da Microsoft per il posizionamento e la stesura del contenuto del file "ClientAccessPolicy.aspx Gestione di liste con il Client Object Model di SharePoint 2010 .xml E poi fate un bel IISRESET.

Workflow Bug nell'utilizzo di una Delay activity in un workflow di SharePoint 2010 Dal forum italiano di sviluppo su SharePoint è venuta fuori un'interessante discussione sul mancato funzionamento di una Delay activity all'interno di un workflow sequenziale creato per essere eseguito all'interno di SharePoint 2010.zip E se avete domande.Continua la serie di articoli legati al Client Object Model di SharePoint 2010 pubblicati su SharePointCommunity.sharepointcommunity. a fronte di un'installazione standard di SharePoint. questa è la volta delle classi e dei metodi per la gestione di liste presenti all'interno di siti SharePoint. non dobbiamo più utilizzare il web service "Lists" (come facevamo su MOSS 2007) e possiamo mantenere il paradigma ad oggetti durante lo sviluppo della nostra applicazione.it/articles/Lists/Articles/DispFor m. Andando nei dettagli.SP2010. alla modifica (nel caso specifico l'inserimento di un campo) e cancellazione. se si prova a sviluppare un workflow che utilizza una Listen activity con . Dopo un articolo introduttivo e uno legato alle operazioni che possiamo fare su elementi di liste. Con il Client Object Model offerto da SharePoint 2010.aspx?ID=15 Se volete invece scaricare la soluzione Visual Studio 2010 che ho utilizzato per la stesura.ListsManagement. la trovate qua: PeppeDotNet. Buona lettura ! :) 4. a partire dalla sua creazione o dall'eventuale modifica di uno o più campi. Questo il link diretto all'articolo: http://www. perchè capita spesso di dover interagire direttamente con la struttura di una lista. da applicazioni client-side. Dalla creazione e selezione di singole liste o gruppi di liste. E' sicuramente un argomento molto interessante anche questo. potete scrivere direttamente sul forum Microsoft per lo sviluppo su SharePoint.

Non ci sarà alcun modo per far ripartire quel workflow dopo aver aspettato i minuti definiti all'interno dell'attività di tipo Delay. C'è una soluzione però ! Per permettere il funzionamento di un workflow che utilizza una Delay activity è necessario settare una proprietà sul sito in cui si intende far girare il workflow. Il workflow con cui io ho testato questo comportamento è rappresentato in figura. .all'interno una Delay activity che blocca il worklfow per un numero preciso di minuti. vi accorgerete che il flusso di operazioni resterà fermo per sempre. Girando su internet ci siamo accorti che il problema era già presente all'interno della vecchia versione di SharePoint (WSS 3.0/MOSS 2007) e che non è stato corretto. tramite l'utility STSADM.

visualizza sulla console le informazioni di base riguardo tutte le issue che potrete incontrare se decidete di migrare il vostro database dei contenuti alla nuova versione di SharePoint.DelayActivityBug. saprete sicuramente come utilizzare il cmdlet "Test-SPContentDatabase" di powershell e saprete anche che il risultato prodotto da questa operazione risulta pieno di informazioni. forse un pò forvianti o pressoché inutili. Fatto questo. Upgrade Come avere un report esaustivo prima di una migrazione a SharePoint 2010 con il metodo "database attach" Una delle modalità più usate e più consigliate per effettuare una migrazione da MOSS 2007/WSS 3. ecco qua la soluzione di test che ho utilizzato per riscontrare effettivamente il bug sulla mia macchina: PeppeDotNet. che va valorizzata con il valore: "".zip 5. .La proprietà in questione è la "". prima possiamo provare a farci stampare il valore attuale della proprietà in questione: stsadm -o getproperty -pn job-workflow -url http://siteurl Poi. Se volete metterci un pò le mani. ricordatevi che è necessario un IISRESET e un riavvio del servizio timer di SharePoint. altrimenti i nostri breakpoint non verranno mai catturati dal debugger. Cosa molto importante da ricordare è che se vogliamo fare debug di un workflow di questo tipo.0 a SharePoint 2010 è sicuramente quella dell'attach del database dei contenuti. è necessario attaccarci al processo OSWTimer di SharePoint. Quindi. possiamo settarla: stsadm -o setproperty -pn job-workflow -pv "Every 5 minutes between 0 and 59" -url http://siteurl Una volta terminate le operazioni tramite l'utility STSADM. il servizio timer capisce che deve controllare i nostri workflow ogni 5 minuti e permette così alla Delay activity di scattare correttamente. Se avete mai provato questa modalità per le vostre migrazioni. Il tool infatti.

but is not installed on the current farm..Sfortunatamente però. non possiamo sapere dove queste sono attivate o utilizzate all'interno dei siti SharePoint presenti all'interno del database di contenuto che stiamo migrando. . io e il mio gruppo. ne quali le feature e. una volta eseguito il nostro tool. Questo rende decisamente difficile la nostra migrazione. sopratutto se ci troviamo di fronte ad un ambiente SharePoint 2007 che non abbiamo customizzato in prima persona. vengono presentate solamente tramite un'identificativo (ottenuto tramite il calcolo spiegato qua). una web part mancante che prima ci veniva presentata in questo modo: And a MissingWebPart issue like Category Error : MissingWebPart : True UpgradeBlocking : False Message : WebPart class [xxx] is referenced [3] times in the database xxxx]. abbiamo sviluppato un piccolo tool di supporto a questa operazione che è in grado di leggere il report generato dal cmdlet "Test-SPContentDatabase" e generarne un secondo un pò più ricco diciamo. Infatti. sopratutto. non otteniamo le informazioni che ci aiutano a capire quali sono queste issue e dove sono attualmente utilizzate. Ecco quindi che. Questo significa che non siamo ne in grado di capire quali sono le web part che dobbiamo migrare.. Per esempio:   Le feature che verranno perse durante la migrazione sono presentate solamente tramite il loro identificativo Le web part che dovranno essere spostate/migrate.

Per utilizzarlo. 2.aspx e http://technet. PublicKeyToken=7668678dcd8080b491 WebPart Id:: xxx This wep part can be located in the following pages: SubSite/default. le feature e le altre customizzazioni che dobbiamo migrare all'interno della nuova farm SharePoint 2010.Eseguire il nostro tool passando il file .aspx Quindi.Copiare il report generato all'interno della vecchia farm SharePoint 2007.microsoft.effetture un backup e restore del database di contenuto all'interno del database server di SharePoint 2010 (qua per le istruzioni: http://msdn. 3.namespace Assembly Name: CustomWebPartAssembly. con questo tool siamo in grado di capire esattamente quali saranno le web part.microsoft. 4.txt come unico parametro Questa figura vi può chiarire il processo di utilizzo.aspx). Version=1.aspx SubSite1/subsite/page.0.nel nuovo report generato.aspx). dal niente a TUTTO ! :) Scherzi a parte.eseguire il comando "Test-SPContentDatabase" tramite powershell per generare il report di input (qua per le istruzioni: http://technet.com/enus/library/ff607941.1.com/enus/library/cc263026. Culture=neutral. verrà invece visualizzato quanto segue: WebPart Details: CustomWebPart WebPart name: CustomWebPart WebPart Type name: CustomWebPart. è necessario seguire questi passi: 1.microsoft. .0.com/enus/library/ms187048.

com/ Bene.Permalink .Categoria: Sharepoint . pensate di utilizzarlo per le vostre migrazioni e siete così gentili da darci un feedback. come faccio ad istallare queste features in SP2010 ? . Se qualcuno ha voglia di partecipare al progetto. mi sembra tutto :) Chiaramente il tool è ancora in fase di sviluppo e alcune missing customization non vengono recuperate nella loro interezza. Se invece.. e adesso. potete scaricare l'eseguibile compilato da codeplex o potete prendere i sorgenti e ricompilarlo. ne saremmo ben contenti.scritto il 1/5/2012 8:36:48 PM Fantastico.Per poterlo utilizzare. ne saremo sicuramente felicissimi ! TAGS: [SharePoint] [SharePoint 2010] [Upgrade] [Codeplex] Commenti(6) ..Share on twitter | facebook COMMENTI Autore: Gabriele .codeplex.Posted @ 9/27/2010 9:24:56 PM . Ecco il link diretto al progetto: http://sp2010extmigrareport.

scritto il 1/10/2012 10:38:33 PM Ok. puoi lasciare le tue domande sul forum microsoft: http://social. le web part e le site collection mancanti. Figurati! Peppe Autore: Gabriele . L'ho rimosso. puoi contattarmi via mail quando preferisci. grazie a questa utilita' "magica".scritto il 1/6/2012 6:38:52 PM ho risolto.scritto il 1/10/2012 10:46:10 PM Ciao Gabriele. Sharepoint e' una bestia di prodottom pensavo fosse stao piu' facile ma mi ritrovo con dei problemi. Gabriele.scritto il 1/5/2012 8:45:58 PM Ciao Gabriele.scritto il 1/6/2012 10:36:03 PM Bene.xml (che trovi sotto il percorso /12) e tutti gli altri relativi file ad eccezione delle varie dll. altrimenti le riattivo e le converto. Altrimenti. Posso scriverti e chiederti un paio di consigli ? Autore: Peppe . adesso aspetto utenti. ho scoperto che tutte queste features non erano in uso. Trovi il mio indirizzo in fondo al sito. le ho disattivate.msdn. devi cercare i sorgenti. Autore: Peppe . Per le dll se sei fortunato ti funzionano senza neanche doverle ricompilare. ma soltanto partecipanti ad un sotto-sito chiamato SandBox che fu creato diversi anni fa per test. le rimuovo. Peppe Autore: Gabriele . mi fa piacere. migrarli a sharepoint 2010 ed installarli nella nuova farm.com/Forums/it-IT/sharepointitproit/threads A presto Peppe . Se non hai i sorgenti.microsoft. Grazie mille. devi cercare di ricostruire quanto meno i file di definizione . se qualcosa non funziona. ne sono rimaste 3 "Powered by SharePointBoost" ed anche queste non sono in uso. Una volta che hai individuato le feature.Autore: Peppe . altrimenti devi per forza avere i sorgenti.

Sign up to vote on this title
UsefulNot useful