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

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

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

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

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. Например, отправка электронного сообщения. Для выполнения подобных действий можно использовать следующий способ.

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

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