Как стать автором
Обновить

Делаем SharePoint Web Part используя xml/xsl

Время на прочтение6 мин
Количество просмотров6.7K
В этой статье я расскажу, как сделать SharePoint WebPart, используя блокнот используя только xml и xsl.

Про разработку web part-ов уже писалось ранее, там же писалось, зачем, собственно, они нужны: habrahabr.ru/blogs/sharepoint/57992

В данной статье мы создадим WebPart, который просто покажет какое-то сообщение. Сам по себе он не информативен и сомнителен, как пример, но задаче показать общий механизм вполне соответствует.


Что нужно


Не так много:
1. Доступ к MS SharePoint services 3.0 и возможность редактировать страницы с веб-партами (для опытов)
2. XML/text редактор

Зачем xml/xsl?


Основное преимущество этого мазохизма — легкая установка.
Что НЕ НАДО делать:
Не надо никуда класть сборку
Не надо регистрировать сборку где-либо
Не надо править какие-либо конфиги

Установка таких web-part-ов легко производится, используя только Web Interface SharePoint-а.

Как это сделать


Процесс будет описан кратенько и без излишних подробностей.
Итак, приступим.
Создание .webpart файла

Открываем ваш любимый XML редактор (юзаю VS 2008) и создаем «болванку» для web-part-а:
<webParts>
 <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
  <metaData>
   <type name="Microsoft.SharePoint.WebPartPages.DataFormWebPart, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
   <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
  </metaData>
  <data>
   <properties>
    <property name="MissingAssembly" type="string">Cannot import this Web Part.</property>
    <property name="FireInitialRow" type="bool">True</property>
    <property name="TitleIconImageUrl" type="string" />
    <property name="HelpMode" type="helpmode">Modeless</property>
    <property name="CacheXslStorage" type="bool">True</property>
    <property name="ViewContentTypeId" type="string" />
    <property name="Description" type="string" />
    <property name="DataSourcesString" type="string">NotSet</property>
    <property name="AllowZoneChange" type="bool">True</property>
    <property name="ParameterBindings" type="string" null="true" />
    <property name="PageSize" type="int">-1</property>
    <property name="TitleUrl" type="string" />
    <property name="ViewFlag" type="string">0</property>    
    <property name="NoDefaultStyle" type="string">TRUE</property>
    <property name="Direction" type="direction">NotSet</property>
    <property name="UseSQLDataSourcePaging" type="bool">True</property>
    <property name="ListName" type="string" null="true" />
    <property name="Hidden" type="bool">False</property>
    <property name="DisplayName" type="string" />
    <property name="SampleData" type="string" null="true" />
    <property name="HelpUrl" type="string" />
    <property name="ChromeType" type="chrometype">Default</property>
    <property name="CatalogIconImageUrl" type="string" />
    <property name="DataFields" type="string" />
    <property name="Default" type="string" />
    <property name="ChromeState" type="chromestate">Normal</property>
    <property name="DataSourceID" type="string" />
    <property name="AllowClose" type="bool">True</property>
    <property name="CacheXslTimeOut" type="int">86400</property>
    <property name="AllowMinimize" type="bool">True</property>
    <property name="AllowEdit" type="bool">True</property>
    <property name="XslLink" type="string" null="true" />    
    <property name="ShowWithSampleData" type="bool">False</property>
    <property name="ExportMode" type="exportmode">All</property>
    <property name="AllowHide" type="bool">True</property>
    <property name="AllowConnect" type="bool">True</property>

    <property name="Title" type="string">HabraSample</property>
    <property name="Width" type="string">500px</property>
    <property name="Height" type="string">400px</property>
    <property name="Xsl" type="string"></property>
   </properties>
  </data>
 </webPart>
</webParts>


* This source code was highlighted with Source Code Highlighter.


Собственно, нас интересуют следующие свойства:
<property name="Title" type="string">HabraSample</property>
<property name="Width" type="string">500px</property>
<property name="Height" type="string">400px</property>
<property name="Xsl" type="string"></property>


* This source code was highlighted with Source Code Highlighter.


Первое — название вебпарта. Второе и третье вполне понятно, а в четвертом мы будем писать XSL.
Пропишем самый-самый простой:

xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ddwrt2="urn:frontpage:internal">
 <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>

 <xsl:template match="/" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" >
  Hello, Habr!
 </xsl:template>
</xsl:stylesheet>


* This source code was highlighted with Source Code Highlighter.

Теперь добавим наш XSL в webpart:
<property name="Xsl" type="string">
     <![CDATA[<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ddwrt2="urn:frontpage:internal">
 <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>

 <xsl:template match="/" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" >
  Hello, Habr!
 </xsl:template>
</xsl:stylesheet>]]></property>


* This source code was highlighted with Source Code Highlighter.

Все. Сохраняем наш xml в файл с расширением .webpart (например Habr.webpart).
Целиком скачать/посмотреть код можно здесь:
anychart.com/batsuev/habrahabr/sharepoint-1/habr.webpart

Добавление webpart-а на страницу

Все очень просто. Открываем web part page, идем в edit mode:


Давим по Add web part, там выбираем Advanced Web Part gallery and options:


В панели справа в Browse переключаемся на import:


Аплоадим web-part и видим:


Дальше просто перетаскиваем drag & drop-ом на страницу.
Уаля:


Послесловие


Самая большая проблема, с которой мы столкнулись при написании таких webpart-ов: мы не нашли нормальной документации по ним.

Если статья понравилась, могу написать про:
1. Куда класть web-part и как зарегистрировать его, что бы он был доступен со всех страниц.
2. Создание инсталлера для подобных WebPart-ов (как мы это сделали вот тут: www.anychart.com/products/sharepoint/demos/installation.php )
3. Доступ к различным данным (например из базы, из List и т.п.), используя xml/xsl

Ну или еще про что-нибудь, связанное с этим.
Теги:
Хабы:
Всего голосов 12: ↑9 и ↓3+6
Комментарии7

Публикации

Истории

Ближайшие события