Есть ли способ глобально изменить поле списка заголовков обратно на «Название» в MOSS2007? - PullRequest
2 голосов
/ 11 ноября 2010

Рано или поздно в жизни каждого разработчика SharePoint дурачатся с типами контента и переименовывают поле Заголовок в базовый тип Элемента.Это имеет два эффекта:

  • Все новые списки имеют новое имя вместо «Заголовок».
  • Все списки в семействе сайтов имеют переименованные поля заголовков.

Теперь я установил тип содержимого Item обратно, но я застрял с сотнями, если не тысячами списков, которые теперь имеют поле под названием «Заголовок публикации», который я хотел бы изменить обратнов «Заголовок».

После некоторого поиска в Google я быстро знакомлюсь с PowerShell и готовлю сценарий для обхода семейства сайтов и переименования всех полей заголовка.

Но яЯ уверен, что я не первый, кто делает это, и я уверен, что я не первый, кто задумывается об этом решении.Кто-нибудь получил какой-нибудь код, который мог бы разобраться в этом?

О да, это на рабочей ферме.Ха ха.

1 Ответ

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

Так что я думаю, что нет ...

Я написал скрипт powershell, который выполняет переименование:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null

function global:Get-SPSite($url){
    return new-Object Microsoft.SharePoint.SPSite($url)
}

#Change these variables to your site URL and list name
$siteColletion = Get-SPSite("http://go.snap-undp.org/focusareas/")
$webs = $siteColletion.allwebs

#Walk through each site in the site collection
#use FOR loops because collections break when you update them
for($webIndex=0;$webIndex -ne $webs.count;$webIndex++){
    #use this for output
    $webTitle = $webs[$webIndex].title.toString()
    "PROCESSING $webTitle"

    #loop though each list in the current website
    for($i=0;$i -ne $webs[$webIndex].lists.count;$i++){

        #this is used for output and to make the code a little more readable
        $listTitle = $webs[$webIndex].lists[$i].toString()

        #loop through each field in the lsit, looking for the offending name
        foreach($field in $webs[$webIndex].lists[$i].fields){
            if($field.title -eq "Publication Title"){
                if($listTitle -eq "Participants" -or $listTitle -eq "User Account Request List"){
                    $field.title = "Last Name"
                    "workshop update to $listTitle"
                }else{
                    $field.title = "Title"
                    "normal update to $listTitle"
                }
                #$field.Update()
                break
            }
        }
    }
}
#Dispose of the site object
$siteColletion.Dispose()

Это довольно специфично.Он ищет столбцы с именем «Заголовок публикации» (неправильное имя) и переименовывает их в «Заголовок», если список не называется «Участники», в этом случае он переименовывается в «Фамилия».Изменить по вкусу.

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