Configuration
The ACE Content Developer is configured using a JSON file. The location of the configuration file is specified using the environment variable codeConfigurationFile
For example, the following docker-compose.yml configuration will tell the Content Developer to use the /etc/code/configuration.json file for configuration mounted from the local file ./config/code.json:
version: '3.2'
services:
ace-code:
container_name: ace-code
image: atexproducts/ace.code:${CONTENT_DEVELOPER_VERSION}
volumes:
- ./config/code.json:/etc/code/configuration.json
environment:
- codeConfigurationFile=/etc/code/configuration.json
Environmental value support
Configuration values in the configuration file can be supplied either as static values or from variables in the environment where the Content Developer application is running.
The syntax for environmental value substitution is ${VARIABLE_NAME:-DEFAULT VALUE}.
Example configuration:
{
"service": {
"ContentService": {
"path": "${CONTENT_SERVICE_PATH:-/content-service/content/}"
}
}
}
In the example above, the value of the ContentService path configuration would be taken from the environment
variable CONTENT_SERVICE_PATH with the default value (used if the variable is not set) being
/content-service/content/.
Service configuration
The default configuration of the Content Developer works well for local development where most - if not all - services and REST APIs are deployed on the local machine. In cases where the ACE services are located elsewhere, the Content Developer needs to be configured to know where to look.
Services locations are configured in the service section of the configuration file where you can configure the following:
- A common base Url (
service/common/baseUrl) that will be used by all services. If specified, all service location paths (see next item) will automatically be relative to this base Url. Can also be a relative path. - A service path for each service (
service/<service-name>/path) that tells the Content Developer where the ACE server-side endpoint for the service is located. The service path will automatically be relative to the common base Url (see above) unless it starts with an explicit/, in which case it will always be absolute. Has to be a path and cannot be a Url.
Example configuration:
{
"service": {
"common": {
"baseUrl": "/"
},
"ContentEventService": {
"path": "/content-events",
"contentTypes": ["articleContent"],
"eventTypes": ["CREATE", "UPDATE", "DELETE", "WORKFLOW"]
},
"UserDataService": {
"path": "/content-service/user/"
},
"AuthenticationService": {
"path": "/content-service/security/token/"
},
"PermissionService": {
"path": "/content-service/security/permission/"
},
"ContentService": {
"path": "/content-service/content/"
},
"ContentInfoService": {
"path": "/content-service/contentinfo/"
},
"FileService": {
"path": "/file-service/file/"
},
"LocalizationService": {
"path": "/content-service/localization/"
},
"TaxonomyService": {
"path": "/taxonomy-service/"
},
"SearchService": {
"path": "/search-service/"
},
"TypeService": {
"path": "/content-service/type/"
},
"ImageService": {
"path": "/image-service/"
},
"WorkspaceService": {
"path": "/content-service/content/workspace/"
},
"ClipboardService": {
"path": "/clipboard-service/"
},
"ViewService": {
"path": "/content-service/view/"
},
"FileDeliveryService": {
"path": "/file-delivery-service/"
}
}
}
Authentication
CODE can authenticate users against either the ACE default user sources (configured in ACE) or
directly against an Amazon Cognito user pool hosted UI. Configuration is made using Authentication:
{
"Authentication": {
"method": "cognito",
"cognito": {
"loginUrl" : "<AWS Cognito hosted UI URL>",
"clientId" : "<AWS Cognito user pool client ID>",
"scope" : "<AWS Cognito authentication scope>",
"redirectUri" : "<CODE absolute callback URL>"
}
}
}
Allowed values for the method property are ace and cognito.
Template lists
Whenever a content is created or edited in the Content Developer, an ACE UI presentation template is used. The lists of templates to use is configurable using:
- The complete list of templates (
TemplateService/templateListAlias) as an ACE alias for an ACE UI template list content. This is the full list of templates which will be used in the Content Developer. Content types missing a representing template in this list will not be editable or openable by the Content Developer. - The list of templates to use for the content quick creator (
TemplateService/templateListQuickCreatorAlias) as an ACE alias for an ACE UI template list content. This is the list of templates which will be presented in the application top bar content creator.
Example configuration:
{
"TemplateService": {
"templateListAlias": "ace-starterkit/templateList",
"templateListQuickCreatorAlias": "ace-starterkit/templateListQuickCreator"
}
}
Aside panels
There are two Asides (left and right) in the Content Developer UI. The left hand Aside
contains a Content structure panel, giving a content structure overview, and the
right hand Aside contains a Content activity inbox as well as a Workflow inbox which
are both used to monitor content flows in ACE.
Content event service
The activity and the workflow inboxes are driven by the Content event service. As such,
default configuration that should be applied to both inboxes are configured here:
- The content types to process (
ContentEventService/contentTypes), as an array of content type names. An empty list will mean no content events will be processed at all. - The event types to process (
ContentEventService/eventTypes), as an array of content event types. An empty list will mean no content events will be processed at all.
Example configuration:
{
"service": {
"ContentEventService": {
"contentTypes": ["articleContent"],
"eventTypes": ["CREATE", "UPDATE", "DELETE", "WORKFLOW"]
}
}
}
Content activity inbox
The Content activity inbox is enabled by default. The configuration may contain the following properties:
ContentActivityInbox/enabled- To disable the inbox set this property tofalse, the inbox will no longer be visible in the UI (the default istrue).ContentActivityInbox/contentTypes- An array of content type names controlling what types of content that will be shown in the inbox. If omitted, content of all types are shown. (An empty array will hide all content.)ContentActivityInbox/eventTypes- An array of event types controlling what types of events the inbox will react to. If omitted,["CREATE", "UPDATE", "DELETE"], will be used. (An empty array will make the inbox unresponsive to all events.)
Example configuration:
{
"ContentActivityInbox": {
"contentTypes": ["articleContent"],
"eventTypes": ["CREATE", "DELETE", "UPDATE"]
}
}
Workflow inbox
The Workflow inbox is enabled by default. The configuration may contain the following properties:
WorkflowInbox/enabled- To disable the inbox set this property tofalseand the inbox will no longer be visible in the UI (the default istrue).WorkflowInbox/contentTypes) - An array of content type names controlling what types of content that will be shown in the inbox. If omitted, content of all types are shown. (An empty array will hide all content.)WorkflowInbox/workflowStates- An array of workflow state names. If omitted all workflow states will be monitored. (An empty array will hide all workflowStates.)
Example configuration:
{
"WorkflowInbox": {
"contentTypes": ["articleContent"],
"workflowStates": ["inReview", "changesRequested"]
}
}
Content structure panel
The left hand Aside in the Content Developer contains the content structure overview. This is used to navigate the content structure of an ACE installation.
The structure overview is configured using a couple of separate configurations: StructureService, QueryService as well as the tree itself. The configuration may contain the following properties:
-
ContentStructure/structureRoots- An array of content roots to display in the content structure overview. The entries should be content aliases of the content root content(s). -
ContentStructure/structureQuery- A string on the format<query type>/<query value>which will be used to determine which contents to use as content roots in the content structure overview. Currently only supports the query typecontentType. A value likecontentType/siteContentwould use all content of content typesiteContentas content roots.
NOTE: Using structure queries requires using an ACE of version 2.3.0 or later, and is only supported for SQL storage.
NOTE: If both a non-empty list of structure roots and a structure query has been configured, the structure roots list will take precedence.
{
"ContentStructure": {
"structureRoots": ["ace-starterkit/site"],
"structureQuery": "contentType/siteContent"
},
"service": {
"StructureService": {
"path": "/content-service/structure/"
},
"QueryService": {
"path": "/content-service/query/"
}
}
}
Please see the ACE Content Structure documentation as well the ACE Query service documentation for more information.
Localization / i18n
The following can be configured for Content Developer localization:
- The localization contexts to use (
i18n/localizationContexts), as an array of context names. Each context represents a partial localization in ACE localization. Please see the ACE Core documentation on localization for more information.
Example configuration:
{
"i18n": {
"localizationContexts": ["ace-ui", "code", "ace-starterkit"]
}
}
Content preview
The following can be configured for content preview:
- The preview base Url (
PreviewService/previewBaseUrl) of the preview target, such as a website, as a Url string. - The preview variant to use (
PreviewService/previewVariant), as a variant name string. This is the name of an ACE preview variant. Whenever a content preview is requested in the Content Developer, the content to preview will be fetched from ACE using this variant.
Example configuration:
{
"PreviewService": {
"previewVariant": "webPreview",
"previewBaseUrl": "http://localhost:9000/ace.preview"
}
}
Content web view
The following can be configured for content web view:
- The web view base Url (
WebViewService/webViewBaseUrl) of the web view target, such as a website, as a Url string. - The web view variant to use (
WebViewService/webViewVariant), as a variant name string. This is the name of an ACE web view variant. Whenever a content web view is requested in the Content Developer, the content to get a web view of will be fetched from ACE using this variant.
Example configuration:
{
"WebViewService": {
"webViewVariant": "webView",
"webViewBaseUrl": "http://localhost:9000/home"
}
}
Search and faceting
Faceting in the Content Developer can be configured using the Search/faceting configuration property of the configuration in the form of an array of faceting field objects. Each faceting field takes parameters label and name, where label is the human readable string that will be shown in the Content Developer search faceting panel and name is the name of the Solr field to facet on.
Search in the Content Developer can be configured inside the service configuration (see above) of the SearchService in the form of the defaultValues property which is used to control the default behaviour of search. The following default value properties are configurable:
- The name of the Solr collection (
service/SearchService/collection) to use for searching, as a collection name string. Defaults internally (without configuration) to internal. - Additional query parameters (
service/SearchService/params) that will be sent to the ACE search service with every request.
The following Content Developer configuration example configures three facets as well as some default search parameters:
Example configuration:
{
"Search": {
"faceting": [
{
"label": "Type",
"name": "ace_type_s"
},
{
"label": "Subjects",
"name": "ace_tag_dimension.subjects_ss"
},
{
"label": "Tags",
"name": "ace_tag_dimension.tags_ss"
}
],
"maxFacetValues": 50
},
"service": {
"SearchService": {
"path": "/search-service/",
"defaultValues": {
"collection": "internal",
"params": {
"rows": 40,
"df": "text_txt",
"defType": "edismax"
}
}
}
}
}
Content Cloning
Content Cloning can be configured using the ContentCloning configuration:
- The content types that should be cloneable (
ContentCloning/contentTypes), as an array of content type names. An empty or omitted list will mean no content types are cloneable.
Example configuration:
{
"ContentCloning": {
"contentTypes": ["articleContent"]
}
}
Environment Styling
The environment configuration can be used to change the color of the top toolbar along with making it display a custom string.
- The
nameproperty (string), if configured, will be shown in the top toolbar alongside the tools in the top toolbar. - The
colorproperty (string), if configured, will be used as the color of the top toolbar. All valid CSS values are acceptable.
Example configuration:
{
"Environment": {
"name": "STAGING",
"color": "#0066cc"
}
}
