Content Profiles

Content profiles let you change the way how your content should be edited and what validation rules should apply.

Definition

You can specify custom profiles in server/data/content_types.json file.

Then you can sync it with database using cli command:

python manage.py app:initialize_data --entity-name content_types

In the file there should be list of profiles:

[
    {"_id": "story", "label": "Story", "enabled": 1, ...},
    {"_id": "snap", "label": "Snap", "enabled": 0, ...}
]

Available fields are:

_id string

Profile id, its value will be set in item.profile field and will be available in output.

label string

Label visible in the client.

description string

Optional profile description.

priority int

Used for sorting in descending order.

enabled boolean

Flag if profile is enabled (visible in lists) or not.

schema dict

Schema configuration for profile. There you can define validation rules for Item Schema fields:

"schema": {
    "headline": {
        "type": "string",
        "required": true,
        "maxlength": 120,
    },
    "keywords": {
        "type": "list",
        "required": true,
        "allowed": ["sport", "news"]
    }
}

Keys are field names, and for each field you can specify:

type string

One of string, list, dict, integer, number.

required boolean

If true, field must be there and be non empty.

minlength, maxlength int

Minimum and maximum length allowed for string type.

allowed list

List of allowed values for string or list type.

schema dict

Validation rules for dict type items.

nullable boolean

If True the value can be set to null.

regex string

Regex validation rule, eg.:

"regex": "[a-z]+"
editor dict

Editor configuration for profile, there you can set what fields will be visible and how these should be displayed:

"editor": {
    "headline": {
        "order": 1,
        "sdWidth": "full",
        "enabled": true
    },
    "body_html": {
        "order": 5,
        "formatOptions": ["h2", "bold", "italic"],
        "enabled": true
    },
    "ednote": {
        "enabled": false
    }
}

Rules for fields are:

order int

Where the field is visible in the editor.

sdWidth string

One of full, half and quarter. Fields are floating so there can be more on the same line as long as they fit there.

enabled boolean

If false field won’t be visible in the editor.

formatOptions list

What format options should be available, only works with body_html and abstract fields. For each there will be a button visible in the editor toolbar.

h2

bold

italic

underline

quote

anchor

embed

picture

removeFormat

Available schema fields

These are fields you can use in your content profile:

Plain text profile

Before there are any content profiles defined for a desk there is one called Plain text.

Package profiles

Package profiles are not yet supported.