Site definition
Deuxième partie - Personnalisation basique de la définition de site
12/02/2010
1102 lectures
2 commentaires
5/5 (2 votes)
Dans le cours précédent, nous avons développé une définition de site simple basée sur le modèle de site d'équipe. Dans ce cours, nous allons nous baser sur cette définition et la personnaliser un peu. Nous vous conseillons donc de lire le cours précédent ou d'en télécharger les sources (en bas de la page).
Pour simple rappel, voici l'architecture actuelle de notre projet :
La feature nommée MyTeamSiteFeatureStapling était donc une feature permettant d'activer les features nécessaires au bon fonctionnement de notre définition de site. Nous avons ensuite le fichier webtempmyteamsite.xml qui permet d'ajouter notre définition de site à la liste des modèles disponibles. Enfin, le fichier MyTeamSite contient simplement la définition de notre site.
Vous allez vite voir que dans le code que nous avons gardé (dans le fichier ONET.XML après le copie de celui du site d'équipe), il y a pas mal de superflu (dans notre cas), nous allons donc supprimer quelques portions de code avant de commencer la personnalisation.
La première chose à faire est de supprimer le fichier defaultdws.aspx car il ne nous sert à rien. Ensuite, ouvrez le fichier ONET.XML. Dans ce fichier, nous avons une section Configurations qui va contenir les différents paramètres pour les configurations définies dans le fichier webtemp*.xml. Etant donné que nous n'avons qu'une configuration avec 0 comme ID, nous allons supprimer les 3 éléments Configuration du fichier ONET.XML qui correspondent à l'ID -1, 1 et 2.
Nous avons également une partie module qui va permettre d'indiquer quels fichiers nous allons uploader dans les catalogues à la création du site. Nous n'allons garder que le module correspondant à la configuration 0. En effet, si vous regardez le code de notre configuration, vous verrez :
Ne gardez donc que l'élément Module pour lequel l'attribut Name vaut Default.
Nous allons maintenant passer à la personnalisation de notre définition de site. Nous allons supprimer quelques éléments du quick launch. Créez automatiquement quelques listes et modifiez quelques peu la page d'accueil du site.
Dans le fichier ONET.XML se trouve un élément NavBars qui va contenir les différents éléments du Quick Launch. Ici, nous n'allons garder que les éléments Documents et List. Supprimez donc les 3 derniers éléments NavBar qui correspondent respectivement à la partie Discussions, Sites et People.
Passons maintenant aux listes présentes sur le site à la création. Nous allons supprimer toutes celles dont nous ne nous servirons pas. Supprimez donc les lignes suivantes :
Ces différentes lignes permettent en fait de créer des listes automatiquement sur le site. Nous allons voir la syntaxe tout de suite car nous allons créer quelques listes personnelles. La première sera une simple liste générique qui ne contiendra rien du tout. Copiez/collez donc le code ci-dessous dans l'élément Lists de l'élément Configuration :
Vous allez voir que ce n'est pas très compliqué. L'élément List va permettre d'indiquer qu'une liste d'un certain type devra être créée en même temps que le site. Le premier attribut de cet élément est le FeatureId, c'est à dire, le GUID de la feature contenant la définition de la liste. Pour le trouver, c'est très simple, il vous suffit de vous rendre dans le dossier 12\TEMPLATE\FEATURES\CustomList et d'ouvrir le fichier feature.xml. Ce dossier contient en fait le schéma de définition d'une custom list, il suffit donc de récupérer l'ID de cette feature pour savoir que mettre dans l'attribut FeatureId de l'élément List.
Nous avons ensuite l'attribut Type qui permet de définir le type de la liste. Ici, nous tapons l'ID relatif aux listes génériques, c'est-à -dire 100. L'attribut Title définit simplement le titre de la liste et l'attribut Url indique l'URL à laquelle se trouvera la liste. Nous utilisons donc un chemin générique, c'est-à -dire Lists/ suivi du nom de la liste. Enfin, nous définissons l'attribut QuickLaunchUrl pour la faire apparaitre dans le QuickLaunch. Nous rajoutons AllItems.aspx pour afficher la vue par défaut de la liste.
Nous allons maintenant créer une même liste mais qui contiendra deux éléments :
L'élément List en lui-même est approximativement le même que précédemment à part le nom de la liste. Ce qui change ici, c'est le contenu de cet élément. Nous commençons par introduire le fait que nous allons insérer des données dans la liste grâce à l'élément Data. Nous introduisons ensuite le fait que nous allons ajouter des lignes grâce à l'élément Rows. Enfin, nous ajoutons chaque ligne grâce à un élément Row. Chaque élément Row devra contenir un élément Field qui va permettre de définir la valeur d'un champ. Ici, nous faisons passer l'attribut Name et lui affectons la valeur Title pour indiquer que nous définissons la valeur du champ Title.
Enfin, insérez le code suivant pour créer une librairie de document :
Ici, nous faisons passer l'ID de la feature définissant une libraire de document. Le type ici passe à 101 étant donné qu'il s'agit d'une librairie de document.
Nous allons maintenant passer à la personnalisation de la page d'accueil du site. Pour cela, nous allons nous intéresser à l'élément Module qui va permettre d'uploader la page default.aspx. C'est pendant cet upload que nous allons personnaliser la page. Actuellement, le code est le suivant :
Si vous regardez bien, vous remarquerez que ce code est relatif à la disposition des Web Parts de base sur la page d'accueil d'un site d'équipe. Un élément View permet de disposer une vue de liste en tant que Web Part sur la page. Nous avons également un élément AllUsersWebPart qui permet d'ajouter une Web part visible par tous les utilisateurs. En l'occurrence, il s'agit du logo SharePoint. Ensuite, nous avons des éléments NavBarPage qui permettent d'insérer le Quick Launch. Supprimez les 3 éléments View et l'élément AllUsersWebPart et remplacez-les par ceci :
Nous nous contentons d'insérer une vue des trois listes que nous avons automatiquement créée. La question reste de savoir comment définir où ces vues doivent apparaître sur la page. Cela est simplement fait grâce aux attributs WebPartZoneId et WebPartOrder. Si vous ouvrez votre page default.aspx, vous remarquerez ceci :
Nous avons donc des WebPartZone sur la page default.aspx. Nous faisons donc simplement passer les ID de ces WebPartZone en tant que valeur de l'attribut WebPartZoneID de l'élément View pour indiquer où la vue va se placer. L'attribut WebPartOrder va quant à lui définir l'ordre d'affichage des Web Part dans les zone. Ici, nous modifions la valeur de cet attribut pour la vue de la liste EmptyList sur 2 pour indiquer qu'elle s'affichera en dessous de la vue de MyCustomList.
Compilez et déployez maintenant votre solution pour pouvoir la tester. Ouvrez la centrale d'administration et créez une nouvelle collection de site basée sur notre définition de site. Une fois la création terminée, rendez vous sur la page d'accueil de votre site pour voir apparaître ceci :
Vous pouvez constater des différences par rapport à la définition d'un site d'équipe. Premièrement, le Quick Launch a changé. Effectivement, nous n'avons plus que l'élément Documents et Lists. Vous vous demandez peut-être comment SharePoint sait sous quel élément il doit mettre telle ou telle liste. Sachez que cela se fait automatiquement grâce à l'ID de la NavBar définie dans le fichier ONET.XML de votre définition.
Vous pouvez également voir que nos 3 listes ont bien été créées alors que les listes habituelles (Announcement, Tasks,...) ne le sont pas. La page d'accueil est également différente. Effectivement, elle contient bien les 3 Web Parts avec les 3 listes comme nous l'avons défini dans le fichier ONET.XML.
Télécharger les sources de l'exemple
Pour simple rappel, voici l'architecture actuelle de notre projet :
La feature nommée MyTeamSiteFeatureStapling était donc une feature permettant d'activer les features nécessaires au bon fonctionnement de notre définition de site. Nous avons ensuite le fichier webtempmyteamsite.xml qui permet d'ajouter notre définition de site à la liste des modèles disponibles. Enfin, le fichier MyTeamSite contient simplement la définition de notre site.
Vous allez vite voir que dans le code que nous avons gardé (dans le fichier ONET.XML après le copie de celui du site d'équipe), il y a pas mal de superflu (dans notre cas), nous allons donc supprimer quelques portions de code avant de commencer la personnalisation.
La première chose à faire est de supprimer le fichier defaultdws.aspx car il ne nous sert à rien. Ensuite, ouvrez le fichier ONET.XML. Dans ce fichier, nous avons une section Configurations qui va contenir les différents paramètres pour les configurations définies dans le fichier webtemp*.xml. Etant donné que nous n'avons qu'une configuration avec 0 comme ID, nous allons supprimer les 3 éléments Configuration du fichier ONET.XML qui correspondent à l'ID -1, 1 et 2.
Nous avons également une partie module qui va permettre d'indiquer quels fichiers nous allons uploader dans les catalogues à la création du site. Nous n'allons garder que le module correspondant à la configuration 0. En effet, si vous regardez le code de notre configuration, vous verrez :
Ne gardez donc que l'élément Module pour lequel l'attribut Name vaut Default.
Nous allons maintenant passer à la personnalisation de notre définition de site. Nous allons supprimer quelques éléments du quick launch. Créez automatiquement quelques listes et modifiez quelques peu la page d'accueil du site.
Dans le fichier ONET.XML se trouve un élément NavBars qui va contenir les différents éléments du Quick Launch. Ici, nous n'allons garder que les éléments Documents et List. Supprimez donc les 3 derniers éléments NavBar qui correspondent respectivement à la partie Discussions, Sites et People.
Passons maintenant aux listes présentes sur le site à la création. Nous allons supprimer toutes celles dont nous ne nous servirons pas. Supprimez donc les lignes suivantes :
Ces différentes lignes permettent en fait de créer des listes automatiquement sur le site. Nous allons voir la syntaxe tout de suite car nous allons créer quelques listes personnelles. La première sera une simple liste générique qui ne contiendra rien du tout. Copiez/collez donc le code ci-dessous dans l'élément Lists de l'élément Configuration :
Vous allez voir que ce n'est pas très compliqué. L'élément List va permettre d'indiquer qu'une liste d'un certain type devra être créée en même temps que le site. Le premier attribut de cet élément est le FeatureId, c'est à dire, le GUID de la feature contenant la définition de la liste. Pour le trouver, c'est très simple, il vous suffit de vous rendre dans le dossier 12\TEMPLATE\FEATURES\CustomList et d'ouvrir le fichier feature.xml. Ce dossier contient en fait le schéma de définition d'une custom list, il suffit donc de récupérer l'ID de cette feature pour savoir que mettre dans l'attribut FeatureId de l'élément List.
Nous avons ensuite l'attribut Type qui permet de définir le type de la liste. Ici, nous tapons l'ID relatif aux listes génériques, c'est-à -dire 100. L'attribut Title définit simplement le titre de la liste et l'attribut Url indique l'URL à laquelle se trouvera la liste. Nous utilisons donc un chemin générique, c'est-à -dire Lists/ suivi du nom de la liste. Enfin, nous définissons l'attribut QuickLaunchUrl pour la faire apparaitre dans le QuickLaunch. Nous rajoutons AllItems.aspx pour afficher la vue par défaut de la liste.
Nous allons maintenant créer une même liste mais qui contiendra deux éléments :
L'élément List en lui-même est approximativement le même que précédemment à part le nom de la liste. Ce qui change ici, c'est le contenu de cet élément. Nous commençons par introduire le fait que nous allons insérer des données dans la liste grâce à l'élément Data. Nous introduisons ensuite le fait que nous allons ajouter des lignes grâce à l'élément Rows. Enfin, nous ajoutons chaque ligne grâce à un élément Row. Chaque élément Row devra contenir un élément Field qui va permettre de définir la valeur d'un champ. Ici, nous faisons passer l'attribut Name et lui affectons la valeur Title pour indiquer que nous définissons la valeur du champ Title.
Enfin, insérez le code suivant pour créer une librairie de document :
Ici, nous faisons passer l'ID de la feature définissant une libraire de document. Le type ici passe à 101 étant donné qu'il s'agit d'une librairie de document.
Nous allons maintenant passer à la personnalisation de la page d'accueil du site. Pour cela, nous allons nous intéresser à l'élément Module qui va permettre d'uploader la page default.aspx. C'est pendant cet upload que nous allons personnaliser la page. Actuellement, le code est le suivant :
Si vous regardez bien, vous remarquerez que ce code est relatif à la disposition des Web Parts de base sur la page d'accueil d'un site d'équipe. Un élément View permet de disposer une vue de liste en tant que Web Part sur la page. Nous avons également un élément AllUsersWebPart qui permet d'ajouter une Web part visible par tous les utilisateurs. En l'occurrence, il s'agit du logo SharePoint. Ensuite, nous avons des éléments NavBarPage qui permettent d'insérer le Quick Launch. Supprimez les 3 éléments View et l'élément AllUsersWebPart et remplacez-les par ceci :
Nous nous contentons d'insérer une vue des trois listes que nous avons automatiquement créée. La question reste de savoir comment définir où ces vues doivent apparaître sur la page. Cela est simplement fait grâce aux attributs WebPartZoneId et WebPartOrder. Si vous ouvrez votre page default.aspx, vous remarquerez ceci :
Nous avons donc des WebPartZone sur la page default.aspx. Nous faisons donc simplement passer les ID de ces WebPartZone en tant que valeur de l'attribut WebPartZoneID de l'élément View pour indiquer où la vue va se placer. L'attribut WebPartOrder va quant à lui définir l'ordre d'affichage des Web Part dans les zone. Ici, nous modifions la valeur de cet attribut pour la vue de la liste EmptyList sur 2 pour indiquer qu'elle s'affichera en dessous de la vue de MyCustomList.
Compilez et déployez maintenant votre solution pour pouvoir la tester. Ouvrez la centrale d'administration et créez une nouvelle collection de site basée sur notre définition de site. Une fois la création terminée, rendez vous sur la page d'accueil de votre site pour voir apparaître ceci :
Vous pouvez constater des différences par rapport à la définition d'un site d'équipe. Premièrement, le Quick Launch a changé. Effectivement, nous n'avons plus que l'élément Documents et Lists. Vous vous demandez peut-être comment SharePoint sait sous quel élément il doit mettre telle ou telle liste. Sachez que cela se fait automatiquement grâce à l'ID de la NavBar définie dans le fichier ONET.XML de votre définition.
Vous pouvez également voir que nos 3 listes ont bien été créées alors que les listes habituelles (Announcement, Tasks,...) ne le sont pas. La page d'accueil est également différente. Effectivement, elle contient bien les 3 Web Parts avec les 3 listes comme nous l'avons défini dans le fichier ONET.XML.
Télécharger les sources de l'exemple



2 commentaires
Ben a dit:
Cool !
Se serait intéressant d'avoir le cours sur les custom web template sous SPS 2010.
Ils reposent sur un "systeme" plus "harmonieux" dans le sens où tout est géré par module/feature handler
Adrien M a dit:
Nice!
Ajouter un commentaire