Go to content

Who throw this exception?

PageTypeBuilder 2.0 with EPiServer CMS 7 Preview

19 September 2012

This is a long overdue post about getting PageTypeBuilder 2.0 working with EPiServer 7 Preview.

I´m not sure the changes I made is the best or even correct, but they work. Joel Abrahamsson, please comment on this.

Lets begin.

Get the source for PageTypeBuilder 2.0

Update the references from EPiServer CMS 6 to CMS 7.

Changes have to be made in three files, TabDefinitionUpdater.cs, PageDefinitionUpdater.cs and PageTypeRepository.cs.

First up, PageTypeRepository
Add a new private member to the class and add a constructor

private EPiServer.DataAbstraction.IContentTypeRepository _contentTypeRepository;
public PageTypeRepository()
{
_contentTypeRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentTypeRepository>();
}

In each of the Load methods (should be three of them) change PageType.Load(arg) to

var pageType = (PageType)_contentTypeRepository.Load(arg).CreateWritableClone();

where arg is string name, Guid guid or int id.

Last change IEnumerable<IPageType> List() from

return PageType.List().Select(pageType => new WrappedPageType(pageType)).Cast<IPageType>()

to

return _contentTypeRepository.List().Select(pageType => new WrappedPageType((PageType)pageType)).Cast<IPageType>();

Now, compile and you will get four errors about ambiguous references due to referencing the new EPiServer dll. Clear them up by adding changing

ITabDefinitionRepository to PageTypeBuilder.Abstractions.ITabDefinitionRepository where the errors occurs.

Compile again and you will have a working PageTypeBuilder although there are 78 warnings all of them marking obsolete methods or calls.

That’s it.