WIP: Vendoo 1.44.0 – UX Foundation & Guided Workspaces #29
+154
-24
@@ -78,16 +78,25 @@
|
||||
};
|
||||
}
|
||||
|
||||
function buttonAction({ selector, ...definition }) {
|
||||
return adapter({
|
||||
...definition,
|
||||
enabled: () => Boolean(find(selector)),
|
||||
handler: () => click(selector),
|
||||
});
|
||||
}
|
||||
|
||||
function registerAdapters() {
|
||||
const actions = window.VendooActions;
|
||||
if (!actions || root.dataset.uxSafeActionAdaptersRegistered === '1') return false;
|
||||
|
||||
const moduleVisible = () => workspaceVisible('admin', 'admin-modules-panel');
|
||||
const extensionVisible = () => workspaceVisible('extensions');
|
||||
const articleVisible = () => workspaceVisible('history');
|
||||
const mediaVisible = () => workspaceVisible('media-library');
|
||||
|
||||
actions.registerMany([
|
||||
adapter({
|
||||
const registered = [
|
||||
buttonAction({
|
||||
id: 'workspace:modules:refresh',
|
||||
title: 'Module neu laden',
|
||||
description: 'Die vorhandene Modulübersicht mit ihrem bestehenden Refresh-Handler aktualisieren.',
|
||||
@@ -96,10 +105,9 @@
|
||||
aliases: ['Module aktualisieren'],
|
||||
keywords: ['module', 'refresh', 'neu laden'],
|
||||
visible: moduleVisible,
|
||||
enabled: () => Boolean(find('#module-manager-refresh')),
|
||||
handler: () => click('#module-manager-refresh'),
|
||||
selector: '#module-manager-refresh',
|
||||
}),
|
||||
adapter({
|
||||
buttonAction({
|
||||
id: 'workspace:modules:filter-all',
|
||||
title: 'Alle Module anzeigen',
|
||||
description: 'Den vorhandenen Modulfilter auf alle Einträge setzen.',
|
||||
@@ -107,10 +115,39 @@
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['module', 'filter', 'alle'],
|
||||
visible: moduleVisible,
|
||||
enabled: () => Boolean(find('[data-ux-module-group="modules"][data-ux-module-filter="all"]')),
|
||||
handler: () => click('[data-ux-module-group="modules"][data-ux-module-filter="all"]'),
|
||||
selector: '[data-ux-module-group="modules"][data-ux-module-filter="all"]',
|
||||
}),
|
||||
adapter({
|
||||
buttonAction({
|
||||
id: 'workspace:modules:filter-active',
|
||||
title: 'Aktive Module anzeigen',
|
||||
description: 'Den vorhandenen Modulfilter auf aktive Module setzen.',
|
||||
icon: '✓',
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['module', 'aktiv', 'filter'],
|
||||
visible: moduleVisible,
|
||||
selector: '[data-ux-module-group="modules"][data-ux-module-filter="active"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:modules:filter-disabled',
|
||||
title: 'Deaktivierte Module anzeigen',
|
||||
description: 'Den vorhandenen Modulfilter auf deaktivierte Module setzen.',
|
||||
icon: '–',
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['module', 'deaktiviert', 'filter'],
|
||||
visible: moduleVisible,
|
||||
selector: '[data-ux-module-group="modules"][data-ux-module-filter="disabled"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:modules:filter-external',
|
||||
title: 'Installierte Module anzeigen',
|
||||
description: 'Den vorhandenen Modulfilter auf installierte externe Module setzen.',
|
||||
icon: '▣',
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['module', 'installiert', 'extern', 'filter'],
|
||||
visible: moduleVisible,
|
||||
selector: '[data-ux-module-group="modules"][data-ux-module-filter="external"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:modules:filter-problems',
|
||||
title: 'Module mit Problemen anzeigen',
|
||||
description: 'Den vorhandenen Modulfilter auf fehlerhafte oder ungültige Module setzen.',
|
||||
@@ -119,8 +156,48 @@
|
||||
aliases: ['Problematische Module', 'Modulfehler'],
|
||||
keywords: ['module', 'probleme', 'fehler'],
|
||||
visible: moduleVisible,
|
||||
enabled: () => Boolean(find('[data-ux-module-group="modules"][data-ux-module-filter="problems"]')),
|
||||
handler: () => click('[data-ux-module-group="modules"][data-ux-module-filter="problems"]'),
|
||||
selector: '[data-ux-module-group="modules"][data-ux-module-filter="problems"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:extensions:filter-all',
|
||||
title: 'Alle Extensions anzeigen',
|
||||
description: 'Den vorhandenen Extension-Filter auf alle Browser-Erweiterungen setzen.',
|
||||
icon: '◫',
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['extensions', 'browser', 'filter', 'alle'],
|
||||
visible: extensionVisible,
|
||||
selector: '[data-ux-module-group="extensions"][data-ux-module-filter="all"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:extensions:filter-ready',
|
||||
title: 'Bereite Extensions anzeigen',
|
||||
description: 'Den vorhandenen Extension-Filter auf vorbereitete oder installierte Erweiterungen setzen.',
|
||||
icon: '✓',
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['extensions', 'bereit', 'vorbereitet', 'filter'],
|
||||
visible: extensionVisible,
|
||||
selector: '[data-ux-module-group="extensions"][data-ux-module-filter="ready"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:extensions:filter-connected',
|
||||
title: 'Verbundene Extensions anzeigen',
|
||||
description: 'Den vorhandenen Extension-Filter auf verbundene Browser-Erweiterungen setzen.',
|
||||
icon: '↔',
|
||||
group: 'Module & Extensions',
|
||||
keywords: ['extensions', 'verbunden', 'browser', 'filter'],
|
||||
visible: extensionVisible,
|
||||
selector: '[data-ux-module-group="extensions"][data-ux-module-filter="connected"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:extensions:filter-attention',
|
||||
title: 'Extensions mit Handlungsbedarf anzeigen',
|
||||
description: 'Den vorhandenen Extension-Filter auf Einträge mit notwendiger Aktion setzen.',
|
||||
icon: '!',
|
||||
group: 'Module & Extensions',
|
||||
aliases: ['Extension-Probleme', 'Aktion nötig'],
|
||||
keywords: ['extensions', 'aktion', 'problem', 'aufmerksamkeit'],
|
||||
visible: extensionVisible,
|
||||
selector: '[data-ux-module-group="extensions"][data-ux-module-filter="attention"]',
|
||||
}),
|
||||
adapter({
|
||||
id: 'workspace:articles:open-current',
|
||||
@@ -139,7 +216,7 @@
|
||||
return true;
|
||||
},
|
||||
}),
|
||||
adapter({
|
||||
buttonAction({
|
||||
id: 'workspace:articles:view-cards',
|
||||
title: 'Artikel als Karten anzeigen',
|
||||
description: 'Die bestehende Kartenansicht der Artikelübersicht aktivieren.',
|
||||
@@ -148,10 +225,9 @@
|
||||
aliases: ['Kartenansicht'],
|
||||
keywords: ['artikel', 'karten', 'ansicht'],
|
||||
visible: articleVisible,
|
||||
enabled: () => Boolean(find('[data-article-view-choice="cards"]')),
|
||||
handler: () => click('[data-article-view-choice="cards"]'),
|
||||
selector: '[data-article-view-choice="cards"]',
|
||||
}),
|
||||
adapter({
|
||||
buttonAction({
|
||||
id: 'workspace:articles:view-list',
|
||||
title: 'Artikel als Liste anzeigen',
|
||||
description: 'Die bestehende Listenansicht der Artikelübersicht aktivieren.',
|
||||
@@ -160,8 +236,17 @@
|
||||
aliases: ['Listenansicht'],
|
||||
keywords: ['artikel', 'liste', 'ansicht'],
|
||||
visible: articleVisible,
|
||||
enabled: () => Boolean(find('[data-article-view-choice="list"]')),
|
||||
handler: () => click('[data-article-view-choice="list"]'),
|
||||
selector: '[data-article-view-choice="list"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:articles:reset-filters',
|
||||
title: 'Artikelfilter zurücksetzen',
|
||||
description: 'Den vorhandenen Reset-Handler der Artikelübersicht ausführen.',
|
||||
icon: '×',
|
||||
group: 'Artikel',
|
||||
keywords: ['artikel', 'filter', 'zurücksetzen', 'reset'],
|
||||
visible: articleVisible,
|
||||
selector: '#history-reset-filters',
|
||||
}),
|
||||
adapter({
|
||||
id: 'workspace:media:open-current-preview',
|
||||
@@ -180,7 +265,18 @@
|
||||
return true;
|
||||
},
|
||||
}),
|
||||
adapter({
|
||||
buttonAction({
|
||||
id: 'workspace:media:density-compact',
|
||||
title: 'Galerie kompakt anzeigen',
|
||||
description: 'Die bestehende kompakte Kartengröße der Medienbibliothek aktivieren.',
|
||||
icon: '▦',
|
||||
group: 'Medien',
|
||||
aliases: ['Kleine Bildkarten'],
|
||||
keywords: ['medien', 'galerie', 'kompakt', 'klein', 'dichte'],
|
||||
visible: mediaVisible,
|
||||
selector: '[data-media-density-option="compact"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:media:density-comfortable',
|
||||
title: 'Galerie normal anzeigen',
|
||||
description: 'Die bestehende normale Kartengröße der Medienbibliothek aktivieren.',
|
||||
@@ -189,10 +285,42 @@
|
||||
aliases: ['Mittlere Bildkarten'],
|
||||
keywords: ['medien', 'galerie', 'normal', 'dichte'],
|
||||
visible: mediaVisible,
|
||||
enabled: () => Boolean(find('[data-media-density-option="comfortable"]')),
|
||||
handler: () => click('[data-media-density-option="comfortable"]'),
|
||||
selector: '[data-media-density-option="comfortable"]',
|
||||
}),
|
||||
adapter({
|
||||
buttonAction({
|
||||
id: 'workspace:media:density-large',
|
||||
title: 'Galerie groß anzeigen',
|
||||
description: 'Die bestehende große Kartendarstellung der Medienbibliothek aktivieren.',
|
||||
icon: '▦',
|
||||
group: 'Medien',
|
||||
aliases: ['Große Bildkarten'],
|
||||
keywords: ['medien', 'galerie', 'groß', 'dichte'],
|
||||
visible: mediaVisible,
|
||||
selector: '[data-media-density-option="large"]',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:media:view-grid',
|
||||
title: 'Medien als Raster anzeigen',
|
||||
description: 'Die bestehende Rasteransicht der Medienbibliothek aktivieren.',
|
||||
icon: '▦',
|
||||
group: 'Medien',
|
||||
aliases: ['Galerieraster'],
|
||||
keywords: ['medien', 'raster', 'grid', 'ansicht'],
|
||||
visible: mediaVisible,
|
||||
selector: '#media-view-grid',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:media:view-list',
|
||||
title: 'Medien als Liste anzeigen',
|
||||
description: 'Die bestehende Listenansicht der Medienbibliothek aktivieren.',
|
||||
icon: '☷',
|
||||
group: 'Medien',
|
||||
aliases: ['Medienliste'],
|
||||
keywords: ['medien', 'liste', 'ansicht'],
|
||||
visible: mediaVisible,
|
||||
selector: '#media-view-list',
|
||||
}),
|
||||
buttonAction({
|
||||
id: 'workspace:media:reset-filters',
|
||||
title: 'Medienfilter zurücksetzen',
|
||||
description: 'Den vorhandenen Filter-Reset der Medienbibliothek ausführen.',
|
||||
@@ -200,14 +328,16 @@
|
||||
group: 'Medien',
|
||||
keywords: ['medien', 'filter', 'zurücksetzen'],
|
||||
visible: mediaVisible,
|
||||
enabled: () => Boolean(find('.ux-media-filter-reset')),
|
||||
handler: () => click('.ux-media-filter-reset'),
|
||||
selector: '.ux-media-filter-reset',
|
||||
}),
|
||||
]);
|
||||
];
|
||||
|
||||
actions.registerMany(registered);
|
||||
root.dataset.uxSafeActionAdaptersRegistered = '1';
|
||||
actions.refresh();
|
||||
window.dispatchEvent(new CustomEvent('vendoo:safe-action-adapters-ready', { detail: { count: 9 } }));
|
||||
window.dispatchEvent(new CustomEvent('vendoo:safe-action-adapters-ready', {
|
||||
detail: { count: registered.length, baselineCount: 9, expansionCount: registered.length - 9 },
|
||||
}));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user