Naviga Writer 6.0.0

Compatibility

  • PluginBundle >=11.0.0
  • IMSG >=16.6.1
  • MOCK-IMSG >=0.4.1
  • Editor Service >=5.0.0

Released 2019-10-02

Release overview

Description

6.0.0 contains improved performance and the biggest change to UI/UX yet. It also adds a lot of new functionality and features like personal article template support, special characters tool, generic properties for content objects and better NCS content integration.

This is a large release and upgrade will require careful configuration updates and testing. Some plugins where both extracted to their own repository and updated to work better with this release.

Breaking Changes

  • To enable userTemplate, there are quite a few steps to take in order to get everything configured, see Enable and Configure Personal Template below.
  • Old and third party plugins may look different because of the extensive work on the Writer’s UI/UX

High Impact

  • IMPORTANT EditorService 5.0.0 has stricter validation concerning the itemMetaExtProperty: "imext:type". What this means is that all existing articles will need the value <itemMetaExtProperty type="imext:type" value="x-im/article"/> in their XML. Any article that lacks this information will fail to open when using EditorService 5.0.0.
    Data migration might be needed to ensure that ALL existing articles contain <itemMetaExtProperty type="imext:type" value="x-im/article"/>
  • All text styles plugins have been removed from the PluginBundle and migrated to one single plugin called im-textstyles. See the section Migrating Text Styles below.

External Dependencies

  • IMSG version 16.6.1
  • EditorService version 5.0.0 enables the use of personal template and extended article publishing statuses
  • OpenContent version 2.4.1
    • With IMSG version 16.6.1 and proper CORS configuration for the relevant Writer environment

Updated plugins with Writer 6.0.0 as dependency

Features

New UI/UX

Everything is now 232% more đź‘Ś.

Removed Proxy Cluster Dependency

Since OpenContent version 2.4.1 has Naviga ID support, the Writer no longer needs to use the proxy cluster for this communication. To enable this direct communication, OpenContent needs to use IMSG version ^16.6.1 with proper CORS configuration. Plugins that earlier were configured to use proxy cluster can then be re-configured to call Open Content directly. For configuration examples, see New Configuration: Content Host below.

OpenContent’s IMSG CORS Configuration

The OpenContent’s IMSG has an environment variable CORS_ALLOWED_ORIGINS which should be set to a comma separated string of Writer urls that are allowed to make requests directly to the OpenContent.

Example: CORS_ALLOWED_ORIGINS=http://writer.local.infomaker.io:10000,https://writer.dev.writer.infomaker.io
Important to note is the full url (including port, if ever applicable) and not just the hostname.

Extended Publishing Statuses and Access Controls

There is no longer a hard restriction on which publishing statuses can be defined in the im-publishflow plugin configuration. It is now also possible to add restrictions to the workflow using Naviga ID permissions. See Configuring Extended Publishing Statuses for examples.

Generic Properties

Enables the possibility to add simple metadata to content objects in the Writer content area (e.g images, pdfs, teaser, and content parts). The properties are limited to a list of predefined options, there is no free text support.

Personal Template Support

This release introduces the possibility to create and modify personalized templates to use when creating new stories. So far each user can have one personalized template, and this template can not be access by any other user than the original creator.

Special Characters Panel

Adds a new smoothly moving panel which contains a big list of special characters that can be inserted into the content. Accessible using the content menu or pressing cmd+shift+i.

Contentpart Supports Image

Contentpart plugin version 2.0.0 can now contain one image. See Plugin Documentation for more information.

Writer Plugin Bundle version 11.0.0

In our efforts to separate the plugins into their own repositories, we have removed the following plugins from the plugin bundle in this release. They will no longer work if used with their 11.0.0 location.

Plugins migrated from plugin bundle in version 11.0.0

These versions are the same as the versions in Plugin Bundle 10.0.0

Text Style Plugins Removed

The following text style plugins have been removed, and configuration when used in Writer version 6.0.0 needs to be updated. See Migrating Text Styles below.

Affected text style plugins

  • se.infomaker.blockquote
  • se.infomaker.dateline
  • se.infomaker.drophead
  • se.infomaker.factbody
  • se.infomaker.headline
  • se.infomaker.madmansrow
  • se.infomaker.pagedateline
  • se.infomaker.preamble
  • se.infomaker.preleadin
  • se.infomaker.subheadline

Migrating Text Styles

The following text styles have been removed and replaced by a single plugin im-textstyles. Use this plugin and its configuration to specify which text styles should be enabled in the Writer.

Previous Configuration Example

Configuration needed for each enabled text style.

{
    "id": "se.infomaker.headline",
    "name": "headline",
    "url": "https://plugins.writer.infomaker.io/releases/10.0.0/im-textstyle-headline.js",
    "style": "https://plugins.writer.infomaker.io/releases/10.0.0/im-textstyle-headline.css",
    "enabled": true,
    "mandatory": false,
    "shortcut": {
        "default": "ctrl+alt+1",
        "mac": "cmd+alt+1"
    }
},
{
    "id": "se.infomaker.blockquote",
    "name": "blockquote",
    "url": "https://plugins.writer.infomaker.io/releases/10.0.0/im-textstyle-blockquote.js",
    "style": "https://plugins.writer.infomaker.io/releases/10.0.0/im-textstyle-blockquote.css",
    "enabled": true,
    "mandatory": false
}
New Configuration Example

One single configuration needed.

{
    "id": "io.infomaker.textstyles",
    "name": "im-textstyles",
    "url": "https://plugins.writer.infomaker.io/v1/infomaker/im-textstyles/1.0.0/index.js",
    "style": "https://plugins.writer.infomaker.io/v1/infomaker/im-textstyles/1.0.0/style.css",
    "enabled": true,
    "mandatory": false,
    "data": {
        "styles": {
            "headline": {
                "shortcut": {
                    "default": "ctrl+alt+1",
                    "mac": "cmd+alt+1"
                }
            },
            "subheadline": {},
            "subheadline2": {},
            "subheadline3": {},
            "blockquote": {},
            "dateline": {},
            "drophead": {},
            "fact-body": {},
            "pagedateline": {},
            "preamble": {},
            "preleadin": {},
            "madmansrow": {}
        }
    }
}

Enable and Configure Personal Template

  • Add "enableUserTemplate": true to writer config file. (this requires all of the steps outlined below to be in place)
  • Ensure existing template and ALL EXISTING ARTICLES in Open Content has the <itemMetaExtProperty type="imext:type" value="x-im/article"/> set, Writer/EditorService wont load articles without this property
    • If this value is missing, all existing articles will need to have it added
  • Open Content needs new configuration (ContentType, indexfields, extractors and properties) for the new Template type, from the configuration file: writer-article-template-configuration.yaml
  • Requires import group rules for Template in Open Content
    • Contact someone who has experience setting up Naviga ID group rules
  • Requires Open Content IMSG version ^16.6.1 and configured to add CORS headers for Writer domain (full URL) on response
    • IMSG CORS configuration example: CORS_ALLOWED_ORIGINS=http://writer.local.infomaker.io,https://writer.dev.writer.infomaker.io
  • Requires EditorService 5.0.0
  • contentHost configuration needs to be added to Writer client configuration
  • Requires im-articlename version 2.1.0
  • Requires a manually created global template in Open Content.
    • i.e an article newsitem with <itemMetaExtProperty type="imext:type" value="x-im/article-template"/> value. This template needs to be shared with Organisation

New Configuration

Content Host

This release adds support for direct communication to Open Content without having to set up a proxy. Writer client config needs a new contentHost property in the root element with specifics on where to find the OpenContent API.

"contentHost": {
    "protocol": "https://",
    "credentials": "include",
    "hostName": "xlibris.editorial.xx.xx.infomaker.io",
    "port": "7777",
    "healthPath": "/opencontent/health",
    "queryPath": "/opencontent/search",
    "objectPath": "/opencontent/objects",
    "sortingsPath": "/opencontent/sortings"
},

Direct OpenContent Communication for Plugins

Any plugin that uses the proxy-cluster can now update its configuration to instead use direct communication with OpenContent.

Example configuration for im-archivesearch plugin using direct communication:

"data": {
    "defaultSorting": "Updated",
    "archiveHosts": [
        {
            "name": "Editorial OC",
            "host": {
                "protocol": "https://",
                "credentials": "include",
                "hostName": "xlibris.editorial.xx.xx.infomaker.io",
                "port": "7777",
                "healthPath": "/opencontent/health",
                "queryPath": "/opencontent/search",
                "objectPath": "/opencontent/objects",
                "sortingsPath": "/opencontent/sortings"
            },
            "standardQuery": {
                "contenttype": "Image"
            },
            "resultsMapping": {
                "name": "WriterFileName",
                "thumbnail": "thumbnail",
                "url": "preview",
                "credit": "WriterAuthors",
                "caption": "WriterImageCaption",
                "description": "WriterImageCaption",
                "source": "primary",
                "photoDate": "updated",
                "imageInstructions": "ImageInstructions"
            },
            "type": "editorial-opencontent"
        }
    ]
}

Generic Properties Configuration

The Generic Properties introduced in this version uses a new propertiesConfig property in the Writer client config.

"propertiesConfig" example
"propertiesConfig": {
    "showByDefault": ["im-contentpart"],
    "properties": [
        {
            "name": "alignment",
            "title": "Alignment",
            "plugins": [
                "im-contentpart",
                "im-ximimage"
            ],
            "values": [
                {
                    "title": "Left",
                    "value": "left"
                },
                {
                    "title": "Right",
                    "value": "right"
                },
                {
                    "title": "Center",
                    "value": "center"
                }
            ]
        },
        {
            "name": "effect",
            "title": "Want big text?",
            "plugins": [
                "im-teaser",
                "im-table"
            ],
            "values": [
                {
                    "title": "Yes box!",
                    "value": "yes"
                },
                {
                    "title": "No way!",
                    "value": "no"
                }
            ]
        }
    ]
}

Configuring Extended Publishing Statuses

This is a super simple im-publishflow plugin configuration for a draft->review->publish workflow where only administrators are allowed to go from review to publish.

"data": {
    "workflow": {
        "draft": {
            "pubStatus": "imext:draft",
            "title": "Draft",
            "description": "You are working on a draft for this article",
            "saveActionLabel": "Save",
            "icon": "fa-pencil",
            "color": "#828282",
            "actions": [
                {
                    "pubStatus": "imext:draft"
                }
            ],
            "transitions": [
                {
                    "nextState": "review",
                    "title": "Legal review"
                }
            ]
        },
        "review": {
            "pubStatus": "imext:review",
            "title": "Legal review",
            "description": "Article is waiting for approval",
            "saveActionLabel": "Save",
            "icon": "fa-hourglass-o",
            "color": "#ff9900",
            "actions": [
                {
                    "pubStatus": "imext:review"
                }
            ],
            "transitions": [
                {
                    "nextState": "draft",
                    "title": "Convert to draft"
                },
                {
                    "nextState": "publish",
                    "title": "Publish Now",
                    "preCondition": {
                        "hasPublishedVersion": false,
                        "permissions": [
                            "writer:group/admin",
                            "dashboard:group/admin"
                        ]
                    }
                }
            ]
        },
        "publish": {
            "pubStatus": "stat:usable",
            "title": "The article has been published",
            "description": "Changes are made to published article",
            "saveActionLabel": "Update",
            "icon": "fa-upload",
            "color": "#288dc0",
            "permissions": [
                "writer:group/admin",
                "dashboard:group/admin"
            ],
            "transitions": [
                {
                    "nextState": "draft",
                    "title": "Save new draft"
                }
            ],
            "actions": [
                {
                    "pubStart": "set",
                    "pubStop": "clear",
                    "pubStatus": "stat:usable",
                    "hasPublishedVersion": true
                }
            ]
        }
    }
}

The preCondition.permissions in this block only allows users in the admin groups to publish an article.

{
    "nextState": "publish",
    "title": "Publish Now",
    "preCondition": {
        "hasPublishedVersion": false,
        "permissions": [
            "writer:group/admin",
            "dashboard:group/admin"
        ]
    }
}

This is a custom publishing status which is supported with the release of EditorService 5.0.0.

...
"review": {
    "pubStatus": "imext:review"
...

Changes in this release

New Feature

  • WRIT-956 - Add support for article templates
  • WRIT-944 - Writer API should provide methods to verify if a user has a specific role or permission
  • WRIT-941 - Automated documentation and Api reference should be built to new Gitbook documentation site
  • WRIT-934 - Move ImageDisplay into Writer
  • WRIT-932 - Added UI Component UIChip
  • WRIT-921 - New select box as UIComponent

Improvement

  • WRIT-961 - Add ability to insert special characters into text
  • WRIT-960 - Add new Sliding Panel Component
  • WRIT-959 - Add support for Generic Properties
  • WRIT-951 - Replace font Lato with Roboto
  • WRIT-950 - Upgrade dependencies and config to solve vulnerability audit issues
  • WRIT-949 - Add possibility to enable/disable popover button and icon independently
  • WRIT-946 - Writer should add “(copy)” information in title when article is copied
  • WRIT-945 - Writer configuration tool should only be accessible by admin users
  • WRIT-942 - Update Writer logo
  • WRIT-939 - Implement new design to dropzones
  • WRIT-938 - New UI for ContextMenu
  • WRIT-933 - Update Content Menu with new design
  • WRIT-931 - Update UIButton with new design
  • WRIT-890 - Add base text style css to Writer

Bug

  • WRIT-947 - Writer should not crash when large polygons are used (many points or high resolution)
  • WRIT-940 - ContentMenu change position on scroll
  • WRIT-923 - Dropdown options doesn’t have labels specified in Firefox

Upgrade notes

WRIT-956 Add support for article templates

How to enable and configure use of templates (x-im/article-template)

  • Add "enableUserTemplate": true to writer config file. (this requires all of the steps outlined below to be in place).
  • Ensure existing article-template and ALL EXISTING ARTICLES in Open Content has the <itemMetaExtProperty type="imext:type" value="x-im/article"/> set, Writer/EditorService wont load articles without this property
  • Open Content needs new configuration (ContentType, indexfields, extractors and properties) for the new Template type, from the new config file.
  • Requires import group rules for Template in Open Content
  • Requires Open Content IMSG to be >=16.6.1 and configured to add CORS headers for Writer domain (full URL) on response
  • Requires EditorService 5.0.0
  • A new property:contentHost with configuration needs to be added to writer-config (see readme file or Release overview)
  • Requires version 2.1.0 of Article name plugin
  • Requires manually created or imported global template(s) in Open Content

    WRIT-944 Writer API should provide methods to verify if a user has a specific role or permission

    Verify user role or permissions

Writer now provides a set of methods to verify the permissions or role of current authenticated user. For more details see documentation

WRIT-941 Automated documentation and Api reference should be built to new Gitbook documentation site

New documentation site

Documentation for each new release will from here on be built to Writer gitbook page

WRIT-951 Replace font Lato with Roboto

Font family Lato have been removed. Don’t implicit say what font-family that will be used.

If you have to use serif font instead of the standard sans-serif font provided you should use CSS variable –dw-font-family-serif.