diff --git a/README.md b/README.md index ae49561..a2060c1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ZwiiCampus 1.4.07 +# ZwiiCampus 1.4.08 ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé. diff --git a/core/core.php b/core/core.php index a9b633f..1f2155e 100644 --- a/core/core.php +++ b/core/core.php @@ -50,7 +50,7 @@ class common const ACCESS_TIMER = 1800; // Numéro de version - const ZWII_VERSION = '1.4.07'; + const ZWII_VERSION = '1.4.08'; // URL autoupdate const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/'; diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 997b83f..85fe31f 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -629,15 +629,18 @@ class theme extends common $this->setFonts('all'); // Polices liées au thème - $used = [ - 'Bannière' => $this->getData(['theme', 'header', 'font']), - 'Menu' => $this->getData(['theme', 'menu', 'font']), - 'Titre ' => $this->getData(['theme', 'title', 'font']), - 'Texte' => $this->getData(['theme', 'text', 'font']), - 'Pied de page' => $this->getData(['theme', 'footer', 'font']), - 'Titre (admin)' => $this->getData(['admin', 'fontTitle']), - 'Admin (texte)' => $this->getData(['admin', 'fontText']) - ]; + $admin = json_decode(file_get_contents(self::DATA_DIR . 'admin.json'), true); + $fonts['Admin Titre (admin)'] = $admin['admin']['fontTitle']; + $fonts['Admin Texte (admin)'] = $admin['admin']['fontText']; + // Polices liées aux thèmes des espaces + foreach ($this->getData(['course']) as $courseId => $courseValue) { + $theme = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/theme.json'), true); + $fonts['Bannière ('. $courseId .')'] = $theme['theme']['header']['font']; + $fonts['Menu ('. $courseId .')'] = $theme['theme']['menu']['font']; + $fonts['Titre ('. $courseId .')'] = $theme['theme']['title']['font']; + $fonts['Texte ('. $courseId .')'] = $theme['theme']['text']['font']; + $fonts['Pied de page ('. $courseId .')'] = $theme['theme']['footer']['font']; + } // Récupérer le détail des fontes installées //$f = $this->getFonts(); @@ -645,22 +648,24 @@ class theme extends common $f['imported'] = $this->getData(['font', 'imported']); $f['websafe'] = self::$fontsWebSafe; + // Listes des espaces à parcourir pour bloquer la suppression d'une fonte utilisée + $courses = array_merge(['admin'], array_keys($this->getData(['course']))); + + // Parcourir les fontes disponibles et construire le tableau pour le formulaire foreach ($f as $type => $typeValue) { if (is_array($typeValue)) { foreach ($typeValue as $fontId => $fontValue) { - // Fontes utilisées par les thèmes - $fontUsed[$fontId] = ''; - foreach ($used as $key => $value) { - if ($value === $fontId) { - $fontUsed[$fontId] .= $key . '
'; - } - } + // Recherche les correrspondances + $result = array_filter($fonts, function($value) use ($fontId) { + return $value == $fontId; + }); + $keyResults = array_keys($result); self::$fontsDetail[] = [ $fontId, '' . $f[$type][$fontId]['name'] . '', $f[$type][$fontId]['font-family'], - $fontUsed[$fontId], + empty($keyResults) ? '' : '' . implode('
', $keyResults) . '
', $type, $type !== 'websafe' ? template::button('themeFontEdit' . $fontId, [ 'class' => 'themeFontEdit', @@ -848,7 +853,7 @@ class theme extends common file_exists($this->getData(['font', 'files', $this->getUrl(3), 'resource'])) ) { - unlink($this->getData(['font', 'files', $this->getUrl(3), 'resource'])); + unlink($this->getData(['font', 'files', $this->getUrl(3), 'resource'])); } // Valeurs en sortie @@ -1068,17 +1073,17 @@ class theme extends common // Substitution des fontes Google if ($modele = 'theme') { // Déplacement des deux fichiers de theme dans le siteContent - copy (self::DATA_DIR . 'theme.css', self::DATA_DIR . self::$siteContent . '/theme.css'); - copy (self::DATA_DIR . 'theme.json', self::DATA_DIR . self::$siteContent . '/theme.json'); + copy(self::DATA_DIR . 'theme.css', self::DATA_DIR . self::$siteContent . '/theme.css'); + copy(self::DATA_DIR . 'theme.json', self::DATA_DIR . self::$siteContent . '/theme.json'); unlink(self::DATA_DIR . 'theme.css'); unlink(self::DATA_DIR . 'theme.json'); - $c = $this->subFont(self::DATA_DIR . self::$siteContent . '/theme.json'); + $c = $this->subFont(self::DATA_DIR . self::$siteContent . '/theme.json'); // Un remplacement nécessite la régénération de la feuille de style if ( $c > 0 - and file_exists(self::DATA_DIR . self::$siteContent . '/theme.css') + and file_exists(self::DATA_DIR . self::$siteContent . '/theme.css') ) { - unlink(self::DATA_DIR . self::$siteContent . '/theme.css'); + unlink(self::DATA_DIR . self::$siteContent . '/theme.css'); } } if ($modele = 'admin') { @@ -1203,8 +1208,8 @@ class theme extends common } break; case 'theme': - $zip->addFile(self::DATA_DIR . self::$siteContent . '/theme.json', self::DATA_DIR . 'theme.json'); - $zip->addFile(self::DATA_DIR . self::$siteContent . '/theme.css', self::DATA_DIR . 'theme.css'); + $zip->addFile(self::DATA_DIR . self::$siteContent . '/theme.json', self::DATA_DIR . 'theme.json'); + $zip->addFile(self::DATA_DIR . self::$siteContent . '/theme.css', self::DATA_DIR . 'theme.css'); $zip->addFile(self::DATA_DIR . 'custom.css', self::DATA_DIR . 'custom.css'); // Traite l'image dans le body if ($this->getData(['theme', 'body', 'image']) !== '') { diff --git a/core/module/theme/view/font/font.css b/core/module/theme/view/font/font.css index b6eeb0e..045bd04 100644 --- a/core/module/theme/view/font/font.css +++ b/core/module/theme/view/font/font.css @@ -15,4 +15,8 @@ /** NE PAS EFFACER * admin.css -*/ \ No newline at end of file +*/ + +.fontsList{ + font-size: 0.7rem; +} \ No newline at end of file