Table of Contents

All Changes in EAV and 2sxc v10

Version 10

Changes Version 10.01 - 10.09 LTS

  • Develop and fine-tuning of the new Edit-UI based on Angular 8

Changes Version 10.20-00 to 10.20-05

  • Enhanced ListCache so it will prevent parallel buildup - important for long-loading DataSources like SharePoint DataSources
  • Updating to RazorBlade 3.1 which doesn't need extension methods

Changes Version 10.20-06

  • Created AsDynamic(string)
  • Created AsDynamic(DataSource) to enable AsDynamic(Data) instead of AsDynamic(Data["Default"])

Changes Version 10.21

  • New AsList() for better code
  • New AsDynamic(string) to work with json
  • /dist/ is now cleaned up on every update, to better distribute changing JS file structures

Changes Version 10.22

  • Query Params added for VisualQuery
  • Created QueryRun DataSource
  • Insights now includes the code file and line numbers
  • Insights now also measures time needed to execute some code
  • Various performance enhancements
  • Improved SoC for AppsCache and AppRoot DataSource

Changes Version 10.23

  • Lots of logging enhancements

Changes Version 10.24 LTS

  • New stable LTS
  • Improved/fixed QueryRun DataSource
  • Improved Insights
  • Enhancements to use 2sxc with Redis Cache
  • WYSIWYG enhancements for better H1-Hx, P and Blockquote
  • Performance enhancements
  • Intenal refactoring for APIs
  • Introduced an internal Compatibility-Level to disable very old features when using new RazorComponents

Changes Version 10.25 LTS

  • Changed how the $2sxc client JavaScripts are loaded for much better performance and better Google PageSpeed
  • Enabled various features for the Content area which previously were hidden, like Resources and Settings
  • Released brand new Content-Templates App with best-practices for 10.25
  • Fixed bugs with Evoq Page Publishing
  • Enhanced the ValueFilter DataSource to handle dates which were null

Changes Version 10.26

  • TinyMCE Updated to 5.1
  • Enhanced CreateInstance API to also work when compiling Razor files from a WebApi
  • New DataSource StreamPick
  • New automatic Param called [Params:ShowDrafts] to be used in VisualQuery - returns True or False
  • New tokens [App:AppId] and [App:ZoneId] to use in VisualQuery calles (dropdown from query)
  • Changed List-Caching bbehavior to create more reliable cache-keys for complex queries (previously it only went through Default streams to generate the cache-key)

Changes Version 10.27

Possibly breaking changes

  1. Because the dynamic entity list now has a type which is dynamic, it cannot be cast to List<dynamic> any more. IList<dynamic> works, but in case you have any code casting it to List<dynamic> you'll need to change that to either IList<dynamic> or IEnumerable<dynamic>.

New Features / Major Improvements

  • Changed DynamicEntity so that accessing a property which contains many other entities it will return a DynamicEntityWithList. This allows Razor files to access the properties like .EntityId or .FirstName of the main entity in a sub-list easily without requiring AsList(...) #1993
  • Updated Quick-Dialog to use Angular 9, Ivy and the latest Dnn-Sxc-Angular #1992
  • New DataSource AttributeRename #2004
  • Completely refactored internal list management API #1995
  • Complete refactoring of the inpage code to make it typesafe (no more any types)
  • Created brand-new, simpler way to create custom Toolbars and specs
  • Introduces JS/API 2sxc-Insights for debugging In-Page code

Enhancements

  • Performance-Enhance App DataSource to delay building objects until needed #1991
  • Performance-Enhance internal Token Lookup #1998
  • Enhanced Dnn Search Index logging #1997
  • Corrected help-links on all data sources #1994

Bugfixes

  • Cache-All-Streams only used the Default-Streams for Cache-Key identification #1988
  • QueryRun DataSource doesn't show statitics on all streams #1989
  • Modified date and Owner information were missing on json stored entities #2005 / #2006
  • Fixed bug in JS API for non-2sxc endpoint resolution #2000
  • Queries didn't resolve Dnn tokens when accessed in the Search Index #1999

Breaking Changes in EAV and 2sxc

We try to minimize breaking changes, and most breaking changes won't affect your work, because it's internal API. We're documenting it here to ensure you know what happened, in case you still run into this.

Summary

Version 10 has a lot of small breaking changes because we restructured the internal API so it's consistent when we publish it. All these things shouldn't affect you, because they were internal APIs, but in case it does - here's what we did.

Version 10.22 and 10.23

  1. Renamed the RootDataSource and the Interface to IAppRoot
  2. Split SOC of the AppRoot DataSource so that caching, Root-Metadata and ListCache is fully separate
  3. Since the Logging system now auto-picks up the code lines and names of the methods, we simplified the commands and dropped some parameters.
  4. Moved quite a bit of the DataSource objects into sub-objects, again for SOC.

Version 10.20-04 (ca. 2019-12-03)

  1. Renamed DataTableDataSource to DataTable, old name still works.
  2. Renamed ExternalDataDataSource to ExternalData, old name still works.
  3. Renamed ToSic.SexyContent.DataSources.ModuleDataSource to ToSic.Sxc.DataSources.CmsBlock, old name still works.
  4. Renamed ToSic.Eav.DataSources.VisualQuery.VisualQueryAttribute to ToSic.Eav.DataSources.Queries.VisualQueryAttribute, old name still works.
  5. Renamed ToSic.SexyContent.Environment.Dnn7.Factory to ToSic.Sxc.Dnn.Factory, old name still works.
  6. Renamed ToSic.Eav.DataSources.BaseDataSource to ToSic.Eav.DataSources.DataSourceBase for consistency, old name still works.
  7. Moved the LookUp namespaces into the Core DLL

Version 10.20-02 (ca. 2019-11-22)

More internal changes which shouldn't affect anybody, but make the API ready for public docs...

  1. Moved/renamed the internal Eav.AppDataPackage to Eav.Apps.AppState
  2. Moved/renamed some internal interfaces like Entity...
  3. Did a major change for how Attribute<T> for relationships work.
    Before they were Attribute<EntityRelationship> and now they are Attribute<IEnumerable<IEntity>>.
    This also affects Value<EntityRelationship> which is now Value<IEnumerable<IEntity>>
  4. Moved Tenant<T> and Container<T> including matching interfaces to Eav.Environment
  5. Renamed IAppIdentity to IInAppAndZone and IZoneIdentity to IInZone
  6. Renamed ICacheKeyProvider to ICacheKey
  7. Renamed CacheChainedIEnumerable<T> to SynchronizedList<T>
  8. Moved/Renamed MetadataFor to Eav.Metadata.Target. Left old name compatible.
  9. Moved some extension methods for IEntity from ToSic.Eav.Data.Query to ToSic.Eav.Data
  10. Changed Permissions to be strong-typed EntityBased objects

Version 10.20.01 (2019-11-12)

  1. Internal code now uses the term Header instead of ListContent. External code provides both for backward-compatibility
  2. moved internal interfaces for engines (Razor/Token) to final namespaces ToSic.Sxc.Engines
    1. IEngine
    2. EngineBase
    3. ITokenEngine
    4. IRazorEngine
  3. corrected architecture - some template-management code had slipped into Eav.Apps, was moved back to Sxc.Apps
  4. The Template object was moved from Eav.Apps to Sxc.Views and we added an interface IView. We also renamed the internal properti ViewNameInUrl to UrlIdentifier.
  5. To correct the API a CmsManager was created extending the AppManager, which is in charge of Views
  6. Moving internal stuff related to content blocks
    1. IContentBlock from SexyContent.Interfaces to Sxc.Blocks
    2. from ToSic.SexyContent.ISxcInstance to ToSic.Sxc.Blocks.IBlockContext
    3. actually moved a lot of things there incl. ContentBlock now BlockConfiguration and more - all internal stuff
  7. Moving the ToSic.SexyContent.App to ToSic.Sxc.Apps.App
  8. In a razor page, we added the preferred Purpose. The old InstancePurpose will still work
  9. Placed some things we just moved in 10.20 to a final place - since it's a very recent change, we updated the docs in the 10.20.00 section

Changed, but completely internal

  1. Some namespaces on SexyContent.ContentBlocks were moved to Sxc.Blocks

Version 10.20.00 (2019-11-05)

  1. the internal interface IInPageEditingHelpers was moved from ToSic.SexyContent.Interfaces to the namespace ToSic.Sxc.Web
  2. the internal interface ILinkHelper was moved to ToSic.Sxc.Web
  3. the internal interface IHtmlHelper was moved to ToSic.Sxc.Dnn
  4. the property Configuration on dynamic entities was deprecated in 2sxc 4 and removed in 2sxc 10 - we don't think it was ever used
  5. moved internal Metadata interfaces (ca. 5) into final namespace ToSic.Eav.Metadata
  6. Moved a bunch of internal interfaces which we believe were never used externally from ToSic.Eav.Interfaces to ToSic.Eav.Data
    1. ToSic.Eav.Data.IAttribute
    2. ToSic.Eav.IAttribute<T>
    3. IAttributeBase
    4. IAttributeDefinition
    5. IChildEntities
    6. IContentType
    7. IDimension
    8. IEntityLight
    9. ILanguage
    10. IRelationshipManager
    11. IValue
    12. IValue<T>
    13. IValueOfDimension<T>
  7. Moved a bunch of internal interfaces which we believe were never used externally from ToSic.Eav.Apps.Interfaces to ToSic.Eav.Apps
    1. IApp
    2. IAppData
    3. IAppDataConfiguration
    4. IAppEnvironment
    5. IEnvironmentFactory
    6. IInstanceInfo
    7. IItemListAction
    8. IPagePublishing
    9. ITenant
    10. IZoneMapper
  8. the internal namespace ToSic.Eav.ValueProvider was changed to ToSic.Eav.LookUp and inside it
    we renamed a bunch of internal interfaces and objects which we believe were never used externally

Deprecated/Changed, but not broken

  1. the internal interface ToSic.SexyContent.IAppAndDataHelpers was renamed to ToSic.Sxc.IDynamicCode but the old interface still exists, so it shouldn't break
    it was used by Mobius Forms
  2. moved ToSic.Eav.Interfaces.IEntity to ToSic.Eav.Data.IEntity - but preserved the old interface for compatibility it was used everywhere

Clean-Up, but not broken

  1. We're transitioning to the term Header instead of ListContent in templates.
    The Razor pages and WebApi have this starting now, while old terms still work. Note that we're not creating a HeaderPresentation, because you should use Header.Presentation