DocumentID
SharePoint 2010 – Custom Feature DocumentID
Dans ce billet, nous allons voir comment créer un Feature SharePoint, changer le mode de gestion du DocumentID dans une liste. Cela nous sert essentiellement si nous voulons changer le mode de génération par GUID d’un DocumentID en fonction du nôtre et reposant sur des nouvelles colonnes.
Etapes:
Dans votre projet SharePoint, Cliquez droit sur Feature et sélectionner ajouter une fonctionnalité
Puis dans Feature1.Feature, Sélectionner la portée en mode Site puis cliquez droit et ajouter un EvenReceiver.
Ajouter la références suivante dans le fichier EventReceiver: Microsoft.Office.DocumentManagement
Le code ci-dessous :
using System; using System.Runtime.InteropServices; using System.Security.Permissions; using Microsoft.SharePoint; using Microsoft.SharePoint.Security; using Microsoft.Office.DocumentManagement; //Event Receiver implementing the DocumentID namespace CTIFLDocumentID.Features.FeatureCtifl { [Guid("8419a2fe-bde2-467c-8c78-9afd9a5178b6")] public class FeatureCtiflEventReceiver : SPFeatureReceiver { public override void FeatureActivated(SPFeatureReceiverProperties properties) { DocumentId.SetProvider(properties.Feature.Parent as SPSite, new CustomDocumentIdProvider()); } public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { DocumentId.SetDefaultProvider(properties.Feature.Parent as SPSite); }
} }
Ajouter un nouvel élément > sélectionnez Class.cs et renommez en CustomIdDocumentProvider.cs
Le code en question :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint; using Microsoft.Office.DocumentManagement; //DocumentIdProvider Interface //Return the metadata
namespace CTIFLDocumentID { public class CustomDocumentIdProvider : DocumentIdProvider { public override bool DoCustomSearchBeforeDefaultSearch { get { //return false to try the SharePoint search first. //return true to try GetDocumentUrlsById first. return false; } } public override string GenerateDocumentId(Microsoft.SharePoint.SPListItem listItem) { //your own Document ID algorithm
//return Guid.NewGuid().ToString()or with custom elements
return listItem["AAA"].ToString() + "-" + listItem["BBB"].ToString() + "-"
+ listItem["CCC"].ToString() + "-"
+ listItem["DDD"].ToString() + "-"
+ listItem["EEE"].ToString() + "-"
+ listItem["FFF"].ToString(); } public override string[] GetDocumentUrlsById(Microsoft.SharePoint.SPSite site, string documentId) { //Return an empty string array if you don't have any results. return new string[]{}; }//eofGetDoc public override string GetSampleDocumentIdText(Microsoft.SharePoint.SPSite site) { //DocumentID model return "AAA-BBB-CCC-DDD-EEE-FFF"; } } }
Une fois la solution compilée, deux choses sont à vérifier. Premièrement rendez-vous dans Site Collection Administration > Document ID settings , le paragraphe en rouge vous indique qu’un nouvel DocumentIDProvider a été trouvé
en l’occurrence le nôtre.
Deuxièmement vérifiez que la Feature a bien été déployée dans Site Collection Administration > Site Collection Features
Maintenant à chaque fois que vous ferez un upload de document, Sharepoint vous proposera de remplir les différents champs manquant afin que la génération du GUID se fasse en fonction des colonnes ou vous pouvez les renseignez avec une gestion d’upload de document.