WIP: Vendoo 1.44.0 – UX Foundation & Guided Workspaces #29

Draft
Masterluke77 wants to merge 284 commits from release/1.44.0-ux-foundation-production-update-v1 into main
Showing only changes of commit dfa06d3b8f - Show all commits
+154 -24
View File
@@ -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;
}