![Magnolia](https://img.shields.io/static/v1?label=UI&message=Magnolia&color=brightgreen) Magnolia:connect is a Magnolia extension which allows you to embed assets from CELUM DAM directly into your Magnolia CMS pages. ## 1. Installation ### CELUM + Make sure Remote SDK is installed and activated ### Magnolia + Add the brix external Maven Repository to your Magnolia Maven project: ``` brix.external brix external repository https://maven.brix.ch ``` + Add your credentials for the brix external Maven Repository (delivered by brix IT Solutions) to the server section of your Maven settings.xml: ``` ... brix.external your-username your-password ... ``` + Add the celum-dam-connector module as a dependency in your Magnolia Maven project: ``` ch.brix.magnolia celum-dam-connector 4.5.0 ``` + Build your Magnolia webapp with Maven and deploy it ## 2. Configuration Add the following configuration to the config.yaml, config.xml or JCR ##### licenseKey > type: String, required: yes Your license key for the module (provided by brix) ##### clientId > type: String, required: yes Remote SDK Client ID >>> Can alternatively be a path from the passwords app, e.g. /celum-credentials/clientId ##### clientSecret > type: String, required: yes Remote SDK client secret >>> Can alternatively be a path from the passwords app, e.g. /celum-credentials/clientSecret #### serverSecret > type: String, required: yes Remote SDK server secret >>> Can alternatively be a path from the passwords app, e.g. /celum-credentials/serverSecret #### rootNodeId > type: Integer, required: yes The ID of the CELUM node, which serves as the root for Magnolia:Connect. All assets which are assigned to this node or its sub-nodes will be available in Magnolia. #### includedInformationFields > type: List of Integers (comma-separated), required: no A comma separated list of IDs of the information fields which should be loaded with the asset. Also see [Asset Metadata](#31-asset-metadata). #### requestResultLimit > type: Integer, required: no For performance reasons you can limit the number of assets which should be loaded with each request. ## 3. Usage Once the module has been installed you can add assets to the website and/or apps by using the default DAM link field. image: class: info.magnolia.ui.field.LinkFieldDefinition buttonSelectNewLabel: Select new ... buttonSelectOtherLabel: Select another ... chooser: workbenchChooser: appName: dam-chooser Or using the dam link field with the dam chooser or adding your own celum-chooser. celum: $type: damLinkField chooser: workbenchChooser: appName: dam-chooser datasource: class: info.magnolia.dam.app.data.AssetDatasourceDefinition name: celum ### 3.1. Asset Metadata It is possible to load and display CELUM information field values in your Magnolia components. First you have to configure which information fields should be loaded with the asset with the property `includedInformationFields` (see [Configuration section](#2-configuration) for details). You can now call the method `getInformationFieldValue(long informationFieldId)` on the `ch.brix.magnolia.celum.integration.model.CelumAsset` instance, which should be available in your component model. This will return an instance of type `ch.brix.magnolia.celum.integration.model.informationfield.value.CelumInformationFieldValue` or `null` if the requested information field value is not available on the asset. ![magnolia:connect-CelumInformationFieldValue](CelumInformationFieldValue.png) The type of the `value` property depends on the type of the information field in CELUM: * `number` => `java.lang.Long` * `double` => `java.lang.Double` * `checkbox` => `java.lang.Boolean` * `date` => `java.util.Calendar` * `text` / `textarea` => `java.lang.String` * `localizedtext` / `localizedtextarea` => `ch.brix.magnolia.celum.integration.model.informationfield.value.LocalizedValues` ![magnolia:connect-LocalizedValue](LocalizedValue.png) * `dropdown` => `ch.brix.magnolia.celum.integration.model.informationfield.value.DropDownValue` ![magnolia:connect-DropDownValue](DropDownValue.png) * `nodereference` => `java.util.Set` ![magnolia:connect-NodeReference](NodeReference.png) Instead of working with the typed `value` property you can also use the convenience methods `getValueAsString()` and `getLocalizedValue(String localeCode)` / `getLocalizedValue(Locale locale)`. The `getValueAsString()` method will return a best-effort String representation of the value, while the `getLocalizedValue()` methods try to return the value in the specified locale – for unlocalized types (`number`, `double`, `checkbox`, `date`, `text`, `textarea`) they will return the same result as `getValueAsString()`. ## Compatibility Matrix | CELUM ContentHub | Magnolia | Magnolia Connect | |:-----------------|:---------|:-----------------| | 20.9+ | 6.2 | 4.5.0 | ## Release Notes #### 4.5.0 - Initial release for Magnolia 6.2