app definition


An app descriptor 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.

Referring to a content type

Since the introduction of the Content Types module, you can refer to a content type definition within an app descriptor.

This approach keeps the app descriptor very short. There is no need to specify the below mentioned properties. The content types and content apps frameworks automatically generate and register an app description based on the content type definition. 

Example:

Error rendering macro 'code-pro'

Error 401 retrieving server data from URL. User is not authorized to perform the request.

You can tailor the app descriptor within the same file by adding additional configuration which will overwrite any configuration with the same name coming from the !content-type directive. Alternatively create a decoration.

Error rendering macro 'code-pro'

Error 401 retrieving server data from URL. User is not authorized to perform the request.

For further details please see Using Magnolia Content Types - Creating a content app based on the content type.

Properties

Here is an example descriptor for a helloworld app.

ui-helloworld-app/apps/helloworld.yaml
appClass: info.magnolia.ui.app.helloworld.HelloWorldApp
class: info.magnolia.ui.api.app.registry.ConfiguredAppDescriptor
icon: icon-app
label: Hello World
subApps:
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:

subapps

required

Node containing subapps.

appClass

required

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

name

optional

Name of the app.

If a value is not provided, either the file name (without the suffix .yaml) or the JCR node name is used.

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.

Examples:

  • info.magnolia.ui.api.app.registry.ConfiguredAppDescriptor
  • info.magnolia.ui.contentapp.ConfiguredContentAppDescriptor
  • info.magnolia.ui.contentapp.contenttypes.ConfiguredContentTypeAppDescriptor
contentType

optional

Describes the app with a content type.

For this to work, you have to:

  1. Define a data source for the app.
  2. Use the info.magnolia.ui.contentapp.contenttypes.ConfiguredContentTypeAppDescriptor class.

The following stock apps have a contentType class assigned so that they can be easily referenced:

  • Assets App
  • Categories app
  • Pages App
  • Stories App
  • Tours app (in the Travel demo)

Use the Definitions app to check the name of the content type.

enabled

optional , default is true

Enables and disables the app.

icon

optional

The name of an SVG app icon. See How to add SVG icons for apps.

i18nBasename

optional

Message bundle for localized labels.

label

optional

Label displayed on the app icon in the app launcher.

theme

optional

Name of a custom app theme.

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 certain users in your organization.

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

ui-helloworld-app/apps/helloworld.yaml
appClass: info.magnolia.ui.app.helloworld.HelloWorldApp
class: info.magnolia.ui.api.app.registry.ConfiguredAppDescriptor
icon: icon-app
label: Hello World
permissions:
  roles:
    editors: travel-demo-editor
    publishers: travel-demo-publisher
Node nameValue

 modules


 ui-helloworld-app


 apps


  helloworld


 permissions


 roles


 editors

travel-demo-editor

 publishers

travel-demo-publisher

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