aboutsummaryrefslogtreecommitdiff
path: root/src/view/HeadBuilder.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-10-23 00:47:32 +0200
committerpolo <ordipolo@gmx.fr>2026-10-23 00:47:32 +0200
commitf27cca08ff786ceff1870147f6d6bad14d71117f (patch)
treed36597a72025313d6faf4ed228755fa267ebe2f6 /src/view/HeadBuilder.php
parentc7309f900ef05bd5cb313110ec159b761af394ec (diff)
downloadcms-f27cca08ff786ceff1870147f6d6bad14d71117f.tar.gz
cms-f27cca08ff786ceff1870147f6d6bad14d71117f.tar.bz2
cms-f27cca08ff786ceff1870147f6d6bad14d71117f.zip
dossiers avec majuscule, namespace pour toutes les classes, autoload psr-4, UserDataService::createZip déplacé dans Backup
Diffstat (limited to 'src/view/HeadBuilder.php')
-rw-r--r--src/view/HeadBuilder.php81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/view/HeadBuilder.php b/src/view/HeadBuilder.php
deleted file mode 100644
index 9cb0650..0000000
--- a/src/view/HeadBuilder.php
+++ /dev/null
@@ -1,81 +0,0 @@
1<?php
2// src/view/HeadBuilder.php
3
4declare(strict_types=1);
5
6use App\Entity\Asset;
7use App\Entity\Node;
8
9class HeadBuilder extends AbstractBuilder
10{
11 public function __construct(Node $node)
12 {
13 $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
14
15 if(file_exists($viewFile)){
16 // css et js
17 $page = Model::$page_path->getLast();
18
19 $css = '';
20 foreach($page->getCSS() as $name){
21 $css .= self::insertCSS($name);
22 }
23
24 $js = '';
25 foreach($page->getJS() as $name){
26 $js .= self::insertJS($name);
27 }
28
29 if(MainBuilder::$modif_mode){
30 $css .= self::insertCSS('modif_page');
31 $js .= self::insertJS('modif_page');
32 }
33
34 if(IS_ADMIN){
35 // édition éléments sur toutes les pages (header, footer et favicon)
36 $js .= self::insertJS('Input');
37
38 // sert partout?
39 $js .= self::insertJS('Fetcher');
40
41 // tinymce, nécéssite un script post-install et post-update dans composer.json
42 $css .= self::insertCSS('tinymce');
43 $js .= self::insertJS('tinymce/tinymce.min');
44 $js .= self::insertJS('tinymce');
45 }
46
47 $title = Model::$page_path->getLast()->getPageName();
48 $description = Model::$page_path->getLast()->getDescription();
49
50 // favicon
51 // ?-> est l'opérateur de navigation sécurisée => LOVE!
52 $favicon_name = ($favicon_object = $node->getNodeData()->getAssetByRole('head_favicon'))?->getFileName();
53 $favicon = $favicon_name ? Asset::USER_PATH . $favicon_name : '';
54 $favicon_type = $favicon_object?->getMimeType() ?? '';
55
56 ob_start();
57 require $viewFile;
58 $this->html .= ob_get_clean();
59 }
60 }
61
62 static function insertCSS(string $name): string
63 {
64 return '<link rel="stylesheet" href="' . self::versionedFileURL('css', $name) . '">' . "\n";
65 }
66 static function insertJS(string $name, bool $module = false): string
67 {
68 return '<script ' . ($module ? 'type="module"' : '') . ' src="' . self::versionedFileURL('js', $name) . '"></script>' . "\n";
69 }
70
71 static function versionedFileURL(string $type, string $filename): string
72 {
73 $path = $type . '/' . $filename . '.' . $type;
74
75 if(file_exists($path)){
76 $version = substr(md5_file($path), 0, 8);
77 return $path . '?v=' . $version;
78 }
79 return $path; // sécurité fichier absent
80 }
81}