Added the support for generating docs from template doc

This commit is contained in:
Simon Pocrnjič
2025-10-06 21:46:28 +02:00
parent 0c8d1e0b5d
commit cec5796acf
69 changed files with 4570 additions and 374 deletions
+32 -6
View File
@@ -203,17 +203,42 @@ const rawMenuGroups = [
routeName: "settings",
active: ["settings", "settings.*"],
},
// Admin panel (roles & permissions management)
// Only shown if current user has admin role or manage-settings permission.
// We'll filter it out below if not authorized.
{
key: "admin-panel",
title: "Administrator",
routeName: "admin.index",
active: ["admin.index", "admin.users.index", "admin.permissions.create"],
requires: { role: "admin", permission: "manage-settings" },
},
],
},
];
const menuGroups = computed(() => {
return rawMenuGroups.map((g) => ({
label: g.label,
items: [...g.items].sort((a, b) =>
a.title.localeCompare(b.title, "sl", { sensitivity: "base" })
),
}));
const user = page.props.auth?.user || {};
const roles = (user.roles || []).map((r) => r.slug);
const permissions = user.permissions || [];
// Helper to determine inclusion based on optional requires meta
function allowed(item) {
if (!item.requires) return true;
const needRole = item.requires.role;
const needPerm = item.requires.permission;
return (
(needRole && roles.includes(needRole)) ||
(needPerm && permissions.includes(needPerm))
);
}
return rawMenuGroups.map((g) => {
const items = g.items
.filter(allowed)
.sort((a, b) => a.title.localeCompare(b.title, "sl", { sensitivity: "base" }));
return { label: g.label, items };
});
});
// Icon map for menu keys -> FontAwesome icon definitions
@@ -227,6 +252,7 @@ const menuIconMap = {
"import-templates-new": faFileCirclePlus,
fieldjobs: faMap,
settings: faGear,
"admin-panel": faUserGroup,
};
function isActive(patterns) {