v2.5.1: Admin theme refactor, Navigation plugin, user roles, guide restructure

- Reorganize admin into admin/theme/default/ (views + assets)
- Rename GuideNav to Navigation plugin (essential, protected)
- Plugin assets support (SCSS/CSS) loaded after theme CSS
- User roles: Admin, Content Manager, BI Manager, Site Admin
- Role-based access control (RBAC) for admin routes and sidebar
- Guide restructure: sub-topics in separate folders with sidebar nav
- Dynamic breadcrumb for homepage and subdirectories
- Fix theme path traversal (../../ -> ../) in admin.php
- Fix CodeMirror mode load order (xml -> css -> js -> htmlmixed -> php)
- Fix editor-toolbar.js null checks for plugin edit pages
- Layout select from theme.json with live frontmatter update
- Footer sticky at bottom of viewport (min-height: 100vh)
- Breadcrumb color fix (var(--nav-font) -> var(--header-bg))
- Remove language switcher from guide pages
- Update README.md and README.en.md
- Bump version to 2.5.1
This commit is contained in:
2026-08-10 15:36:29 +02:00
parent 7fc3847bbb
commit 3a55ea4db6
210 changed files with 11033 additions and 9140 deletions
@@ -0,0 +1,57 @@
/* Navigation plugin - compiled from assets/scss/navigation.scss */
.nav-plugin {
padding-left: 0;
margin-bottom: 0;
}
.nav-plugin-item {
margin-bottom: 0.125rem;
}
.nav-plugin-link {
display: block;
padding: 0.3rem 0.5rem;
color: #212529;
text-decoration: none;
border-radius: 0.25rem;
border-left: 3px solid transparent;
font-size: 0.9rem;
}
.nav-plugin-link:hover {
background-color: #f8f9fa;
text-decoration: none;
}
.nav-plugin-link.active {
background-color: #e7f1ff;
border-left-color: #0a369d;
color: #0a369d;
font-weight: 600;
}
.nav-plugin-icon {
font-size: 0.8em;
margin-right: 0.25rem;
opacity: 0.6;
}
.nav-parent {
font-weight: 600;
}
.nav-parent .nav-plugin-icon {
color: #0a369d;
opacity: 1;
}
.nav-sub {
margin-left: 1.1rem;
margin-top: 0.2rem;
padding-left: 0.6rem;
border-left: 1px solid #dee2e6;
}
.nav-sub .nav-plugin-link {
padding: 0.2rem 0.5rem;
font-size: 0.85rem;
font-weight: normal;
color: #495057;
}
.nav-sub .nav-plugin-link.active {
color: #0a369d;
}
.nav-sub .nav-plugin-icon {
font-size: 0.75em;
}
@@ -0,0 +1,71 @@
// Navigation plugin styles
// Compiled by ThemeManager (scssphp) into plugins/Navigation/assets/css/navigation.css
.nav-plugin {
padding-left: 0;
margin-bottom: 0;
}
.nav-plugin-item {
margin-bottom: 0.125rem;
}
.nav-plugin-link {
display: block;
padding: 0.3rem 0.5rem;
color: #212529;
text-decoration: none;
border-radius: 0.25rem;
border-left: 3px solid transparent;
font-size: 0.9rem;
}
.nav-plugin-link:hover {
background-color: #f8f9fa;
text-decoration: none;
}
.nav-plugin-link.active {
background-color: #e7f1ff;
border-left-color: #0a369d;
color: #0a369d;
font-weight: 600;
}
.nav-plugin-icon {
font-size: 0.8em;
margin-right: 0.25rem;
opacity: 0.6;
}
.nav-parent {
font-weight: 600;
}
.nav-parent .nav-plugin-icon {
color: #0a369d;
opacity: 1;
}
// Sub-navigation (nested items)
.nav-sub {
margin-left: 1.1rem;
margin-top: 0.2rem;
padding-left: 0.6rem;
border-left: 1px solid #dee2e6;
}
.nav-sub .nav-plugin-link {
padding: 0.2rem 0.5rem;
font-size: 0.85rem;
font-weight: normal;
color: #495057;
}
.nav-sub .nav-plugin-link.active {
color: #0a369d;
}
.nav-sub .nav-plugin-icon {
font-size: 0.75em;
}