produktion: - Karte in klaren Bloecken: getoenter Kopf (Identitaet + Status), Specs als beschriftete Kacheln, Druckstatus-Leiste (Brief/Kuvert getrennt), beschriftete Notiz, strukturiertes "Weiteres" mit beschrifteten Feldern. Kein linker Farbrand mehr. Groessere Schrift. Suche aus dem Board entfernt. Neue Extension skrift-uebersicht (Modul, read-only fuer Mitarbeiter): - Kompakte Tabelle: Auftrag/Name, erster+letzter Empfaenger, Format, faellig, Druck Brief/Kuvert getrennt, eingeplant, Status. Suche/Filter. - Maschinen-Panel: "Format einlegen -> starten" (setzt current_format). access: Staff sieht jetzt nur noch skrift-uebersicht. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
1.4 KiB
JavaScript
35 lines
1.4 KiB
JavaScript
/**
|
||
* Skrift – Zugriffsbeschränkung Modulleiste
|
||
* ---------------------------------------------------------------------------
|
||
* Directus 11 kennt keine rollenbasierte Modulleiste (nur global). Dieser
|
||
* settings.read-Filter blendet für NICHT-Admins (= Rolle Staff/Mitarbeiter) alle
|
||
* Module aus außer:
|
||
* - skrift-uebersicht (Mitarbeiter-Übersicht + Suche; read-only)
|
||
*
|
||
* Admins bleiben unberührt. Kunden nutzen die separate App (app.skrift.de),
|
||
* nicht die Directus-Admin-Oberfläche – daher reicht der Admin-Check.
|
||
*/
|
||
const ERLAUBT = ['skrift-uebersicht'];
|
||
|
||
function nurProduktion(bar) {
|
||
const vorhanden = (Array.isArray(bar) ? bar : [])
|
||
.filter((m) => m && m.type === 'module' && ERLAUBT.includes(m.id));
|
||
// In fester Reihenfolge, fehlende ergänzen, alle aktiv.
|
||
return ERLAUBT.map((id) => {
|
||
const treffer = vorhanden.find((m) => m.id === id);
|
||
return { ...(treffer || { type: 'module', id }), type: 'module', id, enabled: true };
|
||
});
|
||
}
|
||
|
||
export default (register) => {
|
||
register.filter('settings.read', (payload, _meta, context) => {
|
||
const acc = context && context.accountability;
|
||
if (!acc || acc.admin) return payload; // Admins unverändert; System-Reads (acc null) ebenfalls.
|
||
const anpassen = (s) => {
|
||
if (s && typeof s === 'object' && 'module_bar' in s) s.module_bar = nurProduktion(s.module_bar);
|
||
return s;
|
||
};
|
||
return Array.isArray(payload) ? payload.map(anpassen) : anpassen(payload);
|
||
});
|
||
};
|