2sxc 17 with Loads of Coding Enhancements
2sxc v17 with Lots of Coding Enhancements
such as
- ©️ Work with Roslyn Compiler in Dnn and Oqtane
- ©️ Support C# 8 in Dnn (previously C# 5) and C# 12 in Oqtane
- ℹ️ Intellisense in VS Code
- ♨️ HotBuild Live Compiled App-Code to use typed helpers in Razor
- 🔌New cool APIs to make life easier
Intellisense ℹ️
- ℹ️ Developed best practice to enable IntelliSense in VS Code
- ℹ️ Cleaned up a lot of internal APIs to prevent them from showing up in intellisense (still WIP)
- ℹ️ Include XML for the most relevant parts in the build, so intellisense works with help texts
HotBuild Compile System ♨️
- ♨️ New system to compile all files in the folder
/ThisApp/Codeinto a DLL on the fly - ♨️ System to detect this and provide the latest DLL to all Razor and C# files which have
using ThisApp.Code - ♨️ Feature to provide code-context to helpers created using
new Helper(this)vs. previously usingCreateInstance("Helper.cs")
API Enhancements 🔌
- 🔌 The Toolbar Service has a new method to start an empty toolbar with only an edit button
Kit.Toolbar.Edit(...) - 🔌 The protecting parameter
noParamOrderused to be astring, now it's a special type, so that VS-Code can detect improper use - 🔌 The view object
CmsContext.VieworMyViewnow has aSettingsproperty which retrieves the view settings - 🔌 The
ITypedItem.Html(..., tweak: x => x.Input(v => v.Replace(...)))allows Html to be rendered in it's perfection, while still manipulating the data (eg. to replace placeholders) - 🔌 The
ITypedItem- usuallyMyItemhas a new propertyIsPublishedto determine if it is published - 🔌 The
ITypedItem- usuallyMyItemhas a new propertyPublishingwhich contains a lot of additional information and access to the draft/published counterpart - 🔌 The toolbar API to create an
infobutton can now specify a link-target - 🔌 The
Appobject now hasGetContentTypes()andGetContentType(name)methods - 🔌
IEntitynow has an officialGet(...)andGet<type>(...)method to match the APIs of other data objects
Minor UX Enhancements 🎇
- 🎇 The toolbar buttons now work with Ctrl+Click to open new tabs
- 🎇 App Admin UI now shows the App Icon to make life easier when you have many admins in many tabs
- 🎇 Colors of the toolbar updated to new look
Special to Dnn ☢️
- ☢️ After installation, 2sxc will require the admin to install the CodeDom library - see https://go.2sxc.org/dnn-roslyn
- ☢️ Include
Microsoft.Bcl.HashCode.dllin the package, to ensure CSVHelper can generate CSV (not just read) - ☢️ To enable this, we created a system to detect the language capabilities of the installed compiler
Special to Oqtane 🩸
(no special Oqtane changes)
Bugfixes
- 🪲
App.Data.Create(...)andApp.Data.Update(...)had some bugs
Internal Enhancements
- Refactored how the AppState is built, and made almost all the APIs internal
- Crazy refactoring of the internal APIs
Eav.Appsto be way simpler/better - Created system to inject more features into Insights using Providers
- Enhanced the UI Field-Mask to support the tokes
[ID]and[GUID] - Created a mechanism where system-features such as C#8 or Blazor can be detected just like enabled/disabled features.
- Enhanced Apps so they can include
Requireconfigurations which will be checked before the App is shown - to indicate that they need a special feature or license. - Ability to create ContentTypes for Input-Fields which use a GUID instead of the special
@string-subtypenaming convention - Docs are now multi-version, so archived versions will remain online indefinitely
Possible Breaking Changes 💔
- 💔 The protecting parameter
noParamOrderused to be astring, now it's a special type, so that VS-Code can detect improper use.
In very rare cases it could be that you actually set the parameter (without effect) - this would now throw a type-exception. - 💔 The toolbar button for
infolinks now opens in current window by default, but can be changed to open in any window. Previously it always opened in a new window. - 💔 A previously internal object
App.AppStatemay have been used to get Content Type definitions. We now created official commands for this on theAppobject and removed thisAppStateobject. If you were using it, you will have to update the code.
Merry X-Mas!