2008-08-27 16 views
5

Je tente de configurer des menus dynamiques par élément (Modifier le bloc de contrôle) dans SharePoint 2007. Mon objectif est d'avoir certaines fonctionnalités disponibles en fonction de l'appartenance au groupe de l'utilisateur actuel.Afficher dynamiquement l'élément de menu Bloquer le contrôle dans SharePoint

Je sais que la balise CustomAction qui contrôle la création de cet élément de menu a un attribut Rights. Le problème que j'ai avec ceci est que les groupes que j'utilise ont des droits identiques sur le site (ViewListItems, ManageAlerts, etc.). Les groupes que nous avons configurés traitent plus de fonctions, telles que Manager, Employee, etc. Nous souhaitons être en mesure d'affecter une fonctionnalité personnalisée à un groupe, et de rendre visible les éléments de menu associés à cette fonctionnalité uniquement aux membres de ce groupe. . Tout le monde a les mêmes autorisations de site de base, mais aura des options supplémentaires disponibles en fonction de leurs informations d'identification de connexion.

J'ai vu plusieurs articles sur la modification du fichier Core.js pour masquer des éléments dans le menu contextuel, mais il s'agit d'une approche tout ou rien. Il y a un article intéressant à http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspx qui montre comment modifier dynamiquement le menu Actions. Il est trivial de modifier cet exemple pour vérifier le groupe d'utilisateurs et afficher ou masquer le menu en fonction de l'appartenance. Malheureusement, cet exemple ne semble pas s'appliquer aux éléments du menu contextuel, comme indiqué ici http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/c2259839-24c4-4a7e-83e5-3925cdd17c44/.

Est-ce que quelqu'un connaît un moyen de le faire sans utiliser javascript? Si non, quelle est la meilleure façon de vérifier le groupe de l'utilisateur de javascript?

+0

il titre de cette question serait plus appropriée si elle était « en train de modifier la liste des Dynamiquement menus déroulants article dans SharePoint » .. Est-ce qu'un modérateur peut mettre à jour? –

Répondre

2

Il existe deux fonctions Javascript différentes que vous pouvez implémenter pour ajouter dynamiquement des éléments de menu aux listes déroulantes des éléments. Core.js (extensions C: \ Program Files \ Fichiers communs \ Microsoft Shared \ web \ 12 \ TEMPLATE \ LAYOUTS \ 1033 \ CORE.JS) vérifie l'existence de ces méthodes lors de la génération des éléments de menu pour un élément de liste sélectionné. "Custom_AddDocLibMenuItems" et "Custom_AddListMenuItems" sont les noms des méthodes Javascript.

Un article que je pense que vous pouvez utiliser pour résoudre votre problème, la personnalisation de l'élément de menu dynamique fondée sur l'appartenance de rôle utilisateur, se trouve ici:

MSDN: Customizing the Context Menu of Document Library Items (notez le processus est exactement le même pour tout type de liste)

Cet article explique comment le code côté serveur peut être exécuté pour définir les éléments de menu qui sera affiché:

[...] dans les cas plus complexes, vous devez récupérer la liste des commandes disponibles à partir de le serveur, car seul le Vous pouvez exécuter votre logique métier et peut-être obtenir les commandes à partir d'une base de données personnalisée. Généralement, vous voulez le faire si vous implémentez une solution de workflow où chaque document a son propre état de processus, avec des commandes associées.

La solution à cette situation est d'avoir les Custom_AddDocLibMenuItems appeler dynamiquement une page ASP.NET personnalisée. Cette page prend l'ID de la bibliothèque de documents et l'élément spécifique sur la chaîne de requête, et renvoie une chaîne XML contenant toutes les informations pour les commandes disponibles pour ce document particulier. Ces commandes sont disponibles en fonction de l'état du processus du document (ou d'une autre logique métier personnalisée). [...]