Scrivito JS 1.7.0 Released – Featuring Protected Content

Improvements

Authentication via identity providers & restrictable pages

For more flexibility and to facilitate collaboration even better, Scrivito now allows editors and website visitors to log in via identity providers supporting OpenID Connect, e.g. Google.

You can set up the providers you wish to use in the CMS’s site settings on the Scrivito dashboard. In the case where these configuration options are not provided in your dashboard, our support team will be happy to activate them for you.

With visitor authentication, editors can specify for each page (via its properties) whether it should be publicly visible or restricted to logged-in visitors. Additionally, there’s an API available that enables you to implement the corresponding visitor log-in functionality in your Scrivito app. For editor authentication, no implementation is required.

To get you started, we’ve added a new section to our documentation, Visitor and Editor Authentication.

Editing dates in place

Some kinds of content like blogposts or event pages typically include a date which often also serves to display a chronological overview of them to the visitor of your website.

Scrivito lets you set date values on properties views, but now you can also offer editors to specify dates much more conveniently in place. See Scrivito.ContentTag for how to make date attributes editable directly on the pages.

Increased content quality through validation

The content on a website often needs to meet some requirements. Many of them can be covered by style guides or loose agreements regarding layout, image content, etc. Others call for a supportive technical instrument to ensure that they are met.

Scrivito now lets you define validations to help editors comply with authoring guidelines and policies. A working copy can only be published if all of its content is valid, i.e. no validation errors occur.

Validation can be set up for CMS objects, e.g. pages, as a whole or for individual attributes of objects and widgets. If a validation fails, Scrivito’s editing interface notifies the editor by highlighting the affected piece of content on the page or in properties dialogs. Additionally, when working on a specific page, the validation errors found on this page are listed on the sidebar. Pages with validation errors can be found via the changes list, so opening them to fix the errors is easiest.

For an overview, typical use cases and example code, see Overview of Scrivito’s Content Validation. The API documentation on Scrivito.provideEditingConfig provides further details.

Progressive image loading

Starting at version 1.6.0, Scrivito.BackgroundImageTag components already load background images progressively. Now, Scrivito.ImageTag components also load images progressively if they haven't been transformed. This lets the visitor initially see at least a low-resolution version of the image – instead of no image at all.

Once loading and decoding the high-resolution image has finished, it replaces the smaller low-resolution version. With speedy connections, the visitor will hardly notice a difference.

Search API supports value-based boosting

When searching, users expect to find the most relevant hits at the top of the search results list. The relevance of a hit can be adjusted with Scrivito by means of boosting.

Scrivito supports attribute-based and now also value-based boosting. Attribute-based boosting allows you to adjust the relevance of hits depending on the attributes in which the search term was found (e.g. the title). Using our new value-based boosting, you can now further fine tune the ranking based on a subquery. For instance, when searching for pages tagged with “laptop”, you could boost the rank of pages whose type (object class) is Product. Another example would be to lower the rank of PDF files after a full-text search so that regular pages show up first on the results page.

For details, see the API documentation on the boost subquery.

Ordering search results supports more than one criterion

Scrivito’s search API lets you sort search results using the order method. This method now supports up to four additional sort criteria next to the primary criterion. For example, you can now sort the hits by their object class (Page or Blogpost, etc.) as the first criterion, and, within each object class, by their title as the second criterion.

Checking the presence of the UI

There’s a new API method, Scrivito.isEditorLoggedIn. It lets you check whether your Scrivito application is running in the UI in order to make it behave differently if this is the case. You could, for example prevent Google Analytics from detecting page hits if the page has not been opened by a visitor but by an editor.

Determining a widget's container

We’ve been asked several times to provide a means to determine the direct parent of a widget - here it is: Widget#container(). This instance method returns the widget or CMS object containing the widget in question.

Chief editors must be owners to edit in working copies

Chief editors are able to see all working copies to which they aren’t assigned as an owner on the sidebar in the "Other working copies" section. Previously, after selecting such a working copy, chief editors could start editing right away. This has been changed to prevent accidental edits, meaning that chief editors now first need to become an owner of a working copy before they can edit its content. They can, of course, assign themselves via the working copy settings.

Navigation bugfix with React Router

If a single-page application (SPA) delivering both Scrivito-based and non-Scrivito-based content navigates from a non-Scrivito page back to a Scrivito page, the NotFoundErrorPage is not displayed anymore, not even for a short time.