mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 08:09:18 +02:00
- package.json with biome, rolldown, lightningcss devDependencies
- biome.json: add CSS formatter support
- scripts/build-css.mjs: lightningcss resolves @import chain, bundles/minifies CSS
- scripts/build-js.mjs: rolldown per-entry JS bundling (no code splitting)
- scripts/build.mjs: orchestrator for both CSS + JS
- scripts/check-build.mjs: staleness checker for CI/deploy guard
- justfile: add build, build-css, build-js, build-install, build-check recipes
- justfile: deploy recipe now runs build before deploy-code
- head.php + form-page.php: use dist/base.min.css instead of style.css
- All controllers + FormBootstrap: reference dist/*.min.{css,js}
- admin footer: load admin.min.js for all admin pages
- repertoire: use public.min.js instead of individual app JS files
- Fix stray '}' syntax error in admin.css line 305
- .gitignore: add app/public/assets/dist/
58 lines
1.9 KiB
PHP
58 lines
1.9 KiB
PHP
<?php
|
||
|
||
require_once APP_ROOT . '/src/Database.php';
|
||
require_once APP_ROOT . '/src/ErrorHandler.php';
|
||
require_once APP_ROOT . '/src/EmailObfuscator.php';
|
||
require_once APP_ROOT . '/src/MarkdownHelper.php';
|
||
|
||
use League\CommonMark\CommonMarkConverter;
|
||
use League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension;
|
||
|
||
class LicenceController
|
||
{
|
||
public static function create(): self
|
||
{
|
||
return new self();
|
||
}
|
||
|
||
public function handle(): array
|
||
{
|
||
try {
|
||
$db = Database::getInstance();
|
||
$dbPage = $db->getPage('licenses');
|
||
$content = $dbPage ? $dbPage['content'] : '';
|
||
$pageTitle = $dbPage ? $dbPage['title'] : 'Licences';
|
||
} catch (Exception $e) {
|
||
ErrorHandler::log('licence_page', $e);
|
||
$content = '';
|
||
$pageTitle = 'Licences';
|
||
}
|
||
|
||
$converter = new CommonMarkConverter([
|
||
'html_input' => 'strip',
|
||
'heading_permalink' => [
|
||
'apply_id_to_heading' => true,
|
||
'id_prefix' => '',
|
||
'insert' => 'before',
|
||
'aria_hidden' => true,
|
||
],
|
||
]);
|
||
$converter->getEnvironment()->addExtension(new HeadingPermalinkExtension());
|
||
$html = EmailObfuscator::obfuscateHtml($converter->convert($content)->getContent());
|
||
|
||
$tocItems = MarkdownHelper::extractToc($content);
|
||
|
||
return [
|
||
'content' => $content,
|
||
'html' => $html,
|
||
'tocItems' => $tocItems,
|
||
'pageTitle' => $pageTitle . ' – XAMXAM',
|
||
'metaDescription' => "Informations sur les licences d'utilisation des mémoires publiés sur XAMXAM, le répertoire des TFE de l'erg.",
|
||
'currentNav' => 'licence',
|
||
'extraCss' => ['/assets/dist/content-page.min.css'],
|
||
'bodyClass' => 'apropos-body',
|
||
];
|
||
}
|
||
|
||
}
|