diff --git a/core/core.php b/core/core.php
index 2d1b1ff6..18bc2e3d 100644
--- a/core/core.php
+++ b/core/core.php
@@ -181,7 +181,7 @@ class common {
'blacklist' => '',
'locale' => ''
];
-
+
// Fontes
public static $fonts = [
'abril-fatface' => 'Abril Fatface',
@@ -1233,7 +1233,7 @@ class common {
public function showCookies() {
// Gestion des cookies intégrée
- if ($this->getData(['config', 'cookieConsent']) === true )
+ if ($this->getData(['config', 'cookieConsent']) === true )
{
// Détermine si le bloc doit être affiché selon la validité du cookie
// L'URL du serveur faut TRUE
@@ -1658,7 +1658,7 @@ class common {
$targetBlank = $this->getData(['page', $parentPageId, 'targetBlank']) ? ' target="_blank"' : '';
// Mise en page de l'item
$itemsLeft .= '
';
-
+
if ( ( $this->getData(['page',$parentPageId,'disable']) === true
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
) OR (
@@ -2052,7 +2052,7 @@ class common {
}
$rightItems .= '' . template::ico('cog-alt') . '';
$rightItems .= '' . template::ico('users') . '';
-
+
// Mise à jour automatique
$today = mktime(0, 0, 0);
// Une mise à jour est disponible + recherche auto activée + 1 jour de délais
@@ -2071,7 +2071,7 @@ class common {
}
if($this->getUser('group') >= self::GROUP_MODERATOR) {
$rightItems .= '' . template::ico('user', 'right') . '' . $this->getUser('firstname') . ' ' . $this->getUser('lastname') . '';
- }
+ }
$rightItems .= '' . template::ico('logout') . '';
// Barre de membre
echo '';
@@ -2165,7 +2165,7 @@ class common {
AND $this->getData(['config', 'i18n', $key]) === 'script'
// Le drapeau n'est pas actif pour les non admin en mode connecté.
AND
- ( $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
+ ( $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
OR $this->getUser('group') === self::GROUP_ADMIN )
)
) {
@@ -2267,49 +2267,52 @@ class core extends common {
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
/**
- * Import des polices de caractères à partir du CDN
+ * Import des polices de caractères
+ * A partir du CDN ou dans le dossier site/file/source/fonts
*/
- $importFonts = [$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'])
+ $cdnFonts = [ $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
- $importFonts = array_unique($importFonts);
+ $cdnFonts = array_unique($cdnFonts);
// Un fichier local de configuration existe
- /*
if ( file_exists(self::FILE_DIR . 'source/fonts/fonts.json') )
{
// Lire le fichier et check l'existence des fichiers locaux
- $fontList = json_decode(file_get_contents (self::FILE_DIR . "source/fonts/fonts.json"), true);
+ $localFonts = json_decode(file_get_contents (self::FILE_DIR . "source/fonts/fonts.json"), true);
// Validité du format
- if (is_array($fontList) ) {
- foreach ($fontList as $fontId => $fontName) {
-
+ if (is_array($localFonts) ) {
+ foreach ($localFonts as $fontId => $fontName) {
// Validité du tableau :
// L'id de la police est présent dans la liste interne
// Le nom de la police fournie correspond à un fichier existant
- //
if ( array_key_exists($fontId, self::$fonts) &&
file_exists(self::FILE_DIR . 'source/fonts/' . $fontName) ) {
- // Chargement de la police
- $formatFont = explode('.', self::FILE_DIR . 'source/fonts/' . $fontName);
- $css .= '@import url("' . helper::baseUrl(false) . self::FILE_DIR . 'source/fonts/' . $fontName . '");';
- // Déchargement l'élément des fonts en ligne
- unset($importFonts[$fontId]);
+ // La police locale est-elle invoquée ?
+ $d = array_search($fontId, $cdnFonts);
+ if ($d) {
+ // Chargement de la police demandée dans le thème
+ $formatFont = explode('.', self::FILE_DIR . 'source/fonts/' . $fontName);
+ $css .= '@font-face { font-family:"' . self::$fonts[$fontId] . '";';
+ $css .= 'src: url("' . helper::baseUrl(false) . self::FILE_DIR . 'source/fonts/' . $fontName . '");}';
+ // Supprimer l'élément des fontes chargées en ligne
+ unset($cdnFonts[$d]);
+ }
}
+
}
}
}
- */
-
-
- // Chargement en ligne des polices
- foreach ($importFonts as $fontId) {
- $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");';
- }
+ // Chargement des polices en ligne
+ if ($cdnFonts) {
+ foreach ($cdnFonts as $fontId) {
+ $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");';
+ }
+ }
// Fond du body
$colors = helper::colorVariants($this->getData(['theme', 'body', 'backgroundColor']));
@@ -2476,7 +2479,7 @@ class core extends common {
$css .= '#footerSocials{text-align:' . $this->getData(['theme', 'footer', 'socialsAlign']) . '}';
$css .= '#footerText > p {text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}';
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
-
+
// Enregistre la personnalisation
file_put_contents(self::DATA_DIR.'theme.css', $css);
@@ -2487,16 +2490,62 @@ class core extends common {
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
+
// Check la version rafraichissement du theme admin
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR.'admin.css'));
if(empty($cssVersion[1]) OR $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
+
// Version
$css = '/*' . md5(json_encode($this->getData(['admin']))) . '*/';
+
+ /**
+ * Import des polices de caractères
+ * A partir du CDN ou dans le dossier site/file/source/fonts
+ */
+ $cdnFonts = [ $this->getData(['admin', 'fontText']),
+ $this->getData(['admin', 'fontTitle']),
+ ];
+ // Suppression des polices identiques
+ $cdnFonts = array_unique($cdnFonts);
+ // Un fichier local de configuration existe
+ if ( file_exists(self::FILE_DIR . 'source/fonts/fonts.json') )
+ {
+ // Lire le fichier et check l'existence des fichiers locaux
+ $localFonts = json_decode(file_get_contents (self::FILE_DIR . "source/fonts/fonts.json"), true);
+ // Validité du format
+ if (is_array($localFonts) ) {
+ foreach ($localFonts as $fontId => $fontName) {
+ // Validité du tableau :
+ // L'id de la police est présent dans la liste des polcies locales
+ // Le nom de la police fournie correspond à un fichier existant
+ if ( array_key_exists($fontId, self::$fonts) &&
+ file_exists(self::FILE_DIR . 'source/fonts/' . $fontName) ) {
+ // La police locale est-elle invoquée ?
+ $d = array_search($fontId, $cdnFonts);
+ if ($d) {
+ // Chargement de la police demandée dans le thème
+ $formatFont = explode('.', self::FILE_DIR . 'source/fonts/' . $fontName);
+ $css .= '@font-face { font-family:"' . self::$fonts[$fontId] . '";';
+ $css .= 'src: url("' . helper::baseUrl(false) . self::FILE_DIR . 'source/fonts/' . $fontName . '");}';
+ // Supprimer l'élément des fontes chargées en ligne
+ unset($cdnFonts[$d]);
+ }
+ }
+ }
+ }
+ }
+ // Chargement des polices en ligne
+ if ($cdnFonts) {
+ foreach ($cdnFonts as $fontId) {
+ $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");';
+ }
+ }
+
$colors = helper::colorVariants($this->getData(['admin','backgroundColor']));
$css .= '#site{background-color:' . $colors['normal']. ';}';
- $css .= '.row > div {font:' . $this->getData(['admin','fontSize']) . ' "' . $this->getData(['admin','fontText']) . '", sans-serif;}';
- $css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . $this->getData(['admin','fontTitle' ]) . ', sans-serif;color:' . $this->getData(['admin','colorTitle' ]) . ';}';
-
+ $css .= '.row > div {font:' . $this->getData(['admin','fontSize']) . ' "' . self::$fonts[$this->getData(['admin','fontText'])] . '", sans-serif;}';
+ $css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . self::$fonts[$this->getData(['admin','fontTitle'])] . ', sans-serif;color:' . $this->getData(['admin','colorTitle' ]) . ';}';
+
// TinyMCE
$css .= 'body:not(.editorWysiwyg),span .zwiico-help {color:' . $this->getData(['admin','colorText']) . ';}';
$css .= 'table thead tr, table thead tr .zwiico-help{ background-color:'.$this->getData(['admin','colorText']).'; color:'.$colors['normal'].';}';
diff --git a/core/module/install/ressource/files.tar.gz b/core/module/install/ressource/files.tar.gz
index 5c5da455..a1f2de37 100644
Binary files a/core/module/install/ressource/files.tar.gz and b/core/module/install/ressource/files.tar.gz differ