четверг, ноября 27, 2008

Локализация Windows Live Authentication (continued)

После некоторых упражнений с Sharepoint (по-правде, в упражнения входил полный снос и повторная установка) обнаружился ещё один недостаток - пропала группа Authenticated Live Users (аналог группы NT AUTHORITY\authenticated users для Windows-аутентификации). Понятно, что она должна создаваться провайдером, но когда и как его подтолкнуть на этот подвиг, выяснить не удалось. А без такой группы настраивать разрешения для каждого пользователя – ужасная затея…

В итоге добавил процедуру формирования на каждом узле, где предполагается использование LiveID-аутентификации, группы с именем вида <имя узла> - Authenticated Live Users. При логине или изменении данных пользователи заносятся в эту группу.

Для облегчения жизни добавил скрипт _config.cmd с инструкцией по настройке в файле README_ru.txt.

Результаты можно скачать отсюда (установочный пакет) и отсюда (целиком проект с исходными текстами).


Technorati Tags: , ,

среда, ноября 12, 2008

Локализация Windows Live Authentication

На codeplex Lawrence Liu размещено отличное решение по аутентификации на Sharepoint-сайтах с использованием Windows LiveID. Практически готовое к использованию решение и, если не обращать внимание на мелкие неудобства, его можно сразу и использовать.

Неудобства заключаются, во-первых, в неправильной работе редактора профиля LiveID, подключённого через CustomAction к меню пользователя (введённые данные не передаются в свойства пользователя узла и после закрытия редактора пользователь оказывается в корневом узле). Во-вторых, решение явно разработано без учёта использования на системах с неанглийской локализацией (все формы/меню на английском, а использовать узел с русской, например, локализацией в качестве служебного, просто не получается).

Для исправления недостатков проведён анализ предоставляемого кода и исправлены досадные ошибки (неверная привязка EventHandler’а, к примеру). Жёсткая привязка к английской локализации устранена заменой в двух операторах

SPListTemplate template = web.ListTemplates["Custom List"];
SPList list = sweb.Lists["User Information List"];

использования английских имён списков и шаблонов на вызовы методов, не зависящих от локализации. Кроме того, заменено использование list.Fields["Title"] на list.Fields[SPBuiltInFieldId.Title]. В результате решение стало работать и на узлах с русской локализацией.

Перенаправление на корневой узел исправлено добавлением адреса контекстного узла в описание CustomAction:

<UrlAction Url="~site/_layouts/liveinfo.aspx"/>

Средства для локализации решения обнаружились в блогах Mikhail Dikov, Maxime Bombardier и Jan Tielens. В aspx-формах и XML-описаниях текстовые константы заменены ссылками на строки в ресурсном файле LiveIDAuth.<culture>.resx. Нетривиальным, как выяснилось, является размещение ресурсов для использования в разных объектах. Так, для Feature-объектов, размещённых в папке \12\TEMPLATE\FEATURES\WindowsLiveAuthenticationSettings, ресурс должен находиться в папке \12\Resources (с использованием ссылок вида $Resources:LiveIDAuth,varName) или в папке 12\TEMPLATE\FEATURES\WindowsLiveAuthenticationSettings\Resources\ с именем Resources.<culture>.resx (с использованием ссылок вида $Resources:varName).

Для aspx-форм ресурс должен находиться в папке App_GlobalResources web-приложения.

В итоге в wsp-пакет пакет помещаются две копии ресурса с разными именами в разные папки (WindowsLiveAuthenticationSettings\Resources\Resources.resx и Config\Resources\LiveIDAuth.resx), а командный файл для установки дополнен командой
stsadm -o CopyAppBinContent,
копирующей ресурсы в папки App_GlobalResources веб-приложений.

Продолжение истории - здесь.

Результаты можно скачать отсюда (установочный пакет) и отсюда (целиком проект с исходными текстами).

Technorati Tags: , ,

воскресенье, ноября 02, 2008

База знаний на шаблоне "Блог"

Пытался на базе шаблона “блог” сделать узел для работы со статьями. Статьи от “записей” блога отличаются довольно мало, поэтому была надежда малыми силами (средствами WSS и, м.б., SPD) привести узел к нужному состоянию.smile_thinking

Добавил к списку "Записи"(Posts) поле "Автор статьи", изменил параметры веб-частей (поля запроса, группировка, сортировка) на страницах default.aspx и Post.aspx. Всё легко прошло, не удалось только сделать нормальную группировку по авторам (группировка-то получилась, но на страницу при этом мимо всяких веб-частей и зон лепится текст, до управления выводом которого простыми средствами добраться не удалосьthumbs_down). Пришлось ограничиться сортировкой по автору и названию, что, впрочем, и не так уж и плохо.

Засада ждала на странице Category.aspx, показывающей список с фильтром по категориям. Очень быстро выяснилось, что страница очень легко портится простым изменением состава полей запроса данных – после этого не показывается никаких результатов (или все сразу, в зависимости от настроек фильтра в запросе). При этом выяснилось, что инвалидность страницы – 1-й степени (работоспособность не восстанавливается никакими доступными средствами). Попутно обнаружилось, что стандартные средства связи веб-частей не используются, а сама фильтрация закопана где-то в коде.smile_angry

В итоге ничего не оставалось кроме действий по учебнику – связал две веб-части стандартным способом и всё заработало.smile_nerd Внешний вид, конечно, похуже… Но в итоге даже SPD не понадобился.

Technorati Tags: ,