Импорт SP 2007 Wiki в SP 2010 для удаления «Страница была настроена из своего шаблона»

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/16598

  •  16-10-2019
  •  | 
  •  

Вопрос

Мы перенесли очень необычный SP2007 на SP2010 (прикрепление DB) и выполнили визуальное обновление для всех сайтов.

Теперь, когда я открываю несколько страниц вики, я получаю уведомление: «Текущая страница была настроена из его шаблона. Возвращайтесь к шаблону». Вернуть на самом деле не работает. Сообщение все еще остается, и сайт выглядит так же. Похоже, что сообщение распространяется только на страницах вики, которые были отредактированы пользователем в SP Designer An, которые были отключены от исходного шаблона сайта (они добавили веб -части и прочее).

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

Я не знаю, действительно ли это работает, и это лучшее решение, но я подумал попробовать.

Я попытался переопределить сайт, но я получаю сообщение, что шаблоны не совпадают, поэтому импорт сбой. Старый шаблон, кажется, вики#0 и новый Enterwiki#0. Поэтому я попытался создать другой сайт с не «шаблоном вики предприятия», а только «шаблоном вики» - но я не могу его найти. Никакой другой шаблон вики не доступен в галерее шаблонов.

Я искал в Интернете и увидел, что Wiki#0 все еще каким -то образом указан в качестве шаблона в 2010 году, но я не знаю, является ли это только для некоторых проблем совместимости, и сам шаблон не выбирается.

Может быть, кто -то из вас знает, как получить шаблон или как решить первоначальную проблему (сообщение уведомления и страница, не редактируемая в браузере, потому что он отключен от шаблона)?

Это было полезно?

Решение

В SP 2007 иногда были проблемы с файлами, связанными с шаблоном). Приведенный ниже код работал для меня (не уверен в SP 2010). Мой код был построен на основе других работ, расположенных здесь: http://sjoere.blogspot.com/2008/05/Reghosting-fearure-files.htmlи тут: http://stsadm.blogspot.com/2007/09/re-ghosting-pages.html

        try
        {
            file.RevertContentStream();
            file = web.GetFile(url);
            if (file.CustomizedPageStatus == SPCustomizedPageStatus.Customized)
            {
                // Still unsuccessful so take measures further 
                PropertyInfo requestProp = web.GetType().GetProperty("Request", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.GetProperty);
                object request = requestProp.GetValue(web, null);
                MethodInfo revertContentStreams = request.GetType().GetMethod("RevertContentStreams", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod);

                // I found some cases where calling this directly was the only way to force the re-ghosting of the file. 
                // I think the trick is that it's not updating the file properties after doing the revert (the 
                // RevertContentStream method will call SPRequest.UpdateFileOrFolderProperties() immediately after the 
                // RevertContentStreams call but ommitting the update call seems to make a difference. 

                revertContentStreams.Invoke(request, new object[] 
                {
                    web.Url, file.Url, file.CheckOutStatus != SPFile.SPCheckOutStatus.None
                }
                );

                MethodInfo dirtyThisFileObject = file.GetType().GetMethod("DirtyThisFileObject", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod);
                dirtyThisFileObject.Invoke(file, new object[] { });
                file = web.GetFile(url);
                if (file.CustomizedPageStatus == SPCustomizedPageStatus.Customized)
                {
                    output.Add("FAILURE: " + file.ServerRelativeUrl);
                    return false;
                }
            }
        }
        catch (Exception ex)
        {
            output.Add("FAILURE: " + file.ServerRelativeUrl + "  Reason: " + ex.Message);
            return false;
        }

Другие советы

Правильно, он все еще интерпретируется как другая главная страница.

Я побежал следующим образом:

$web = Get-SPWeb <SiteURL>

$list = $web.Lists["Wiki"]

$spQuery = New-Object Microsoft.SharePoint.SPQuery

$spQuery.ViewAttributes = "Scope='Recursive'";

$spQuery.RowLimit = 2000

$caml = '<OrderBy Override="TRUE"><FieldRef Name="ID"/></OrderBy>' 

$spQuery.Query = $caml 

do
{
    $listItems = $list.GetItems($spQuery)

    $spQuery.ListItemCollectionPosition = $listItems.ListItemCollectionPosition

    foreach($item in $listItems)
    {
        $DebugPreferences = “Continue“

        Write-host “Resetting wiki page in site.“

        $item.File.RevertContentStream()
    }
}
while ($spQuery.ListItemCollectionPosition -ne $null)
$web.Dispose()

Использованная литература:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.revertcontentstream(v=office.14).aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top