From b5caba6e7004e8e8636f98cd04c8b29a4cf8819f Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 21 Apr 2022 23:37:57 +0200 Subject: [PATCH] Chargement de toutes les fontes --- core/core.php | 142 +++--------------------- core/layout/blank.php | 10 ++ core/layout/light.php | 10 ++ core/layout/main.php | 10 ++ core/module/theme/theme.php | 54 ++++++++- core/module/theme/view/site/site.js.php | 27 ----- 6 files changed, 98 insertions(+), 155 deletions(-) diff --git a/core/core.php b/core/core.php index 495db9de..cff3145f 100644 --- a/core/core.php +++ b/core/core.php @@ -2156,15 +2156,12 @@ class common { // Import des styles liés à la page if($this->output['style']) { echo ''; + // Import de la feuille de style des pages admin if (strpos($this->output['style'], 'admin.css') >= 1 ) { echo ''; } echo ''; } - // Import des fontes liées au thème - if (file_exists(self::DATA_DIR.'fonts/fonts.html')) { - include_once(self::DATA_DIR.'fonts/fonts.html'); - } } /** @@ -2334,74 +2331,18 @@ class core extends common { // Version $css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/'; - /** * Import des polices de caractères - * A partir du CDN - * ou dans le dossier site/file/source/fonts - * ou pas du tout si fonte webSafe */ - // Fonts disponibles - $fontsAvailable ['files'] = $this->getData(['fonts', 'files']); - $fontsAvailable ['imported'] = $this->getData(['fonts', 'imported']); - $fontsAvailable ['websafe'] = self::$fontsWebSafe; - - // Fontes installées - $fonts = [ $this->getData(['theme', 'text', 'font']), - $this->getData(['theme', 'title', 'font']), - $this->getData(['theme', 'header', 'font']), - $this->getData(['theme', 'menu', 'font']), - $this->getData(['theme', 'footer', 'font']) - ]; - // Suppression des polices identiques - $fonts = array_unique($fonts); - - /** - * Charge les fontes websafe - */ - $fontFile = ''; - foreach ($fonts as $fontId) { - if ( isset($fontsAvailable['websafe'][$fontId])) { - $fonts [$fontId] = $fontsAvailable['websafe'][$fontId]['font-family']; - } - } - - /** - * Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php - */ - $fontFile = ''; - $gf = false; - foreach ($fonts as $fontId) { - if ( isset($fontsAvailable['imported'][$fontId])) { - $fontFile .= ''; - // Tableau pour la construction de la feuille de style - $fonts [$fontId] = $fontsAvailable['imported'][$fontId]['font-family']; - $gf = strpos($fontsAvailable['imported'][$fontId]['resource'], 'fonts.googleapis.com') === false ? $gf || false : $gf || true; - } - } - // Ajoute le préconnect des fontes Googles. - $fontFile = $gf ? '' . $fontFile - : $fontFile; - // Enregistre la personnalisation - file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fontFile); - - /** - * Fontes installées localement - */ - foreach ($fonts as $fontId) { - // Validité du tableau : - if ( isset($fontsAvailable['files'][$fontId]) ) { - if (file_exists(self::DATA_DIR . 'fonts/' . $fontId) ) { - // Chargement de la police - //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); - $css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";'; - $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' .$fontsAvailable['files'][$fontId]['resource'] . '");}'; - // Tableau pour la construction de la feuille de style - $fonts [$fontId] = $fontsAvailable['files'][$fontId]['font-family']; - } else { - // Le fichier de font n'est pas disponible, fonte par défaut - $fonts [$fontId] = 'verdana'; + $f ['files'] = $this->getData(['fonts', 'files']); + $f ['imported'] = $this->getData(['fonts', 'imported']); + $f ['websafe'] = self::$fontsWebSafe; + // Construit un tableau avec leur ID et leur famille + foreach(['websafe', 'imported', 'files'] as $type) { + if (is_array($f[$type])) { + foreach ($f[$type] as $fontId => $fontValue ) { + $fonts[$fontId] = $fontValue['font-family']; } } } @@ -2572,12 +2513,6 @@ class core extends common { $css .= '#footerText > p {text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}'; $css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}'; - // Enregistre les fontes - if (!is_dir(self::DATA_DIR . 'fonts')) { - mkdir(self::DATA_DIR . 'fonts'); - } - file_put_contents(self::DATA_DIR . 'fonts/fonts.html', $fontFile); - // Enregistre la personnalisation file_put_contents(self::DATA_DIR.'theme.css', $css); @@ -2596,61 +2531,18 @@ class core extends common { // Version $css = '/*' . md5(json_encode($this->getData(['admin']))) . '*/'; - // Fonts disponibles - $fontsAvailable ['files'] = $this->getData(['fonts', 'files']); - $fontsAvailable ['imported'] = $this->getData(['fonts', 'imported']); - $fontsAvailable ['websafe'] = self::$fontsWebSafe; - /** * Import des polices de caractères - * A partir du CDN ou dans le dossier site/file/source/fonts */ - $fonts = [ $this->getData(['admin', 'fontText']), - $this->getData(['admin', 'fontTitle']), - ]; - // Suppression des polices identiques - $fonts = array_unique($fonts); - /** - * Charge les fontes websafe - */ - $fontFile = ''; - foreach ($fonts as $fontId) { - if ( isset($fontsAvailable['websafe'][$fontId])) { - $fonts [$fontId] = $fontsAvailable['websafe'][$fontId]['font-family']; - } - } - - /** - * Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php - */ - $fontFile = ''; - foreach ($fonts as $fontId) { - if ( isset($fontsAvailable['imported'][$fontId])) { - $fontFile .= ''; - // Tableau pour la construction de la feuille de style - $fonts [$fontId] = $fontsAvailable['imported'][$fontId]['font-family']; - } - } - // Enregistre la personnalisation - file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fontFile); - - /** - * Fontes installées localement - */ - foreach ($fonts as $fontId) { - // Validité du tableau : - if ( isset($fontsAvailable['files'][$fontId]) ) { - if (file_exists(self::DATA_DIR . 'fonts/' . $fontId) ) { - // Chargement de la police - //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); - $css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";'; - $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' .$fontsAvailable['files'][$fontId]['resource'] . '");}'; - // Tableau pour la construction de la feuille de style - $fonts [$fontId] = $fontsAvailable['files'][$fontId]['font-family']; - } else { - // Le fichier de font n'est pas disponible, fonte par défaut - $fonts [$fontId] = 'verdana'; + $f ['files'] = $this->getData(['fonts', 'files']); + $f ['imported'] = $this->getData(['fonts', 'imported']); + $f ['websafe'] = self::$fontsWebSafe; + // Construit un tableau avec leur ID et leur famille + foreach(['websafe', 'imported', 'files'] as $type) { + if (is_array($f[$type])) { + foreach ($f[$type] as $fontId => $fontValue ) { + $fonts[$fontId] = $fontValue['font-family']; } } } diff --git a/core/layout/blank.php b/core/layout/blank.php index 789b1af6..db6b8727 100644 --- a/core/layout/blank.php +++ b/core/layout/blank.php @@ -14,6 +14,16 @@ + + + + + + showContent(); ?> showScript(); ?> diff --git a/core/layout/light.php b/core/layout/light.php index 833cb19d..e8de5ea5 100644 --- a/core/layout/light.php +++ b/core/layout/light.php @@ -14,6 +14,16 @@ + + + + + + showNotification(); ?> diff --git a/core/layout/main.php b/core/layout/main.php index ad56c0b2..1f19c331 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -13,6 +13,16 @@ + + + + + + getData(['page', $this->getUrl(0), 'moduleId']) === 'blog' OR $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'news' ) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 3ce02316..a88e0252 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -655,9 +655,10 @@ class theme extends common { if ( $type === 'files' && file_exists(self::FILE_DIR . 'source/' . $ressource) ) { - copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . $ressource ); + copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource ); } - + // Met à jour les fichiers d'appel des fontes utilisés par les layouts + $this->setFonts(); // Valeurs en sortie $this->addOutput([ 'notification' => 'La fonte a été créée', @@ -706,9 +707,12 @@ class theme extends common { if ( $type === 'files' && file_exists(self::FILE_DIR . 'source/' . $ressource) ) { - copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . $ressource ); + copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource ); } + // Met à jour les fichiers d'appel des fontes utilisés par les layouts + $this->setFonts(); + // Valeurs en sortie $this->addOutput([ 'notification' => 'La fonte a été actualisée', @@ -747,6 +751,9 @@ class theme extends common { unlink(self::DATA_DIR . $this->getUrl(2)); } + // Met à jour les fichiers d'appel des fontes utilisés par les layouts + $this->setFonts(); + // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'theme/fonts', @@ -1149,4 +1156,45 @@ class theme extends common { ksort(self::$fonts['family']); } + /** + * Création d'un fichier de liens d'appel des fontes + */ + private function setFonts() { + + /** + * Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php + */ + $gf = false; + $fileContent = ''; + foreach ($this->getData(['fonts', 'imported']) as $fontId => $fontValue) { + $fileContent .= ''; + // Pré connect pour api.google + $gf = strpos($fontValue['resource'], 'fonts.googleapis.com') === false ? $gf || false : $gf || true; + } + + // Ajoute le préconnect des fontes Googles. + $fileContent = $gf ? '' . $fileContent + : $fileContent; + + // Enregistre la personnalisation + file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fileContent); + + /** + * Fontes installées localement + */ + $fileContent = ''; + foreach ($this->getData(['fonts', 'files']) as $fontId => $fontValue) { + if (file_exists(self::DATA_DIR . 'fonts/' . $fontValue['resource']) ) { + // Chargement de la police + $fileContent .= '@font-face {' ; + $fileContent .= 'font-family:"' . $fontValue['font-family'] . '";'; + $fileContent .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontValue['resource'] . '");'; + $fileContent .= '}' ; + } + } + // Enregistre la personnalisation + file_put_contents(self::DATA_DIR.'fonts/fonts.css', $fileContent); + + } + } diff --git a/core/module/theme/view/site/site.js.php b/core/module/theme/view/site/site.js.php index a0ff31eb..02a9ab7f 100644 --- a/core/module/theme/view/site/site.js.php +++ b/core/module/theme/view/site/site.js.php @@ -11,33 +11,6 @@ * @link http://zwiicms.fr/ */ - $( document ).ready(function() { - - /** - * Chargement des fontes installées pour l'aperçu dans les sélecteurs - */ - var fontsFile = getData(['fonts', 'files']) ); ?>; - var fontsImported = getData(['fonts', 'imported']) ); ?>; - var fonts = ; - - // Concaténation - if (fontsImported.length != 0 ) { - fonts = $.merge(fonts, fontsImported); - } - if (fontsFile.length != 0 ) { - fonts = $.merge(fonts, fontsFile); - } - // Fonte WebSa - $.each(fonts, function(key, value) { - console.log( "The key is" + key); - $.each(value, function(i, f) { - console.log(f); - }); - - }); - - }); - /** * Aperçu en direct */