Breaking Changes in EPiServer CMS 5
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
- Class Changes
- Removed Functionality
- Configuration File Changes
- Edit/Admin Framework
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.
- 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.
- 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:
you do this:
- 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.
- 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:
- 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.
- 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.
- 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.
- 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() .
- 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.
The following methods have been updated to support strong types parameters:
- 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 )
- SelectItemCollection.Items() => IList <SelectItem> Items()
- ExtractXFormControls() => List<XFormControlBase> ExtractXFormControls()