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
This commit is contained in:
@@ -1,11 +1,84 @@
|
||||
# CMS Architecture
|
||||
|
||||
CodePress is a file-based CMS without a database. Content, configuration and users are stored in files.
|
||||
|
||||
## Folder structure
|
||||
|
||||
```
|
||||
codepress/
|
||||
├── cms/core/ # Core engine
|
||||
├── admin/ # Admin console
|
||||
├── themes/ # Themes
|
||||
├── plugins/ # Plugins
|
||||
├── content/ # Content
|
||||
└── public/ # Web root
|
||||
```
|
||||
├── cms/ # Core CMS engine
|
||||
│ ├── core/
|
||||
│ │ ├── class/
|
||||
│ │ │ ├── CodePressCMS.php # Main CMS class (routing, rendering, breadcrumb)
|
||||
│ │ │ ├── ThemeManager.php # Theme resolver + Twig render + SCSS compile
|
||||
│ │ │ ├── ContentAPI.php # Read-only API for PHP content
|
||||
│ │ │ ├── ContentSecurityPolicy.php # CSP header management
|
||||
│ │ │ ├── Analytics.php # Visitor statistics
|
||||
│ │ │ ├── BotGuard.php # Bot/AI detection
|
||||
│ │ │ ├── Cache.php # Cache system
|
||||
│ │ │ ├── GeoIP.php # GeoIP lookup (country, flag)
|
||||
│ │ │ ├── Logger.php # Basic logging
|
||||
│ │ │ ├── LogManager.php # Dynamic logging (SQLite/syslog)
|
||||
│ │ │ ├── RateLimiter.php # Rate limiting per IP
|
||||
│ │ │ ├── RequestLogger.php # Request logging + visitor info
|
||||
│ │ │ ├── SearchEngine.php # Full text search
|
||||
│ │ │ └── AccessibilityManager.php # Accessibility features
|
||||
│ │ ├── plugin/
|
||||
│ │ │ ├── PluginManager.php # Plugin loader (hooks, filters, sidebar, admin routes)
|
||||
│ │ │ └── CMSAPI.php # API for plugins (getPage, getConfig, etc.)
|
||||
│ │ ├── config.php # Config loader (reads config.json)
|
||||
│ │ └── index.php # Bootstrap (autoloader, requires)
|
||||
│ ├── lang/ # Language files (nl.php, en.php)
|
||||
│ └── router.php # PHP dev server router
|
||||
├── themes/ # Dynamic themes
|
||||
│ └── default/ # Default theme (views + assets)
|
||||
│ ├── theme.json # { title, config.default_template, template: layout→.twig }
|
||||
│ ├── base.twig # Main layout
|
||||
│ ├── *.twig # Layout templates
|
||||
│ ├── partials/ # header.twig, navigation.twig, footer.twig
|
||||
│ └── assets/
|
||||
│ ├── scss/theme.scss # SCSS source (only CSS source)
|
||||
│ ├── css_compiled/ # Generated by scssphp (read-only)
|
||||
│ ├── css/ # External CSS (bootstrap.min.css, etc.)
|
||||
│ ├── js/ # JavaScript
|
||||
│ └── img/ # Images
|
||||
├── admin/ # Admin panel
|
||||
│ ├── config/
|
||||
│ │ ├── app.php # Admin app configuration
|
||||
│ │ └── admin.json # Users & security (file-based, .gitignore'd)
|
||||
│ ├── src/
|
||||
│ │ └── AdminAuth.php # Authentication + RBAC
|
||||
│ ├── theme/default/ # Admin theme (views + assets)
|
||||
│ │ ├── theme.json
|
||||
│ │ ├── assets/ # CSS, JS, CodeMirror, fonts
|
||||
│ │ └── views/ # login.twig, layouts/, pages/
|
||||
│ └── storage/ # Logs, cache, geoip
|
||||
├── plugins/ # CMS plugins
|
||||
│ ├── Navigation/ # Essential navigation plugin (protected)
|
||||
│ │ ├── Navigation.php # Plugin code (NOT plugin.php)
|
||||
│ │ ├── plugin.json # Metadata with type field
|
||||
│ │ └── assets/ # SCSS + CSS
|
||||
│ └── HTMLBlock/ # Example sidebar plugin
|
||||
├── content/ # Website content (.md, .php, .html) — .gitignore'd
|
||||
├── guide/ # Guides (nl/en)
|
||||
├── public/ # Web root
|
||||
│ ├── index.php # Website entry point
|
||||
│ ├── admin.php # Admin entry point + routing
|
||||
│ ├── asset.php # Asset server for Apache (themes/, admin/assets/, plugins/)
|
||||
│ ├── .htaccess # Forwards asset URLs to asset.php
|
||||
│ ├── favicon.ico
|
||||
│ └── robots.txt
|
||||
├── var/ # Cache (twig) — .gitignore'd
|
||||
├── config.json # Site configuration — .gitignore'd
|
||||
├── composer.json # PHP dependencies (CommonMark, Twig, scssphp)
|
||||
└── version.php # Version information (2.5.2)
|
||||
```
|
||||
|
||||
## Principles
|
||||
|
||||
- **No database** — Everything in files (content in `content/`, users in `admin/config/admin.json`, config in `config.json`)
|
||||
- **File-based auth** — `AdminAuth` uses bcrypt hashes in `admin.json`, sessions for login
|
||||
- **Twig templating** — Themes use Twig; `ThemeManager` renders via Twig
|
||||
- **SCSS compilation** — `assets/scss/theme.scss` → `assets/css_compiled/theme.css` via scssphp (read-only output)
|
||||
- **Plugin system** — `PluginManager` loads content and system plugins with hooks/filters
|
||||
- **Asset serving** — PHP dev router (`cms/router.php`) or Apache (`.htaccess` → `public/asset.php`)
|
||||
Reference in New Issue
Block a user