April 2009 - Posts
La SP2 di SharePoint introduce nuovi parametri relativamente al funzionalità di backup tramite stsadm.
Tali parametri sono force e nositelock.
force serve per effettuare il backup ignorando le verifiche della disponibilità di spazio su disco. Ne scaturisce quindi una velocizzazione di esecuzione.
nositelock è stato introdotto per gestire il lock di un sito (mettere il sito in read-only) durante le operazioni di backup.
Situazione pre-SP2: durante le operazioni di backup il sito non veniva automaticamente posto in read-only ma era necessario lanciare, sempre via stsadm e prima del backup, setsitelock impostando il lock a readonly e successivamente al backup togliere il lock, pena la corruzione del backup se durante tale operazione avvengono delle modifiche ai contenuti.
Situazione post-SP2: la funzionalità di backup prima di essere eseguita mette automaticamente il sito in read-only e al termine dello stesso toglie il lock. Da qui nasce il parametro nositelock che permette di evitare questo nuovo comportamente tornando di fatto a quello pre-SP2. Interessante il fatto che questo nuovo comportamento sia di default, lasciando comunque la scelta del comportamento più adatatta sulla base singole necessità.
Ultima nota: non fare backup via stsadm a site collection più grandi di 15Gb
Per ulteriori info
http://technet.microsoft.com/en-us/library/cc263441.aspx - Backup
http://technet.microsoft.com/en-us/library/cc262811.aspx – Setsitelock
Reflector
Download: www.red-gate.com/products/reflector
Descrizione: Client application. Disassembla assembly in codice nativo o linguaggi più comuni (esempio c#, vb.net). Indispensabile per studiare l’object model di SP e per la fase di debugging.
SharePoint Manager 2007
Download: www.codeplex.com/spm
Descrizione: Client application. Il tool più completo per navigare sui siti SP via object model. Talvolta il tool permette apportare modifiche direttamente dalla UI (oltre a non essere supportato questo tipo di operatività, personalmente la sconsiglio).
WSPBuilder + WSP template per Visual Studio 2008
Download: www.codeplex.com/wspbuilder
Descrizione: Console application + Visual Studio 2008 Template. Semplifica notevolmente la creazione di solution da Visual Studio 2008.
VSeWSS (Visual Studio extension for WSS)
Download: www.microsoft.com/downloads/details.aspx?FamilyID=7bf65b28-06e2-4e87-9bad-086e32185e68&displaylang=en
Descrizione: VS extensions. Si propone di essere il punto di partenza per molti sviluppatori. Le estensioni permettono di creare e pacchettizzare nuovi progetti SP, web parts, custom field, list definition, ecc.. Interessante il tool che parendo da un sito esistente ne genera la site definition.
U2U Caml Query Builder 2007
Download: www.u2u.be/res/Tools/CamlQueryBuilder.aspx
Descrizione: Windows application che interagisce con SP via object model web service. Semplifica la scrittura delle CAML query sulle liste (no crosslist) che può essere effettuata interamente da UI senza toccare l’xml.
Stramit Caml Viewer 2007
Download: www.codeplex.com/SPCamlViewer
Descrizione: Windows application che interagisce con SP via web service. Per creare CAML query, visualizza tutti i field di una lista compresi quelli di sistema.
SPDisposeCheck
Download: code.msdn.microsoft.com/SPDisposeCheck
Descrizione: Console application. Tramite pattern verifica se all’interno di un assembly sono state effettuate tutte le dispose che SP richiede. Molto utile per fare code review rapidamente ed evitare i più comuni problemi di memory leak.
AppPoolManager
Download: www.harbar.net/articles/APM.aspx
Descrizione: Windows application che rimane nella try area. Per effetturare miratamente il recycle degli application pool di IIS. Permette inoltre di effettuare il warm-up post recycle.
IE7 + IEDevToolBar + Fiddler e FireFox 3.x + FireBug
Descrizione: Addins per browsers. Utile per tracciare il traffico di rete, localizzare e modificare al volo parti di HTML, individuare e verificare l’applicazione dei CSS, debug degli script.
Lapointe.SharePoint.STSADM.Commands
Download: stsadm.blogspot.com
Descrizione: Libreria di estensioni di STSAdmin. Più di 130 estensioni per effettuare le più comuni operazioni di configurazione, installazione, manutenzione e verifiche.
SharePoint Query Web Service Test Tool
Download: www.wsssearch.com/querywebservice.html
Descrizione: Windows application. Connettendosi al web service di search di SP permette di effettuare delle ricerche full-text creando automaticamente l’xml della request e ottenere l’xml della response.
Visual Studio 2008 IntelliSense per CAML xml
Download: code.msdn.microsoft.com/camlintellisense
Descrizione: Visual Studio extension. Scrivere gli xml di SP seguendo lo schema CAML non è mai stato così facile. Configurazione automatizzata degli schema su VS.
CodePlex Features
Download: www.codeplex.com/features
Descrizione: SharePoint feature. Collezione di features che introducono e semplificano l’operatività e lo sviluppo.
Colgo lo spunto per rispondere ad un domanda che spesso mi viene rivolta:
com’è possibile personalizzare il menù Site Actions per aggiungere nuove voci o rimuovere quelle di sistema?
Questa domanda dovrebbe essere preceduta dalla più comune “si può fare?”. Occorre sempre verificare la fattibilità prima di buttarsi a capofitto l’implementazione quando si sta personalizzando un prodotto. Talvolta il delta tra implementare qualcosa da zero integrato con il prodotto e personalizzare il prodotto è molto elevato. In questo caso la risposta è sì.
Torniamo al topic. Quando la feature di publishing è attivita, il data source del menù SiteAction punta al file storato nella posizione C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\EditingMenu\Siteaction.xml.
Le voci di menù presenti nella SiteAction e contenute nel file precedentemente segnalato sono personalizzabili in questi due modi:
- via feature per fruttare il solution framework di SharePoint che fornisce stabilità, manutenibilità, riutilizzo e facile attivazione/disattivazione via web
- editando il file usato da sharepoint per personalizzare il menù tramite SharePoint Designer
Non modificare mai i file di sistema di SharePoint!
Personalmente preferisco il primo approccio; però come ho già detto altre volte, durante la fase di sviluppo, spesso uso Designer per interagire rapidamente col sistema. Successivamente prendo tutte le modifiche effettuate con Designer e le impacchetto in un wsp.
Per rimuovere una voce di menù generata da SharePoint occorre editare il file CustomSiteAction.xml presente sulla master page gallery nella folder EditingMenu.
A seguire un esempio di xml che rimuove la voce Create Page presente nel menù out-of-the-box di SharePoint sostituendola con una custom.
<?xml version="1.0" encoding="utf-8" ?>
<Console>
<references>
<reference TagPrefix="cms"
assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Publishing.WebControls.EditingMenuActions" />
</references>
<structure >
<ConsoleNode ConfigMenu="Replace" ChangedNodeID="wsaCreatePage" />
<ConsoleNode Action="cms:CreateNewPublishingPageAction"
DisplayText="cms,siteactions_createpage_displaytext"
Description="cms,siteactions_createpage_description"
HideIfDisabled="true"
UseResourceFile="true"
MenuGroupId="100"
Sequence="6000"
IsSiteRelative="true"
PermissionContext="CurrentList"
ImageUrl="/_layouts/images/crtpage.gif"
NavigateUrl="/_layouts/Customcreatepage.aspx"
ID="wsaCreatePage1"/>
</structure>
</Console>
Leggendo l’xml si nota che il primo ConsoleNode tramite l’attributo ChangeNodeID identifica su quale voce di menù si deve interagire mentre l’attributo ConfigMenu definisce il tipo di operazione da effettuare. Il secondo ConsoleNode contiene la voce del menù che stiamo rimpiazzando (le cui label sono contenute in un file di risorse) e tramite l’attributo NavigateUrl viene specificato su quale pagina redirigere l’utente al click della voce di menù.
Technorati Tags:
SharePoint,
Dev
Tempo fa mi era imbattutto in un problema che riguarda la scrittura di valori in un field di tipo lookup multi value. Per la precisione: ciò che veniva fatto è valorizzare la collezione del multi value un pò alla volta senza ogni volta salvare l'item, più o meno come riportato
SPListItem item = getItem();
//Code 1
SPFieldLookupValueCollection fieldLookupValues = (SPFieldLookupValueCollection)item["MultiValueField"]; // ok
fieldLookupValues.Add(new SPFieldLookupValue(1, "value));
item["MultiValueField"] = fieldLookupValues;
//... do some operations
//Code 2
fieldLookupValues = (SPFieldLookupValueCollection)item["MultiValueField"]; // Exception
Nel primo blocco di codice viene letto un field, settato il primo valore della collection e successivamente salvata la collection sul item.
Il secondo blocco, se seguito successivamente al primo, genera una exception di tipo 'Unable to cast object'. Questo perchè è l'oggetto SPListItem che si occupa di mappare la stringa di un lookup multi value, il cui valore è id1;#value1;id2;#value2, in un oggetto di tipo SPFieldLookupValueCollection. Una volta impostato un valore per questo campo, il type del field torna ad essere String, ovvero il tipo con cui viene gestito internamente.
Per farlo tornare un oggetto tipizzato a SPFieldLookupValueColletion occorre fare un item.Update() prima del blocco 2.
Technorati Tags:
SharePoint,
Dev