Breaking Changes in EPiServer CMS 5
Introduction
EPiServer CMS 5 is a major update to the EPiServer framework and as such, introduces a lot of changes to the code. The following document is a list of those changes to facilitate adaption of existing code to the new framework.
Table of Contents
- Breaking changes in the DataFactory APIs
- Environment
- Class Changes
- Removed Functionality
- Configuration File Changes
- Edit/Admin Framework
- Windmill
- XForms
Breaking changes in the DataFactory APIs
In EPiServer CMS we now support paging of page listings, starting from the database, in the DataFactory API and in the PageDataSource. Read the full note here.
Environment
- Microsoft SQL Server 7 is no longer a supported SQL Server version. You must upgrade to Microsoft SQL Server 2000 or later.
- Co-existence with EPiServer 3 is no longer supported, i.e. the possibility of using old EPiServer 3 .asp templates has been removed.
Class Changes
- EPiServer.DataAccess.XFormStatisticsDB is removed. Use the functionality in EPiServer.XForms-dll instead.
- EPiServer.DataAccess classes have been restructured. The overloaded constructors taking an ApplicationConfiguration as parameter have been removed.
- EPiServer.Global.EPDataFactory has been removed. Use EPiServer.DataFactory.Instance instead.
- EPiServer.Util.PersonalizedTableSettings has been removed. Was used by first incarnation of portal (Iframe-based solution).
- EPiServer.WebControls.SaveDynamicTableButton has been removed - only used to save PersonalizedTableSettings (see above)...
- EPiServer.Util.SimpleActivityLog no longer logs the user SID, only the name (SIDs for users will be eliminated).
- EPiServer.TemplatePage, method ShowRightClickMenu has been removed. In order to control when the context menu is displayed, set ContextMenu.IsMenuEnabled to true or false.
- EPiServer.Util.EditorUtility is removed.
- EPiServer.XForms.XForm.ChangedBy has changed type from int (mapping to a SID) to string (representing the user name).
- EPiServer.XForms.XForm.CreatedBy has changed type from int (mapping to a SID) to string (representing the user name).
- EPiServer.XForms.XForm.PostingSid has changed name to PostingUser and changed type from int (mapping to a SID) to string (representing the user name).
- EPiServer.DataAbstraction.UnifiedPathInfo.IsAccessAllowed(int[]) has been changed to take an IPrincipal as input parameter i e IsAccessAllowed(IPrincipal)
- EPiServer.DataAbstraction.UnifiedPathInfo.IsAccessAllowed(string, int[]) has been changed to take an IPrincipal as input parameter IsAccessAllowed(string, IPrincipal)
- EPiServer.Core.PropertyData.LanguageKey - property has been removed. Change the UI culture if you need similar functionality.
- EPiServer.Core.PropertyData.DisplayName - set accessor removed.
- EPiServer.Core.PropertyData.Description - set accessor removed.
- EPiServer.Core.PropertyDataCollection - GetEnumerator has be changed to the Generic strongly typed version. Code using the old enumerator will cause compiler errors. "error CS0030: Cannot onvert type 'EPiServer.Core.PropertyData' to 'string'". Typically constructs like:
foreach(string propertyName in page.Property) ...
should be changed to:
foreach(PropertyData property in page.Property)
- The Indent property has been moved from the PageData class into the PageTemplateContainer class because of the read-only PageData objects introduced in EPiServer CMS. As a consequence, Indent is only availble in data binding scenarios. In data binding expressions, instead of doing:
Container.CurrentPage.Indent
you do this:Container.Indent
- EPiServer.WebControls.EPiServerValidator.DisplayName (and related constructors) - property removed.
- EPiServer.Legacy.ExplorerTree does not have any support for enterprice any more. Both site redirect functionallity and multiple "start pages" are removed.
- EPiServer.PageReference changed from struct to class. Methods IsEmpty() and IsValue() changed to static methods (PageReference.IsNullOrEmpty() and PageReference.IsValue() ) to support the case where the page reference is null.
- EPiServer.RightClickMenu has a new attribute RenderAligned that replaces the RenderTopAligned and RenderBottomAligned attributes.
- EPiServer.RightClickMenuItem is no longer in need of the DisabledImageUrl attribute why this is removed.
- EPiServer.PlugIn.GuiPlugInAttribute has changed properties and no more positional constructor arguments, you must use named arguments.
- EPiServer.DataFactory methods PageLanguageSettings and ReloadPageLanguageSettings moved to class EPiServer.Core.PageLanguageSettingsTree and renamed to Instance and Reset respectively.
- EPiServer.DataFactory methods DynPropTree and ReloadDynPropTree moved to class EPiServer.Core.DynamicPropertyTree and renamed to Instance and Reset respectively.
- EPiServer.Filter and PropertyCriteria changes: Added a new interface: IPageFilter, that is implemented for our filters. Also merged StringCompareMethod with CompareCondition.
- Improved the FilterCompareTo class so that there are more options for comparison, for instance both contains and equal operations for categories.
- Dynamic Table no longer has internal support to save/load peronalized values.
- EPiServer.WebControls.FileTree is obsoleted. Replace with FileSystemDataSource and appropriate hierarchical web control.
Removed Functionality
- The old form technology has been removed. We recommend converting old forms to XForms forms. Removed classes includes:
- EPiServer.Core: FormCell, FormDefinition, FormField, PropertyForm
- EPiServer.Util: FormAction
- EPiServer.WebControls: FormPostings, FormStatistics.
- The Web form admin/WebTrends.aspx has been removed. The following has been removed from the development project:
- EPiServerGUI/admin/WebTrends.aspx
- EPiServerGUI/admin/WebTrends.aspx.cs
- EPiServerNET/DataAccess/WebTrendsDB.cs
- EPiServerDatabase/proc/netWebTrendsList.sql
- EPiServerDatabase/episerver_oracle_konv/proc/netWebTrendsList.sql
- Remoting of DataAccess layer has been removed (very rarely used functionality which has been broken since EpiServer 4.30)
- The remote authentication web service (WebServices/Authenticate.asmx) has been removed.
- ApplicationConfiguration.BackendSite has been removed.
- EPiServer.WebServices.AuthenticateClient has been removed.
- EPiServer.Security.RemoteAuthenticationProvider has been removed.
- EPiServer.Security.ValidationTicketManager has been removed.
- EPiServer.WebServices.ValidationTicketHeader has been removed.
- EPiServer.Remoting.RemoteServerAuthenticationSink
- EPiServer.Remoting.RemoteServerAuthenticationSinkProvider
- EPiServer.Remoting.RemotingAuthenticationSink
- EPiServer.Remoting.RemotingAuthenticationSinkProvider
- SQL database backup functionality is removed, both class and GUI-wise.
- The old (pre-4.50) link tool has been removed.
- The old ActiveX editor has been removed.
- The edit content frameworks have been removed and replaced with Master Pages.
- The attribute EPiServer.Core.LanguageAttribute has been removed. Its functionality was removed in 4.60, but the attribute has remained.
- The attribute EPiServer.RightClickMenuAttribute has been removed. Functionality moved into ContextMenu.Options
- The old pre-4.60 multi language support has been removed.
- The obsolete method PluginLocator.Search(string dirName, PlugInAttribute matchAttribute) has been removed.
- The EPiServer.Workflow project (including admin & edit & namespace) has been removed. Will be replaced with EPiServer.WorkflowFoundation
- The classes EPiServer.DataAccess.WorkflowDB & EPIServer.DataAccess.WorkflowLogDB has been removed since EPiServer.Workflow is obsoleted.
- The dynamic substitution of place holders in .js (from .jsx) and .css (from .cssx) as well as _template.css is removed.
- EPiServer.PageTreeXml is removed.
Configuration File Changes
- The EPsConnection setting has been deprecated. Connection strings are now read from the <connectionStrings> section and the connection with name ”EPiServerDB” is used.
- The EPsBackendSite setting has been deprecated.
- All configuration in ApplicationConfiguration has been removed. The values set in AppSettings in web.config ("EPs", "EPn", and "EPf") have been removed.
- The EPiServer.Configuration replaces the previous configuration with typed and validated properties.
Edit/Admin Framework
- edit.js - Javascript function setLatestVersion() removed.
- common.js - Change of how submit and registering to onsubmit event is handled to get a consistent posting behaviour when raising different kinds of postbacks. Dependant of episerverscriptmanager.js.
Now we always set an onsubmit handler to the form with DOM event model 1 (if one is already set, change it to use DOM event model 2 . The method set on the form deals with the ASP.NET __doPostBack behaviour of only raising submit event set by DOM event model 1, but does not override the standard behaviour (strange) of not rasing the submit event when calling submit() .
Windmill
- The interface ISchema no longer supports multiple assigned types, the methods GetType(string) and GetExactType(string) have been replaced with the property AssociatedType.
- Custom serialization – the serialization has been changed to a binary format that can’t use old serialized data.
- The automatic removal of underscores ‘_’ for field is removed.
XForms
The following methods have been updated to support strong types parameters:
EPiServer.XForms
- XForm.GetPostedData() -> IList<XFormData> GetPostedData()
- XForm.GetPostedData(DateTime beginDate, -> IList<XFormData> GetPostedData(DateTime beginDate, DateTime endDate)
- XForm.GetPostedData(int32 pageID, -> IList<XFormData> GetPostedData(int pageID, DateTime beginDate, DateTime endDate)
- XFormFolder.GetForms() -> IList<XForm> GetForms( )
- XFormFolder.GetForms(string subPath) -> IList<XForm> GetForms( String subPath )
- XFormFolder.GetFolders() -> IList<XformFolders> GetFolders( )
- XFormFolder.GetFolders(string subPath) -> IList<XFormFolder> GetFolders( String subPath )
EPiServer.XForms.WebControls
- SelectItemCollection.Items() => IList <SelectItem> Items()
- ExtractXFormControls() => List<XFormControlBase> ExtractXFormControls()