PageTypeBuilder 2.0 with EPiServer CMS 7 Preview
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
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.
Comments