Skip to main content
Home  ›  Blog

Releasing 2sxc 9.5 with Evoq Page Publishing

Evoq offers a unique feature called page publishing, which allows the users to edit a page in the background and release it when done. This is also used with workflows. 2sxc 9.5 now supports this - as probably the only module in the DNN ecosystem. 

DNN / Evoq Page Publishing

DNN and Evoq have a feature to create and edit pages in the background, and letting almost all changes stay hidden until a later time. This is called Page Publishing, but because of changing concepts, you'll often also find this as Versioning (related, but different) or Workflow (also related, but different). Here's how it works:

Normal Editing With Manual Publish

In Evoq, a user will make changes to a page, but these will not be visible until the user actively presses publish. This is different from DNN, where every change is immediately visible. 

But that's just the theory. In reality, we have found no module that supports this feature, except for the built-in HTML "Pro", but now, 2sxc also supports it. It's important to understand, that this feature isn't 100% bullet proof, because the DNN/Evoq architecture just isn't that perfect. But it fits 99% of use cases, so just for transparency we would like to explain what is actually hidden-till-published:

  1. page creation
  2. adding / removing / reordering modules 
    since added modules don't appear till publishing, it often may seem that a module supports this, even though it doesn't
  3. html-pro content
  4. all 2sxc content
  5. all 2sxc apps
  6. files (images / documents) added or changed in 2sxc using ADAM

Here's what's actually not hidden-till-published in DNN/Evoq:

  1. module settings - this is not relevant for HTML-Pro or 2sxc, and often necessary to actually get publishing to work
  2. files (images / documents) manually changed using the dnn-file management

More of this is documented in the 2sxc-wiki.

Publishing A Page with 2sxc

When a page is published using 2sxc, this is what is released

  1. The content-block (which contains configuration like the template/view used)
  2. The list of manually assigned items and the order thereof (which is the primary working mode when using 2sxc Content, and is also often used in 2sxc App)
  3. the presentation items which control how these things look
  4. Content changes to any content-item in the manually assigend items
  5. Content changes to any item in the views Default stream (often used in Apps)

Note that any items in other streams are not published. This is by design - imagine the following scenario of a view in a blog-app with the following streams/lists:

  • Blog-posts (in the Default-stream)
  • Categories (in the Categories-stream)
  • Authors (in the Authors-stream) 

in this case, the system will auto-publish all unpublished blog-items, but not all unpublished categories or authors, as they are regarded as "not-part-of-page". Since they are helper-data, they shouldn't be auto-published as this would cause unexpected side-effects. Note that if you have any other data which should be published, you can always add it to a stream called PartOfPage - check the wiki docs on that. 

Using the DNN/Evoq Page Workflow

The page publishing feature is sometimes combined with Evoq Page Workflows. This is a a page setting which prevents the user from publishing the page, but results in a publish-request. The request must then be approved by certain users, delaying the effective publishing. This is what the setting looks like in Evoq 9.x:


Support for (Page) Versioning, History and Restore

Evoq also provides an internal mechanism to roll-back a page to a previous version. When analysing the situation, we decided that the implementation isn't really usefull, so we limited our support to item-level versioning, and not page-level versioning. This is because the amount of things that could happen before a user would try to roll-back a version are so diverse (files may have been deleted, features changed, views changed, content-types modified) that there is no reliable way to ensure a previous state of an entire page. 

As any item can be restored to a previous version (2sxc feature added in 9.3), this should suffice in almost all use cases and will be more appropriate for almost every situation. 

Using These Features in DNN (without) Evoq

DNN technically supports these features (the API and engine is included), but doesn't have any UI to enable or use this. So at the moment, these features will not effect DNN in any way, unless you have a very custom installation, which provides workflow-features. 

Except for item-versioning/history/restore - that works in any version of DNN 7.4.2+.

TL;DR - and Thx to Sponsors

As a special note: this feature was sponsored by an anonymous sponsor, who paid for 15 of the ca. 25 days of work to make this possible. Many, many thanks!

We hope you love it :). 

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