Recherche sur les métadonnées créées par l’utilisateur

Dans SharePoint, un utilisateur souhaite faire une recherche sur les métadonnées à partir de l’écran de recherche avancée. L’écran de recherche avancée est une page standard d’un site créé à partir du modèle de site Centre de recherche de base.

Concrètement, l’utilisateur souhaite faire une recherche sur les métadonnées du type : « Je cherche dans le projet Audit tous les documents en anglais qui contiennent le mot site dont le niveau de confidentialité est Tres-secret » à partir de l’écran de recherche avancée.

Les notions de projet, langue et confidentialité sont des propriétés des documents. Elles sont gérées sous forme de métadonnées dans un type de contenu spécifique.

Par ailleurs, vous devez atteindre cet objectif sans faire un programme, ni même un JavaScript !

L’idée retenue est donc de jouer sur les paramètres des fichiers XML de la configuration de la recherche de SharePoint afin de faire une recherche sur les métadonnées. Ces fichiers XML sont facilement accessibles pour l’administrateur.

Avant de continuer prenez connaissance de l’article sur le principe de fonctionnement de la recherche SharePoint, qui présente les notions de propriétés analysées (« crawled properties ») et de propriétés gérées (« managed properties »).

La première étape consiste à créer les colonnes de sites et le type contenu.

Création d’un type de contenu

Vous créez un type de contenu nommé Paris Core Columns et de type de contenu parent Document. Bien évidemment, vous pouvez créer le type de contenu adapté pour faire une recherche sur les métadonnées.

type de contenu nommé Paris Core Columns
Type de contenu nommé Paris Core Columns

Ensuite, vous créez la colonne de site nommée Projet et de type choix avec les valeurs: Audit, Gouvernance, Migration, Performances.

Puis, il faut créer la colonne de site nommée Restriction et de type choix avec les valeurs: Tres-secret, Confidentiel, Restreint, Public.

Ensuite, vous rattachez ces colonnes, ainsi que les colonnes existantes Auteur, Objet et Langue au type de contenu Paris Core Columns.

Colonnes des type de contenu nommé Paris Core Columns
Colonnes des type de contenu nommé Paris Core Columns

Dans ce scénario, vous associez le type de contenu à une bibliothèque nommée Docs et c’est son type de contenu par défaut. Bien évidemment, vous utilisez la bibliothèque que vous voulez.

Alimenter en documents

Pour que l’indexation fonctionne, il faut déposer des documents dans la bibliothèque Docs. Cette étape est primordiale et doit se faire avant même le paramétrage de la recherche sur les métadonnées à cause du fonctionnement de l’indexation.

En effet, pour pouvoir associer une propriété gérée à une propriété analysée (cf. principe de fonctionnement de la recherche SharePoint), celle-ci doit être remontée par le programme d’indexation (mssearch.exe). Hors, celui-ci ne peut le faire que s’il existe des documents qui exposent ces propriétés analysées.

Créer un jeu d’essai

Par ailleurs, pour tester convenablement la recherche sur les métadonnées, vous devez imaginer les futures requêtes.

Dans notre cas, les requêtes vont porter sur les critères du type de contenu: Titre, Nom, Auteur, Objet, Projet, Langue, Restriction.

Soit 7 critères, auxquels il faut rajouter la date de dernière modification. La date permet de répondre aux requêtes du type « tous les documents de la semaine dernière ». Les 8 critères donnent 255 combinaisons possibles (2 puissance 8 -1), sans compter le contenu des documents !

Dans la pratique, il est impossible d’avoir un jeu d’essai pour tous les cas possibles. Dans ce scénario, vous allez constituer un jeu d’essai d’environ 50 documents avec des propriétés différentes.

Vous pouvez accélérer l’indexation en la forçant via la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche > Content source puis sur la source de contenu : Start Incremental Crawl.

L’indexation incrémentielle est très rapide. Les utilisateurs se plaignent parfois de la lenteur supposée de l’indexation. Si c’est le cas, vous adaptez le réglage de la fréquence d’indexation.

SharePoint 2013, qui dispose d’une architecture de recherche différente de celle de SharePoint 2010, a la possibilité d’indexer en continu. SharePoint 2010 ne sait pas le faire. Toutefois, il est possible de régler une indexation incrémentielle toutes les 5 minutes, sans dégrader les performances.

Une fois le mappage fait (plus loin), il sera nécessaire de lancer une indexation complète.

Quand l’indexation des nouveaux documents est dans l’état idle, vous pouvez passer à l’étape suivante qui consiste à créer des propriétés gérées associées aux propriétés analysées.

Création de la propriété gérée

Nativement, SharePoint sait faire le mappage entre certaines propriétés analysées et les propriétés gérées d’origine (« Out Of The Box / OOTB »), en particulier les métadonnées des documents Office.

Pour les colonnes de sites que vous avez créées, vous devez créer une nouvelle propriété gérée puis l’associer à une des propriétés analysées.

Vous devez faire la manipulation suivante sur les deux colonnes de sites : Projet et Restriction. Cette manipulation est indispensable pour la recherche sur les métadonnées des utilisateurs.

Lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Metadata Properties puis New Managed Property.

Nommez la propriété : monProjet et vérifiez que le type de données est bien Text. Mettez le nom abrégé de votre organisme à la place de « mon ». Les caractères « _ » ou « # » ne sont pas acceptés.

Ensuite, cliquez sur Add Mapping: la fenêtre Crawled property selection s’ouvre.

Dans cette fenêtre, vous pouvez soit filtrer par catégorie, soit filtrer directement sur le nom. Vous allez utiliser cette méthode car les colonnes de sites SharePoint sont facilement repérables.

Préfix ows_

En effet, elles sont préfixées par ows_ suivi de leur nom interne.

Tapez directement ows_projet puis cliquez sur le bouton Find.

Crawled property selection
Crawled property selection

Cet écran affichera toutes les propriétés analysées trouvées du même type que la propriété gérée. Si vous ne voyez pas la propriété analysée, vérifiez:

  • Que le type de contenu Paris Core Columns est bien associé à la bibliothèque de documents Docs,
  • Que la propriété analysée Projet est bien renseignée pour au moins un document. Si besoin, rajoutez au moins un document avec la propriété analysée renseignée,
  • Que l’indexation a bien été faite depuis. Dans le doute relancez une indexation incrémentale,
  • Que le nom interne est bien Projet et donc le nom de la propriété analysée est ows_Projet. Lisez l’article sur le nom interne des colonnes,
  • Que le type de donnée est bien Text.

Si ows_Projet(Text) apparaît bien; cliquez dessus pour le sélectionner puis cliquez sur le bouton OK pour valider: vous revenez sur le fenêtre New Managed Property.

Dans cette fenêtre, cochez Allow this property to be used in scopes pour pouvoir utiliser la propriété gérée dans une étendue de recherche (cf. plus bas), ainsi que Add managed property to custom results set retrieved on each query: la raison est expliquée dans l’article consacré aux principes de fonctionnement de la recherche.

Création d'une propriété gérée
Création d’une propriété gérée

Cliquez sur le bouton OK.

Refaites la même manipulation, en l’adaptant, pour la colonne de site Restriction.

Si vous faites une erreur, ou si vous oubliez de cocher une case par exemple, vous pouvez modifier à nouveau la propriété gérée. Vous ne pouvez pas modifier le type de données (Texte, Entier, etc.). Si vous faites une erreur sur le type de données, vous supprimez la propriété gérée puis vous la créer à nouveau.

Indexation complète

Une fois les propriétés gérées créées, il est nécessaire de refaire une indexation complète (et non incrémentale) pour que le programme d’indexation les intègre dans l’index.

L’utilisateur interroge l’index lorsqu’il fait une recherche sur les métadonnées.

Si c’est compatible avec votre environnement, il serait préférable de recréer entièrement l’index. Dans notre cas, ce n’est pas strictement nécessaire. L’avantage de recréer un nouvel index est de supprimer les erreurs éventuelles de l’index qui finissent toujours par s’accumuler et qui dégradent les performances.

Attention ! La réinitialisation d’index va supprimer totalement l’index, toutes sources de contenu confondues: aucune recherche sur les métadonnées n’aboutira tant que l’index ne sera pas reconstitué. Par ailleurs, la reconstitution de l’index est une opération consommatrice de ressources: les performances globales de la ferme SharePoint seront pénalisées. Ces opérations doivent d’abord être testées puis ensuite planifiées, notamment dans le cas d’un index volumineux de plusieurs centaines, voire milliers, de Go.

Pour réinitialiser l’index, lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Index Reset. Laissez cochée la case Deactivate search alerts during reset. Si vous la décochez, les utilisateurs qui ont créé des alertes sur la recherche sur les métadonnées vont recevoir des emails intempestifs. Cliquez sur bouton Reset Now puis sur le bouton OK de la fenêtre de confirmation.

Le crawler va recréer entièrement l’index, lors de la prochaine indexation complète. Dans le cas où la prochaine indexation est incrémentielle, le programme d’indexation force d’autorité une indexation complète si l’index n’a pas déjà fait l’objet d’une indexation complète.

Forcer une indexation complète

Pour gagner du temps, ou si vous n’avez pas voulu réinitialiser l’index, vous pouvez forcer une indexation complète.

Pour forcer une indexation complète, lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Content Sources.

Avec la souris, survolez Local SharePoint sites puis cliquez sur la flèche à droite.

Local SharePoint sites
Local SharePoint sites

Cliquez sur Start Full Crawl pour démarrer l’analyse complète.

La durée de l’analyse dépend évidemment du volume de documents à analyser.

Dans l’administration de la recherche, l’historique de l’analyse permet d’avoir une vision d’ensemble des différentes analyses.

Quand l’indexation est dans l’état idle, vous ajoutez les propriétés gérées à la recherche avancée.

Modifier la recherche avancée

Si vous ne disposez pas d’un site de recherche avancée, vous devez d’abord en créer un pour permettre la recherche sur les métadonnées des utilisateurs.

Pour créer un site de recherche avancée, ouvrez la page d’accueil de votre site puis cliquez sur Actions du site > Nouveau site.

Filtrez sur la catégorie Recherche et sélectionnez le modèle Centre de recherche de base.

Nommez-le Cherche avec l’url cherche puis cliquez sur le bouton Créer: une fenêtre de recherche toute simple (« A la Google ! ») s’affiche:

centre de recherche
Centre de recherche

Cliquez sur le lien Paramètres avancées.

centre de recherche avancée
Centre de recherche avancée

Si vous cliquez sur la liste déroulante propriété, vous voyez apparaître les propriétés gérées qui ont été reconnues nativement par SharePoint: Auteur, Description, Nom, Taille, URL, Date de modification, Créé par, dernière modification par.

Ajouter des propriétés gérées

Vous allez modifier cette recherche avancée pour ajouter vos propriétés gérées.

Pour cela, cliquez sur Actions du site (le menu habituel en haut à gauche) puis Modifier la page.

Avec la souris, survoler la zone de recherche avancée puis cliquer sur le lien Edition et choisir Modifier le composant WebPart.

Modifier le composant WebPart
Modifier le composant WebPart

Dans les paramètres de la zone de recherche avancée, qui est apparu sur la droit, sous Étendues, cochez la case Afficher le sélecteur d’étendue.

Afficher le sélecteur d’étendue
Afficher le sélecteur d’étendue

Le sélecteur d’étendues permet de sélectionner l’étendue souhaitée, si vous en possédez plusieurs. Ce choix est cohérent avec la définition précédente de la propriété gérée.

Ensuite, cliquez sur le moins de Étendues.

Puis, dessous, cliquez sur le plus de Propriétés.

Ensuite, cliquez dans la zone Propriétés qui débute par <root xmlns:xsi= »http://www.w…

Enfin, cliquez sur les 3 petits points qui apparaissent:

La fenêtre web qui s’affiche n’est pas pratique pour faire les modifications.

Aussi, vous allez copier temporairement son contenu dans un éditeur plus pratique comme par exemple Notepad++.

Copiez tout le texte qui apparaît et collez-le dans Notepad++, suivi d’entrée.

Afin de faciliter la lecture du fichier, vous pouvez faire les petites manipulations suivantes. Elles sont facultatives mais elles vous permettront de mieux voir ce que vous faites.

Editer dans Notepad++

Dans Notepad++, remplacez tous les double-espace par un seul espace. Cette opération est à faire 5 fois de suite.

Dans Notepad++, remplacer en mode étendue la chaîne « > < » par « >\r\n<« . Les commandes \r\n font passer à la ligne. Pensez à le faire en mode étendue pour avoir un retour chariot entre > et <.

Une fois ces manipulations faites, vous obtenez le fichier présenté ainsi.

Étendue de recherche mise en forme
Étendue de recherche mise en forme

Cherchez la balise <PropertyDefs>: vous retrouvez les propriétés gérées reconnues par SharePoint (Auteur, Description, Nom, Taille, URL, etc.)

Propriétés gérées reconnues par SharePoint
Propriétés gérées reconnues par SharePoint

Entre les balises <PropertyDefs> et </PropertyDefs>, insérez:

<PropertyDef Name= »monProjet » DataType= »text » DisplayName= »Projet »/>

Refaites cette opération pour la propriété gérée maRestriction.

PropertyDef
PropertyDef

Ensuite, cherchez la balise <ResultTypes>: elle se trouve juste en dessous de la balise </PropertyDefs>.

ResultTypes
ResultTypes

Dans la balise <ResultTypes>, chercher la balise <ResultType DisplayName= »Tous » Name= »default »>

ResultType
ResultType

Juste avant </ResultType>, ajouter: <PropertyRef Name= »monProjet » />

PropertyRef
PropertyRef

Refaites cette opération pour la propriété gérée maRestriction.

En fait, vous pouvez ajouter les balises ci-dessus à l’endroit que vous voulez dans le bloc <ResultTypes>, selon l’affichage souhaité.

Sélectionnez et copiez tout le contenu du fichier notepad++.

Ensuite, collez dans la fenêtre de l’éditeur de texte ouvert dans SharePoint puis cliquer sur le bouton OK. Il est totalement inutile de remettre en forme.

Puis, cliquez sur le bouton OK de la Zone de recherche avancée.

Enfin, dans le ruban Page, cliquez sur Arrêter la modification.

Modification de l'étendue
Modification de l’étendue

Vous devez voir en bas de la liste les champs Projet et Restriction.

Lancement de la requête personnalisée de recherche

L’utilisateur souhaite faire une recherche sur les métadonnées du type : « Je cherche dans le projet Audit tous les documents en anglais qui contiennent le mot site dont le niveau de confidentialité est Tres-secret » à partir de l’écran de recherche avancée.

Notamment, cela donne:

Recherche sur les métadonnées
Requête personnalisée de recherche

Vous pouvez simplifier cet écran de recherche (suppression des langues inutiles, modification des libellés, etc.) en modifiant les fichiers XML de configuration.

Recherche sur les métadonnées

Vous noterez le panneau d’affinement (sur la gauche) qui permet de filtrer les résultats de recherche:

Recherche sur les métadonnées
Requête personnalisée de recherche (résultat)

Il est aussi possible de faire apparaître dans le panneau d’affinement, les métadonnées rajoutées par nos soins: Projet et Restriction.

Pour information, la requête complète est ALL(site) (scope: »All Sites ») (DetectedLanguage= »en ») (monProjet:Audit AND maRestriction:Tres-secret).

Principe de fonctionnement de la recherche SharePoint

Il y aurait beaucoup d’informations à communiquer sur le fonctionnement de la recherche SharePoint. L’objet de cet article est de présenter les principales notions sur ce thème, sans chercher l’exhaustivité.

La recherche SharePoint repose essentiellement sur un programme d’analyse des documents (« Crawl » en anglais) et un programme de requête (« Query »).

Le programme de « crawl » (mssearch.exe) analyse les documents pour en extraire les propriétés et les mots contenus.

Les propriétés sont le titre, l’auteur, l’objet, la date de création, etc. du document. Les spécialistes préfèrent le terme de métadonnées.

Donc, le crawler indexe les propriétés d’un document, ainsi que tout son contenu.

Il existe toutefois des limites. En effet, le crawler indexe une partie des grands fichiers.

Le service de recherche SharePoint Server Search 14 exécute le programme C:\Program Files\Microsoft Office Servers\14.0\Bin\mssearch.exe.

Index créé et utilisé par la recherche SharePoint

Un index est un ensemble de fichiers qui contiennent les mots analysés. Ensuite, l’index associe l’URL du document aux mots indexés. Vous retrouvez ainsi les documents associés au mot recherché.

Pour des raisons de performance, l’index du contenu se trouve sur le disque dur, et non pas en bases de données. Sur des serveurs virtualisés, vous devez rattacher l’index à un disque physique afin de ne pas dégrader les performances.

Vous devez déplacer l’index sur un disque qui a un un compteur Avg Disk Queue Length faible. Attention ! Il faut tester et planifier ces opérations avant de le faire en production, notamment avec un index volumineux.

Déplacer l’index

Pour déplacer l’index grâce à la Central Administration, cliquez sur Application Management puis Manage service applications et sur l’application de service de la recherche. Dans cette application de service de la recherche, cliquez sur le bouton Modify sous Search Application Topology.

Ensuite, pour chaque composant de recherche (par exemple Crawl Component 0 / Query Component 0), éditez les propriétés (Edit Properties) et changez le chemin de l’index.

Puis cliquez sur le bouton Apply Topology Changes.

La compréhension de la recherche SharePoint nécessite d’expliciter les notions de propriétés analysées et propriétés gérées.

Propriétés analysées de la recherche SharePoint

Au moment de l’indexation, l’analyse du contenu découvre ce qu’on appelle les propriétés analysées. La base de données d’analyse (Search Service Application Crawl Store DB) stocke les propriétés analysées.

Pour prendre connaissance des propriétés analysées sur votre site, allez sur Central Administration > Application Management > Manage service applications > Application de service de la recherche > Metadata properties puis Crawled Properties (dans le menu haut):

Recherche SharePoint
Propriétés analysées

Propriétés analysées Office

Afin de mieux comprendre leur intérêt, le tableau ci-dessous explicite le rôle des propriétés analysées de la catégorie Office.

Recherche SharePoint
Explications des propriétés analysées pour Office

Vous voyez qu’un nom complet, par exemple Office:4(Text), identifie une propriété analysée.

Explications des propriétés analysées Office

Office est la catégorie qui se réfère aux documents Microsoft Office. Il existe d’autres catégories comme Basic qui se réfère notamment au système de fichier, Mail pour la messagerie, Web pour les données des sites web, People, SharePoint, etc.

Vous remarquerez le type de données entre parenthèses. Dans cet exemple, Text pour une ligne de texte. Il existe aussi Integer, Date and Time, Yes/No, Binary Data, etc.

Le nombre (4) est le nom de la propriété analysée.

Office:4(Text) est une propriété analysée native de SharePoint. Elle contient les données de la propriété Auteur (Author) des documents Office.

Vous trouverez aussi des propriétés analysées qui sont formatées un peu différemment. Par exemple, Departement(Text). Le type de données (Text) est toujours présent. Par contre, la catégorie n’apparaît pas dans le nom complet. Il faut cliquer sur le nom de la propriété analysée pour connaître sa catégorie.

Manipuler les propriétés analysées

Avec le temps de nombreuses propriétés analysées ne sont associées à aucune donnée mais elles sont toujours présentes dans la base. Vous pouvez les supprimer en allant sur Central Administration > Application Management > Manage service applications > Application de service de la recherche > Metadata properties puis Categories (dans le menu haut). Ensuite, modifiez la catégorie de votre choix. Cochez Delete all unmapped crawled properties et cliquez sur le bouton OK.

Recherche SharePoint
Supprimer toutes les propriétés analysées non mappées

De nombreuses propriétés analysées, non mappées, devraient disparaître. Malgré cette manipulation, il peut encore subsister certaines propriétés analysées non mappées.

Recherche SharePoint
Propriétés analysées non-mappées

Cliquez sur un de ces propriétés analysées pour la modifier.

Lorsque la case à cocher Include values for this property in the search index est cochée, cela signifie que la recherche SharePoint peut être faite dans les valeurs de cette propriété analysée.

Si la case est cochée, une recherche sur l’auteur « Raimbaud » renverra les éléments avec  la propriété d’auteur « Raimbaud ».

Si la case est décochée, la requête devra être sous la forme: « auteur:Raimbaud » pour trouver les mêmes éléments.

Recherche SharePoint
Inclure des valeurs pour cette propriété dans l’index de recherche

L’ajout de propriétés inutiles peut avoir des répercussions négatives sur les performances et la pertinence des recherches.

Aussi, décochez la case Include values for this property in the search index et cliquez sur le bouton OK. Refaites-le pour toutes les propriétés analysées de la catégorie.

Recherche SharePoint
Propriétés analysées non-mappées non-indexées

Modifiez la catégorie concernée: cochez à nouveau Delete all unmapped crawled properties:

 

Recherche SharePoint
Supprimer toutes les propriétés analysées non mappées

Vous pouvez supprimer la catégorie qui est vide.

Recherche SharePoint
Suppression d’une catégorie de recherche vide

Propriétés gérées dans la recherche SharePoint

De prime abord, la notion de propriété gérée peut sembler superflue.

En effet, toutes les métadonnées des documents ont été collectées à travers les propriétés analysées. Ensuite, il faut associer (« mapper ») une propriété analysée à une propriété gérée car les requêtes sont faites sur les propriétés gérées.

La technique des propriétés gérées (« Managed properties ») réconcilie des propriétés avec des noms différents dans les documents.

Selon le type de document, le crawler assigne l’auteur d’un document dans la  métadonnée nommée Auteur ou Office:4(Text) ou encore Mail:6(Text).

Le rôle de la propriété gérée est d’être une interface pour faire le lien entre toutes ces propriétés analysées.

 

Créer des Listes déroulantes en cascade dans SharePoint

Une demande récurrente dans SharePoint est de créer des listes déroulantes en cascade dans SharePoint entre deux listes minimum. Cette technique permet de limiter les valeurs affichées en fonction du choix précédent. Par exemple, la première liste peut contenir la liste des régions françaises. Lors du choix d’une région, la seconde liste ne fait apparaître que les départements de la région sélectionnée.

Il existe de nombreuses possibilités pour obtenir ce résultat. Toutefois, l’utilisateur voulait une méthode simple pour le faire, sans l’apport de produits tiers.

Création des deux listes

Afin de créer des listes déroulantes en cascade, vous devez créer au moins deux listes.

La première liste contiendra la Régions: elle est nommée Régions. Cette liste sera aussi appelée la liste parent.

La seconde liste contiendra la liste des départements: elle est nommée Départements. Cette liste aura une colonne de recherche, nommée Région (nom affiché) qui pointera sur la liste des régions.

La procédure pour créer ses deux listes est détaillée dans l’article intitulée Comment créer une colonne de recherche.

Créer le questionnaire

Le questionnaire est un formulaire qui permet d’interroger l’utilisateur sur la région de la liste parent puis le département de la liste enfant. C’est la méthode la plus simple pour implémenter des listes déroulantes en cascade dans SharePoint, dans ce scénario.

Concrètement, il suffit de créer une simple liste personnalisée, nommée Questionnaire. Cette liste aura 2 colonnes supplémentaires de type Recherche (informations déjà sur ce site). La première colonne s’intitule Region (sans accent, pour le nom interne), la seconde colonne s’intitule Departement (sans accent aussi).

Créer la liste qui relie les listes parent et enfant

Pour créer la liste Questionnaire, cliquez sur Actions du site > Autres options > Liste > Liste personnalisée.

Nommez la liste Questionnaire puis cliquez sur le bouton Créer.

Ajout de la première colonne qui relie la liste « parent »

Pour ajouter la colonne Region (sans accent), cliquez sur le ruban Liste (en haut) et sur le menu Créer une colonne.

Nommez la colonne Region (sans accent) puis sélectionnez le type Recherche (informations déjà sur ce site)

Puis, dans Paramètres de colonne supplémentaires, sous Obtenir des informations à partir de, sélectionnez la liste Régions. Sous Dans cette colonne, sélectionnez la colonne Titre (pas Titre lié à un élément) puis cliquez sur le bouton OK.

Pour des raisons esthétiques, vous allez renommer la colonne Region (sans accent) en Région (avec accent). La raison pour laquelle la saisie directe du nom Région n’a pas été faite directement est expliquée dans l’article consacrée au nom interne.

Allez dans les paramètres de la liste puis cliquez sur la colonne Region.

Modifiez le nom de la colonne en Région puis cliquez sur le bouton OK.

Ajout de la première colonne qui relie la liste « enfant »

Pour ajouter la colonne Departement (sans accent), cliquez sur le ruban Liste (en haut) et sur le menu Créer une colonne.

Nommez la colonne Departement (sans accent) puis sélectionnez le type Recherche (informations déjà sur ce site)

Puis, dans Paramètres de colonne supplémentaires, sous Obtenir des informations à partir de, vérifiez que la liste Départements est bien sélectionnée. Si ce n’est pas le cas, sélectionnez-là. Vérifiez aussi que la colonne Titre est bien sélectionnée (pas Titre lié à un élément). Si ce n’est pas le cas, sélectionnez-là puis cliquez sur le bouton OK.

Pour des raisons esthétiques, vous allez renommer la colonne Departement (sans accent) en Département (avec accent).

Allez dans les paramètres de la liste puis cliquez sur la colonne Departement.

Modifiez le nom de la colonne en Département puis cliquez sur le bouton OK.

Listes déroulantes en cascade
Liste déroulante en cascade relie parent enfant

Si vous cliquez sur le lien Ajouter un nouvel élément, vous n’aurez pas de liaison entre la liste parent et la liste enfant: pas de JavaScript, pas de liste déroulante en cascade !

JavaScript

En effet, pour indiquer à SharePoint de faire des listes déroulantes en cascade entre la liste parent et la liste enfant, il est nécessaire d’introduire quelques lignes de JavaScript.

Pour simplifier le travail, nous utilisons JQuery et SPServices.

Les procédures pour utiliser ses deux bibliothèques sont détaillées dans les articles d’initiation à jQuery et d’initiation à SPServices.

Implémenter la logique métier en JavaScript

Une fois que vous savez que les bibliothèques JQuery et SPServices fonctionnement correctement, vous pouvez implémenter la logique métier qui permet d’avoir des listes déroulantes en cascade.

Créez un fichier ListeDeroulanteEnCascade.js avec Notepad avec le contenu suivant:

<script type= »text/javascript » src= »/Scripts/jQuery.js »></script>
<script type= »text/javascript » src= »/Scripts/jQuery.SPServices.js »></script>
<script type= »text/javascript »>

$(document).ready(function() {
$().SPServices.SPCascadeDropdowns({
relationshipList: « Départements »,
relationshipListParentColumn: « Region »,
relationshipListChildColumn: « Title »,
parentColumn: « Région »,
childColumn: « Département »,
});
});
</script>

relationshipList doit contenir le nom de la liste qui fait le lien avec la liste parent (« Régions »). Dans notre cas, c’est la liste Départements.

Au lieu du nom, vous pouvez mettre aussi le GUID de la liste Départements.

relationshipListParentColumn doit contenir le nom interne de la colonne de la liste enfant (« liste Départements ») qui pointe vers la colonne de la liste parent (« Régions »). Dans notre cas le nom interne de la colonne est Region.

Pour savoir comment récupérer le nom interne, consultez l’article sur le nom interne.

relationshipListChildColumn doit contenir le nom interne de la colonne de la liste enfant (« liste Départements ») qui affiche les valeurs filtrées. Dans notre cas le nom interne de la colonne Département est Title.

parentColumn doit contenir le nom d’affichage de la colonne du formulaire (« Questionnaire ») qui pointe vers la colonne de la liste parent (« Régions »). Dans notre cas le nom d’affichage de la colonne est Région.

childColumn doit contenir le nom d’affichage de la colonne du formulaire (« Questionnaire ») qui pointe vers la colonne de la liste parent (« Départements »). Dans notre cas le nom d’affichage de la colonne est Département.

Normalement, vous n’avez pas à modifier le script (ListeDeroulanteEnCascade.js) sauf si vous avez nommé différemment vos colonnes.

Modifier le formulaire avec SharePoint Designer

Pour obtenir des listes déroulantes en cascade, vous devez modifier le formulaire du questionnaire dans ce scénario.

L’ajout du JavaScript doit être fait dans la liste Questionnaire. Plus précisément, il est nécessaire de modifier les formulaires NewForm.aspx et EditForm.aspx de la liste. Le formulaire NewForm.aspx sert à créer un nouvel élément, tandis qu’EditForm.aspx permet de modifier les éléments existants.

La modification des formulaires de la liste Questionnaire se fait à l’aide de SharePoint Designer.

A partir de votre site, cliquez sur Actions du site puis Modifier dans SharePoint Designer.

Dans SharePoint Designer, cliquez sur Listes et bibliothèques (à gauche).

Listes déroulantes en cascade
Liste déroulante en cascade SharePoint Designer Listes bibliotheques

Cliquez sur la liste Questionnaire pour gérer ses paramètres.

Pour vérifier le bon fonctionnement du script ListeDeroulanteEnCascade.js, vous allez modifier le fichier NewForm.aspx.

Pour cela, faites un clic droit sur le fichier NewForm.aspx puis choisissez Modifier le fichier en mode avancé.

Listes déroulantes en cascade
Modifier le fichier en mode avancé

Puis basculez dans la fenêtre Code, si ce n’est pas déjà fait.

Ensuite, lancez une recherche dans le code source sur la chaîne de caractères « <asp:Content ContentPlaceHolderId= »PlaceHolderMain » runat= »server »> »

Listes déroulantes en cascade
Recherche dans SharePoint Designer

En dessous de la chaîne recherchée, copiez tout le contenu du fichier ListeDeroulanteEnCascade.js.

Listes déroulantes en cascade
Import du JavaScript dans NewForm.aspx

Enregistrez les modifications faites sur NewForm.aspx: une fenêtre apparait qui vous informe que l’enregistrement de vos modifications personnalise la page de telle sorte qu’elle ne se base plus sur la définition de site. Cliquez sur le bouton Oui pour enregistrer vos modifications. Ce message n’apparaîtra plus sur ce fichier.

Listes déroulantes en cascade

En premier lieu, appuyez directement sur la touche F12 pour lancer le navigateur web.

Dans le questionnaire qui s’affiche, saisissez un titre (par exemple Question 1) puis cliquez sur la zone déroulante du Région.

Sélectionnez Corse grâce à un double clic. Toutefois, si la liste déroulante ne se ferme pas, appuyez sur la touche tabulation de votre clavier.

Notamment, dans la zone Département, vous devez voir apparaître:

Listes déroulantes en cascade
Création réussie d’un élément avec la liste déroulante

Sélectionnez Corse-du-Sud puis cliquez sur le bouton Enregistrer: laissez ouvert votre navigateur Internet.

Puis, revenez à SharePoint Designer.

Ensuite, dans SharePoint Designer, refaites exactement les mêmes manipulations que vous venez de faire sur le formulaire EditForm.aspx.

Une fois vos modifications terminées, retournez sur le navigateur Internet puis modifiez l’élément Question 1.

Listes déroulantes en cascade
Modification en cours de l’élément

Dans Région, double-cliquez sur Franche-Comté.

Listes déroulantes en cascade
Modification réussie d’un élément

Dans Département, sélectionnez Doubs puis cliquez sur le bouton Enregistrer.

Ensuite, si tout va bien, fermez SharePoint Designer.

Remarques

  • Par analogie avec cet exemple, il est facile de l’étendre pour mettre en oeuvre des listes déroulantes sur 3 ou 4 niveaux.
  • Des problèmes apparaissent à cause des noms de colonnes tronqués au-delà des 32 caractères. Une cause possible d’un nom interne tronqué est l’utilisation d’accent ou d’espace dans le nom de la colonne à sa création.

 

Petit tutoriel d’initiation à SPservices dans SharePoint

Ce tutoriel se limite à une initiation à SPservices dans SharePoint. SPServices est une bibliothèque qui s’appuie sur JQuery et simplifie l’appel aux services Web de SharePoint.

Pour exécuter avec succès cette initiation à SPservices, vous devez suivre au préalable le tutoriel dédié à JQuery, et qui est expliqué dans l’article Tutoriel d’initiation de base sur JQuery dans SharePoint.

Télécharger la bibliothèque SPservices

Avant de débuter cette initiation à SPservices, téléchargez la dernière version de SPServices.

Stockez le fichier zip sur votre ordinateur, décompressez-le et renommez le fichier jQuery.SPServices-2013.01.js en jQuery.SPServices.js. Dans les environnements complexes, il peut être intéressant d’identifier chaque version de SPservices. Dans notre cas, il est plus simple d’avoir une seule référence dans votre collection de sites SharePoint.

Pour pouvoir utiliser le fichier jQuery.js, il est nécessaire de le téléverser (« uploader ») dans la bibliothèque Scripts, créée dans le tutoriel dédié à JQuery.

Allez dans la bibliothèque Scripts puis cliquez sur le bouton Ajouter un document.

Cliquez ensuite sur Parcourir et « uploader » jQuery.SPServices.js dans la bibliothèque.

Initiation à SPservices
Bibliotheque jQuery et SPServices

Vérifier le bon fonctionnement de SPservices

Avant toute chose, il est important de vérifier que SPservices est valide et fonctionne bien dans votre environnement. Il est supposé que vous avez déjà vérifié que JQuery fonctionne parfaitement bien.

Avec le Bloc-notes (notepad.exe), créez un petit fichier VerifierSPservices.js avec le texte suivant:

<script type= »text/javascript » src= »/Scripts/jquery.js »></script>
<script type= »text/javascript » src= »/Scripts/jquery.SPServices.js »></script>
<script type= »text/javascript »>
$(document).ready(function() {
alert($().SPServices.SPGetCurrentSite());
});
</script>

Seules les lignes nouvelles par rapport à VerifierJQuery.js seront présentées.

La seconde ligne sert à référencer l’appel à SPServices. Vous devez donc modifier votre fichier pour que la première instruction src pointe bien vers l’emplacement du fichier jQuery.js hébergé dans la bibliothèque Scripts.

Le code exécuté est:

alert($().SPServices.SPGetCurrentSite());

Si tout va bien, ce code affiche un message avec l’URL complète de votre site.

Enregistrez vos modifications faites dans le fichier VerifierSPservices.js.

Uploadez aussi votre fichier VerifierSPservices.js dans la bibliothèque Scripts.

Initiation à SPservices

Une fois le fichier VerifierSPservices.js uploadé, faites un clic-droit dessus puis Copier le raccourci. Dans un instant, vous aurez besoin de coller le chemin.

Par ailleurs, pour tester le bon fonctionnement du script, vous allez utiliser la page Test, créée dans le tutoriel jQuery. Si vous n’avez plus de page Test, consultez le tutoriel pour en créer une.

Notamment, ouvrez un nouvel onglet dans votre navigateur puis allez sur la page d’accueil de votre site puis cliquez sur Actions du site puis Afficher tout le contenu du site.

Ensuite, cliquez sur la bibliothèque Pages du site.

Puis, dans le volet de gauche, cliquez sur le lien Test. Si un message jQuery s’affiche, fermez-le.

Et cliquez sur Actions du site puis Modifier la page.

Composant webpart editeur de contenu
Composant webpart editeur de contenu

Avec la souris, survolez le composant Editeur de contenu pour faire apparaître son menu d’édition:

Ensuite, cliquez sur Modifier le composant Webpart: sur la droite de l’écran, les paramètres de l’Editeur de contenu s’affiche. Si un message jQuery s’affiche, fermez-le.

Ensuite, sous Lien du contenu, coller le contenu du presse-papier. Normalement, il contient l’emplacement du fichier VerifierSPservices.js.

Ensuite, cliquez sur le bouton OK.

Puis, vous devez voir une fenêtre qui s’affiche en indiquant l’URL du site.

Enregistrez votre page: le message s’affiche à nouveau.