Welcome to TechNet Blogs Sign in | Join | Help

Добавляем новое представление для библиотеки документов используя feature

Итак, по заявкам трудящихся прямо мне в icq ;) сегодня опишу как создать представление для библиотеки документов, такое, чтобы была пустая страница с местом для веб-частей и на этой странице не было ListView.

Идея заключается в том, чтобы добавить в фичу представление, при выборе которого, открывалась бы кастомная страница с произвольным содержимым.

Приступим:

1)      Копируем из папки C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES  папку DocumentLibrary (это и есть та фича, которая управляет стандартной библотекой документов) и переименовываем ее, например, в CustomDocumentLibrary

2)      Открываем файл feature.xml и исправляем в нем id (генерируем новый используя guid generator). Я, так же, изменю еще Title, для того, чтобы можно было проще опознать нашу фичу в списке фичу, когда мы соберемся ее активировать и выставлю HIDDEN=FALSE

3)      Далее, открываем файл schema.xml и ищем в нем секцию <Views>.  Никаких полей в этом примере мы добавлять не будем и Content Type'ов делать тоже не будем, а просто создадим представление.

4)      Ищем секцию  <View BaseViewID="1" ..> .. </View> и копируем ее чуть ниже.

5)      Выставляем в <View BaseViewID="1" ..> признак DefaultView="FALSE". Таким образом, получится, что представлением, показывающимся по-умолчанию будет наше скопированное представление.

6)      Меняем в скопированном View,  BaseViewID на что-нибудь не существующее, например на 10. И меняем DisplayName на Test View

7)      Удаляем свойство SetupPath="pages\viewpage.aspx". А Url="Forms/AllItems.aspx" изменяем на Url="Forms/CustomAllItems.aspx"

8)      Открываем файл DocumentLibrary.xml и в <ListTemplate меняем свойство DisplayName например на "Custom DocLib List", чтобы можно было узнать наш список, когда будем создавать его.

9)      Удаляем весь xml между тэгами <View BaseViewID="10" ..> .. </View>.

У меня получился следующий результат:

<View BaseViewID="10" Type="HTML" WebPartZoneID="Main" DisplayName="Test View" DefaultView="TRUE" MobileView="True" MobileDefaultView="True" ImageUrl="/_layouts/images/dlicon.png" Url="Forms/CustomAllItems.aspx">

        <Toolbar Type="Standard">

        </Toolbar>

</View>

 

Toolbar я оставила для того, чтобы потом можно было переключиться на другое представление и убедиться что все работает. Если он вам не нужен, то его можно тоже удалить.

10)   Теперь, в той же папке, в которой лежит schema.xml создадим страницу CustomAllItems.aspx. Это и будет страницей нашего предсталения.

Страница должна выглядеть примерно так:

<%@ Page language="C#" MasterPageFile="~masterurl/default.master"    Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Import Namespace="Microsoft.SharePoint" %>

<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

 

<asp:Content ContentPlaceHolderId="PlaceHolderPageTitle" runat="server"><SharePoint:ListProperty Property="Title" runat="server"/></asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderPageTitleInTitleArea" runat="server">

      <SharePoint:ListProperty Property="Title" runat="server"/>

</asp:Content>

<asp:content contentplaceholderid="PlaceHolderAdditionalPageHead" runat="server">

      <SharePoint:RssLink runat="server" />

</asp:content>

<asp:Content ContentPlaceHolderId="PlaceHolderSearchArea" runat="server">

      <SharePoint:DelegateControl runat="server"

            ControlId="SmallSearchInputBox"/>

</asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderPageImage" runat="server"><SharePoint:ViewIcon Width="145" Height="54" runat="server" /></asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderLeftActions" runat="server">

<SharePoint:ModifySettingsLink runat="server" />

</asp:Content>

<asp:Content ContentPlaceHolderId ="PlaceHolderBodyLeftBorder" runat="server">

 <div height=100% class="ms-pagemargin"><IMG SRC="/_layouts/images/blank.gif" width=6 height=1 alt=""></div>

</asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">

            <WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main" />

</asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderBodyAreaClass" runat="server">

<style type="text/css">

.ms-bodyareaframe {

      padding: 0px;

}

</style>

</asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderPageDescription" runat="server">

<p>

<SharePoint:ListProperty ID="ListProperty1" CssClass="ms-listdescription" Property="Description" runat="server"/>

</p>

 

</asp:Content>

<asp:Content ContentPlaceHolderId="PlaceHolderCalendarNavigator" runat="server">

        <SharePoint:SPCalendarNavigator id="CalendarNavigatorId" runat="server"/>

</asp:Content>

11)   Устанавливаем нашу фичу и активируем ее.

12)   Вот такое вот представление получилось у меня:

 

 

Что с этим можно делать дальше? А дальше, можно тоже используя фичи поместить на страницу CustomAllItems.aspx любые  веб-части и получить собственное представление для библиотеки документов.

 

Скачать пример: CustomDocumentLibrary.zip (35.21 KB)

Published Saturday, August 04, 2007 4:04 PM by tvsmetanina

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Добавляем новое представление для библиотеки документов используя feature

Татьяна, а можно офф? Куда можно пожаловаться на баг в Sharepoint? И ожидается ли в ближайшее время service pack для MOSS 2007?

Самый неприятный из багов на данный момент - при использовании Custom List Form не сохраняется информация в полях типа "бизнес-данные". В стандартной форме редактирования сохраняются, а в настраиваемой - нет, причем это явно глюк. Просто не запоминается значение в поле и все. :(

Wednesday, August 29, 2007 7:55 AM by Солнышка

# re: Добавляем новое представление для библиотеки документов используя feature

11)   Устанавливаем нашу фичу и активируем ее.

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

Tuesday, November 13, 2007 5:39 AM by BaXsTeR

# re: Добавляем новое представление для библиотеки документов используя feature

stsadm.exe -o installfeature -name CustomDocumentLibrary

Monday, March 31, 2008 10:17 PM by ShurikEv

# re: Добавляем новое представление для библиотеки документов используя feature

не забудь активировать

stsadm.exe -o activatefeature -name CustomDocumentLibrary

Friday, May 30, 2008 4:03 AM by Vladimir

# re: Добавляем новое представление для библиотеки документов используя feature

У меня при активировании просит url, я ввел он не находит веб-приложение, хотя оно точно есть! в чем может быть проблема?

Thursday, August 28, 2008 3:19 AM by konstantin

# re: Добавляем новое представление для библиотеки документов используя feature

Добрый день. Очень хороший пост. У меня вопрос. Допустим я завел на какой-нибудь страничке веб-зону и при разворачивании списка хочу, чтобы в эту зону добавилась определенная веб-часть. Как я это могу сделать? А то в List Defenition (на aspx-страницы) можно вставлять только зоны без веб-частей.

Спасибо.

Friday, September 26, 2008 3:45 AM by Alex

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker