2013-10-15 11 views
0

Я использую WSS 3.0 в своем приложении. Я показываю List как Web-часть DataView. Моя цель состоит в том, чтобы сделать эту веб-страницу видимой для выбранной группы лиц. Поскольку в WSS 3.0 нет возможности для целевой аудитории, я пошел на редактирование разрешений для списка и дал разрешения на чтение только выбранным пользователям. Это не скрывает веб-часть со страницы, а показывает сообщение с доступом к другим пользователям.Скрыть WSS 3.0 Webpart Использование JavaScript

Доступ запрещен. У вас нет разрешения на выполнение этого действия или доступ к этому ресурсу.

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

Я не совсем уверен, как это сделать. Есть идеи? Заранее спасибо!

ответ

0

Я предполагаю, что вы находитесь в ситуации, когда вы можете добавить дополнительные веб-части на страницу и не пытаться напрямую добавить JavaScript в веб-часть DataView. Мое предложение не будет работать на отдельной странице, если Дизайнер добавит другое представление этого списка.

Загрузите пустой .js-файл в свои ресурсы сайта. Добавьте веб-часть редактора содержимого на свою страницу, укажите ее в этом файле. Add JQuery from a provider или разместить его самостоятельно, добавив ссылку в свой файл. Оттуда у вас есть 3 направления работы: во-первых, изучите веб-часть с помощью инструментов разработчика F12 в Internet Explorer, уделяя особое внимание делителям и таблицам с хорошими уникальными идентификаторами, именами или классами, которые помогут решить вашу проблему, если они скрыты. Также следите за идентификатором div или таблицы или ячейки или любым другим, что содержит ваш текст, запрещенный к доступу. Во-вторых, (предполагая, что вы новичок в JQuery), выполните некоторые учебники JQuery, а затем начните играть с выбора вышеуказанных элементов и, скажем, изменения цвета фона. После того, как у вас есть оба из них, вы на 90% там: (попытайтесь) выбрать объект, который будет содержать текст, запрещенный доступом, и если внутреннийHTML присутствует и равен этой строке, тогда установите отображение: none для div или таблиц чтобы скрыть вашу веб-часть. Третий инструмент, который у вас есть, - это редактирование страницы напрямую с помощью SharePoint Designer: вы можете подбрасывать div с выбранным вами идентификатором по любому шаблону xsl:, который может помочь в выборе JQuery.

Прошу прощения, я не могу дать вам конкретный код, так как я не могу его проверить. Если это изменится, я попытаюсь дать более подробный ответ.

Старый ответ с неправильным направлением: Выполняет ли любой из ответов here? В качестве альтернативы, ответ this содержит несколько полезных ресурсов для решения вашей проблемы. Просто измените сообщение на пустую строку.

+0

Спасибо Арон. Цените свой быстрый ответ. Я не хочу настраивать/показывать другое сообщение об ошибке, как это предлагается здесь. Я предпочел бы попытаться скрыть веб-часть с веб-страницы. – Jzf

+0

Редактировать: Сегодня я задерживаю. Сожалею. Да, вы уже спрашиваете, как изменить его с помощью JavaScript. Я собираюсь обновить свой ответ выше. ПРОСТИ! –

0

Благодаря Aron: D

Я нашел идентификатор для веб-части и жёстко его. Он предоставил решение, но я надеялся программным образом извлечь идентификатор, выполнив поиск в файле innerhtml, так как у меня есть несколько веб-частей, которые должны быть скрыты.

Я нашел частичное решение здесь: Hide SharePoint web part using javascript onclick method

Я положил CEWP на странице и добавил следующий скрипт в нем:

<script> 
function hide() 
{ 
    var content = document.getElementById("webpartID").innerHTML; 
    var n = content.search("Access denied. You do not have permission to perform this action or access this resource"); 
    if(n!=-1) 
    {  document.getElementById("webpartID").style.display="none"; 
    } 
} 
_spbodyonloadfunctionnames.push("hide"); 
</script> 

В моем случае, я взял WebPart идентификатор из страницу aspx или источник просмотра для страницы.