Используйте Web Money - это очень удобно

понедельник, 17 декабря 2007 г.

CSS и Sharepoint.

Ссылки по теме:
Описание для Sharepoint 2007
Описание для Sharepoint 2003
Блог
Поиск в google
Путь: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1049\STYLES\CORE.CSS
Посмотреть таблицу можно в VisualStudio (очень удобно).
Сами стили вытащить довольно трудно, я вытаскивал создавая объекты в дизайнере, просматривая вытащенные объекты (copy paste) через него же + через View Source IE.
Кроме того конечно же просмотр страниц на узлах через дизайнер.
Если разберусь более полно напишу еще.

пятница, 14 декабря 2007 г.

Ошибка при старте рабочего процесса в библиотеке документов при добавлении нового документа.

Здравствуйте!
Решил коротко написать про решение этой проблемки.
Проблема в следующем:
Когда мы цепляем рабочий процесс на создание элемента в списке все ок, после создания элемента РП запускается.
А вот в библиотеке документов РП запускается после загрузки документа, в тот момент когда поля формы еще не заполнены.
Соответсвенно любое обращение рабочего процесса к полям (все пользовательские значения Null) на чтение приводят к ошибке, так же к ошибке приводит и запись, но уже у пользователя, т.к. элемент изменился до того как пользователь сохранил его - происходит конфликт сохранения.
Это конечно баг, но есть простое решение checkin/checkout.
Если установить обязатеельным извлечение документа в библиотеке, РП запустится только после того как пользователь вернет документ, а значит никаких кофликтов сохранения не будет.

Типы содержимого в Sharepoint. (ContentType)

Доброго времени суток!
Итак ссылки:
Блог
Msdn
Msdn2
Типы содержимого в sharepoint это схемы содержимого: начиная со столбца и заканчивая списком.
Итак, для того чтобы наполнить узел необходимым нам содержимым мы должны:
Создать столбцы (описать в фиче или создать в Параметры узла > Коллекция столбцов узла ).
После этого мы создаем типы содержимого Параметры узла > Коллекция типов содержимого узла (или через фичу).
Когда мы создаем тип содержимого мы:
1. Наследуем один из базовых типов содержимого.
2. Добавляем дополнительные столбцы.
Далее в свойствах списка > Параметры > Дополнительные параметры разрешаем управление типами содержимого: Разрешить управление типами содержимого? .
После этого добавляем типы содержимого в список.
Как результат имеем:
1. Список(библиотеку) содержащий различные наборы свойств для разных типов содержимого.
2. Автоматически сгенерированные формы создания, просмотра и изменения элементов для каждого типа содержимого.
3. Возможность запуска "своего" рабочего процесса для каждого типа содержимого.
4. Возможно добавления дополнительных действий в меню элемента уникальных для каждого типа содержимого.
5. Поиск по типу содержимого.
И т.п.
Все это можно деплоить как фичу разработанную в VS.
Часть возможностей можно использовать через веб интерфейс.
Удачи!!!
P.S. Также можно задать и тип списка.

четверг, 29 ноября 2007 г.

Использование activity SendEmail

Добрый день.
В дополнение к предыдущему я хочу добавить код использования SendEmailActivity:
Свойства интуитивно заполняются в Body - Activity=Workflow1, Path=EmailAfterBody, в Activity=Workflow1, Path=EmailAfterHeader в Headers.
Сам метод появляется после двойного клика по activity.
public String EmailAfterBody = default(System.String);

public System.Collections.Specialized.StringDictionary EmailAfterHeader = new System.Collections.Specialized.StringDictionary();

private void EmailAfter_MethodInvoking(object sender, EventArgs e)

{
EmailAfterHeader = new System.Collections.Specialized.StringDictionary();
EmailAfterHeader.Add("To", "name@host.ru");
EmailAfterHeader.Add("Subject", "Subject");
EmailAfterBody = "Body";
}

Удачи.

воскресенье, 25 ноября 2007 г.

Реализация рабочих процессов в Sharepoint 2007(MOSS 2007), разработка рабочих процессов с использованием Sharepoint Designer и Visual Studio 2005

23.11.07 выступал в питерском MCP клубе по этой теме.
Как и обещал выкладываю ссылки на презентацию (в формате pdf) - три основные части по разработке рабочих процессов.
Две части по VS2005:
Часть 1 и часть 2.
Одна по SPD2007:
Часть 3.

вторник, 30 октября 2007 г.

Поиск в Sharepoint. AdvancedSearchBox.

Кратко:
Задумал я сделать поиск по узлу используя вебчасти Sharepoint.
И столкунулся со следующим:
Если делать через фильтры, то соединить можно только один фильтр с одной вьюшкой,
Если AdvancedSearchBox то выбор параметров ограничен стандартным набором.
AdvancedSearchBox - нашел свойство в закладке свойство, там лежит xml схема удалить из нее свойства получилось сразу, а добавить нет,
Нашел вроде как сделать:
http://msdn2.microsoft.com/en-us/library/bb428648.aspx
Столкнулся со след проблемой:
В настройках поиска в общих службах есть "Сопоставления свойств метаданных", в нем я могу создать свой тип метаданных и ассоциировать его с типа данных на узле.
Но в этом списке находятся не все типы данных, часть типов которые я добавлял находятся а часть нет ,
Провел обход содержимого, появились необходимые метаданные.
Итак порядок действий примерно такой:
1. Обходим содержимое семейства узлов.
2. В
"Сопоставления свойств метаданных" создаем необходимые нам "управляемые свойства"
3. Цепляем к ним нужные нам "свойства обхода"
4. Кладем
AdvancedSearchBox на страницу поиска, настраиваем все параметры, и переделываем XML, в пункте "свойства". Удаляем все ненужное сохраняя его структуру, добавляем орпеделения наших "управляемые свойства" с указанием типа и имени подстановки, создаем свой раздел и наполняем его ссылками на определения.
Готово!

Обсуждение темы на GotDotNet
Использование вебчастей Sharepoint - поиск

вторник, 23 октября 2007 г.

Создание узла и управление правами.

Первое создаем подузел
SPSite site = new SPSite((String)url);
SPWeb web = site.OpenWeb();
SPWebTemplate webTemplate = site.GetCustomWebTemplates(1049)[WEB_TEMPLATE_NAME];
web.Webs.Add((String)webUrlName, (String) webName, "", 1049, webTemplate, true, false);
web.Update();
Второе создаем или используем разрешения:
SPWeb newWeb = web.Webs[ (String) webUrlName];
SPRoleDefinition readersRD = readersPermission(newWeb);
SPRoleDefinition readerC = web.RoleDefinitions[GLOBAL_ROLE_READER];
...
private static SPRoleDefinition readersPermission(SPWeb newWeb)
{
SPRoleDefinition readersRD;
readersRD = new SPRoleDefinition();
readersRD.Name = LOCAL_GROUPS_READERS;
readersRD.BasePermissions =
SPBasePermissions.ViewVersions | SPBasePermissions.ViewPages | SPBasePermissions.ViewListItems | SPBasePermissions.ViewFormPages
| SPBasePermissions.UseRemoteAPIs | SPBasePermissions.UseClientIntegration | SPBasePermissions.OpenItems | SPBasePermissions.Open
| SPBasePermissions.CreateAlerts | SPBasePermissions.BrowseUserInfo;
readersRD.Description = DCB.CM.Common.CM_LOCAL_GROUPS_READERS;
newWeb.RoleDefinitions.Add(readersRD);
readersRD = newWeb.RoleDefinitions[readersRD.Name];
readersRD.Update();
return readersRD;
}
Назначаем разрешения:

private static void setPermissionsToAdmins(SPWeb web1, SPWeb newWeb, SPRoleDefinition managersRD, SPRoleDefinition readersRD, SPRoleDefinition adminsRD, SPRoleDefinition readerC)
{
SPGroup adminsG = newWeb.SiteGroups[GLOBAL_GROUPS_ADMINS];
{
SPRoleAssignment ra = new SPRoleAssignment(adminsG);
ra.RoleDefinitionBindings.Add(adminsRD);
newWeb.RoleAssignments.Add(ra);
}
{
SPUser sysUser = web.SiteUsers.GetByID(1073741823);
SPRoleAssignment ra = new SPRoleAssignment(sysUser);
ra.RoleDefinitionBindings.Add(managersRD);
ra.RoleDefinitionBindings.Add(adminsRD);
newWeb.RoleAssignments.Add(ra);
}
newWeb.Update();
}
для списков тоже самое.
Будет время дополню новой инфой.

вторник, 2 октября 2007 г.

Шаблон страницы

Выкладываю пример дизайна страницы под Sharepoint.

Шаблон

Вот положил в архив - файл закачайте на сервер и смотрите через дизайнер.

пятница, 14 сентября 2007 г.

пятница, 31 августа 2007 г.

Первая запись.

Доброго времени суток!
Это мой первый опыт создания блога.
Так сказать - накопилось, и я решил создать блог. где я смогу поделиться своим опытом и мнением с теми кому это может быть интересно, с теми кто найдет эту страницу через Google.
Удачи!