Skip to content

2sxc 17 with Loads of Coding Enhancements

Choose a tag to compare

@iJungleboy iJungleboy released this 22 Dec 16:06
· 2562 commits to master since this release
01e6fe5

2sxc v17 with Lots of Coding Enhancements

such as

  1. ©️ Work with Roslyn Compiler in Dnn and Oqtane
  2. ©️ Support C# 8 in Dnn (previously C# 5) and C# 12 in Oqtane
  3. ℹ️ Intellisense in VS Code
  4. ♨️ HotBuild Live Compiled App-Code to use typed helpers in Razor
  5. 🔌New cool APIs to make life easier

Intellisense ℹ️

  1. ℹ️ Developed best practice to enable IntelliSense in VS Code
  2. ℹ️ Cleaned up a lot of internal APIs to prevent them from showing up in intellisense (still WIP)
  3. ℹ️ Include XML for the most relevant parts in the build, so intellisense works with help texts

HotBuild Compile System ♨️

  1. ♨️ New system to compile all files in the folder /ThisApp/Code into a DLL on the fly
  2. ♨️ System to detect this and provide the latest DLL to all Razor and C# files which have using ThisApp.Code
  3. ♨️ Feature to provide code-context to helpers created using new Helper(this) vs. previously using CreateInstance("Helper.cs")

API Enhancements 🔌

  1. 🔌 The Toolbar Service has a new method to start an empty toolbar with only an edit button Kit.Toolbar.Edit(...)
  2. 🔌 The protecting parameter noParamOrder used to be a string, now it's a special type, so that VS-Code can detect improper use
  3. 🔌 The view object CmsContext.View or MyView now has a Settings property which retrieves the view settings
  4. 🔌 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)
  5. 🔌 The ITypedItem - usually MyItem has a new property IsPublished to determine if it is published
  6. 🔌 The ITypedItem - usually MyItem has a new property Publishing which contains a lot of additional information and access to the draft/published counterpart
  7. 🔌 The toolbar API to create an info button can now specify a link-target
  8. 🔌 The App object now has GetContentTypes() and GetContentType(name) methods
  9. 🔌 IEntity now has an official Get(...) and Get<type>(...) method to match the APIs of other data objects

Minor UX Enhancements 🎇

  1. 🎇 The toolbar buttons now work with Ctrl+Click to open new tabs
  2. 🎇 App Admin UI now shows the App Icon to make life easier when you have many admins in many tabs
  3. 🎇 Colors of the toolbar updated to new look

Special to Dnn ☢️

  1. ☢️ After installation, 2sxc will require the admin to install the CodeDom library - see https://go.2sxc.org/dnn-roslyn
  2. ☢️ Include Microsoft.Bcl.HashCode.dll in the package, to ensure CSVHelper can generate CSV (not just read)
  3. ☢️ To enable this, we created a system to detect the language capabilities of the installed compiler

Special to Oqtane 🩸

(no special Oqtane changes)

Bugfixes

  1. 🪲 App.Data.Create(...) and App.Data.Update(...) had some bugs

Internal Enhancements

  1. Refactored how the AppState is built, and made almost all the APIs internal
  2. Crazy refactoring of the internal APIs Eav.Apps to be way simpler/better
  3. Created system to inject more features into Insights using Providers
  4. Enhanced the UI Field-Mask to support the tokes [ID] and [GUID]
  5. Created a mechanism where system-features such as C#8 or Blazor can be detected just like enabled/disabled features.
  6. Enhanced Apps so they can include Require configurations which will be checked before the App is shown - to indicate that they need a special feature or license.
  7. Ability to create ContentTypes for Input-Fields which use a GUID instead of the special @string-subtype naming convention
  8. Docs are now multi-version, so archived versions will remain online indefinitely

Possible Breaking Changes 💔

  1. 💔 The protecting parameter noParamOrder used to be a string, 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.
  2. 💔 The toolbar button for info links now opens in current window by default, but can be changed to open in any window. Previously it always opened in a new window.
  3. 💔 A previously internal object App.AppState may have been used to get Content Type definitions. We now created official commands for this on the App object and removed this AppState object. If you were using it, you will have to update the code.

Merry X-Mas!