Sviluppare Feature per SharePoint

di Cristian Civera, in SharePoint,

SharePoint è un prodotto completo che in molti casi può soddisfare le esigenze più comuni, in altri invece necessita di essere personalizzato nell'interfaccia, piuttosto che con liste o WebPart specifiche, e lo fa permettendo di intervenire in ogni suo aspetto.

Per facilitare lo sviluppo e il deployment di queste personalizzazione, a partire dalla versione 3 sono state introdotte le Features, con le quali è possibile definire una caratteristica con relativi assembly e risorse da utilizzare rendendo così facile la distribuzione su molteplici farm o site e la loro immediata attivazione o disattivazione.

Per definire una Feature, come è solito fare in SharePoint, si crea un file XML di nome feature.xml dove si indicano ID, titolo, descrizione, l'eventuale immagine e lo scope. Con l'elemento ElementManifests si indicano i manifesti da utilizzare come riferimento delle operazioni che la Feature ha a disposizione:

<Feature
  Id="999EA3BC-4481-4229-9B30-8165B732C65D"
  Title="Cancellazione item inibita"
  Description="Impedisce la cancellazione degli item"
  Scope="Web"
  Hidden="FALSE"
  AlwaysForceInstall="true"
  ImageUrl=""
  xmlns="http//schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementManifest Location="NoDelete.xml" />
  </ElementManifests>
</Feature>

Eventualmente si può specificare con ReceiverAssembly e ReceiverClass la classe che viene istanziata quando si attiva o si disattiva una Feature, così da poter intervenire sul sito destinatario.
Il file NoDelete.xml è anch'esso un file XML avente come tag radice Elements e può assumere diversi figli a seconda dell'operazione che rende disponibili. E' possibile infatti aggiungere pulsanti di azione personalizzati alle liste, definire delle liste, personalizzare le pagine, piuttosto che aggiungere gestore di eventi delle liste, caso preso in esempio in questo script.

Per la completa lista si rimanda comunque alla documentazione disponibile su
http://msdn.microsoft.com/en-us/library/ms460318.aspx

Occorre quindi, tramite l'elemento Receivers, specificare il gestore dell'evento con nome, tipo, assembly e classe:

<Elements xmlns="http://schemas.microsoft.com/SharePoint/">
  <Receivers ListTemplateId="100"> <!--lista generica -->
    <Receiver>
      <Name>DeletingEventHandler</Name>
      <Type>ItemDeleting</Type>
      <Assembly>ASPItalia.com.Scripts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a26b5449ac4a4cf3</Assembly>
      <Class>ASPItalia.com.Scripts.NoDeleteReceiver</Class>
    </Receiver>
 </Receivers>
</Elements>

La classe NoDeleteReceiver è alquanto banale poiché eredita da SPItemEventReceiver e sovrascrive il metodo ItemDeleting:

public class NoDeleteReceiver : SPItemEventReceiver
{
  public override void ItemDeleting(SPItemEventProperties properties)
  {
    properties.Cancel = true;
    properties.ErrorMessage = "La cancellazione non è permessa";
  }
}

Ora che è tutto preparato e compilato, occorre installare la Feature nella cartella di SharePoint, solitamente situata in c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURE.
Si crea una cartella "NoDeleteFeature", dove depositare i due file feature.xml e nodelete.xml, e si installa l'assembly con il receiver dell'evento in GAC.

Copiati i file occorre installare la Feature in SharePoint, perciò è necessario usare da shell lo strumento amministrativo stsadm.exe, presente nella cartella C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\, con il comando:

stsadm -o installfeature -filename NoDeleteFeature\feature.xml

Successivamente occore attivare la Feature, sempre a riga di comando, sul siti sul quale si vuole beneficiare della funzionalità:

stsadm -o activatefeature -name NoDeleteFeature -url http://localhost/MySite

La Feature così è attivata e impedisce le cancellazioni degli item di ogni lista. Per disattivare o disinstallare la feature vi sono i rispettivi deactivatefeature e unistallfeature.

In alternativa a questo deployment manuale è possibile creare un pacchetto di solution, un unico file compresso con estensione .wsp la cui procedura di creazione e installazione è comunque manuale. Si consiglia quindi di usare strumenti come SmartTemplates (http://www.codeplex.com/smarttemplates) che offre un template di Visual Studio con auto generazione della solution e di un'interfaccia grafica di setup.

Le Feature sono un componente fondamentale qualora si voglia personalizzare SharePoint, oltre ad essere soprattutto comode. Lo dimostrano i molteplici pacchetti disponibili, come per esempio quelli che si possono trovare su http://www.codeplex.com/features/

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi