Динамически отображать пункт меню «Редактировать блок управления» в SharePoint - PullRequest
6 голосов
/ 27 августа 2008

Я пытаюсь настроить динамические меню для каждого элемента (Редактировать блок управления) в SharePoint 2007. Моя цель - иметь определенные функции, которые доступны в зависимости от членства в группе текущего пользователя.

Я знаю, что тег CustomAction, управляющий созданием этого пункта меню, имеет атрибут Rights. Проблема, которую я имею с этим, состоит в том, что группы, которые я использую, имеют идентичные права на сайте (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?

Ответы [ 2 ]

2 голосов
/ 02 октября 2008

К сожалению, это невозможно сделать без использования JavaScript. ECB не отображает серверные элементы управления, определенные как пользовательское действие (в отличие от SiteActions и т. Д.).

Чтобы узнать, как этого добиться с помощью Javascript, прочитайте следующую статью: http://www.helloitsliam.com/archive/2007/08/10/moss2007-%E2%80%93-item-level-menus-investigation.aspx

2 голосов
/ 12 сентября 2008

Существуют две различные функции Javascript, которые вы можете реализовать для динамического добавления пунктов меню в выпадающие списки. Core.js (C: \ Program Files \ Common Files \ Microsoft Shared \ расширения веб-сервера \ 12 \ TEMPLATE \ LAYOUTS \ 1033 \ CORE.JS) проверяет наличие этих методов при создании элементов меню для выбранного элемента списка. «Custom_AddDocLibMenuItems» и «Custom_AddListMenuItems» являются именами методов Javascript.

Одна статья, которую, я думаю, вы можете использовать для решения конкретной проблемы, динамическая настройка элементов меню в зависимости от членства в роли пользователя, находится здесь:

MSDN: настройка контекстного меню элементов библиотеки документов (обратите внимание, что процесс абсолютно одинаков для любого типа списка)

В этой статье описывается, как можно выполнить код на стороне сервера для определения пунктов меню, которые будут отображаться:

[...] в более сложных случаях вы должны получить список доступных команд с сервера, потому что только там вы можете запустить свою бизнес-логику и, возможно, получить команды из пользовательской базы данных. Как правило, вы хотите сделать это, если вы реализуете решение рабочего процесса, где каждый документ имеет свое собственное состояние процесса, с командами, связанными с ним.

Решение для этой ситуации состоит в том, чтобы Custom_AddDocLibMenuItems динамически вызывал пользовательскую страницу ASP.NET. Эта страница принимает идентификатор библиотеки документов и определенного элемента в строке запроса и возвращает строку XML, содержащую всю информацию для команд, доступных для этого конкретного документа. Эти команды доступны в соответствии со статусом процесса документа (или какой-либо другой настраиваемой бизнес-логикой). [...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...