Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > Übersicht tags
Um einen Einblick in die möglichen Anpassungen zum Konfigurieren der Aktionen der E-Mail-Maske zu erhalten, steht ein JavaScript-Beispiel zur Verfügung. Laden Sie es über folgenden Link herunter: undefined>sample-settings-extended.js
Damit Sie ein besseres Verständnis für die Konfiguration des Beispielskripts erhalten, ist das Beispielskript in einzelne Abschnitte unterteilt. Die Abschnitte enthalten dazugehörige Parameter und veranschaulichen die Funktionsweise anhand von Beispielen.
Für das Registrieren und Verwenden der Aktionen siehe E-Mail-Maske konfigurieren.
Diese Funktion definiert, welche Schaltflächen im Senden-Menü zur Auswahl stehen.
In folgendem Beispiel besitzt das Senden-Menü zwei Schaltflächen:
Schaltfläche | Funktion |
---|---|
Senden und ablegen bei Antwort | Legt die versendete E-Mail bei einer Antwort ab. |
Senden an alle (intern) | Ohne Funktion |
Mithilfe des folgenden Skripts (Ausschnitt) stellen Sie das Senden-Menü mit den zwei Schaltflächen nach:
exports.settings = user => [ { /** * Here additional menu items for the send menu can be added. * If defined, this menu items are displayed beneath the send split button * * @param {Array.<object>} items - the already existing menu items * * @returns {Array.<object>} modified items - the new array with the new menu items */ sendMenuActions: items => { // add a new entry to the context menu items.push({ // show the menu item as disabled (true/false) disabled: false /** * The handler, that is called, when the menu item is clicked * * @param {Object} data - The data of the mail. * @param {string} data.from - The sender's address. * @param {Array.<string>} data.to - An array of recipient addresses. * @param {Array.<string>} [data.cc] - An array of cc recipient addresses. * @param {Array.<string>} [data.bcc] - An array of bcc recipient addresses. * @param {string} data.subject - The subject of the mail. * @param {string} data.body - The body of the mail in HTML. * @param {Array.<string>} [data.attachments] - An array of UUIDs for attachments. * @param {string} [data.replyTo] - The reply-to email address. * * @param {Object} mail - the mail object * @param {Function} send - callback function with promise for sending: send().then(...) * * @returns {Object} modifiedData - The modified mail data to change on the UI. (same structure as data) */, handler: (data, mail, send) => { // this example moves a mail to the same folders, like the mail, where this mail is an answer to // but only, when the mail is beneath /agorum/roi/Files send().then(() => { let baseFolder = objects.find('/agorum/roi/Files'); // get the mail, where this mail is a reply to let related = (mail.allAttachedTo || []).find(orgMail => { // just use mails, that are inside /agorum/roi/Files // to ignore sent mails, etc ... return orgMail.insideFolder(baseFolder.getId(), true); }); if (!related) return; // found a related mail let parents = related.parents(); if (!(parents && parents[0])) return; // remove from all parents and add it to the parents of the mail, we had answered to objects.remove(mail); objects.add(mail, parents); }); }, // an icon for the menu entry icon: 'aguila-icon file_download', // a unique name for the menu entry name: 'agorum-mail-test-send-with-file', // the text of the menu entry text: 'Senden und ablegen bei Antwort', }); // just an example to show a disabled item items.push({ disabled: true, handler: (data, mail, send) => {}, icon: 'aguila-icon supervisor_account', name: 'agorum-mail-tests-send-all', text: 'Senden an alle (intern)', }); return items; }, }, ];
Verschiedene Funktionen geben einen data-Parameter mit oder ihnen kann ein data-Parameter mitgegeben werden.
Aufbau
{ from: 'Absender-Adresse, to: [ 'Array von Empfänger-Adressen' ], cc: [ 'Array von CC-Empfänger-Adressen' ], bcc: [ 'Array von BCC-Empfänger-Adressen' ], subject: 'Betreff', body: 'Text der Mail in HTML', attachments: [ 'Array von UUIDs der Anhänge' ], replyTo: 'E-Mail-Adresse auf die geantwortet werden soll', }
Folgende Parameter existieren im dargestellten JavaScript-Ausschnitt.
sendMenuActions
Definiert, was im Senden-Menü alles erscheinen soll und welche Funktionen ausgeführt werden.
sendMenuActions: items => {
disabled (optional)
Definiert, ob die Schaltfläche anklickbar ist oder nicht.
Wert | Beschreibung |
---|---|
true | Schaltfläche ist nicht anklickbar. |
false (Standard) | Schaltfläche ist anklickbar. |
Bestimmt, welche Funktion beim Anklicken des entsprechenden Menüpunkts erfolgt. Dabei kann entweder eine Oberfläche geöffnet, das E-Mail-Objekt aufgerufen oder eine Callback-Funktion ausgeführt werden.
handler: (data, mail, send) => {
Parameter | Beschreibung |
---|---|
data | Definiert die Daten der E-Mail mit dem in data definierten Aufbau. |
Definiert das E-Mail-Objekt. | |
send | Callback-Funktion mit Promise fürs Versenden: send().then(...) |
icon (optional)
Passt das Icon der Schaltfläche an.
Für das Wählen eines passendes Icons siehe Icon auswählen.
icon: 'aguila-icon file_download',
name (optional)
Benennt die Schaltfläche eindeutig.
name: 'agorum-mail-test-send-with-file',
text (optional)
Definiert den Anzeigetext der Schaltfläche.
text: 'Senden und ablegen bei Antwort'
Dieser Abschnitt beschreibt, welche weitere Funktionen Bestandteil des Skriptausschnitts sendMenuActions sind. Bestandteile, die schon bei der Erklärung der Parameter beschrieben wurden, werden hier nicht erneut aufgeführt:
let aguila = require('common/aguila'); ... // Ab send().then((): Hier wird definiert was nach Ausführen der Aktion send passieren soll. send().then(() => { let baseFolder = objects.find('/agorum/roi/Files'); // get the mail, where this mail is a reply to let related = (mail.allAttachedTo || []).find(orgMail => { // just use mails, that are inside /agorum/roi/Files // to ignore sent mails, etc ... return orgMail.insideFolder(baseFolder.getId(), true); }); if (!related) return; // found a related mail let parents = related.parents(); if (!(parents && parents[0])) return; // remove from all parents and add it to the parents of the mail, we had answered to objects.remove(mail); objects.add(mail, parents); }); ...
Diese Funktion stellt bestimmte Aktionen ein, die nach dem Versand der E-Mail stattfinden sollen.
Sie können etwa einstellen, dass nach dem Versand der E-Mail eine Hinweisbox erscheint, mit der der Benutzer die versendete E-Mail öffnen und anzeigen lassen kann.
Mithilfe des folgenden Skripts (Ausschnitt) stellen Sie die gezeigte Hinweisbox nach:
let aguila = require('common/aguila'); let message = require('/agorum/roi/customers/agorum.composite/js/lib/message'); let service = require('filingassistant/service'); ... /** * Is called, after the mail has been sent * then some additional actions can be performed * * @param {Object} mail - the mail object */ afterSend: mail => { // sample open mail after send aguila.enter(() => { message .confirm('Hinweis', 'Die E-Mail wurde erfolgreich versendet, möchten Sie diese anzeigen?') .then(state => { if (state) { service.open(mail); } }); }); }, ...
Folgende Parameter existieren im dargestellten JavaScript-Ausschnitt.
afterSend
Bestimmt die Aktion, die nach dem Versenden der E-Mail erfolgt, und funktioniert wie der Parameter handler. Sie können etwa das E-Mail-Objekt nach dem Versenden öffnen.
afterSend: (mail) => {
Parameter | Beschreibung |
---|---|
Definiert das E-Mail-Objekt. |
Hinweis: Im afterSend befinden Sie sich nicht direkt im aguila-Kontext. Wenn Sie aguila weiterhin benötigen, verwenden Sie die Funktion aguila.enter, um den aguila-Kontext zu betreten (siehe JavaScript).
Diese Funktion stellt bestimmte Aktionen ein, die vor oder während des Versands der E-Mail stattfinden.
Sie können etwa einstellen, dass eine Nachfrage nach dem Anklicken der Senden-Schaltfläche als Hinweisbox erscheint, ob die E-Mail wirklich versendet werden soll.
Mithilfe des folgenden Skripts (Ausschnitt) stellen Sie die Nachfrage als Hinweisbox nach:
exports.settings = user => [
{
/**
* If defined, it is called instead of the default send function.
* This function has to call the "send" callback itself, if mail data should be modified.
* If there are several handler, that implement the send function, each is called. Only the last send
* is then performed. But all modified data are collected.
*
* @param {Object} data - The data of the mail.
* @param {string} data.from - The sender's address.
* @param {Array.<string>} data.to - An array of recipient addresses.
* @param {Array.<string>} [data.cc] - An array of cc recipient addresses.
* @param {Array.<string>} [data.bcc] - An array of bcc recipient addresses.
* @param {string} data.subject - The subject of the mail.
* @param {string} data.body - The body of the mail in HTML.
* @param {Array.<string>} [data.attachments] - An array of UUIDs for attachments.
* @param {string} [data.replyTo] - The reply-to email address.
*
* @param {Object} mail - the mail object
* @param {Function} send - callback function with promise for sending: send().then(...)
*
* @returns {boolean} true, if we handle the send in this call back.
*/
send: (data, mail, send) => {
// return;
// sample: ask before sending, if it should really be sent
message.confirm('Hinweis', 'Wollen Sie die Mail wirklich versenden?').then(state => {
if (state) {
// perform sending
send().then(() => {
// here something can be done after sending
// but also afterSend is called, it can also be done there
});
}
}); // return true, to tell the caller, that we are handling the send callback
return true;
},
},
];
Folgende Parameter existieren im dargestellten JavaScript-Ausschnitt.
send
Bestimmt die Funktion, die nach dem Anklicken des entsprechenden Menüpunkts erfolgt, und funktioniert wie der Parameter handler. Dabei kann entweder eine Oberfläche, das E-Mail-Objekt oder eine Callback-Funktion ausgeführt werden.
send: (data, mail, send) => {
Parameter | Beschreibung |
---|---|
data | Definiert die Daten der E-Mail mit dem in data definierten Aufbau. |
Definiert das E-Mail-Objekt. | |
send(data) | Callback-Funktion mit Promise fürs Versenden: send().then(...). Der Funktion kann eine modifizierte data-Variable übergeben werden, sodass die E-Mail vor dem Versenden noch verändert werden kann. |
In dem obigen Beispiel wird send asynchron aufgerufen, d. h. erst, wenn der Benutzer im Abfrage-Dialog Ja drückt.
Hinweis: Diese Funktion bezieht sich auf die Ansicht bereits vorhandener E-Mails.
Diese Funktion stellt weitere Menüpunkte ein, um Aktionen mit E-Mails auszuführen.
In folgendem Beispiel besitzt das Aktions-Menü drei Schaltflächen:
Schaltfläche | Beschreibung |
---|---|
Antworten mit Vorlage | Verwendet beim Antworten auf die E-Mail eine konfigurierbare Vorlage. Nur dem Empfänger im Feld An wird geantwortet. |
Allen antworten mit Vorlage | Verwendet beim Antworten auf die E-Mail eine konfigurierbare Vorlage. Allen Empfängern wird geantwortet, auch denen im Feld CC oder BCC. |
E-Mail archivieren | Dient als Platzhalter und ist inaktiv. |
Mithilfe des folgenden Skripts (Ausschnitt) stellen Sie die drei Schaltflächen im Aktions-Menü nach:
exports.settings = user => [
{
// ...
/**
* Here additional menu items for the mail action menu in view mode can be added.
* If defined, this menu items are displayed in the more menu of the mail
*
* @param {Array.<object>} items - the already existing menu items
*
* @returns {Array.<object>} modified items - the new array with the new menu items
*/
mailActions: items => {
// add a new entry to the context menu
// sample for reply with template
items.push({
// show the menu item as disabled (true/false)
disabled: false
/**
* the handler, that is called, when the menu item is clicked
*
* @param {Object} data - The data of the mail.
* @param {string} data.from - The sender's address.
* @param {Array.<string>} data.to - An array of recipient addresses.
* @param {Array.<string>} [data.cc] - An array of cc recipient addresses.
* @param {Array.<string>} [data.bcc] - An array of bcc recipient addresses.
* @param {string} data.subject - The subject of the mail.
* @param {string} data.body - The body of the mail in HTML.
* @param {Array.<string>} [data.attachments] - An array of UUIDs for attachments.
*
* @param {string} [data.replyTo] - The reply-to email address.
* @param {Object} mail - the mail object
*/,
handler: (data, mail) => {
replyWithTemplate(mail, false);
}, // an icon for the menu entry
icon: 'aguila-icon reply', // a unique name for the menu entry
name: 'agorum-mail-tests-reply-with-template', // the text of the menu entry
text: 'Antworten mit Vorlage',
}); // sample for reply all with template
items.push({
disabled: false,
handler: (data, mail) => {
replyWithTemplate(mail, true);
},
icon: 'aguila-icon reply_all',
name: 'agorum-mail-tests-reply-all-with-template',
text: 'Allen antworten mit Vorlage',
}); // sample for a disabled entry
items.push({
disabled: true,
handler: (data, mail) => {},
icon: 'aguila-icon folder',
name: 'agorum-mail-tests-mail-archive',
text: 'E-Mail archivieren',
});
return items;
},
// ...
},
];
Folgende Parameter existieren im dargestellten JavaScript-Ausschnitt.
mailActions
Definiert zusätzliche Menüpunkte.
Diese Menüpunkte erscheinen standardmäßig im Menü Weitere Aktionen.
mailActions: items => {
disabled (optional)
Definiert, ob die Schaltfläche anklickbar ist oder nicht.
Wert | Beschreibung |
---|---|
true | Schaltfläche ist nicht anklickbar. |
false (Standard) | Schaltfläche ist anklickbar. |
handler
Bestimmt, welche Funktion beim Wählen des entsprechenden Menüpunkts erfolgt. Dabei kann eine Oberfläche oder das E-Mail-Objekt geöffnet werden.
handler: (data, mail) => {
Parameter | Beschreibung |
---|---|
data | Definiert die Daten der E-Mail mit dem in data definierten Aufbau. |
Definiert das E-Mail-Objekt. |
icon (optional)
Passt das Icon der Schaltfläche an.
Für das Wählen eines passendes Icons siehe Icon auswählen.
icon: 'aguila-icon reply',
name (optional)
Benennt die Schaltfläche eindeutig.
name: 'agorum-mail-tests-reply-with-template',
text (optional)
Definiert den Anzeigetext der Schaltfläche.
text: 'Antworten mit Vorlage'
Dieser Abschnitt beschreibt, wie Sie eine Vorlagen-Nachricht, d. h. ein Template, anlegen, das Sie für die mailActions verwenden können.
Die Vorlagen-Nachricht, die aus dem Skript des erweiterten Beispiels erzeugt wurde, sieht folgendermaßen aus:
Mithilfe des folgenden Skripts (Ausschnitt) stellen Sie das in der Abbildung gezeigte Template nach:
... // internal function for creating a mail from a template let replyWithTemplate = (mail, replyAll) => { aguila .fork(() => { let template = '<p> Sehr geehrt/e Absender/in,</p> <p> vielen Dank für Ihre E-Mail mit dem Betreff: <b>${subject}</b> <br> Ich werde diese E-Mail so schnell, wie möglich bearbeiten und gebe Ihnen anschließend Bescheid.<p> <p> Mfg </p> roi'; template = templates.fill(template, null, mail); let draft = mailLib.reply(mail, { all: replyAll, body: template, }); return draft; }) .then(draft => { // open draft service.open(draft); }); }; ...
Tipp: Damit Sie einen fertigen Quellcode für die Vorlage erhalten, verwenden Sie den in agorum core integrierten HTML-Editor, der etwa beim Schreiben einer E-Mail zu sehen ist. Dort können Sie über auf den Quellcode umschalten, um den normalen Text als HTML-Code zu erhalten.