Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > Konfigurationen zum agorum core explorer
Sie können Standardfunktionen im Explorer durch ein Skript überschreiben. Sie können Folgendes anpassen:
Die Konfiguration erfolgt über Property-Bundles und eine Property-Group in der MetaDB sowie über ein JavaScript.
Gehen Sie wie folgt vor, um die Standardeinstellung für Hauptmenü, Kontextmenü, Toolbar oder die Aktion beim Öffnen zu überschreiben.
Root/agorum/roi/customers/agorum.doc.test/js/override/explorer.js
MAIN_MODULE_MANAGEMENT/customers/agorum.explorer
Sie können mit einem override-Skript Einträge im Hauptmenü, im Kontextmenü oder in der Toolbar ergänzen oder ändern. Außerdem können Sie die Aktion ändern, die beim Öffnen eines Objekts ausgeführt wird. Dazu verwenden Sie verschiedene Overrides:
Das folgende Beispiel zeigt, wie Sie eine Gruppe von Einträgen zum Kontextmenü und eine Schaltfläche zur Toolbar in den Ordnerdetails hinzufügen können.
let icons = require('/agorum/roi/customers/agorum.icons/js/icons'); exports.settings = user => [ { name: 'agorum.doc.test.override', // Fügt eine Gruppe neuer Einträge zum Kontextmenü hinzu menuOverride: (items, objs, parent) => { console.log('menu override called', items, objs, parent); items = [ { name: 'testGroup', icon: 'aguila-icon settings_ethernet', text: 'Testgruppe', type: 'group', items: [ { name: 'testAction', // Name der Aktion text: 'Test als Aktion', type: 'action', icon: icons.cls('agorum:agorum-logo;color=#0069b5'), }, { name: 'testHandler', text: 'Test mit Handler', handler: () => console.log('Test-Handler'), }, ], }, '-', ].concat(items); return items; }, // Fügt eine Schaltfläche zur Toolbar in den Ordnerdetails hinzu toolbarOverride: (items, objs, parent) => { console.log('toolbar override called', items, objs, parent); items.push({ type: 'agorum.button', meta: { parent: parent, objects: objs, //action: 'testActionTB', //structure: 'testStructureTB', }, tooltip: 'Test-Aktion auf Toolbar', icon: icons.cls('mdi:person;color=#0069b5'), disabled: !objs[0], }); //return []; return items; }, }, ];
Sie können mit einem Skript nach folgendem Muster einen einzelnen neuen Eintrag im Kontextmenü ergänzen, etwa den Eintrag:
exports.settings = user => [ { // eindeutiger Name name: 'my-context-menu', /** * menuOverride: Wird aufgerufen, nachdem das Menü durch den Explorer erstellt wurde * Parameters: * items: Die Menü-Items (Array der erstellten Menü-Items) * objects: Das Array der agorum core-Objekte, die durch den Explorer selektiert wurden * parent: Das zugehörige parent folder object, von dem das Kontextmenü geöffnet wurde (optional) */ menuOverride: (items, objects, parent) => { // Fügt einen neuen Eintrag zum Kontextmenü hinzu items.push({ // Zeigt das Menü-Item als inaktiv an (true/false) disabled: false, // Der Handler, der aufgerufen wird, wenn das Menü-Item angeklickt wird handler: () => { let names = ''; let parentName = ''; if (objects) names = objects.map(item => item.name).join(', '); if (parent) parentName = parent.name; console.log('Das folgende Menü-Item wurde angeklickt: Objects: ' + names + ', Parent: ' + parentName); }, // Icon für den Menü-Eintrag icon: 'aguila-icon sentiment_satisfied', // Eindeutiger Name für den Menü-Eintrag name: 'my-menu-entry-1', // Der Text des Menü-Eintrags text: 'My new menu entry', }); return items; }, }, ];
Sie können Einträge entfernen und nur noch bestimmte Einträge zulassen, auch abhängig von der Benutzergruppe, indem Sie
Sie könnten etwa das Kontextmenü für das Starten von Workflows auf folgende Einträge reduzieren
Das können Sie mit einem Skript nach folgendem Muster erreichen:
let icons = require('/agorum/roi/customers/agorum.icons/js/icons'); let objects = require('common/objects'); let beans = require('common/beans'); let tokenAllowed = { startWorkflow: true, Detailsanzeigen: true, }; let removeItem = (items, objects, allowed, selectors) => { if (objects.some(obj => beans.selected(obj, selectors))) { items = items.filter(item => allowed[item.name]); } return items; }; exports.settings = user => [ { // eindeutiger Name name: 'my-context-menu', menuOverride: (items, objects, parent) => { console.log('context menu override called', items, objects); if (!sc.adminEnabled) { items = removeItem(items, objects, tokenAllowed, '<REPLACESELECTOR>'); } return items; }, }, ];
Sie können mit einem Skript nach folgendem Muster ein Toolbar-Icon ergänzen, etwas das Icon:
let icons = require('/agorum/roi/customers/agorum.icons/js/icons'); exports.settings = user => [ { name: 'agorum.doc.test.override', toolbarOverride: (items, objs, parent) => { console.log('toolbar override called', items, objs, parent); items.push({ type: 'agorum.button', meta: { parent: parent, objects: objs, //action: 'testActionTB', //structure: 'testStructureTB', }, tooltip: 'Test-Aktion auf Toolbar', icon: icons.cls('mdi:person;color=#0069b5'), disabled: !objs[0], }); //return []; return items; }, }, ];
Die Einstellung disabled: !objs[0]
führt dazu, dass das Icon nur aktiv wird, wenn der Benutzer einen Eintrag im Explorer ausgewählt hat, wie hier gezeigt:
Sie können mit einem Skript nach folgendem Muster ein Hauptmenü-Icon ergänzen, etwas das Icon :
let icons = require('/agorum/roi/customers/agorum.icons/js/icons'); exports.settings = user => [ { name: 'agorum.doc.test.override', mainMenuOverride: (items, objs) => { console.log('main menu override called', items, objs); items.push({ type: 'agorum.button', tooltip: 'Test-Aktion im Hauptmenü', icon: 'aguila-icon directions_subway', }); //return []; return items; }, }, ];
In diesem Beispiel wird für bestimmte Benutzer anstelle der eingebauten E-Mail-Anzeige ein externes E-Mail-Programm geöffnet. Dazu wird geprüft, ob der Benutzer eine bestimmte ACL hat (in diesem Fall ACLDemo) und für Benutzer mit dieser ACL der externe E-Mail-Client geöffnet.
/* global sca */ let icons = require('/agorum/roi/customers/agorum.icons/js/icons'); let objects = require('common/objects'); let beans = require('common/beans'); exports.settings = user => { let redirectMailOpen = objects(sca.asUser(user)).mayDiscover('ACLDemo'); return [ { name: 'agorum.doc.test.override', openOverride: (items, objs) => { console.log('openOverride', redirectMailOpen, items); if (redirectMailOpen) { /* let isMail = items.some( item => item.name === '_mail' || item.name === '_mailDraft' || item.name === 'agorum.mail.open' ); */ let isMail = objs.every(obj => beans.selected(obj, '[classname=/MailObject|AMailMail/]')); if (isMail) { return [ { name: '_openClient', }, ]; } } return items; }, }, ]; };
Sie können durch die Verwendung von openOverride jegliche open-Aktionen verhindern, etwa um Fallbacks bei Ordnern zu verhindern.
exports.settings = user => [ { name: 'agorum.doc.test.override', openOverride: (items, objs) => { console.log('open override called', items, objs); // keine Aktion ausführen return [{}]; }, }, ];
Parameter | Beschreibung | Mögliche Werte |
---|---|---|
items | Menü-Items mit entsprechenden Einstellungen | Array von Items |
objects | Das Array der agorum core-Objekte, die durch den Explorer selektiert wurden | Array von Objekten |
parent | Das zugehörige parent-Objekt, von dem das Kontextmenü geöffnet wurde (optional). | parent Objekt |
Für die möglichen Angaben zu den Items siehe agorum core aguila.