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 |
---|---|
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):
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 |
---|---|
“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.