diff options
| author | polo <ordipolo@gmx.fr> | 2025-07-18 22:21:31 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-07-18 22:21:31 +0200 |
| commit | 68746cb30bb0c85539761ee8f0fd7647015c96e7 (patch) | |
| tree | 779c782cab3fd666f22e8be106c9f44c30fc94f8 | |
| parent | b55a029a5b4867349a172873d20a6ffd91c20e23 (diff) | |
| download | cms-68746cb30bb0c85539761ee8f0fd7647015c96e7.tar.gz cms-68746cb30bb0c85539761ee8f0fd7647015c96e7.tar.bz2 cms-68746cb30bb0c85539761ee8f0fd7647015c96e7.zip | |
détection des MAJ du CSS et JS avec versioning des fichiers
| -rw-r--r-- | public/css/foot.css | 1 | ||||
| -rw-r--r-- | src/view/HeadBuilder.php | 25 |
2 files changed, 19 insertions, 7 deletions
diff --git a/public/css/foot.css b/public/css/foot.css index 0eb250e..ad86305 100644 --- a/public/css/foot.css +++ b/public/css/foot.css | |||
| @@ -77,6 +77,7 @@ footer > div | |||
| 77 | .footer_logo img | 77 | .footer_logo img |
| 78 | { | 78 | { |
| 79 | max-width: 288px; | 79 | max-width: 288px; |
| 80 | min-width: 150px; | ||
| 80 | } | 81 | } |
| 81 | @media screen and (max-width: 1000px) | 82 | @media screen and (max-width: 1000px) |
| 82 | { | 83 | { |
diff --git a/src/view/HeadBuilder.php b/src/view/HeadBuilder.php index 16fe3e5..f1f41ba 100644 --- a/src/view/HeadBuilder.php +++ b/src/view/HeadBuilder.php | |||
| @@ -26,25 +26,25 @@ class HeadBuilder extends AbstractBuilder | |||
| 26 | $css = ''; | 26 | $css = ''; |
| 27 | foreach($css_array as $name) | 27 | foreach($css_array as $name) |
| 28 | { | 28 | { |
| 29 | $css .= '<link rel="stylesheet" href="css/' . $name . '.css">' . "\n"; | 29 | $css .= '<link rel="stylesheet" href="' . $this->versionedFileURL('css', $name) . '">' . "\n"; |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | $js = ''; | 32 | $js = ''; |
| 33 | foreach($js_array as $name) | 33 | foreach($js_array as $name) |
| 34 | { | 34 | { |
| 35 | $js .= '<script src="js/' . $name . '.js"></script>' . "\n"; | 35 | $js .= '<script src="' . $this->versionedFileURL('js', $name) . '"></script>' . "\n"; |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | if(MainBuilder::$modif_mode){ | 38 | if(MainBuilder::$modif_mode){ |
| 39 | $css .= '<link rel="stylesheet" href="css/modif_page.css">' . "\n"; | 39 | $css .= '<link rel="stylesheet" href="' . $this->versionedFileURL('css', 'modif_page') . '">' . "\n"; |
| 40 | $js .= '<script src="js/modif_page.js"></script>' . "\n"; | 40 | $js .= '<script src="' . $this->versionedFileURL('js', 'modif_page') . '"></script>' . "\n"; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | // tinymce, nécéssite un script de copie dans composer.json | 43 | // tinymce, nécéssite un script de copie dans composer.json |
| 44 | if($_SESSION['admin']){ | 44 | if($_SESSION['admin']){ |
| 45 | $css .= '<link rel="stylesheet" href="css/tinymce.css">' . "\n"; | 45 | $css .= '<link rel="stylesheet" href="' . $this->versionedFileURL('css', 'tinymce') . '">' . "\n"; |
| 46 | $js .= '<script src="js/tinymce/tinymce.min.js"></script>' . "\n"; | 46 | $js .= '<script src="' . $this->versionedFileURL('js', 'tinymce/tinymce.min') . '"></script>' . "\n"; // pour js/tinymce/tinymce.min.js |
| 47 | $js .= '<script src="js/tinymce.js"></script>' . "\n"; | 47 | $js .= '<script src="' . $this->versionedFileURL('js', 'tinymce') . '"></script>' . "\n"; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | // titre | 50 | // titre |
| @@ -76,4 +76,15 @@ class HeadBuilder extends AbstractBuilder | |||
| 76 | { | 76 | { |
| 77 | return $this->stop; | 77 | return $this->stop; |
| 78 | } | 78 | } |
| 79 | |||
| 80 | private function versionedFileURL(string $type, string $filename): string | ||
| 81 | { | ||
| 82 | $path = $type . '/' . $filename . '.' . $type; | ||
| 83 | |||
| 84 | if(file_exists($path)){ | ||
| 85 | $version = substr(md5_file($path), 0, 8); | ||
| 86 | return $path . '?v=' . $version; | ||
| 87 | } | ||
| 88 | return $path; // sécurité fichier absent | ||
| 89 | } | ||
| 79 | } | 90 | } |
