SharePoint - настраиваемая библиотека документов со структурой папок - PullRequest
3 голосов
/ 26 ноября 2010

У меня есть пользовательский шаблон библиотеки документов с типами содержимого. Это прекрасно работает, но я хотел бы добавить только то, что, когда пользователь создает новую библиотеку документов на основе этого шаблона, она уже имеет предопределенную структуру папок.

Я пытался добавить теги Module в свой schema.xml, но это не сработало.

Я знаю, что можно снабдить библиотеку документов файлами и папками с помощью функции ListInstance, но в этом случае это невозможно. Мне бы хотелось, чтобы предопределенная структура папок была частью шаблона библиотеки документов.

Возможно ли это?

Спасибо

Маартен

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010

Если вы хотите достичь этого, используя Определение библиотеки документов. Я не думаю, что это было бы достижимо. Что вы можете сделать, так это воспользоваться шаблонами списков / библиотек документов. 1 Создайте пользовательский Doclibary так, как вы хотите. 2. создать желаемую структуру папок. без загрузки каких-либо документов. 3. Сохраните библиотеку документов в качестве шаблона, перейдя в настройки Doclibray (убедитесь, что вы сохранили шаблон вместе с содержимым, сохраненным в нем)

2 голосов
/ 29 ноября 2010

Еще один метод (о котором я скоро расскажу) - подделать событие создания списка. Я добавляю пустое определение представления с настраиваемой страницей aspx в шаблон списка. Пользовательская страница просто выполняет некоторые пользовательские функции в списке, удаляет представление инициализации, а затем перенаправляет на обычный вид. Это немного грязно, и это будет работать, только если список создан через пользовательский интерфейс, но это работает.

Вот очень быстрый пример. У вас уже есть шаблон списка. В файле schema.xml добавьте новый элемент View к элементу Views следующим образом:

<Views>
  <!-- Below is a blank view used to kick of initialisation after list creation. -->
  <View DisplayName="Initialise" Type="HTML" DefaultView="TRUE"  WebPartZoneID="Main" SetupPath="pages\Scratch\init.aspx" Hidden="TRUE" Url="_init.aspx">
    <Toolbar Type="Standard" />
    <ViewHeader />
    <ViewBody />
    <ViewFooter />
    <ViewEmpty />
    <ViewFields />
    <ViewData />
    <Query />
  </View>
  <!-- standard views would be here -->
</Views>

Вы можете обойтись без пустых элементов там. Это было то, что я собирался проверить дальше, прежде чем писать в блоге. Но это сделает работу. Важные вещи:

  • Это первое представление, и DefaultView установлено в TRUE.
  • SetupPath настроен на пользовательскую страницу, которую вы предоставите своему решению.

Для пользовательской страницы (в моем примере init.aspx) я просто сделал копию ... \ 12 \ TEMPLATE \ Pages \ viewpage.aspx и изменил то, от чего наследуется страница. Вы можете сделать это с помощью встроенного кода, но я использовал сборку кода. Итак, первая строка этого файла становится:

<%@ Page language="C#" MasterPageFile="~masterurl/default.master" Inherits="SharePointScratch.InitPage,SharePointScratch,Version=1.0.0.0,Culture=neutral,PublicKeyToken=xxxxxxxxxxxxxxxx" %>

А потом код:

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;

namespace SharePointScratch
{
    public class InitPage : System.Web.UI.Page
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            SPList list = SPContext.Current.List;
            list.ParentWeb.AllowUnsafeUpdates = true;

            // Create you folder structure here...

            // Fix the views by deleting the initialisation view.
            SPView view = SPContext.Current.ViewContext.View;
            list.Views.Delete(view.ID);
            list.Update();

            list.ParentWeb.AllowUnsafeUpdates = false;

            // Redirect to the new default view.
            SPUtility.Redirect(list.DefaultViewUrl, SPRedirectFlags.Default, this.Context);
        }
    }
}

По сути, мы полагаемся на поведение SharePoint по умолчанию для отображения представления списка по умолчанию после создания. Пользовательский вид вставляется в схему с единственной целью запустить некоторый пользовательский код. Пользовательский код делает, ну что угодно. После этого вы выполняете очистку, удаляя специальный вид из шаблона и перенаправляя обратно в вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...