Files
CodePress/guide/nl/codepress-developer/core-classes.md
T
E.Noorlander 9a5ab351ba Update all guides (NL + EN) for CodePress 2.5.2 features
- 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
2026-08-12 12:05:53 +02:00

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.json laden (title, config.default_template, template mapping)
  • Twig environment bouwen (geroot in thema map)
  • SCSS compilatie — compileert assets/scss/theme.scss naar assets/css_compiled/theme.css via scssphp
  • Layout resolveren naar .twig template (fallback op config.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 (NIET plugin.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 (getPluginTypecontent of system)
  • 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. admin heeft 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 tegen ROLE_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).