2008-08-27 1 views
5

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

Я знаю, что тег 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?

+0

он название этого вопроса было бы более уместно, если бы «Динамически изменения списка Пункт выпадающего меню в SharePoint» .. Может ли обновление модератора? – 2008-09-24 16:37:18

ответ

2

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

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

MSDN: Customizing the Context Menu of Document Library Items (обратите внимание, что процесс в точности то же самое для любого типа списка)

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

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

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

2

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

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

+0

Ссылка не работает. – axk 2010-12-21 12:49:52

Смежные вопросы