Start page / Plug-In Development / ContentCreator Extensions / Interactive Features / Element Status and Workflow Displays / Functional Overview
Element Status and Workflow Displays: Functional Overview
The ContentCreator toolbar displaying page status and available workflow transitions on element groups assembled by a plug-in
ContentCreator 5 provides an interface to determine element status and available workflow actions according to project-specific criteria using a Element Status Provider (ESP) plug-in. Additionally, the workflow management capabilities in the web client allow a user to start or advance a single workflow on a group of store objects.
The status ("Released page", "Modified page" or "In workflow") of the web page currently displayed in the preview pane is shown as an indicator with text label and background color in the top left corner of the ContentCreator user interface.
Element groups and available workflow transitions for each group are displayed in a flyout menu that appears as the mouse pointer hovers over the page status display.
To provide ContentCreator editors with action-centered ease-of-use, ContentCreator simplifies the underlying separation between structure and content for display: Page Store and Site Store elements are combined into web pages; a single web page is displayed in the ContentCreator's preview pane, and users navigate the project using the web presentation's custom navigation functionality. Since, with this paradigm, editors using the ContentCreator are not required to track the various objects a "web page" is assembled from (page, page reference, media and datasets) and do not work with page and page reference elements separately, it is highly recommended that project developers create an Element Status and Workflow Display plug-in that implements project-specific functionality to determine page status and logically group objects for use in workflows. These algorithms allow ContentCreator users to easily identify modified content and work more efficiently when using workflows.
Functionality
Page Status Display
As ContentCreator users see web pages - combinations of page and page reference elements - the Page Status display in the client toolbar becomes an important aspect that allows editors to identify single web pages with modified content. Depending on the project's and its users' needs, the Page Status display may be generated based on the page and its sections only, or it may consider referenced media objects and data records as well.
The following three page states can be displayed in ContentCreator's toolbar:
- Released page indicates that the objects that make up the current web page (page and page reference) are in a released state - contents have not been altered since the last release
- Modified page should be displayed when elements belonging to the previewed web page have been altered such that the preview version differs significantly from the current preview
- The status In workflow should appear if some or all of the current web page's elements are currently in a workflow
The Page Status display is designed to indicate to ContentCreator editors if a web page is shown in its currently published form or if it has been changed since the last release. The ESP plug-in active in a project may use various criteria to determine which status is displayed and consider page, page reference, media and data record objects, among other criteria, in its logic.
When designing page status algorithms, workflow groups (from which ContentCreator identifies sets of available workflow activities - see Workflow Grouping below) and page status should be kept compatible: if the page status "In workflow" is displayed, it is recommended that at least one of the workflow groups offers a workflow task which can be advanced to another task or resolve the web page's "In Workflow" status. |
Workflow Grouping
An Element Status Provider plug-in is responsible for assembling one or more groups of store elements and returning these groups as a list to the ContentCreator. ContentCreator then identifies the individual workflow transitions that are available for use on all elements assembled in a group and presents these to the user in the page status fly-out (see diagram to the right).
When ContentCreator calls the Element Status Provider, it provides the page reference element of the web page currently shown in the preview pane. Using the page reference element as a starting point, the Element Status Provider is free to assemble related store elements (such as the page object referred to by the page reference as well as media elements referred to by input components of the page and its sections) into groups. Any given store element may be a member of several groups.
The Store Type Element Status Provider plug-in provided by the ContentCreator Examples module code, for example, returns up to four groups:
- Full Page combines the page reference and page objects of the "web page" with all media objects referenced by the page and its sections
- Page Only collects the page reference as well as the page object
- Media Only collects all media objects referenced by the page and its sections
- Remote Media assembles all media objects from remote projects that are referenced by the page and its sections
When an editor starts the workflow transition "Release Request" on the group "Full Page", that workflow transition is triggered on all elements in that group--the page reference, the page and all media objects.
Functionally, this example Element Status Provider is quite simplistic. In production, an Element Status Provider should also consider that elements may be in different stages of the same workflow--or in different workflows altogether--at any point in time. It is recommended to also group web page-related elements that are currently in the same workflow state, so that they may be advanced in one batch operation by a ContentCreator user. |
Each ESP may employ different criteria to assemble its groups. All server-side API functionality is available to an ESP plug-in, so it is possible to inspect individual store objects for kind, status, recent editor and associated workflow task.
Project Configuration
Project Settings
Workflow group management is configured as a project-wide setting. The option "Element Status Provider" in the project-specific panel "ContentCreator Settings" in ServerManager determines the active ESP.
Default Element Status Providers Delivered With ContentCreator
A FirstSpirit installation provides two standard Element Status Providers that implement different grouping and page status functionality:
- Page-based
Identifies the Page element associated with the current preview web page and places this element in the sole group returned by this ESP. Workflows will operate on this Page or Dataset element. - Page Reference-based
Places the page reference (Site Store element) associated with the current preview web page in a single group. Workflows will operate on this Site Store element. It is highly recommended that release workflows use recursive release in order to handle modifications of related Page Store elements (pages and sections) as well.
On pages that display a detail view of a Dataset element due to content projection, the returned workflow group will always contain the Dataset. |
Both Element Status Providers consider the current Page Reference element as well as the associated Page or Dataset element in order to determine page status. The priority order in which page status is identified is as follows:
- If either of the two elements has a workflow task, page status is set to "In workflow".
- If either element supports release and is currently in an unreleased state, page status is set to "Modified page".
- Otherwise, page status is set to "Released page".
Example Implementations
The ContentCreator Examples module source code provides two example implementations of Element Status Providers:
- StoreTypeElementStatusProviderPlugin
groups page references, pages and media based on references configured in these store elements, regardless of whether any of these elements are currently released or changed. Up to four groupings may be visible in the page status menu, depending on a web page's contents
- "Page With All Media"
includes the page reference that the current ContentCreator preview is based upon, as well as the page element and any project-local media elements referenced by input components of the page and/or any of its child elements. - "Page Only"
includes the page reference related to the current preview as well as the associated page element. - "Media Only"
includes all project-local media elements referenced by input components of the page element associated with the current preview and/or any of its child elements. - "Elements in Remote Projects"
includes media elements stored in other projects and referenced through remote project configurations in the preview's page element and/or any of its child elements.
Additionally, any elements that are currently in a workflow are removed from the four groups listed above and placed in separate groups, determined by workflow and task combinations. Each of these task groups may contain several elements, which all share a current status of a single workflow. - "Page With All Media"
- ContentProjectionElementStatusProviderPlugin
is a dataset and content projection-aware Element Status Provider.
On web pages (page references used to generate a ContentCreator preview) that use content projection in either paginated or single views, this provider assembles the following groups:
- "All Datasets"
includes all datasets displayed in the current content projection, regardless of pagination settings. Datasets currently associated with a workflow task are not included here. - "Modified Datasets"
includes all datasets that have been marked as changed or not yet released, with the exception of those datasets currently associated with a workflow task.
Individual datasets that are currently in a workflow will be placed in separate groups, one for each workflow/task combination. - "All Datasets"
Both of these example classes are located in the module's package de.espirit.firstspirit.opt.example.webedit.elementstatusprovider.
Code Example
The Element Status and Workflow Display Code Example introduces a very basic Element Status Provider that illustrates and documents key methods and data structures used to identify page status and available element groupings.