1.9 Kontextmenü-Funktionen

1.9 Kontextmenü-Funktionen

Einführung

Ab der Version 10.10 können JavaScript-Funktionen in enaio® webclient, enaio® webclient als Desktop-Anwendung und enaio® mobile per Kontextmenü durch den Benutzer aufgerufen werden. Ähnlich wie bei Verknüpfungen zu externen URLs / Anwendungen können enaio® Administratoren nun eine JavaScript-Funktion definieren, die über den Kontextmenüeintrag auf den unterstützten Plattformen ausgeführt wird.

Die Konfiguration erfolgt über die Datei tools.json, die, sofern sie nicht bereits existiert, im Verzeichnis \service-manager\config\apps\osweb\public\external_tools angelegt werden muss. >> Administrator-Dokumentation von enaio® webclient  enaio® mobile, "Verknüpfungen zu externen URLs / Anwendungen"

Mehrere enaio® service-manager Instanzen

Besteht Ihre enaio®-Installation aus mehreren service-managern, so müssen alle Dateien im und unter dem config-Verzeichnis, darunter auch die tools.json, in jeder Instanz der enaio® service-manager identisch vorhanden sein. Lesen sie dazu bitte auch "1.8 Laden externer Ressourcen".

 

Beispielkonfiguration

Die folgende Beispielkonfiguration in der Datei tools.json realisiert einen JavaSkript-Funktionsaufruf. Sie stellt in diesem Fall den Benutzer "Maria" und "Martin" für alle Objekttypen sowie den dargestellten Plattformen ein Eintrag im Kontextmenü zur Auswahl. Wählt der Benutzer den Eintrag "Ausführen myFunction" im Kontextmenü aus, so wird die konfigurierte JavaScript-Funktion aufgerufen, welche am Objekt scriptingStorage vorhanden ist.

[{      "users": ["MARIA","MARTIN"],      "objectTypes": "*",      "type": "function",      "platforms": ["mobile", "mobile_app", "web", "desktop_app"],      "path": "myFunction",      "name_EN": "Execute myFunction ",      "name_DE": "Ausführen myFunction ",      "name_FR": "Exécuter myFunction ",      "iconId": "1073742306" }]

Bitte beachten sie, dass die eckigen Klammern nur einmalig für alle Kontextmenüeinträge vorhanden sein dürfen. Für einen zweiten, dritten, etc. Kontextmenüeintrag nur den Teil mit den geschweiften Klammern duplizieren und anpassen.

Parameter der Konfigurationsdatei

Neben weiteren Parametern sind die beiden folgenden maßgeblich für den Aufruf einer JavaScript-Funktion zu konfigurieren

Parameter

Wert

Parameter

Wert

type

Konstanter Wert "function" für den Aufruf einer JavaScript-Funktion

path

Name der JavaScript-Funktion am globalen WebClient object "scriptingStorage"

Herangehensweise

Basierend auf der obigen Beispielkonfiguration sind die folgenden Schritte notwendig, um die JavaScript-Funktion myFunction auf der entsprechenden Plattform auszuführen zu können:

Ergänzen Sie in der tools.json einen entsprechenden Abschnitt für den Aufruf der Funktion myFunction

Implementieren Sie die Funktion myFunction im enaio® client, Abschnitt GlobalWebClientScript oder AfterWebClientLogin am globalen Objekt scriptingStorage

Führen Sie die Funktion myFunction über das Kontextmenü vom enaio® webclient aus.

myFunction ergänzen

Ergänzen Sie einen neuen Abschnitt in der tools.json und speichern Sie die Datei selbst im öffentlichen Ordner vom enaio® service-manager: \service-manager\config\apps\osweb\public\external_tools 
>> Administrator-Dokumentation von enaio® webclient  enaio® mobile, "Verknüpfungen zu externen URLs / Anwendungen"

myFunction implementieren

Nachdem Sie einen Abschnitt für myFunction in der Konfigurationsdatei ergänzt haben, stellen Sie als nächstes die Implementierung der eigentlichen JavaScript-Funktion in GlobalWebClientScript oder AfterWebClientLogin bereit (im enaio® client):

 

scriptingStorage.myFunction = function(formHelper, globals, scriptingStorage, selectedObjects) { // weiteren Code hinzufügen // andere Funktionen aufrufen formHelper.showToast("success", "Das ist meine Funktion aus tools.json"); }

 

 

scriptingStorage.myFunction = function(formHelper, globals, scriptingStorage, selectedObjects) { // weiteren Code hinzufügen // andere Funktionen aufrufen formHelper.showToast("success", "Das ist meine Funktion aus tools.json"); } done();

 

Beachten Sie, dass die Funktion dem scriptingStorage-Objekt hinzugefügt werden muss. Mehr über scriptingStorage erfahren Sie in unserer Dokumentation (z. B. bei den "Events für enaio® webclient").
Weiterhin kann die Funktion auch asynchron sein. In diesem Falle muss sie das async Schlüsselwort in ihrer Definition beinhalten.

Achtung bei iOS App und Safari mit window.open()

Durch den asynchronen Kontext der Funktionen wird im Safari und unter iOS die window.open() Methode unter Umständen geblockt. Wenn Sie diese Funktion dennoch in ihren Scripts nutzen möchten, um einen neuen Tab zu öffnen, kann es helfen, die window.open() Methode mit einem Timeout aufzurufen und damit die Kompatibilität mit allen Browsern zu gewährleisten. 

myFunction ausführen

Die Konfigurationsdatei tools.json wird beim Laden von enaio® webclient, enaio® webclient als Desktop-Anwendung und enaio® mobile oder bei einem Reload initialisiert und bereitgestellt. Gehen Sie zu einer beliebigen Trefferliste, markieren Sie ein Objekt und öffnen Sie das Kontextmenü. Ein zusätzlicher Eintrag mit dem von Ihnen konfiguriertem Namen steht im Kontextmenü zur Auswahl. Wählen Sie den Eintrag aus, um myFunction auszuführen.

Fehlerbehandlung

Der Fehlerfall wird in der Browser-Konsole protokolliert. Nachfolgend finden Sie mögliche Fehlerursachen und entsprechende Fehlermeldungen:

Fehlerursache

Fehlermeldung

Fehlerursache

Fehlermeldung

“path” property is missing, or its value is blank.

Function has not been defined in tools.json

There is no function name that matches one defined inside tools.json

Function: "myFunction" has not been defined in GlobalWebClientScript or AfterWebClientLogin.

Microsoft Teams - Integration

Mit der Version 10.10 steht für enaio® eine Integration mit Microsoft Teams zur Verfügung. Diese basiert auf einer in MS Teams eingebundenen App für enaio®. Nach der Installation bietet diese App eine zusätzliche Registerkarte mit Informationen an sowie die Möglichkeit, Dateien - die in enaio® abgelegt sind - innerhalb eines Kanals oder einer Gruppe mit Kollegen und Geschäftspartnern zu teilen. Für das Teilen eines Dokumentes aus enaio® wird ein Token verwendet, der in enaio® client sowie enaio® webclient von Benutzern erstellt werden kann. >> Kurzanleitung für die Verwendung von enaio® integration-for-microsoft-teams und enaio® webclient 

Als Administrator des enaio® webclient stellen Sie Ihren Benutzern die Möglichkeit, einen Token zu generieren, über das Kontextmenü zur Verfügung. Wie im vorherigen Abschnitt beschrieben, können Sie dies wie folgt umsetzen:

Schritt 1 - Definieren Sie eine MS Teams-Konfiguration in der tools.json

[{ "objectTypes": "*", "type": "function", "platforms": ["web", "desktop_app"], "path": "msteams", "name_EN": "Share in MS Teams", "name_DE": "Freigabe für MS Teams", "name_FR": "Partager dans MS Teams", "iconId": "1073742306" }]

Schritt 2 - Implementieren Sie die folgende Funktion innerhalb des AfterWebClientLogin-Events für den enaio® webclient:

Beispiel für die Implementierung

scriptingStorage.msteams = async function(formHelper, globals, scriptingStorage, selectedObjects) { if (formHelper.isOnline()) { try { const osid = selectedObjects[0].objectId; const dmsDocument = await formHelper.dms.searchById(osid); const objectType = dmsDocument.model.objectType; // MS Teams doc sharing supports only DOCUMENT objecttype if (objectType === 'DOCUMENT') { const response = await fetch(`${window.location.baseUrl}/msteams/api/share/generate/token/${osid}`); // Bad HTTP status (outside of the range 200-299) if (!response.ok) { const message = `An error has occured: ${response.status}`; throw new Error(message); } const token = (await response.json()).token; // Copy token to the system's clipboard navigator.clipboard.writeText(token); formHelper.showToast("success", "Das MS Teams-Token wurde in die Zwischenablage kopiert."); } else { // Unsupported Objekttyp formHelper.showToast("error", "Nur der Objekttyp DOCUMENT kann in MS Teams geteilt werden"); } } catch (error) { // Error fetching token from the backend formHelper.showToast("error", "MS Teams-Token konnte nicht in die Zwischenablage kopiert werden."); } } } done();

Sobald Sie beide Programmbestandteile für den enaio® webclient eingerichtet haben, und Benutzer damit über das Kontextmenü die Aktion ausführen, landet jeweils ein Token in der Zwischenablage des Betriebssystems. Der Token steht dem Benuzter entsprechend zur Verfügung, um in MS Teams zu teilen und so den Zugriff auf den Inhalt des Objektes in enaio® zu ermöglichen.

Beachten Sie bitte, dass nur DOKUMENT-Objekttypen über Microsoft Teams geteilt werden können. Für Ordner- und Register-Objekttypen ist dies nicht möglich. 
In enaio® mobile können Sie enaio® integration-for-microsoft-teams derzeit noch nicht verwenden.

 

Related content