13

What is the proper way of renaming a page library from a site collection that has a different regional setting?

e.g. Dutch, changing Paginas to Pages. Swedish/Norwegian from Sider and Sidor to Pages, etc.

I've utilized SharePoint Designer, renamed the Page Library in "All Files" and then updated the Page Library in "Lists and Libraries", but when I do this, the page library does update, but then the "/_layouts/AreaNavigationSettings.aspx starts failing when I try and modify the navigation.

Additional Steps Taken

I've installed and run SharePoint Manager, and the sites in question, I've double checked that the __PagesListId are properly mapped.

Also, the following error is displayed in ULS, when trying to access the AreaNavigationSettings.aspx page.

System.NullReferenceException: Object reference not set to an instance of an object.   
 at Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.FetchDynamicItems(PublishingWeb pubWeb, NodeTypes includedTypes, Boolean& websFetched, Boolean& pagesFetched)    
 at Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.PopulateNavigationChildrenInner(NodeTypes includedTypes)    
 at Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.PopulateNavigationChildren(NodeTypes includedTypes)    
 at Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren(NodeTypes includedTypes, NodeTypes includedHiddenTypes, Boolean trimmingEnabled, OrderingMethod ordering, AutomaticSortingMethod method, Boolean ascending, Int32 lcid)    
 at Microsoft.SharePoint.Publishing.Internal.CodeBehind.AreaNavigationSettingsPage.AddChildrenToControl(String parentId, PortalSiteMapNode node, Int32 depth, Int32 maxDepth)    
 at Microsoft.SharePoint.Publishing.Internal.CodeBehind.AreaNavigationSettingsPage.InitializeNavigationEditSort()    
 at Microsoft.SharePoint.Publishing.Internal.CodeBehind.AreaNavigationSettingsPage.OnLoad(EventArgs e)    
 at System.Web.UI.Control.LoadRecursive()    
 at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
3
  • Noticed the tagging on the question while trying to provide a definitive answer. Can you confirm if you are using SharePoint 2010 or 2013? Commented Dec 18, 2012 at 13:29
  • .... ummm. I may have find the culprit. If you have to I can post the info for a quick test, but I wouldn't recomand it. Seems that the underlying logic only confirms that you "shouldn't have been able to do that rename (insert little light-flash here)".. Commented Dec 18, 2012 at 14:52
  • SharePoint 2010 Commented Dec 18, 2012 at 21:33

4 Answers 4

3
+50

To clarify the error you saw.

It is a null reference exception, so I can suppose that the underlying logic isn't finding the pages list that was renamed. Had a look at the code, the incriminated methods calls this line:

CachedList childListByUrl = this.CachedArea.GetChildListByUrl(this.CachedArea.PagesListName);

which after some piping goes down to a method that recovers the name of the list.. Inside reflector shows this.

if (!web.Properties.ContainsKey("__PagesListName"))
{
    return SPUtility.GetLocalizedString("$Resources:osrvcore,List_Pages_UrlName;",
            null, web.Language);
}
return web.Properties["__PagesListName"].ToString();

I didn't go further thant there, but it seems that the page recovers it reference based on a property in the web site property bag, or the resource as a fallback. If you are desperate to get this working, I would have a look with SharePoint Manager, search this property and try to fix it to see if that help.

That said, I strongly discurage you to follow this road if you have other alternatives (and a backup at hand). This underlying logic seem to show that you are navigating in unsupported waters, and we know what that could mean. Fix this error and another one may pop up some days or months from now... I decided only to point this reflected code out to try to provide a definitive answer to the error you are getting. Hope it may help you.

0
2

You can not change the Name of a page library that easy. As you mentioned "Pages", you are probably trying to rename the Library which is created when activating the publishing Features. On activation, the Feature pulls your sitelanguage (not the Regional Setting) and creates all the libraries based on it. It writes down the name of this library into sitecollection propertybag and as i know sharepoint a little, it probably has sum more little spots where you would have to change the name aswell. Easiest way of localizing the pagelibrary is to recreate the sitecollection the right language. This would take additional steps for contentmigration - cause you cant export / import libraries and lists created in different languages.

0
2

The Pages library cannot be renamed, the name (url) and title are actually stored in a resource file, not in the virtual file system. It is a vital part of the Publishing infrastructure of SharePoint and as such renaming it would (probably) result in errors in for instance publishing related timerjobs etc.

1
  • However, that's the problem. It can be changed. We've successfully performed this operation in some of our other locales. I do see that there would be possible issues due to this, however, this is how the sites were originally created. Commented Dec 17, 2012 at 20:39
1

If renaming the Pages Library is not possible, would you consider using URL rewrite? http://johnliu.net/blog/2010/7/23/sharepoint-2010-with-iis-url-rewrite-20.html

1
  • I like this option, however, we're on an Office 365 dedicated environment - without easy access to installing additional components external to our environment - valid option otherwise. Commented Dec 17, 2012 at 20:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.