SharePoint 2007 развернуть MasterPage как функцию удаления файлов при деактивации - PullRequest
1 голос
/ 03 июля 2010

У меня есть MasterPage, которую я развертываю на сервере SharePoint 2007.Я использую функцию и WSP, чтобы сделать развертывание.После развертывания моя новая мастер-страница недоступна для выбора и использования для моего сайта.Затем, если я активирую свою функцию, я смогу выбрать свою главную страницу.Но когда я деактивирую свою функцию (или даже убираю решение и удаляю его из SharePoint), главная страница все еще доступна для выбора, а все остальные файлы, которые были частью моей функции / решения, все еще находятся в SharePoint.Итак, есть ли способ удалить главную страницу из списка доступных, когда моя функция деактивирована, а затем, если она снова активируется, будет ли она снова доступна?

Надеюсь, это имеет смысл, спасибо.

Ответы [ 2 ]

3 голосов
/ 03 июля 2010

SharePoint по умолчанию не очищает файлы, развернутые как часть активации функции.

Чтобы удалить главную страницу и другие связанные файлы, вам нужно написать приемник функции для вашей функции,реализовать метод FeatureDeactivating и удалить ваши файлы, используя код объектной модели вместо CAML.Документ MSDN для получателей функций здесь , и в блогах есть примеры написания кода получателя функций по всему Интернету .

.Для главной страницы сначала нужно убедиться, что вы сбросили главную страницу для всех сайтов в семействе сайтов на стандартную / другую доступную главную страницу.Вы также должны быть осторожны, чтобы не удалять файлы ресурсов (CSS, изображения и т. Д.), Которые являются общими для главных страниц или макетов страниц.

1 голос
/ 16 мая 2011

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

SPWeb web = (SPWeb)properties.Feature.Parent;

string customMasterUrl = (new Uri(web.Url + "/_catalogs/masterpage/Sample.master")).AbsolutePath;

if (web.MasterUrl != customMasterUrl)
{
  try
  {
    SPFile file = web.GetFile(customMasterUrl);
    SPFolder masterPageGallery = file.ParentFolder;

    SPFolder temp = masterPageGallery.SubFolders.Add("Temp");
    file.MoveTo(temp.Url + "/" + file.Name);
    temp.Delete();
  }
  catch (ArgumentException)
  {
    return;
  }
}
...