2010-07-02 3 views
1

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

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

+0

Я знаю, что это старый, но см. Мой ответ ниже для кода, если хотите ... Сначала переместите его в другую папку. – trgraglia

ответ

3

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

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

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

+0

Спасибо, я думал, что, возможно, мне придется это сделать, но я был обеспокоен тем, что произойдет, когда я снова активирую функцию. Вернутся ли файлы, если я снова активирую функцию? – TehOne

+1

Да, каждый раз, когда вы активируете эту функцию, файлы будут снова предоставлены (если они уже не существуют). Но помните, что если вы удаляете файлы с помощью featureReceiver, любые изменения (сделанные с помощью SharePoint Designer) теряются –

+0

Спасибо за помощь ребятам. Возможно, есть дата штампа для последнего изменения, которое я могу использовать, чтобы помочь мне решить, следует ли удалять файлы с помощью FeatureReceiver. – TehOne

1

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

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; 
    } 
} 
Смежные вопросы