Создание своего типа контента для SharePoint

В Microsoft SharePoint Foundation 2010 тип контента представляет собой повторно используемую коллекцию параметров, которые можно применить к определенной категории контента. Типы контента обеспечивают централизованное управление метаданными и поведением типов документов, элементов и папок с возможностью повторного использования параметров.

Меня интересовал этот вопрос в рамках Activity CreateTaskWithContentType, который позволят использовать конкретный тип контента. Подробнее про тип контента можно на msdn почитать, здесь же чисто практическую часть хочу рассмотреть.

Создание своего типа контента

Открываем Visual Studio (я использую Visual Studio 2010) — Открываем “File Menu” — Выбираем “New Project” — Выбираем “Visual Studio Solutions” — Выбираем “Blank Solution” — Выбираем местоположение: папка FEATURES вашего SharePoint Server У меня это: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\

Create Blank Solution

Создание файла Custom Content Type

Добавляем новый элемент к проекту (Правой кнопкой мыши по проекту -> Add New Item ) — Выбираем “XML File” — Жмём “Add”

Add Custom Content Type

Далее, собственно добавляем элементы в созданный xml файл.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <ContentType ID="0x010801004B927EE7D7A34C3C9A264244421E7666"
                            
      Name="Согласование"
      Group="Согласование"
      Description="Тип контента для задания согласования"
      Version="0"
      Hidden="FALSE">
    <FieldRefs>
      
    </FieldRefs>
    <XmlDocuments>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
        <FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
          <New>_layouts/AgreementTaskEditForm/TaskEditForm/TaskEditForm.aspx</New>
          <Display>_layouts/AgreementTaskEditFormTaskEditForm/TaskEditForm.aspx</Display>
          <Edit>_layouts/AgreementTaskEditForm/TaskEditForm/TaskEditForm.aspx</Edit>
        </FormUrls>
      </XmlDocument>
    </XmlDocuments>
  </ContentType>
</Elements>

ID — уникальный идентификатор создаваемого типа контента.

— Должен наследоваться от одного из стандартных типов контента. Полный список можно глянуть на msdn. В моём случае необходим тип контента для задания, следовательно ID для моего типа контента будет начинаться с 0x010801.

— Необходимо добавить ещё два нуля.

— Далее добавляем сгенерированный новый GUID. В VS в разделе Tools можно создать.

Name = Имя вашего типа контента. Group = группа/коллекция, в которую будет включён ваш тип контента. Можно выбрать из существующих, или новый создать. Description = описание для вашего типа контента. Version = версия. Hidden = True/False, если хотите дать возможность юзерам видеть ваш тип контента.

FieldRefs — поля, которые вы хотите, чтобы были доступны. Мне было достаточно стандартных полей, который есть в базовом типе контента. Если же хотите что-то добавить своё, то ознакомьтесь со списком возможных атрибутов.

FormUrls — пути к соответствующим формам. В моём случае я использовал форму, создание которой описал в статье Create the Workflow Task Edit Form.

Создание файла Custom Columns

Файл нужен для описания столбцов вашего типа контента. Если вы никаких новый полей не добавляете, а используете лишь базовые, то xml файл будет без элементов.

Добавляем новый элемент к проекту (Правой кнопкой мыши по проекту -> Add New Item ) — Выбираем “XML File” — Жмём “Add”

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
</Elements>

В моём случае не используются никакие новые столбцы, поэтому файл пустой.

Создание файла Feature.xml

Feature.xml — файл-обёртка для вашего типа контента. Этот файл описывает элементы вашего типа контента. Это — то, где Вы указываете на Элементы Особенности (то есть, Файлы, которые определяют Ваш Таможенный Тип контента и любые Таможенные Области), так, чтобы SharePoint знал, где найти их. Я буду говорить о Таможенном Типе контента и Таможенных Областях более через мгновение.

Как и раньше, добавляем новый xml файл к проекту с именем Feature.xml.

<?xml version="1.0" encoding="utf-8"?>
<Feature  Id="A56D38BF-6574-44F3-8E6D-888884C07C0B"
          Title="Согласование"
          Description="Тип контента для задания согласования"
          Version="2.0.0.0"
          Scope="Site"
          xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementManifest Location="AggrementlTaskColumns.xml" />
    <ElementManifest Location="AgreementTaskContentType.xml" />
  </ElementManifests>
  <Properties>
    <Property Key="GloballyAvailable" Value="true" />
  </Properties>
</Feature>

ID — уникальынй идентификатор. Генерируем с помощью утилиты VS. Key=GloballyAvailable и Value=true показывают, что элемент будет доступен везде.

Сохранение и развёртывание

Необходимо сохранить все созданные файлы. Убедитесь, что они создались именно там, где необходимо. Папка с проектом будет выглядеть как-то так:

Content Type Folder

Далее необходимо использовать утилиту STSADM.exe:

— Откройте консольку (cmd). Важно: запускайте под админом — Задайте путь к STSADM.exe. Что-то вроде C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN

Список всех доступных команд можно найти тут.

— Необходимо установить: stsadm.exe -o installfeature -name AgreementTaskFeature Примечание: для удаление: stsadm -o uninstallfeature -name AgreementTaskFeature -force — Далее необходимо активировать: stsadm -o activatefeature -name AgreementTaskFeature -url http://localhost Примечание: для деактивации: stsadm -o deactivatefeature -name AgreementTaskFeature -url http://localhost -force

Создание своего типа контента в Visual Studio 2010

В VS 2010, можно сразу выбрать тип проекта ContentType во вкладке проектов SharePoint->2010. Весь проект будет состоять всего из 1 файла Elements.xml, содержание которого полностью идентично содержанию файла AgreementTaskContentType.xml, описанного выше.

Как видите, есть преимущество использования более новой версии среды разработки (:

Независимо от способа, после публикации типа контента, можно убедиться в его наличии в админке SharePoint во вкладке Параметры сайта->Коллекции->Типы контента сайта