Ссылки по теме:
Описание для 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.
Кроме того конечно же просмотр страниц на узлах через дизайнер.
Если разберусь более полно напишу еще.
понедельник, 17 декабря 2007 г.
пятница, 14 декабря 2007 г.
Ошибка при старте рабочего процесса в библиотеке документов при добавлении нового документа.
Здравствуйте!
Решил коротко написать про решение этой проблемки.
Проблема в следующем:
Когда мы цепляем рабочий процесс на создание элемента в списке все ок, после создания элемента РП запускается.
А вот в библиотеке документов РП запускается после загрузки документа, в тот момент когда поля формы еще не заполнены.
Соответсвенно любое обращение рабочего процесса к полям (все пользовательские значения Null) на чтение приводят к ошибке, так же к ошибке приводит и запись, но уже у пользователя, т.к. элемент изменился до того как пользователь сохранил его - происходит конфликт сохранения.
Это конечно баг, но есть простое решение checkin/checkout.
Если установить обязатеельным извлечение документа в библиотеке, РП запустится только после того как пользователь вернет документ, а значит никаких кофликтов сохранения не будет.
Решил коротко написать про решение этой проблемки.
Проблема в следующем:
Когда мы цепляем рабочий процесс на создание элемента в списке все ок, после создания элемента РП запускается.
А вот в библиотеке документов РП запускается после загрузки документа, в тот момент когда поля формы еще не заполнены.
Соответсвенно любое обращение рабочего процесса к полям (все пользовательские значения Null) на чтение приводят к ошибке, так же к ошибке приводит и запись, но уже у пользователя, т.к. элемент изменился до того как пользователь сохранил его - происходит конфликт сохранения.
Это конечно баг, но есть простое решение checkin/checkout.
Если установить обязатеельным извлечение документа в библиотеке, РП запустится только после того как пользователь вернет документ, а значит никаких кофликтов сохранения не будет.
Ярлыки:
Sharepoint,
workflow
Типы содержимого в Sharepoint. (ContentType)
Доброго времени суток!
Итак ссылки:
Блог
Msdn
Msdn2
Типы содержимого в sharepoint это схемы содержимого: начиная со столбца и заканчивая списком.
Итак, для того чтобы наполнить узел необходимым нам содержимым мы должны:
Создать столбцы (описать в фиче или создать в Параметры узла > Коллекция столбцов узла ).
После этого мы создаем типы содержимого Параметры узла > Коллекция типов содержимого узла (или через фичу).
Когда мы создаем тип содержимого мы:
1. Наследуем один из базовых типов содержимого.
2. Добавляем дополнительные столбцы.
Далее в свойствах списка > Параметры > Дополнительные параметры разрешаем управление типами содержимого: Разрешить управление типами содержимого? .
После этого добавляем типы содержимого в список.
Как результат имеем:
1. Список(библиотеку) содержащий различные наборы свойств для разных типов содержимого.
2. Автоматически сгенерированные формы создания, просмотра и изменения элементов для каждого типа содержимого.
3. Возможность запуска "своего" рабочего процесса для каждого типа содержимого.
4. Возможно добавления дополнительных действий в меню элемента уникальных для каждого типа содержимого.
5. Поиск по типу содержимого.
И т.п.
Все это можно деплоить как фичу разработанную в VS.
Часть возможностей можно использовать через веб интерфейс.
Удачи!!!
P.S. Также можно задать и тип списка.
Итак ссылки:
Блог
Msdn
Msdn2
Типы содержимого в sharepoint это схемы содержимого: начиная со столбца и заканчивая списком.
Итак, для того чтобы наполнить узел необходимым нам содержимым мы должны:
Создать столбцы (описать в фиче или создать в Параметры узла > Коллекция столбцов узла ).
После этого мы создаем типы содержимого Параметры узла > Коллекция типов содержимого узла (или через фичу).
Когда мы создаем тип содержимого мы:
1. Наследуем один из базовых типов содержимого.
2. Добавляем дополнительные столбцы.
Далее в свойствах списка > Параметры > Дополнительные параметры разрешаем управление типами содержимого: Разрешить управление типами содержимого? .
После этого добавляем типы содержимого в список.
Как результат имеем:
1. Список(библиотеку) содержащий различные наборы свойств для разных типов содержимого.
2. Автоматически сгенерированные формы создания, просмотра и изменения элементов для каждого типа содержимого.
3. Возможность запуска "своего" рабочего процесса для каждого типа содержимого.
4. Возможно добавления дополнительных действий в меню элемента уникальных для каждого типа содержимого.
5. Поиск по типу содержимого.
И т.п.
Все это можно деплоить как фичу разработанную в VS.
Часть возможностей можно использовать через веб интерфейс.
Удачи!!!
P.S. Также можно задать и тип списка.
Ярлыки:
Типы содержимого,
Sharepoint
четверг, 29 ноября 2007 г.
Использование activity SendEmail
Добрый день.
В дополнение к предыдущему я хочу добавить код использования SendEmailActivity:
Свойства интуитивно заполняются в Body - Activity=Workflow1, Path=EmailAfterBody, в Activity=Workflow1, Path=EmailAfterHeader в Headers.
Сам метод появляется после двойного клика по activity.
Удачи.
В дополнение к предыдущему я хочу добавить код использования 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.
Как и обещал выкладываю ссылки на презентацию (в формате pdf) - три основные части по разработке рабочих процессов.
Две части по VS2005:
Часть 1 и часть 2.
Одна по SPD2007:
Часть 3.
Ярлыки:
workflow
вторник, 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 - поиск
Задумал я сделать поиск по узлу используя вебчасти 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();
}
для списков тоже самое.
Будет время дополню новой инфой.
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.
Удачи!
Это мой первый опыт создания блога.
Так сказать - накопилось, и я решил создать блог. где я смогу поделиться своим опытом и мнением с теми кому это может быть интересно, с теми кто найдет эту страницу через Google.
Удачи!
Подписаться на:
Сообщения (Atom)