Как скрыть поля со страницы нового элемента списка в MOSS 2007? - PullRequest
1 голос
/ 08 июля 2011

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

В списке есть некоторые поля, для которых люди из других команд не нуждаются или не могут предоставить соответствующую информацию. Например, у меня есть столбец для% выполненного, другой столбец, для которого назначен запрос в моей команде, и так далее. Я не хочу, чтобы кто-либо мог вводить значения для любого из этих полей, когда они впервые нажимают кнопку «Создать». Есть ли способ для меня, чтобы скрыть эти конкретные поля? Если не скрывать, просто отключить?

Вещи, которые я пробовал:

Проезд отсюда: http://nickgrattan.wordpress.com/2008/12/02/changing-order-hiding-columns-in-new-edit-forms/ Он говорит вам включить управление типом контента, и это позволяет вам скрывать некоторые столбцы. Однако это полностью скрывает столбцы от всех меню. Я хочу, чтобы эти столбцы редактировались некоторыми конкретными пользователями. Я хочу использовать их на самом деле, но пусть они будут непригодны для внешних пользователей.

Примечание: К сожалению, у меня очень ограниченные инструменты для этой задачи из-за политики компании в отношении интрасети. Я не могу написать код, я не могу использовать дизайнер Sharepoint, не могу загрузить какие-либо сторонние решения, и у нас нет InfoPath. Так что в основном я ограничен веб-интерфейсом и вещами, к которым я могу получить доступ как владелец сайта.

Ответы [ 3 ]

1 голос
/ 10 июля 2011

Использовать SPServices http://spservices.codeplex.com/. Получить текущую группу пользователей, вошедших в систему (вы можете сделать это с помощью SPServies), если пользователь находится в группе с ограниченным доступом, выполнить поля JavaScript и скрыть / отключить.Редактор контента веб-части и написать Javascript.Здесь нет необходимости в SPD.

Обновление:

Вы можете использовать следующую функцию:

function DisableField(title){    

var collection = $('td.ms-formbody span').children();

$(collection).each(function(index,object)
{
    if($(object).attr('title').indexOf(title)>=0)
        {
            $(object).attr('readonly',true);
            $(object).css('background-color','#dcdcdc');

        }

});

}
1 голос
/ 08 июля 2011

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

Вы можете установить опцию «показывать в новой форме» поля в значение false, используя объектную модель, но это не относится к показу ее определенным пользователям.некоторые пользователи и запретить другим изменять страницу с помощью JS и включать их снова, вам, вероятно, потребуется создать собственный элемент управления ListFieldIterator ...

0 голосов
/ 09 июля 2011

Я нашел обходной путь, который хотя и не идеален, но работает достаточно хорошо.Используя первоначальный подход, который я использовал, как отмечалось выше, я установил поля, которые другие пользователи не должны видеть скрытыми.Их нельзя было увидеть ни в каких формах или получить к ним доступ через представления по умолчанию.Затем я создал новое представление «admin», которое представляло собой таблицу данных, и включило все столбцы.Так что теперь я могу видеть и редактировать все поля в представлении на основе таблицы, но они не отображаются в новой форме элемента!Ура!

...