Thursday, March 13, 2008

SharePoint Folder, Sub-Folder and Content Type (part 1)

Aujourd'hui, je vais décrypter la façon dont on peut travailler avec les Folder et sous-folders dans SharePoint, tout en leur associant des Content Type. J'ai partagé ce blog en deux :

  • Partie 1 : comment faire via l'interface utilisateur
  • Partie 2 : comment utiliser ceci par programme
Voici l'énoncé du problème :
  • Dans une Document Library, je veux avoir des folders qui ont leurs propres meta données (appelons ces folder "Folder Niveau 1")
  • Au niveau root, je ne veux qu'avoir la possiblité de créer des "Folder Niveau 1"
  • Au niveau Root je veux avoir une seule vue qui me montre ces meta données
  • En entrant dans un "Folder Niveau 1", je veux avoir la possibilité de créer des Documents de type contrat et des "Folder Niveau 2" de type Folder
  • Dans un "Folder Niveau 1", je veux avoir une seule vue qui montre les meta données de Document
  • Dans "Folder Niveau 2" je veux avoir une seule vue qui montre les meta données de Document
  • Comment gérer ces folders par programmation (partie 2)

Résolution par l'interface utilisateur

Tout d'abord, il faut créer les content type (CT). Un content type que l'on crée via l'IU va hériter de propriétés d'un parent. Habituellement ce parent est un document, mais rien n'empêche de prendre un Folder comme parent (après tout, c'est aussi un content type)

CTCreation Dans le site settings on trouve la gallerie des CT

CTFolderNiv1

Et on crée le premier CT, Folder Niveau 1. Il faut bien noter que le parent de ce CT est bien le Folder. Je mets le tout dans un group "Folder Group" (pas très inspiré aujourd'hui...)

CTFolderNiv1Cols

Ensuite, on rajoute quelques colonnes. Pour l'exemple, je les ai prises dans les colonnes existantes. Il faut faire de même pour le CT "Folder Niveau 2", mais cette fois je n'ai pas pris de colonnes supplémentaires. Ensuite, il y a le CT pour le document de type contrat

DocContract

Et les colonnes, prises aussi dans les colonnes existantes. DocContractCols Maintenant, il faut retourner dans la Document Library Settings (advanced), autoriser les Content Type, AuthoriseCT Et empêcher la création de Folder standard (si on le souhaite bien sûr) PasFolder Ensuite, il faut choisir les CT qui nous intéressent AjoutCT AllCT Puis, pour n'avoir que "Folder Niveau 1" dans le menu "New", il faut enlever les CT qui ne nous intéressent pas. Attention, cela ne veut pas dire qu'ils ne seront plus accessibles. En fait, il sont toujours attachés à la liste, mais il ne seront simplement pas visible. Vous allez voir qu'on va jouer là-dessus pour filtrer le contenu du menu "New" dans les sous-folder. ChangeDefault ChooseOnlyFn1 Ceci fait, on note dans le menu new qu'il n'y a plus grand chose, hormis la possibilité de créer un "Folder Niveau 1" ChangeMenuFolder2 Avant de créer un "Folder Niveau 1", il faut faire un tour du coté de la vue "All Documents". Cette vue affiche des données standard, et nous sommes plutôt intéressés pour voir les données du CT "Folder Niveau 1". La première étape consiste à modifier cette vue en sélectionnant les bonnes colonnes Alldocview1 puis, petite astuce, il faut aller tout en bas à la rubrique Folders pour dire que cette vue ne sera valable que lorsqu'on est dans le root folder. Cette possibilité est très intéressante car elle va justement nous permettre de sélectionner les vue que l'on souhaite en fonction du niveau de folder dans le quel on est. Alldocview2 Ceci fait, on va créer un "Folder Niveau 1". Faites New / Folder Niveau 1 et vous constatez qu'il y a bien un formulaire d'édition qui nous demande d'entrer les meta données que l'on a associé au folder NewFolderNiv1Edit Et après avoir cliqué sur OK, on a bien dans la liste un folder avec ses meta données NewFolderNiv1Display Maintenant, nous allons modifier les paramètres ce folder pour personnaliser son menu New. Il ne devra permettre que la création des "Folder Niveau 2" et des Contrats. C'est le même principe que sur la liste: dans le menu associé au nom du folder, on trouve l'option "Change New Button Order" ChangeMenuFolder qui va permettre de sélectionner les éléments que l'on souhaite voir s'afficher dans le menu New de ce folder (Folder Niveau 2 et Contrats) ChangeMenuFolder1 Le menu est bien, mais la vue n'est pas bonne ChangeMenuFolder2 En effet, on ne voit pas les meta data spécifiques aux documents contenus dans ce folder. Nous allons créer une vue qui va permettre cela. Cette vue aura un nom, sera une vue par défaut, avec des colonnes appropriées, et surtout, elle sera associée au CT "Folder Niveau 1". Cela devient donc la vue par défaut pour ce folder FolderView1 FolderView2 Et maintenant, en entrant dans ce Folder Niveau 1 la vue précédente apparaîtra. Ce qui fait qu'on maintenant deux vue par défaut, une pour le niveau Root, et une pour le niveau Folder Niveau 1.

Bien sûr, pour le Folder Niveau 2 il faut faire de même, ce qui permet d'avoir une hiérarchie de folder et de vue très intéressante. Mais l'inconvénient majeur de ce système, c'est qu'il faut faire la démarche de sélectionner le "New Button Order" pour chaque nouveau folder créé. Heureusement il existe une méthode par programmation. C'est ce que nous verrons dans la partie 2 de ce post.

2 comments:

NahoY said...

Merci pour ce blog, je voulais justement créer un dossier avec des métadonnées. Je vois un seul problème par contre, l'utilisateur pet quand même créer un dossier "normal" s'il change la vue à "Mode Explorateur" et en crée un manuellement ou par drag and drop. Les dossiers peuvent ensuite être changés manuellement au type métadonnées, mais si l'utilisateur décide de copier 30 dossiers et sous-dossiers, la tâche semble être plus hardue...

Merci!

Yohan

Anonymous said...

merci de ce tuto je suis debutant et cela me permet dapprendre beaucoup de choses.
Marc