App descriptor configuration describes an app. The descriptor assigns the app a name, icon and implementation class. The name of the app content node must be unique as it is used to refer to the app across the system. This means you cannot name your own app pages since a Pages app already exists.

Here is an example descriptor for a helloworld app.

Node nameValue

 modules

 

 ui-helloworld-app

 

 apps

 

  helloworld

 

 subApps

 

 appClass

info.magnolia.ui.app.helloworld.HelloWorldApp

 class

info.magnolia.ui.api.app.registry.ConfiguredAppDescriptor

 icon

icon-app

 label

Hello World

 version

 1.0.0

Properties:

subappsNode containing subapps.
appClass

required

Fully qualified name of the Java class that contains the app business logic. The class must implement the  App  interface.

class

optional, default is info.magnolia.ui.api.app.registry.ConfiguredAppDescriptor

App descriptor class that reads the configuration. The class must implement the  AppDescriptor  interface.

enabled

optional, default is true

Enables and disables the app.

icon

optional

CSS class that identifies an icon font used on the app tile. For available names see Icons.

label

optional

Label displayed on the app icon in the app launcher.

name

required

Name of the app.

theme

optional

Name of a custom app theme.

i18nBasenameMessage bundle for localized labels.

Class examples:

  • info.magnolia.ui.api.app.registry.ConfiguredAppDescriptor
  • info.magnolia.ui.contentapp.ConfiguredContentAppDescriptor

Permissions

The permission to use an app is granted in the permissions configuration. The subnodes are roles. This allows you to provision the app to a limited group of users in your organization.

In this example the helloworld app is provisioned to demo-project-editor and demo-project-publisher roles. The role property name (editorspublishers) is arbitrary - use any name you like. The value must be a valid role name.

Node nameValue

 modules

 

 ui-helloworld-app

 

 apps

 

  helloworld

 

 permissions

 

 roles

 

 editors

demo-project-editor

 publishers

demo-project-publisher

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))