Версионность по умолчанию в SharePoint - PullRequest
5 голосов
/ 08 октября 2008

Как я могу изменить сайт SharePoint, чтобы управление версиями по умолчанию было включено в библиотеках документов?

Ответы [ 2 ]

7 голосов
/ 08 октября 2008

Управление версиями выполняется не на уровне сайта, а на уровне списка.

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

  • Используйте свой собственный шаблон библиотеки (с включенным контролем версий)
  • Используйте функцию + обработчик событий для программной активации управления версиями в каждом новом списке

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

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

5 голосов
/ 09 октября 2008

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

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

Проблема, с которой мы столкнулись, заключается в том, что нет обработчика событий «ListCreating», поэтому мы не смогли включить управление версиями в этот момент. Поэтому мы попытались поместить код в обработчик событий FeatureActivation, предполагая, что он будет активирован при создании сайта, а затем все библиотеки документов можно будет изменить, чтобы включить управление версиями. Проблема в том, что это событие сработало до того, как библиотеки были фактически созданы.

Поэтому вместо этого мы решили поместить код в обработчик события «ItemAdding» и удалить его после первого запуска. Поэтому, когда пользователь впервые добавляет элемент списка или документ, он включает управление версиями для всех библиотек документов на сайте. Таким образом, мы гарантируем, что у пользователя не будет возможности добавить документ в существующую библиотеку без его версионирования. Кроме того, для всех библиотек, которые создаются до добавления элемента, по умолчанию будет также включено управление версиями.

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

public class SetVersioning : SPItemEventReceiver
{
    public override void ItemAdding(SPItemEventProperties properties)
    {
        SPWeb CurrentWeb = properties.OpenWeb();
        foreach (SPDocumentLibrary doclib in CurrentWeb.GetListsOfType(SPBaseType.DocumentLibrary))
        {
            doclib.EnableVersioning = true;
            doclib.MajorVersionLimit = 8;
            //doclib.EnableMinorVersions = true;
            doclib.Update();
        }
        //now get rid of the receiver
        SPEventReceiverDefinitionCollection receivers = CurrentWeb.EventReceivers;
        foreach (SPEventReceiverDefinition definition in receivers)
        {
            if (definition.Name.Equals(EVENT_RECEIVER_NAME))
            {
                definition.Delete();
                break;
            }
        }

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