- Admin guide: RBAC roles, role-based dashboard, plugin types (content/system) - CodePress developer guide: plugin types, admin plugin API, SCSS compilation, asset serving - Theme developer guide: SCSS sole CSS source, css_compiled read-only, guide layout - Content manager guide: layout selection from theme.json, plugin order in frontmatter - Both NL and EN updated with identical structure - 35 files updated
3.4 KiB
3.4 KiB
Core Classes
CodePressCMS.php
Hoofd CMS class in cms/core/class/CodePressCMS.php:
$cms = new CodePressCMS();
$cms->init();
$cms->renderPage($pagePath);
Verantwoordelijkheden:
- Routing en pagina rendering
- Breadcrumb generatie (dynamisch: Home > [submappen] > [pagina])
- Guide pagina's laden (
getGuidePage()) - Titel extractie uit H1 (
getTitleFromFile()) - Weergavenaam verwerking (
formatDisplayName())
ThemeManager.php
Themabeheer in cms/core/class/ThemeManager.php:
$themeManager = new ThemeManager($config);
$themeManager->getActiveTheme();
$themeManager->renderTwig($template, $data);
$themeManager->compileCss($force);
$themeManager->getCssUrl();
Verantwoordelijkheden:
- Actief thema resolveren vanuit
config.json theme.jsonladen (title, config.default_template, template mapping)- Twig environment bouwen (geroot in thema map)
- SCSS compilatie — compileert
assets/scss/theme.scssnaarassets/css_compiled/theme.cssvia scssphp - Layout resolveren naar
.twigtemplate (fallback opconfig.default_template)
getCssUrl() prioriteit: 1) assets/css/theme.css (handmatig), 2) assets/css_compiled/theme.css (gecompileerd).
PluginManager.php
Plugin systeem in cms/core/plugin/PluginManager.php:
$pluginManager = new PluginManager($pluginsPath, $enabledPlugins);
$pluginManager->getSidebarContent($allowedPlugins);
$pluginManager->getPluginCssUrls();
$pluginManager->executeHook($name, $params);
$pluginManager->getAdminMenuItems();
$pluginManager->handleAdminRoute($route);
$pluginManager->getPluginType($pluginName);
Verantwoordelijkheden:
- Plugins laden vanuit
plugins/mappen (alleen ingeschakelde plugins) - Plugin bestand:
<PluginName>.php(NIETplugin.php) - Hooks en filters systeem (
doAction,applyFilters) - Sidebar content verzamelen van content plugins (
getSidebarContent) - Plugin CSS URLs verzamelen (
getPluginCssUrls) - Admin menu items van systeem plugins (
getAdminMenuItems) - Admin routes afhandelen via systeem plugins (
handleAdminRoute) - Plugin type bepalen (
getPluginType—contentofsystem) isPluginViewable— systeem plugins verschijnen niet in sidebar
AdminAuth.php
Authenticatie en RBAC in admin/src/AdminAuth.php:
$auth = new AdminAuth($appConfig);
$auth->login($username, $password);
$auth->logout();
$auth->hasPermission($route);
$auth->verifyCsrf($token);
Constanten:
ROLE_PERMISSIONS— Mapping van rol → toegestane route prefixes.adminheeft wildcard*.ROLE_LABELS— Human-readable labels per rol.
Rollen:
| Rol | Label | Permissies |
|---|---|---|
admin |
Admin | Alles (*) |
content-manager |
Content Beheerder | Content beheer, handleiding |
bi-manager |
BI Beheerder | Statistieken, logs, handleiding |
site-admin |
Site Admin | Thema, plugins, statistieken, logs, update, handleiding |
Verantwoordelijkheden:
- Session-based authenticatie
- bcrypt password hashing
- CSRF tokens (
verifyCsrf) - Brute-force lockout (login attempts tracking)
- RBAC via
hasPermission($route)— checkt route tegenROLE_PERMISSIONS
CMSAPI.php
Plugin API in cms/core/plugin/CMSAPI.php:
$api = PluginManager::getAPI();
$config = $api->getConfig();
$page = $api->getPage($path);
$content = $api->getContent();
Biedt read-only toegang aan plugins tot CMS data (config, pagina's, content).