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/"
    }
  }
}

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 to false, the inbox will no longer be visible in the UI (the default is true).
  • 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 to false and the inbox will no longer be visible in the UI (the default is true).
  • 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 two separate configurations, for the StructureService 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": {
    "structureRoots": ["ace-starterkit/site"]
  },

  "service": {
    "StructureService": {
      "path": "/content-service/structure/"
    }
  }
}

Please see the ACE Content Structure 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"
  }
}

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"
        }
      }
    }
  }
}