Skip to main content
Home  ›  Blog

Hidden Gems in 2sxc 13.10

2sxc 13 has many hidden gems which you may have missed...

Gem UI #1: Notes and Warnings on Entities

Every entity now has the ability to store a note (or a warning) which should help you or other editors remember why something was configured. This should help in reducing problems far in the future, where people change something they didn't know was important.

📖 read more about notes in the blog.

Gem UI #2: UI Save Enhancements

The Edit UI had various dialogs where you had to move to top-left to exit the dialog and then to bottom-right again to save/close. It also made it difficult to discover keyboard shortcuts like "save without closing".

In addition, if you were not in the main dialog, you often needed 3-4 such clicks to close everything and save. This was especially inconvenient when you just wanted to update a long blog-text or something (which was in a sub-dialog). Now the main edit-dialog shows more options when saving, and sub-dialogs also have all the necessary options. These are now always in the bottom right.

Gem UI #3: Create UI/Field-Formulas Directly

Previously formulas had to be created manually in the field-properties before developing them in the edit-UI directly. But in general, all formulas will be developed in the edit-UI so this made it much harder to use. Now you can create new formulas directly in the edit-UI. 

📖 read more about formulas in the docs.

Gem UI #4: Paste Image From Clipboard

You can now paste images from clipboard directly into WYSIWYG and also into Link/Image fields. The clipboard contents will be converted to a PNG, which will save you and your editors a lot of time. 


  1. This feature only works if the image in the clipboard doesn't have transparent areas. This is a limitation in browsers today.
  2. This is a Patrons feature. It's part of the Basic package which would cost the site 2 USD/Month. 

Gem Dev #1: Razor Error Improvements

There are many cases where Razor would loop through many items and one of them would then throw an error - for example because a value in the item was unexpected or null. 

In these cases it was difficult to figure out where the problem appeared, since it could be item 1 or item 42, because all you would see is a big error and probably a null-error-message.

We've now created a feature where any sub-template using Html.Partial("_SomeName.cshtml") that errors will only error on that instance and not error the entire module. This massively improves how you can find issues. Check out the difference (before/after):

Compare classic Razor errors with new errors

    Important: In rare cases activating this feature could show parts of the module which were hidden on errors. Any security critical features such as this must be enabled (so we could inform you if there is a security issue). This is free but requires registration.

    Gem Dev #2: Improvements on Missing Data

    When you create a new site and use a template exported from another Dnn there will typically be modules which don't have content yet. Normally importing these apps will make the content magically re-appear. But the message shown previously didn't mentione the AppId or anything, sometimes causing people to try to fix the wrong problem. We have now changed the functionality so more information is shown when an App or ContentBlock isn't available. 

    Gem Dev #3: Shared Apps Improvements

    Share Apps are Apps which store their templates in the shared folder (/Portals/_default/2sxc/Apps in Dnn). This allows you to re-use templates, css and assets on various portals. We've improved:

    1. Editing source code in the built-in Visual Studio Code to also show these files
    2. We've added Razor properties like @App.SharedPath to better link files in these folders
    3. We've added tokens like [App:SharedPath] so that custom fields can use this as well to link resources

    BTW: We've also completed support for Shared Apps in Oqtane. So this now also works in Oqtane. 

    Gem JS #1: New fetch() API to replace jQuery

    In case you missed it: the in-page JS now has various helpers like fetch() to do backend requests using modern AJAX without jQuery. 

    Gem JS #2: REST API Enhancements like PublishState

    When calling REST APIs to save data we've added some features like "isPublished" where REST calls can determine how data is to be saved.

    📖 read about it in the JSON Format Specs.

    Gem JS #3: JS Workflows

    When executing CMS commands like edit you can now also specify workflows - which are sequences of JS code to run before or after certain actions. This let's you prevent page-refreshes (to do custom ajax loading) etc.

    📖 read about this in the JS Workflows docs.

    Love from the 2sxc Team

    Enjoy it! get it from the latest GitHub repos.
    💝 iJungleboy

    Daniel Mettler grew up in the jungles of Indonesia and is founder and CEO of 2sic internet solutions in Switzerland and Liechtenstein, an 20-head web specialist with over 800 DNN projects since 1999. He is also chief architect of 2sxc (see github), an open source module for creating attractive content and DNN Apps.

    Read more posts by Daniel Mettler