Как запретить пользователям SharePoint WSS3 редактировать только те поля, которые находятся в их выделенных представлениях - PullRequest
2 голосов
/ 07 мая 2010

У меня есть список с полями: Название, Клиент, Проект, Описание.

Существует представление для аналитиков с видимыми полями: Название, Проект, Описание.

Все хорошо, если аналитики работают со своими взглядами, а не со списками. Но когда им нужно изменить записи, нажав «Изменить», они также видят и могут изменить поле «Клиент».

Как запретить доступ к полю «Клиент» для редактирования группой? есть ли способ в WSS или мне нужно искать сторонние компоненты списка?

Ответы [ 2 ]

2 голосов
/ 08 мая 2010

Все поля имеют набор свойств, которые определяют их видимость в формах, таких как «ShowInNewForm», «ShowInEditForm» и «ShowInDisplayForm». Есть также некоторые для диалогового окна файла, страницы настроек списка и нескольких других местах, но это уже позади. Короткий ответ: да, вы можете сделать так, чтобы поле не отображалось в форме редактирования с WSS без необходимости использования сторонних компонентов.

Если вам нужно поле, которое никто не может видеть в форме редактирования (то есть никто не должен иметь его в своей форме), то вам нужно изменить «ShowInEditForm», чтобы оно было истинным. Это не может быть изменено напрямую через интерфейс SharePoint, но это очень просто, используя объектную модель.

Если вам нужно, чтобы определенные люди редактировали его в определенный момент через пользовательский интерфейс SharePoint, вам вместо этого придется создать пользовательскую форму редактирования. Это немного сложнее, поэтому я воздержусь от предоставления этой инструкции, если вы не укажете, что вам нужно идти по этому маршруту (или кто-то другой проходит мимо этого ответа и запрашивает его). Тем не менее, это вполне возможно с WSS 3.0.

EDIT

Если вы уже знаете, как вставить встроенный код C # на страницу ASPX, это можно сделать очень просто с помощью SharePoint Designer. Во-первых, следуйте инструкциям этой статьи , особенно убедитесь, что вы не удаляете веб-часть формы списка по умолчанию. Теперь в добавленной вами настраиваемой форме списка включите в нее все поля, которые каждый сможет редактировать. Последний шаг - заставить форму скрывать эти поля для определенных людей. Давайте установим для них значение по умолчанию Visible = false и переключим этот переключатель, если пользователь разрешил их. Это можно сделать, проверив, является ли текущий пользователь частью указанных групп, или проверив, имеет ли пользователь определенный уровень разрешений, принадлежащий только пользователям этих групп. Вы в основном напишите некоторый код, подобный следующему, я буду использовать проверку для указанной группы в качестве примера.

using (SPWeb web = this.Web)
{
    SPUser currUser = web.CurrentUser;
    string[] listOfGroups = { "Group1Name", "Group2Name", "Group3Name" };
    foreach (string groupName in listOfGroups)
    { 
        if (currUser.Groups.Contains(groupName))
        {
    //Repeat this for each Control, refer to them by their ID. For example, this is for a control with the ID txtTitle.
            txtTitle.Visible = true;
        }
    }
}

Если вы не знаете встроенный код, вам придется написать собственную страницу ASPX с выделенным кодом. Скопируйте EditForm.aspx в новый файл - вы должны сделать это после настройки пользовательской формы списка в соответствии со статьей. Вы также можете создать новую ASPX-страницу с нуля, но убедитесь, что вы включили все необходимые заполнители контента для страниц SharePoint. Теперь страница в настоящее время наследуется от Microsoft.SharePoint.WebPartPages.WebPartPage. Нам нужно создать пользовательский код, который наследуется от этого класса, и изменить страницу, чтобы наследовать этот новый пользовательский код. В пользовательском коде переопределите один из методов OnLoad или OnInit и включите в него проверку прав пользователя, как описано ранее. Скомпилируйте код, разверните его на своем сервере SharePoint, и он должен быть функциональным.

0 голосов
/ 07 июля 2010

Если вы хотите установить скрытые поля или отобразить их в новой форме или отредактировать страницу формы списка ...

Перейти к списку настроек. В расширенных настройках включите «Разрешить управление типами контента»

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

После сохранения снова отключите «Разрешить управление типами контента» в дополнительных настройках ...

Вот так :)))

...