2008-10-08 11 views

Répondre

7

Le versionnement n'est pas effectué au niveau du site, mais au niveau de la liste.

Si vous voulez Le versionnage être allumer chaque nouvelle bibliothèque, vous devrez soit:

  • Utilisez votre propre modèle de bibliothèque (avec versionnage est activée)
  • Utilisez la fonction + gestionnaire d'événements activer par programmation le versionnement sur chaque nouvelle liste

Le moyen le plus simple est probablement d'utiliser votre propre modèle. Pour ce faire, créez une nouvelle bibliothèque de documents, activez la gestion des versions, puis enregistrez cette liste en tant que modèle. Lorsque vous créez une nouvelle liste, vous pouvez alors utiliser votre modèle et créer directement une liste avec le contrôle de version activé.

+0

La création d'un modèle est extrêmement simple en tant que solution. – CodeGrue

5

Vous pouvez bien sûr créer votre propre définition de site, mais ce n'est probablement pas la meilleure solution. La création d'un modèle de bibliothèque personnalisé fonctionnera également, mais si vous souhaitez que la gestion des versions soit activée pour les bibliothèques créées par une définition de site particulière, vous devrez trouver autre chose.

Nous l'avons fait pour notre implémentation SharePoint. Nous avons décidé que la meilleure solution consistait à créer une fonctionnalité de gestionnaire d'événements et à l'agrafer sur tous les sites afin que, lors de la création du site, le contrôle des versions soit activé pour toutes les bibliothèques de documents existantes. Bien entendu, les nouvelles bibliothèques de documents recevraient toutes les options de versionnement définies par l'utilisateur qui les a créées. Le problème que nous avons rencontré est qu'il n'y a pas de gestionnaire d'événements "ListCreating", donc nous n'avons pas pu activer le contrôle de version à ce moment-là. Nous avons donc essayé de placer le code dans le gestionnaire d'événements FeatureActivated, en supposant qu'il soit activé lors de la création du site, puis que toutes les bibliothèques de documents puissent être modifiées pour que le contrôle de version soit activé. Le problème est que cet événement a été déclenché avant la création des bibliothèques. Donc, à la place, nous avons décidé de mettre le code dans le gestionnaire d'événement "ItemAdding" et de le retirer après la première exécution. Ainsi, la première fois qu'un utilisateur ajoute un élément de liste ou un document, il active le contrôle de version pour toutes les bibliothèques de documents du site. De cette façon, nous nous assurons qu'il n'y a aucun moyen pour un utilisateur d'ajouter un document à une bibliothèque existante sans qu'il soit versionné. De plus, toutes les bibliothèques créées avant l'ajout d'un élément verront également la gestion des versions activée par défaut.

C'était un peu une solution poilue, mais cela a très bien fonctionné pour nous. Voici le code que nous avons utilisé:

public class SetVersioning : SPItemEventReceiver 
{ 
    public override void ItemAdding(SPItemEventProperties properties) 
    { 
     SPWeb CurrentWeb = properties.OpenWeb(); 
     foreach (SPDocumentLibrary doclib in CurrentWeb.GetListsOfType(SPBaseType.DocumentLibrary)) 
     { 
      doclib.EnableVersioning = true; 
      doclib.MajorVersionLimit = 8; 
      //doclib.EnableMinorVersions = true; 
      doclib.Update(); 
     } 
     //now get rid of the receiver 
     SPEventReceiverDefinitionCollection receivers = CurrentWeb.EventReceivers; 
     foreach (SPEventReceiverDefinition definition in receivers) 
     { 
      if (definition.Name.Equals(EVENT_RECEIVER_NAME)) 
      { 
       definition.Delete(); 
       break; 
      } 
     } 

     base.ItemAdding(properties); 
    } 
} 
Questions connexes