Ich habe auf Basis einer Anfrage eines Kunden eine Variante erstellt, welche die Unterschriften per Custom Settings (AppConnector) benutzerspezifisch speichert und lädt. Diese Unterschriften sind dann Client unabhängig verfügbar.
signatureInterceptorAppConnector.js
/*
Signature Interceptor welcher die Signaturen in den Custom Settings des Benutzers speichert und lädt.
Details hierzu finden Sie in der AppConnector API unter https://help.optimal-systems.com/enaio_develop/pages/viewpage.action?pageId=1867869#SessionService(/session)-/osrest/api/session/settings/custom/load
*/
var signatureInterceptorAppConnector = {
// Beim starten der Editor Instanz
initEditorConfiguration(instance) {
const { documentViewer } = instance.Core;
// Signatur Tool holen
const signatureTool = documentViewer.getTool('AnnotationCreateSignature');
// Methode zum speichern der Signaturen definieren
const saveSignature = async () => {
const signatures = await signatureTool.exportSignatures();
const data = {
type: 80,
name: 'ed-signatures',
value: JSON.stringify(signatures),
};
const response = await fetch(`/osrest/api/session/settings/custom/save`, {
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json',
},
});
// Prüfen ob die Signature gespeichert werden konnte
if (response.status == 204) {
console.log('Signature saved');
} else {
console.error(response);
}
};
// Methode zum laden der Signaturen definieren
const loadSignature = async () => {
const currentSignatures = await signatureTool.exportSignatures();
if(!currentSignatures?.length > 0){
const response = await fetch(`/osrest/api/session/settings/custom/load?type=80&name=ed-signatures`);
// Prüfen ob das laden erfolgreich war
if (response.status == 200) {
const signatures = await response.json();
if (signatures.value) {
// Import der Signaturen in embedded documents
const signatureValue = JSON.parse(signatures.value);
await signatureTool.importSignatures(signatureValue);
console.log(signatureValue);
console.log('Signature loaded');
}
} else {
console.error(response);
}
} else {
console.log('Signatures already loaded');
}
};
// Immer speichern wenn eine Signatur erstellt oder gelöscht wird
signatureTool.addEventListener('signatureSaved', saveSignature);
signatureTool.addEventListener('signatureDeleted', saveSignature);
// Nachdem das Dokument geladen wurde, prüfen ob die Signaturen schon importiert wurden. Darf nicht zuvor passieren, da diese ansonsten nicht auftauchen.
documentViewer.addEventListener("documentLoaded", loadSignature);
},
};
Hallo,
bei mir meldet ED bei diesem Skript
/ed/interceptors/SignaturSpeichern.js:41 Uncaught SyntaxError: Unexpected token ‚.‘
Wir haben die Version 2.2.5 im Einsatz
Mein Beispiel signatureInterceptorAppConnector.js hatte leider einen Bug. Hier habe ich den Typ 1 angegeben, es muss jedoch eine Zahl zwischen 80 und 85 sein.
Vielen Dank für die Hinweise. Leider erhalte ich nach wie vor den Syntax-Fehler bei if(!currentSignatures?.length > 0){
Liegt es daran, dass der bei der enaio-Version 10.0 installierte embedded Browser (chrome_elf.dll) das Optional Chaining nicht kann? Laut OS gibt es hier keine neuere Version.
Hallo Herr Wohlfeil,
beim ersten Skript „signatureInterceptor“ erhalte ich die Fehlermeldung „signatureTool.on is not a function“.
ED Version 2.2.5 mit enaio 10.0.
Soweit mir bekannt ist, hat seit der Erstellung des Beispiels OS die osrest/api, welche im Code verwendet wird, geändert. Das Beispiel müsste entsprechend für neuere Versionen des AppConnectors angepasst werden.
Ich würde mich freuen, wenn wir das mit dem OS-Haus koordinieren könnten, da meine Zuschreibung zum osrest nur ein Grund für das Problem sein kann und vermutlich eine genauere Fehlerursache der Konsole im enaio entnommen werden kann. Ist dies OSVH?
Hallo @SDonath, ich habe gerade OSVH angeschrieben, mit der Bitte um Unterstützung. Ich denke das sich OSVH bald bei dir meldet. Diese holen mich dann dazu, falls ich helfen kann.
an den ursprünglichen Code am Ende angehangen, hätte habe die letzte Zeile mit dem ; weglassen müssen.
Mein Vorschlag - könntet ihr vielleicht in eurem Wiki oder auch hier fertige Interceptors mit vollständigen Codes auflisten. Dazu könnten ja die Beiträge verlinkt werden falls jemand noch Anmerkungen oder Fragen hat.