четверг, 29 декабря 2011 г.

Обновление фотографии в профиле другого сотрудника

Ура, проблема, наконец-то решена в декабрьском CU 2011.

Проблема была с июньского CU а в октябрьском CU переросла в шоу-стопер. Нельзя было обновить даже свою фотографию:

image

Ваш личный сайт не содержит библиотеку рисунков “Рисунки”

(Your personal site does not contain a picture library named 'Pictures')

вторник, 27 декабря 2011 г.

Использовать ли disable-output-escaping для вывода неформатированного текста?

При выводе с помощью XSL даже обычных строковых столбцов, таких как “Название” лучше использовать опцию disable-output-escaping (например, <xsl:value-of select="@Title" disable-output-escaping="yes"/>). Иначе могут быть проблемы при выводе некоторых символов. Например, если название содержит текст

РусГидро несогласно с позицией прокуратуры Карачаево-Черкесской Республики о нарушениях при строительстве "Зеленчукской ГЭС"

, он будет отображаться так:

РусГидро несогласно с позицией прокуратуры Карачаево-Черкесской Республики о нарушениях при строительстве &quot;Зеленчукской ГЭС&quot;

среда, 7 декабря 2011 г.

Вставка флэш-объекта в страницу SharePoint

При настройках по умолчанию если вы размещаете swf-файл в библиотеке SharePoint, а затем в теге embed включаете его в страницу, он не отображается.

Для решения проблемы в общих параметрах веб-приложения, в котором лежит библиотека с swf-файлом, нужно настроить параметр “Обработка файлов в браузере”: ”Нестрогая”.

среда, 30 ноября 2011 г.

Проверка разрешений в xsl

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

ddwrt:IfHasRight([PERMISSION CODE])

Например,

<xsl:if test="ddwrt:IfHasRights(4)">
<a href="..." >Edit Item</a>
< /xsl:if>

Взято из статьи http://shbdev.wordpress.com/2010/06/28/how-to-conditionaly-format-xslt-in-data-view-based-on-user-permissions-ifhasrights/.

Там же можно найти все коды разрешений.

Ошибка “Доступ запрещен” для анонимных пользователей

После редактирования XSL в веб-части XsltListViewWebPart у анонимных пользователей возникает ошибка:

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

Причины такого поведения пока что мне не известны.

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

Настройка простого поиска

При настройках коллекции сайта по умолчанию поиск в SharePoint Server выполняется по контекстной области. Например, если Вы находитесь в списке, поиск осуществляется в списке.

Иногда это поведение не является ожидаемым и удобным для пользователя. Например, если вы строите Интернет-сайт. Более предпочтительным поведением служит поиск по всему семейству сайтов.

Логично было бы предположить, что для этого необходимо обязательно создавать сайт центра поиска и настроить в параметрах коллекции сайтов использование настраиваемых областей поиска. Это в свою очередь вызывает необходимость разработки отдельной главной страницы (master page), если интерфейс системы должен быть выполнен в корпоративном стиле.

Оказывается, все это не обязательно. Достаточно в настройках поиска на семействе сайтов указать “Не показывать раскрывающийся список областей, по умолчанию использовать конечную страницу результатов”:

image

После выполнения данных настроек, если пользователь обращается к поиску даже из списка – поиск будет выполнен по всему семейству сайтов.

вторник, 1 ноября 2011 г.

Возможное сотрудничество

Друзья, если Вы не равнодушны к SharePoint, людям и деньгам, Вы тот, кого мы (компания Контек) ищем. Можете прислать свое резюме на электронный адрес info/conteq.ru и мы обсудим с Вами возможности сотрудничества. Можете писать комментариями к посту или на скайп asapozhkov.

Добавление иллюстраций на страницы портала

Сравним варианты иллюстрирования страниц портала.

В поле “Многострочный текст” есть возможность добавлять файлы картинок непосредственно из редактора:

image

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

Тип поля “Гиперссылка или рисунок” вообще не предоставляет удобных возможностей для выбора картинки. Необходимо просто ввести url-адрес картинки в текстовое поле:

image

Поле “Изображение страницы” имеет ряд преимуществ

image

image

недостатки:

1. Можно добавить в один список только один раз

2. Требует лицензии “SharePoint Server”

Далее привожу более общее сравнение различных способов:

image

суббота, 8 октября 2011 г.

Ошибка InfoPath "Не удалось завершить операцию"

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

image

image

Это известный баг InfoPath. Для обхода просто создайте пустое семейство сайтов в корне веб-приложения.

среда, 5 октября 2011 г.

Ошибка 503 после установки SharePoint

Симптомы:

1. При установке SharePoint при попытке открыть центр администрирования наблюдается ошибка 503:

image

2. Пул центра администрирования остановлен:

image

3. В журнале Windows ошибка 5059: Пул приложений SharePoint Central Administration v4 был отключен. Служба активации Windows (WAS) обнаружила ошибку при запуске рабочего процесса для обслуживания пула приложений.

Возможная причина: отсутствие у учетной записи фермы разрешения на вход в качестве пакетного задания.

Решение: Запускаем gpedit.msc, раскрываем соответствующий раздел политики и выясняем, почему группа IIS_IUSRS не попала в эту политику:

image

вторник, 27 сентября 2011 г.

Дата и время на страницах SharePoint


Часто на портале требуется отобразить текущие дату и время. Например, на скриншоте портала всегда будет привязка содержимого к определенной дате.

Чтобы это сделать, в нужном месте (например, на главной странице, если требуется отображать дату на всех страницах) добавьте следующий код:

<div id="current-time"/></div>

<SCRIPT type=text/javascript>
                                                           function zDate() {
                                                              pad = function (val, len) {
                                                                                val = String(val);
                                                                                len = len || 2;
                                                                                while (val.length < len) val = "0" + val;
                                                                                return val;
                                                                        };
                                                              var cur = new Date();
                                                              var dweek = [ 'воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота' ];
                                                              var nmonth = [ 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' ];
                                                              var t = pad(cur.getHours()) +':'+ pad(cur.getMinutes()) +':'+ pad(cur.getSeconds());
                                                              var d = cur.getDate() + ' ' + nmonth[(cur.getMonth())] +' ' + cur.getFullYear();
                                                              var out = d +', '+ dweek[cur.getDay()];
                                                              return out;
                                                           }
                                                           document.getElementById('current-time').innerHTML = zDate();

</SCRIPT>

Получаем такой текст:

27 сентября 2011, вторник

Аналогично, можно отобразить текущее время.

понедельник, 26 сентября 2011 г.

Печать страниц SharePoint

При печати страниц SharePoint многие элементы разметки не печатаются или выглядят по-другому.

Например, левая колонка и вкладки ленты не отображаются.

Страница на экране:

image

Та же страница распечатанная:

image

Как это работает и как подготовить верстку страниц так, чтобы она печаталась максимально информативно?

Разработчики SharePoint используют для этого стили в документе corev4.css:

@media print{
.ms-globallinks,.ms-siteaction,.ms-areaseparatorcorner,.ms-titlearealeft,.ms-searchform,.ms-banner,.ms-buttonheightwidth,
.ms-areaseparatorright,.ms-titlearearight,.ms-rightareacell,.ms-leftareacell,.ms-areaseparatorleft{
display:none;
}

@media print{
body #s4-ribbonrow{
display:none;
}

Соответственно, рекомендую использовать подобные стили. Как Вы поняли, можно не только скрывать элементы, но и применять любые другие приемы стилизации.

четверг, 1 сентября 2011 г.

SharePoint и русские доменные имена

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

image

Этот адрес можно узнать в Internet Explorer:

image

UPD 14.09.2011:

1. Закодированный адрес называется punycode

2. Его можно сгенерить с помощью многочисленных сервисов. Например, тут.

2. Если требуется, чтобы сайт в IIS был не безымянным (т.е. отвечал не на все заголовки), то в привязках сайта необходимо указать адрес в незакодированном виде:

image

пятница, 12 августа 2011 г.

Выполнение действий из формы InfoPath

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

Создать логическое поле, соответствующее нажатию кнопки. По нажатию кнопки заполнять данное поле положительной переменной, отправлять форму в библиотеку и снова возвращать отрицательное значение переменной.

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

воскресенье, 31 июля 2011 г.

Симулирование действий ленты

Если Вам по каким-то причинам потребовалось скрыть в дизайне страницы ленту действий, Вам наверняка потребуется продублировать определенные действия своими кнопками. Это можно сделать, например, так:

<Sharepoint:SPSecurityTrimmedControl runat="server" PermissionsString="DeleteListItems">
    <div style="text-align:right">
        <input class="ms-ButtonHeightWidth" type="button" value="Удалить" onclick="document.getElementById('Ribbon.ListForm.Display.Manage.DeleteItem-Medium').click();" />
    </div>
</Sharepoint:SPSecurityTrimmedControl>

Результат может выглядеть, например, так:

image

вторник, 19 июля 2011 г.

Установка Office Web Apps на DC

В одно-серверной установке возникает проблема при открытии doc-ументов в приложении Office Web Apps:

image

В журнале SharePoint такая ошибка:

07/19/2011 21:24:26.47     w3wp.exe (0x09FC)                           0x0784    Office Web Apps                   Office Viewing Architecture       vjzo    Medium      Librarian.SetCompleted(Fa31755c3db8c4d148fbb52fde2ec789em6a6be5a7e1244184a55b00e4d740b90bmcc39281b966f4e5e86aa4981bae150c4m, Silverlight, docdata.xml) - status = ConversionError    3fc56411-2af6-46c1-9b24-11358a04648e

Вероятно, вы забыли проделать следующие шаги, необходимые при развертывании Web Apps на одном сервере с контроллером домена:

1. В PowerShell запустить команды

$e = Get-SPServiceApplication | where {$_.TypeName.Equals("Word Viewing Service Application")}
$e.WordServerIsSandboxed = $false
$e.WordServerIsSandboxed

А для корректной работы с PowerPoint документами еще и

Get-SPPowerPointServiceApplication | Set-SPPowerPointServiceApplication -EnableSandboxedViewing $false
Get-SPPowerPointServiceApplication | Set-SPPowerPointServiceApplication -EnableSandboxedEditing $false

2. In the server’s c:\windows\system32\inetsrv\config\applicationHost.config
Add the line below in the end of the dynamicTypes.
< add mimeType=”application/zip” enabled=”false” />

При вставке в файл обязательно перепечатайте с клавиатуры кавычки.

3. iisreset

image

понедельник, 18 июля 2011 г.

Портал Контек

Наш портал

 

Портал Контек

Дочерние сайты в раскрывающихся пунктах верхнего меню

Имейте ввиду следующие забавные ограничения, если Вы хотите, чтобы в верхнем меню выпадали дочерние сайты:

1. На сайте второго уровня нужно обязательно выбрать галку “Показать дочерние сайты” и в параметрах глобальной структуры навигации и в параметрах текущей структуры навигации:

image

2. При упорядочивании текущей навигации не делайте их скрытыми или подчиненными папкам:

image

В обоих случаях сайт не будет выпадать в верхнем меню.

Если вы все правильно сделали, получаете морковку спереди:

image

суббота, 16 июля 2011 г.

Осветление ленты

По умолчанию область вкладок ленты имеет темную окраску:

image

“Перекраска” в светлые тона – дело не двух минут. Особенно, если пытаться это делать “подбором” стилей, без использования справочных статей. Для экономии Вашего времени привожу css-стили, которые Вы можете использовать

body #s4-ribbonrow {
    /* [ReplaceColor(themeColor:"Light2",themeShade:"1.1")] */ background-color:#ffffff;
}
body #s4-ribboncont {
    /* [RecolorImage(themeColor:"Light2-Lighter",includeRectangle:{x:0,y:589,width:1,height:20})] */ background:url("/_layouts/images/bgximg.png") repeat-x -0px -565px;
}
.ms-cui-tt-a, .ms-cui-tt-a:hover
{
    color: black !important;
}
.ms-cui-cg{
    border-color: white;
}
.ms-cui-cg-db .ms-cui-cg-t
{
    color: #005e9c;
}
.ms-cui-cg-lb .ms-cui-cg-t
{
    color: #55c1e1;
}
.ms-cui-cg-tl .ms-cui-cg-t
{
    color: #14afcb;
}
.ms-cui-cg-or .ms-cui-cg-t
{
    color: #dd8a00;
}
.ms-cui-cg-gr .ms-cui-cg-t
{
    color: #56c553;
}
.ms-cui-cg-mg .ms-cui-cg-t
{
    color: #bc1b7b;
}
.ms-cui-cg-yl .ms-cui-cg-t
{
    color: #faac32;
}
.ms-cui-cg-pp .ms-cui-cg-t
{
    color: #6823b4;
}

В результате получаем светлую ленту:
image

среда, 6 июля 2011 г.

Не редактируется навигация при настроенной главной странице

Если у Вас для сайта задана собственная главная страница (master page), и при редактировании навигации изменения не сохраняются, скорее всего вы столкнулись с той же проблемой, что и я.

В главной странице для тега form не задан атрибут onsubmit="if (typeof(_spFormOnSubmitWrapper) != 'undefined') {return _spFormOnSubmitWrapper();} else {return true;}"

понедельник, 4 июля 2011 г.

Подсветка выбранного пункта меню

Для того, чтобы в меню быстрого запуска был выделен текущий раздел

image

В параметрах навигации необходимо указывать в пункте меню полный адрес страницы:

image

Если указывать просто адрес списка (например,/my/personal/sapozhkov/Lists/List2), то по пункту меню можно будет перейти на список, но пункт меню при этом не будет “подсвечен”. Параметры, передаваемые в URL-адресе, не влияют на “подсветку”. Если указывать просто адрес узла, то этот элемент тоже подсвечивается.

Это, конечно, создает некоторые трудности, учитывая, что

1. Каждое представление списка имеет свою страницу.

2. При настройке пункта меню русские названия страниц удаляются. Например, при указании адреса /sites/demo/company/DocLib1/Домашняя.aspx автоматически будет сохранен адрес /sites/demo/company/DocLib1

пятница, 1 июля 2011 г.

Настройка RBS для SharePoint

Для того, чтобы хранение большого объема данных, размещаемых на портале, меньше влияло на производительность и ограничение объема базы данных в SQL сервер, рекомендуется настроить RBS.

В принципе, все выполняется в соответствии с данной статьей Technet.

Только когда включаете на экземпляре FILESTREAM, не забудьте разрешить доступ к файловой системе:

image

Иначе при загрузке файлов получите ошибку, а в журнале приложений “Для компонента FILESTREAM не включен доступ к файловой системе”

четверг, 30 июня 2011 г.

Не работает поиск SharePoint без домена

При развертывании фермы SharePoint 2010 вне домена на поисковые запросы выдается ошибка

image

Исключение, вызванное внутренней ошибкой сервера

В журнале SharePoint можно найти следующую ошибку:

EnumerateQueryComponents returned an error after enumerating 0 components.

На странице конфигурации поиска такая картина:

image

Единственное найденное обходное решение - установка фермы в автономном режиме:

image

вторник, 28 июня 2011 г.

Переименование области поиска “Люди”

Иногда требуется переименовать данную область поиска. На моей практике такая необходимость возникла в связи с тем, что изначально на ферме была установлена английская версия SharePoint и данная область называлась “People”, что для русскоязычных пользователей было не удобно.

Если просто так переименовать область и дождаться ее обновления, при ее использовании возникнет ошибка

“Указанная в запросе область не существует” (“Scope in your query does not exist”).

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

Шаг 1. Создайте новую общую копию области

В настройках приложения-службы поиска выбрать “Области”.

В контекстном меню выбрать “Создать общую копию”:

image

Перейти к изменению свойств вновь созданной области:

image

Нажать “Изменить параметры области”.

Ввести новое название (например, “Сотрудники”) и нажать Ок.

Перейти по ссылке “Администрирование поиска”

Запустить обновление области:

image

Появится статус обновления:

image

Дождаться, пока область полностью не обновится:

image

Шаг 2. Применить область в настройках семейства сайтов

В параметрах корневого сайта семейства сайтов выбрать “Области поиска”.

Выбрать “Группы отображения”

Нажать “Раскрывающийся список поиска”

Напротив области “Люди” убрать галочку, а напротив “Сотрудники” – поставить. Нажать ОК. Через некоторое время (менее чем через минуту) на страницах семейства сайтов выпадающее меню областей обновляется:

image

Шаг 3 (опциональный, при использовании расширенных центров поиска). Обновление вкладок в настройках расширенного центра поиска.

В центре поиска перейти к просмотру всего контента сайта:

image

Перейти к списку “Вкладки в результатах поиска” и переименовать элемент “Люди” в “Сотрудника”

То же самое сделать в списке “Вкладки на страницах поиска”.

Теперь на страницах запроса мы видим это:

image

А на страницах результатов – это:

image

Отражение функционала Exchange на портале

Для того, чтобы отобразить сервисы из Exchange в интерфейсе SharePoint, можно воспользоваться веб-частью “Средство просмотра страниц” и страницами OWA, предоставляющие соответствующий функционал.

Добавляем на страницу веб-часть:

image

Вот пара примеров адресов, которые можно указать в параметрах этой веб-части:

Адресная книга - https://<exchange_server_name>/owa/?ae=Dialog&t=AddressBook

Календарь определенного пользователя - https://<exchange_server_name>/owa/<SMTP_address>/?cmd=contents&module=calendar&view=Weekly

Более подробно о том, какие сервисы можно отобразить, читайте статью Technet.

В результате на портале отобразится, например, корпоративная адресная книга:

image

Для использования данного метода необходимо соблюсти следующие условия:

  1. Exchange OWA должен быть доступен пользователям портала.
  2. Exchange должен обладать встроенной Windows-аутентификацией, чтобы пользователям не приходилось дополнительно авторизоваться

Разные представления для корня библиотеки и для папок

Как и в предыдущих версиях SharePoint, можно настроить разные представления на отображение корня библиотеки и на отображение внутренностей папок. Сделать это можно следующим образом.

В библиотеке включаем управление типами контента:

image

Настраиваем представление, которое должно отображаться в корне. Указываем следующие параметры для него:

image

image

Создаем новое представление и при создании указываем следующие параметры:

image

image

Теперь при открытии корня библиотеки будет отображаться основное представление:

image

А при переходе в дочернюю папку - новое представление:

image

Можно абсолютно по-разному настроить состав отображаемых столбцов, сортировку, группировку, фильтрацию и т.д.