diff --git a/config/modules.php b/config/modules.php index ca48f2c..2e8a9b9 100644 --- a/config/modules.php +++ b/config/modules.php @@ -12,5 +12,5 @@ * Each entry must match a directory name under modules/ containing a module.php manifest. */ return [ - 'enabled_modules' => ['audit', 'addressbook', 'bookmarks', 'notifications', 'api-docs'], + 'enabled_modules' => ['audit', 'addressbook', 'bookmarks', 'notifications', 'api-docs', 'help-center'], ]; diff --git a/modules/help-center/i18n/default_de.json b/modules/help-center/i18n/default_de.json new file mode 100644 index 0000000..6eb4c65 --- /dev/null +++ b/modules/help-center/i18n/default_de.json @@ -0,0 +1,16 @@ +{ + "Help": "Hilfe", + "Documentation": "Dokumentation", + "Keyboard shortcuts": "Tastenkuerzel", + "Action": "Aktion", + "Shortcut": "Kuerzel", + "About": "Info", + "Application": "Anwendung", + "CoreCore Admin": "CoreCore Admin", + "Open search": "Suche oeffnen", + "Save in edit pages": "Speichern auf Bearbeitungsseiten", + "Toggle sidebar": "Seitenleiste umschalten", + "Switch sidebar section": "Seitenleisten-Bereich wechseln", + "Back": "Zurueck", + "Forward": "Vorwaerts" +} diff --git a/modules/help-center/i18n/default_en.json b/modules/help-center/i18n/default_en.json new file mode 100644 index 0000000..3a82f52 --- /dev/null +++ b/modules/help-center/i18n/default_en.json @@ -0,0 +1,16 @@ +{ + "Help": "Help", + "Documentation": "Documentation", + "Keyboard shortcuts": "Keyboard shortcuts", + "Action": "Action", + "Shortcut": "Shortcut", + "About": "About", + "Application": "Application", + "CoreCore Admin": "CoreCore Admin", + "Open search": "Open search", + "Save in edit pages": "Save in edit pages", + "Toggle sidebar": "Toggle sidebar", + "Switch sidebar section": "Switch sidebar section", + "Back": "Back", + "Forward": "Forward" +} diff --git a/modules/help-center/lib/Module/HelpCenter/HelpCenterContainerRegistrar.php b/modules/help-center/lib/Module/HelpCenter/HelpCenterContainerRegistrar.php new file mode 100644 index 0000000..de5e88c --- /dev/null +++ b/modules/help-center/lib/Module/HelpCenter/HelpCenterContainerRegistrar.php @@ -0,0 +1,14 @@ + 'help-center', + 'version' => '1.0.0', + 'enabled_by_default' => true, + 'load_order' => 30, + 'requires' => [], + + 'routes' => [], + 'public_paths' => [], + 'container_registrars' => [ + \MintyPHP\Module\HelpCenter\HelpCenterContainerRegistrar::class, + ], + + 'ui_slots' => [ + 'aside.tab_panel' => [ + [ + 'key' => 'help', + 'label' => 'Help', + 'icon' => 'bi-question-circle', + 'href' => '', + 'permission' => '', + 'panel_template' => 'templates/aside-help-panel.phtml', + 'order' => 900, + ], + ], + 'layout.head_style' => [ + [ + 'key' => 'help-center-style', + 'path' => 'modules/help-center/css/components/app-help-panel.css', + 'order' => 200, + ], + ], + ], + + 'authorization_policies' => [], + 'search_resources' => [], + 'asset_groups' => [], + 'scheduler_jobs' => [], + 'layout_context_providers' => [], + 'session_providers' => [], + 'permissions' => [], + 'event_listeners' => [], + 'deactivation_handler' => null, + 'migrations_path' => null, + 'i18n_path' => 'i18n', +]; diff --git a/modules/help-center/templates/aside-help-panel.phtml b/modules/help-center/templates/aside-help-panel.phtml new file mode 100644 index 0000000..af4a7f1 --- /dev/null +++ b/modules/help-center/templates/aside-help-panel.phtml @@ -0,0 +1,65 @@ + +
+ +
+

+ +
+ + +
+

+ + + + + + + + + + + + + + + +
+
+ +
+

+ +
+
diff --git a/modules/help-center/web/css/components/app-help-panel.css b/modules/help-center/web/css/components/app-help-panel.css new file mode 100644 index 0000000..6e1b5bf --- /dev/null +++ b/modules/help-center/web/css/components/app-help-panel.css @@ -0,0 +1,103 @@ +@layer components { +.app-help-panel { + padding: var(--app-spacing); +} + +.app-help-panel .app-sidebar-title { + text-transform: uppercase; + font-size: var(--app-text-2xs); + font-weight: 600; + color: var(--app-muted-color); + margin: 0 0 0.5rem; + letter-spacing: 0.03em; +} + +.app-help-panel .app-sidebar-group { + margin-bottom: calc(var(--app-spacing) * 1.5); +} + +.app-help-panel .app-sidebar-group ul { + list-style: none; + margin: 0; + padding: 0; +} + +.app-help-panel .app-sidebar-group ul li a { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.35rem 0.5rem; + border-radius: var(--app-border-radius); + color: var(--app-color); + text-decoration: none; + font-size: var(--app-text-sm); + transition: background-color 0.15s; +} + +.app-help-panel .app-sidebar-group ul li a:hover { + background-color: var(--app-accordion-border-color); +} + +.app-help-panel .app-sidebar-group ul li a i { + font-size: 1rem; + opacity: 0.65; +} + +.app-help-shortcuts-table { + width: 100%; + border-collapse: collapse; + font-size: var(--app-text-sm); +} + +.app-help-shortcuts-table th, +.app-help-shortcuts-table td { + padding: 0.3rem 0.5rem; + text-align: left; + border: none; + background: transparent; +} + +.app-help-shortcuts-table th { + font-weight: 600; + color: var(--app-muted-color); + font-size: var(--app-text-2xs); + text-transform: uppercase; + letter-spacing: 0.03em; + border-bottom: 1px solid var(--app-border); +} + +.app-help-shortcuts-table td { + border-bottom: 1px solid var(--app-border); +} + +.app-help-shortcuts-table tr:last-child td { + border-bottom: none; +} + +.app-help-shortcuts-table kbd { + display: inline-block; + padding: 0.1rem 0.35rem; + font-size: var(--app-text-xs); + font-family: var(--app-font-family-mono, monospace); + background: var(--app-card-background-color); + border: 1px solid var(--app-border); + border-radius: 3px; + box-shadow: 0 1px 0 var(--app-border); + white-space: nowrap; +} + +.app-help-about-item { + display: flex; + justify-content: space-between; + padding: 0.35rem 0.5rem; + font-size: var(--app-text-sm); +} + +.app-help-about-label { + color: var(--app-muted-color); +} + +.app-help-about-value { + font-weight: 500; +} +}