Я пытаюсь настроить динамическое меню для отдельных элементов (блок управления редактированием) в SharePoint 2007. Моя цель - иметь определенные функции, доступные в зависимости от членства в группе текущего пользователя.
Я знаю, что тег CustomAction, управляющий созданием этого пункта меню, имеет атрибут «Права». Проблема, с которой я столкнулся, заключается в том, что группы, которые я использую, имеют одинаковые права на сайте (ViewListItems, ManageAlerts и т. д.). Группы, которые мы создали, больше связаны с функциями, такими как менеджер, сотрудник и т. д. Мы хотим иметь возможность назначать настраиваемую функцию группе, и чтобы элементы меню, связанные с этой функцией, были видны только членам этой группы. . У всех одинаковые базовые права доступа к сайту, но будут доступны дополнительные параметры в зависимости от их учетных данных.
Я видел несколько статей об изменении файла Core.js, чтобы скрыть элементы в контекстном меню, но это подход «все или ничего». На http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspx есть интересный пост, в котором показано, как динамически изменять меню Действия. Изменить этот пример легко, чтобы проверить группу пользователей и показать или скрыть меню в зависимости от членства. К сожалению, этот пример, похоже, не применим к пунктам контекстного меню, как показано здесь http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/c2259839-24c4-4a7e-83e5-3925cdd17c44/.
Кто-нибудь знает, как это сделать без использования javascript? Если нет, то как лучше всего проверить группу пользователя с помощью javascript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Есть две разные функции Javascript, которые вы можете реализовать для динамического добавления элементов меню в раскрывающиеся списки элементов. Core.js (C: \ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 12 \ TEMPLATE \ LAYOUTS \ 1033 \ CORE.JS) проверяет наличие этих методов при создании пунктов меню для выбранного элемента списка. Custom_AddDocLibMenuItems и Custom_AddListMenuItems - это названия методов Javascript.
Одна статья, которую, я думаю, вы можете использовать для решения вашей конкретной проблемы, - настройка динамического пункта меню на основе членства в роли пользователя, - можно найти здесь:
MSDN: настройка контекстного меню элементов библиотеки документов (обратите внимание, что процесс одинаков для любого типа списка)
В этой статье описывается, как можно выполнить код на стороне сервера для определения отображаемых пунктов меню:
[...] in more complex cases, you must retrieve the list of available commands from the server, because only there you can run your business logic and perhaps get the commands from a custom database. Typically, you want to do this if you are implementing a workflow solution where each document has its own process state, with commands associated to it.
The solution for this situation is to have the Custom_AddDocLibMenuItems dynamically call a custom ASP.NET page. This page takes the ID of the document library and the specific item on the query string, and returns an XML string containing all the information for the commands available for that particular document. These commands are available according to the document's process status (or some other custom business logic). [...]
К сожалению, это невозможно сделать без использования javascript. ECB не отображает серверные элементы управления, определенные как настраиваемые действия (в отличие от SiteActions и т. д.).
Чтобы узнать, как добиться этого с помощью Javascript, прочтите следующую статью: http://www.helloitsliam.com/archive/2007/08/10/moss2007-%E2%80%93-item-level-menus-investigation.aspx
Заголовок этого вопроса был бы более подходящим, если бы это было «Динамическое изменение раскрывающихся меню элемента списка в SharePoint» ... может ли модератор обновлять?