Adding context actions to detail view

Released: Extension point

You can add context actions to the detail view for an item (DMS object, document or dossier). These context actions are also summarized in the menu for context actions (three stacked dots) for an item. The app that you want to provide such an extension must return an HTTP response in JSON format under the link relation dmsobjectextensions. The response must provide the following information for each context action:

  • Extension point context: DmsObjectDetailsContextAction

  • Activation condition for displaying the context action.

  • Display name for the context action in the available translations.

  • Link to the context action icon.

  • The action to be performed once the user has clicked on the context action. Specify a relative link that is called from DMSApp using HTTP GET.

Any context action can also be created via HTTP POST requestfor the URL /dms/extensions in the DMSApp. The request must be made by a user with administration rights only. If the request response is successful, the extension is stored in the DMSApp and you get a location URLin the response header. Via the location URL, a user with administration rights can also delete the extension in the DMSApp. To do this, an HTTP DELETE requestmust be sent to the Location URLvalue.

Example

The example shows how you arrange the HTTP response of the dmsobjectextensions link relation to add a context action using the DmsObjectDetailsContextAction extension point. You define different properties for each context action.

{
        "extensions": [
        {
                "id": "myapp.openExternalApp",
                "activationConditions": [{
                        "propertyId": "repository.id",
                        "operator": "or",
                        "values": ["e632f767-5cfa-538d-ab55-6756c36a74c9"]
                }],
                "captions": [{
                        "culture": "de",
                        "caption": "Externe Applikation öffnen"
                },
                {
                        "culture": "en",
                        "caption": "Open external application"
                }],
                "context": "DmsObjectDetailsContextAction",
                "uriTemplate": "/myapp/dosomething?id={dmsobject.property_document_id}",
                "iconUri": "/myapp/images/goto.svg",
        "target": "dapi_navigate"
        }]
}

Property

Properties of a contained object

Description

id

-

Specifies the unique technical name used to differentiate the extension from other extensions.

activationConditions

For each extension, the application notifies you of which activation conditions are used to display the context action. These activation conditions are reported by the application in advance. If the activation conditions were not reported in advance, DMSApp would have to query other apps with a network request at a later time when the user is viewing a document. The waiting time for the user would then increase significantly if an app only responds to this request with a delay.

A context action is displayed if all the sub-conditions are met. If the list of activation conditions does not contain an entry, the extension is generally active.

You specify the activation conditions as an array.

propertyId

Specifies the ID of the property that is tested for the activation condition. The available values are described in more detail below.

operator

The operator specifies how a sub-condition is evaluated.

The following operator is available:

or: An or condition is fulfilled if the current value of the property corresponds to one of the values. Capitalization is not taken into account.

notOr: A notOr condition is fulfilled if the current value of the property does not correspond to any of the values. Capitalization is not taken into account.

values

Specifies the values in the form of an array that is compared with the value of the propertyId property.

captions

Each context action notifies you of the name under which it is displayed. You can also include different languages. In this case, the language-dependent names are specified as an array.

To ensure the language packages are fully compatible, specify the languages for the following Cultures names:

  • cs (Czech)

  • da (Danish)

  • de (German)

  • en (English)

  • es (Spanish)

  • fr (French)

  • hr (Croatian)

  • it (Italian)

  • nl (Dutch)

  • pl (Polish)

  • sr (Serbian)

  • sk (Slovakian)

  • zh-CN (Chinese (simplified))

If the user requests a language for which the extension app does not have any specification for the localized (language-specific) name, an alternative language is determined for the view based on the following rules:

  • If the language identifier with the regional code (e.g. en-GB) is not found directly, the system checks whether the higher-level language (language without regional code) is available (en). In the example above, "Export List" is displayed for a request of the "en-GB" language because "en" is used as an alternative.

  • If the higher-level language is also unavailable, English "en" without the regional code is always used as the alternative.

  • If "en" is also not specified as the alternative, the first specified language is displayed as the alternative.

culture

Specifies the language ID for which the name of the context action is defined. The specification includes the language code (e.g. en) and optionally an additional regional code (e.g. en-GB).

caption

Specifies the language-dependent name of the context action.

context

-

Specifies the extension point to which you want to add the context action.

Specify the following value for context actions for the detail view:

DmsObjectDetailsContextAction

uriTemplate

-

In the uriTemplate property, you define the URL that is to be called when the user clicks on the context action. You can define placeholders to receive more information about the current context. The placeholders are replaced by the actual properties when the extension is called. The properties are transferred to the URI with URL encoding. You can find the available placeholders below.

iconUri

-

Specifies the link to the icon that is displayed for the context action. The icon file must be available in SVG format.

The color of the SVG's fill must not be specified, so that the fill color can be adjusted by using the theming.

If you want to use a custom SVG file for a symbol, we recommend saving the SVG file to the installation directory d.3one/dms/Client/Custom.

target

-

(Optional) Specifies where the content of the context action should be displayed.

Possible values:

  • dapi_navigate (default value): Navigates to a new main resource with the content within the Shell app.

  • dapi_inner_supply: Opens an Inner Supply (display area below the app bar) with the content.

  • dapi_outer_supply: Opens an outer supply (display area above the app bar) with the content.

  • _blank: Opens a new tab in the browser with the content.

You can use the following values when defining context actions for the detail view in the following areas:

  • Defining activation conditions for the propertyId property

  • Defining placeholders in the uriTemplate property

Topic

Value

Description

Repository

repository.id

ID of the repository as specified in the d.ecs repo app. You can find the repository ID in the detail section of the d.3 repositories feature (https://<Base address>/repo/repositories/). You can obtain this ID either by using the URL or clicking All Programs > d.velop > d.3one > Repository Configuration in the Start menu.

User

user.d3.group_id

Activation condition: ID of a d.3 user group (maximum of eight characters) of which the user that is currently logged in is a member.

Placeholder uriTemplate: List of IDs of the d.3 user groups (each a maximum of eight characters) of which the user currently logged in is a member as an array in JSON format.

user.idp.group_id

Activation condition: GUID of an identity provider app user group of which the user that is currently logged in is a member.

Placeholder uriTemplate: List of GUIDs of the identity provider app user groups of which the user currently logged in is a member as an array in JSON format.

Property for the item

dmsobject.property_editor

Editor of the item.

dmsobject.property_owner

Owner of the item.

dmsobject.property_filename

File name for the item.

dmsobject.property_filetype

File type for the item.

dmsobject.property_document_number

Document number of the item.

dmsobject.property_creation_date

Creation date of the item.

dmsobject.property_size

File size of the item.

dmsobject.property_state

Document status of the item.

Possible values:

  • Archived: The element has the Archive status.

  • VerificationInProgress: The element has the Verification status.

  • Processing: The element has the Processing status.

  • Released: The element has the Released status.

dmsobject.property_variant_number

Variant number of the item.

dmsobject.property_access_date

Access date for the item.

dmsobject.property_remark

Remarks about the item.

dmsobject.property_last_alteration_date

Alteration date of the item.

dmsobject.property_caption

Title for the item.

dmsobject.property_category

Item category ID.

dmsobject.property_category_uuid

UUID of the item category.

dmsobject.property_colorcode

Color marking for the item.

dmsobject.property_document_class

Activation condition: A document class abbreviation for the item.

Placeholder uriTemplate: List of document class IDs for the item as an array in JSON format.

dmsobject.property_document_id

Document ID of the item.

dmsobject.property_display_version_id

Unique ID for the display version for the DMSApp.

dmsobject.type

The item type.

Possible values:

  • Document: The item is an item of the "Document" type.

  • Dossier: The item is an item of the "Dossier" type.

dmsobject.<NUMBER|UUID>

For the <NUMBER|UUID> placeholder, enter the advanced property ID or UUID as it is defined in the d.3 repository.

If the d.3 property is a multi-value property, the placeholder will be replaced by the first or the first filled value of the property (depending on the d.3 repository configuration). If there are multiple values for the multi-value property, three dots (...) are added to the value returned.

dmsobject.fieldposition.<NUMBER>

For the <NUMBER> placeholder, enter the database position of the advanced property.

Note

We strongly recommend using the advanced property ID (dmsobject.<NUMBER>). Use the database position only in exceptional cases when the advanced property ID is not available to you or can only be determined in a very time-consuming process.

If the d.3 property is a multi-value property, the placeholder will be replaced by the first or the first filled value of the property (depending on the d.3 repository configuration). If there are multiple values for the multi-value property, three dots (...) are added to the value returned.

dmsobject.self_url_relative

Relative URL of the item.

Original file for the item

dmsobject.mainblob.content_type

MIME type of the original file (e.g. text\plain or image\jpeg).

dmsobject.mainblob.content_url

(Obsolete) Absolute URL of the original file. If the user does not have the authorization to export the document, then this parameter is empty.

dmsobject.mainblob.content_url_relative

Relative URL of the original file. If the user does not have the authorization to export the document, then this parameter is empty.

dmsobject.mainblob.id

ID of the original file if the user has the right to export the original file.

Dependent files for the item

dmsobject.dependentblobs

List of the IDs of dependent files if the user has the right to export the dependent file.

dmsobject.dependentblob.ID.content_url

(Obsolete) Absolute URL of the dependent file with the ID from dmsobject.dependentblobs.

dmsobject.dependentblob.ID.content_url_relative

Relative URL of the dependent file with the ID from dmsobject.dependentblobs.