![Advanced-UI](https://img.shields.io/static/v1?label=UI&message=Advanced&color=lightgrey)![NOVA-UI](https://img.shields.io/static/v1?label=UI&message=NOVA&color=blue) The AssetMarker-Plugin can be used to mark assets or nodes with bullets according to predefined criteria. [MINITOC] ## Properties To be configured in {home}/appserver/conf/custom.properties ##### assetMarker.license > type: String, **required: yes**, default: - License key (delivered by brix IT Solutions) ##### guiPlugin.bullets.asset > type: list of string, **required: yes**, default: noAssetType,invalidInformationFields,unlinked,unreleased,availability,locked,duplicate,conversionStatus This property defines which bullets are displayed on the assets. The order of the bullets in the property also matches the actual order of the bullets on the assets. To add a bullet, define a name and list it with the other bullets. For example: `guiPlugin.bullets.asset=noAssetType,invalidInformationFields,validMetadata,unlinked,unreleased,availability,locked,duplicate,conversionStatus,myBullet`. Here myBullet would be added. > > > > The standard CELUM bullets must also be listed in the property, otherwise they'll be missing afterwards. The name of the bullet is used for its remaining configuration, therefore `{bulletName}` is to be replaced by the individual name of each instance. ##### guiPlugin.bullets.node > type: list of string, required: no, default: subscription,driveSync,flowboard This property defines which bullets are displayed on the nodes. The order of the bullets in the property also matches the actual order of the bullets on the nodes. To add a bullet, define a name and list it with the other bullets. For example: `guiPlugin.bullets.asset=subscription,driveSync,flowboard,myBullet`. Here myBullet would be added. > > > > The standard CELUM bullets must also be listed in the property, otherwise they'll be missing afterwards. The name of the bullet is used for its remaining configuration, therefore `{bulletName}` is to be replaced by the individual name of each instance. ##### assetMarker.{bulletName}.imagePath > type: string, **required: yes**, default: - This property specifies the relative path to the bullet icon, e.g. `../images/16x16_black/visible.png`. Each bullet needs an icon with size 16 × 16 px, the actual content should be ~12 × 12 px, background transparent. ##### assetMarker.{bulletName}.title > type: string, **required: yes**, default: - This property sets the mouseover-title on the bullet. For multilanguage-support, add your messages to `appserver/lang/customMessages_xy.properties` and use the key here. Example: * `assetMarker.{bulletName}.title=assetMarker.myTitle` * `appserver/lang/customMessages_de.properties` contains `assetMarker.myTitle=Mein Titel` * `appserver/lang/customMessages_en.properties` contains `assetMarker.myTitle=My Title` ##### assetMarker.{bulletName}.placeholderInTitle > type: boolean, required: no, default: false, since: 1.5 Inform the bullet that the title contains spring message placeholders, such as `{0}`, which will then be populated with the actual value of the information field of said asset. Only available when handling infofields. Use sparingly! Example: * `appserver/lang/customMessages_de.properties` contains `assetMarker.myTitle=Wert ist: {0}` * `appserver/lang/customMessages_en.properties` contains `assetMarker.myTitle=Value is: {0}` ##### assetMarker.{bulletName}.assetTypeIds > type: list of long, required: no, default: - If this property is set, only assets that have one of the configured Assettypes will have the bullet. ##### assetMarker.{bulletName}.nodeIds > type: list of long, required: no, default: - If this property is set, only assets that are linked to one of the configured nodes (or one of its children) will have the bullet. ##### assetMarker.{bulletName}.nodeTypeIds > type: list of long, required: no, default: - If this property is set, only assets that are linked to one of the configured Nodetypes will have the bullet. ##### assetMarker.{bulletName}.infofield.{id} > type: string, required: no, default: - This property can be set for every Informationfield. If this property is configured for an Informationfield, only assets that have the configured value in these fields will have the bullet. The configuration of this property depends on the Type of the Informationfield as shown below. Furthermore, the value can be set to 'isEmpty' and 'notEmpty' for all types. > > > > For better performance, we recommend that you add the property `customfields.list.asset.required.field.ids` with a list of all the information fields that you configure in the AssetMarker (e.g. `customfields.list.asset.required.field.ids=108,118,138`). If you don't explicitly tell CELUM to pre-load these information field values in the list response, the AssetMarker will have to reload the asset with those information field values, which can be slow. * text/textarea/localized text/localized textarea: possible values are a word or a sentence. The maker will be shown if the informationfield contains the configured value. * boolean: possible values are false/true * nodereference: takes a list of comma separated nodes. If the nodereference value is one of those nodes, the marker will be shown. * checkbox: possible values are false/true * dropdown: the configuration is made by setting the property to the required option index. * date: there are different ways to configure a datefield: * after MM/dd/yyyy * before MM/dd/yyyy * between MM/dd/yyyy MM/dd/yyyy * next xy * last xy The value xy is a daycount. If the value is set to -1 it means infinite days from today. (e.g. next -1 means everyday in the future) * number/double: there are different ways to configure a number or double field (since v1.3): * \>x * =x * [x,y) (range x <= value < y) * =x x and y are numbers (resp. doubles). Ranges with '()' / '[]' / '(]' are also allowed. > > > > > > You can prefix the expected value with a `!` to invert the result (since 1.4) ##### assetMarker.{bulletName}.infofieldsOrMode > type: boolean, required: no, default: false, since: 1.4 When configuring multiple `assetMarker.{bulletName}.infofield.{id}` per asset marker, the conditions are joined with AND by default. This property allows you to use OR instead, but just within the information fields. ##### assetMarker.{bulletName}.notEmpty > type: set of long, required: no, default: - This property takes a comma separated list of informationfield-Ids that should not be empty. ##### assetMarker.{bulletName}.nodeExclusive > type: boolean, required: no, default: false If this property is set to true, the bullet is only shown if the asset is not linked to any other node than the ones configured in the property assetMarker.{bulletName}.nodes ##### assetMarker.{bulletName}.hasFileextensions > type: list of string, required: no, default: - This property takes a comma separated whitelist of file-extensions that the assets should have. ##### assetMarker.{bulletName}.nodesNotMode > type: boolean, required: no, default: false Inverts the assetMarker.{bulletName}.nodes property if set to true. ##### assetMarker.{bulletName}.assetTypesNotMode > type: boolean, required: no, default: false Inverts the assetMarker.{bulletName}.asssetTypes property if set to true. ##### assetMarker.{bulletName}.nodeTypesNotMode > type: boolean, required: no, default: false Inverts the assetMarker.{bulletName}.nodeTypes property if set to true. ##### assetMarker.{bulletName}.nodeMarker > type: boolean, required: no, default: false If enabled, the asset marker is for nodes not assets (if true, guiPlugin.bullets.node is required) ##### assetMarker.{bulletName}.custom > type: string, required: no, default: - This property allows to use a custom bean to define the bullet rules. List of available custom beans: * assetMarkerIsDateControlled (bullet is shown if asset has availability set to date-controlled) * assetMarkerTextIcon (shows a rendered text icon, for example the expiration date of an asset. This is computationally expensive, use sparingly) * assetMarkerLastModified (bullet is shown if Asset has a specific last modified date) * assetMarkerHasVersion (*since 1.6.1*, shown when an asset's version is not 0. `title` is set to message `assetMarker.version=Version {0}` in order to show the current version. Note that this assumes you never delete versions, as actually loading all versions of all assets would be very slow, i.e. it will still show up when you add version 1 and then delete version 0). #### assetMarkerTextIcon ##### assetMarker.{bulletName}.textIcon.key > type: string, required: no, default: - This property defines the category of the text-icon value. One of: `infofield`, `fileinfo`, `property` ##### assetMarker.{bulletName}.textIcon.value > type: string, required: no, default: - This property defines the text-icon value. Possible values depending on *key*: * infofield: `id` of the information field (long) * fileinfo: fileExtension, originalFileName, originalFileSize * property: width, height, etc. ##### assetMarker.{bulletName}.textIcon.maxLength > type: int, required: no, default: -, since 1.3.13 The maximum length of the text that is displayed. Useful if you have a keyword like "EN - English" but only wish to show "EN". ##### assetMarker.{bulletName}.textIcon.percentageWidthImage > type: path to file, required: no, default: -, since 1.8, not for NOVA Path to an image you wish to show only a part of, depending on the input value. Basically this only servers one purpose, and that is to display a "5 stars"-style marker that has a better resolution than a single star. Starting with the following image (height needs to be 16px, width is dynamic): ![5stars](5stars.png) Supposing the information field you provided via `assetMarker.{bulletName}.textIcon.value` has a value of *3.7*, it generates: ![3.7stars](5stars-usage.png) You can set the range through `..Min` (below which nothing will be displayed) and `..Max` (used to calculate the percentage): ```ini assetMarker.ratingTextIcon.title=rating assetMarker.ratingTextIcon.custom=assetMarkerTextIcon assetMarker.ratingTextIcon.textIcon.key=infofield assetMarker.ratingTextIcon.textIcon.value=155 assetMarker.ratingTextIcon.textIcon.percentageWidthImage=/opt/celum/home/appserver/META-INF/resources/images/5stars.png assetMarker.ratingTextIcon.textIcon.percentageWidthMin=2 assetMarker.ratingTextIcon.textIcon.percentageWidthMax=5 ``` #### assetMarkerLastModified ##### assetMarker.{bulletName}.lastModified > type: string, required: **yes**, default: - This property configures the bullet depending on the last modified date. It's configured like a date field: * after MM/dd/yyyy * before MM/dd/yyyy * between MM/dd/yyyy MM/dd/yyyy * last xy ## Example ``` guiPlugin.bullets.asset=noAssetType,invalidInformationFields,unlinked,unreleased,availability,locked,duplicate,conversionStatus,groupBullet,progressBullet,copyrightValidEnd # assets that are linked to a specific node type assetMarker.groupBullet.imagePath=../images/bullets/group.png assetMarker.groupBullet.title=maintab.grouptitle assetMarker.groupBullet.nodeTypeIds=106 # assets that have the apprival dropdown set to pending assetMarker.progressBullet.imagePath=../images/bullets/asset_in_progress_16_blue.png assetMarker.progressBullet.title=infofield.approval.pending assetMarker.progressBullet.infofield.165=2 # assets that have a copyright date in the past assetMarker.copyrightValidEnd.imagePath=../images/bullets/until_red.png assetMarker.copyrightValidEnd.title=assetMarker.copyrightValidEnd assetMarker.copyrightValidEnd.infofield.235=last -1 ``` ## Compatibility Matrix | Asset Marker | CELUM (min. version) | |:------------- |:-------------------------- | | 1.0 - 1.2.1 | 5.12.2 - 5.13.2 | | 1.2.2 - 1.3.8 | 5.13.3 | | 1.3.8+ | 5.13.4 (tested up to 6.16) | ## Screenshot ![screenshot](screenshot.png) ## Release Notes #### 1.0 > Released 2018-01-28 Initial Version #### 1.1.0 > Released 2018-06-12 Add isDateControlled marker #### 1.2.0 > Released 2018-08-09 Add the nodeExclusive property #### 1.2.1 > Released 2018-08-27 Add texticon marker #### 1.3.0 > Released 2018-11-08 Add number and double field logic #### 1.3.9 > Released 2020-02-18 > CELUM 6.4 compatible #### 1.4 > Released: 2021-07-20 * Added NOT-prefix `!` to infofield values * Added infofieldsOrMode #### 1.5 > Released: 2021-10-01 * added [placeholderInTitle](#asset-marker-bullet-name...) feature #### 1.6 > Released: 2021-11-23 * Node capability added