forked from ZwiiCMS-Team/ZwiiCMS
Chargement localisé des polices de carcatères
This commit is contained in:
parent
4f64de7aa3
commit
b31159513c
119
core/core.php
119
core/core.php
@ -181,7 +181,7 @@ class common {
|
|||||||
'blacklist' => '',
|
'blacklist' => '',
|
||||||
'locale' => ''
|
'locale' => ''
|
||||||
];
|
];
|
||||||
|
|
||||||
// Fontes
|
// Fontes
|
||||||
public static $fonts = [
|
public static $fonts = [
|
||||||
'abril-fatface' => 'Abril Fatface',
|
'abril-fatface' => 'Abril Fatface',
|
||||||
@ -1233,7 +1233,7 @@ class common {
|
|||||||
public function showCookies() {
|
public function showCookies() {
|
||||||
|
|
||||||
// Gestion des cookies intégrée
|
// 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
|
// Détermine si le bloc doit être affiché selon la validité du cookie
|
||||||
// L'URL du serveur faut TRUE
|
// L'URL du serveur faut TRUE
|
||||||
@ -1658,7 +1658,7 @@ class common {
|
|||||||
$targetBlank = $this->getData(['page', $parentPageId, 'targetBlank']) ? ' target="_blank"' : '';
|
$targetBlank = $this->getData(['page', $parentPageId, 'targetBlank']) ? ' target="_blank"' : '';
|
||||||
// Mise en page de l'item
|
// Mise en page de l'item
|
||||||
$itemsLeft .= '<li>';
|
$itemsLeft .= '<li>';
|
||||||
|
|
||||||
if ( ( $this->getData(['page',$parentPageId,'disable']) === true
|
if ( ( $this->getData(['page',$parentPageId,'disable']) === true
|
||||||
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) OR (
|
) OR (
|
||||||
@ -2052,7 +2052,7 @@ class common {
|
|||||||
}
|
}
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>';
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user" data-tippy-content="Configurer les utilisateurs">' . template::ico('users') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user" data-tippy-content="Configurer les utilisateurs">' . template::ico('users') . '</a></li>';
|
||||||
|
|
||||||
// Mise à jour automatique
|
// Mise à jour automatique
|
||||||
$today = mktime(0, 0, 0);
|
$today = mktime(0, 0, 0);
|
||||||
// Une mise à jour est disponible + recherche auto activée + 1 jour de délais
|
// 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) {
|
if($this->getUser('group') >= self::GROUP_MODERATOR) {
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user/edit/' . $this->getUser('id'). '/' . $_SESSION['csrf'] . '" data-tippy-content="Configurer mon compte">' . template::ico('user', 'right') . '<span id="displayUsername">' . $this->getUser('firstname') . ' ' . $this->getUser('lastname') . '</span></a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user/edit/' . $this->getUser('id'). '/' . $_SESSION['csrf'] . '" data-tippy-content="Configurer mon compte">' . template::ico('user', 'right') . '<span id="displayUsername">' . $this->getUser('firstname') . ' ' . $this->getUser('lastname') . '</span></a></li>';
|
||||||
}
|
}
|
||||||
$rightItems .= '<li><a id="barLogout" href="' . helper::baseUrl() . 'user/logout" data-tippy-content="Me déconnecter">' . template::ico('logout') . '</a></li>';
|
$rightItems .= '<li><a id="barLogout" href="' . helper::baseUrl() . 'user/logout" data-tippy-content="Me déconnecter">' . template::ico('logout') . '</a></li>';
|
||||||
// Barre de membre
|
// Barre de membre
|
||||||
echo '<div id="bar"><div class="container"><ul id="barLeft">' . $leftItems . '</ul><ul id="barRight">' . $rightItems . '</ul></div></div>';
|
echo '<div id="bar"><div class="container"><ul id="barLeft">' . $leftItems . '</ul><ul id="barRight">' . $rightItems . '</ul></div></div>';
|
||||||
@ -2165,7 +2165,7 @@ class common {
|
|||||||
AND $this->getData(['config', 'i18n', $key]) === 'script'
|
AND $this->getData(['config', 'i18n', $key]) === 'script'
|
||||||
// Le drapeau n'est pas actif pour les non admin en mode connecté.
|
// Le drapeau n'est pas actif pour les non admin en mode connecté.
|
||||||
AND
|
AND
|
||||||
( $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
( $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
OR $this->getUser('group') === self::GROUP_ADMIN )
|
OR $this->getUser('group') === self::GROUP_ADMIN )
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -2267,49 +2267,52 @@ class core extends common {
|
|||||||
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
|
$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']),
|
$cdnFonts = [ $this->getData(['theme', 'text', 'font']),
|
||||||
$this->getData(['theme', 'title', 'font']),
|
$this->getData(['theme', 'title', 'font']),
|
||||||
$this->getData(['theme', 'header', 'font']),
|
$this->getData(['theme', 'header', 'font']),
|
||||||
$this->getData(['theme', 'menu', 'font']),
|
$this->getData(['theme', 'menu', 'font']),
|
||||||
$this->getData(['theme', 'footer', 'font'])
|
$this->getData(['theme', 'footer', 'font'])
|
||||||
];
|
];
|
||||||
// Suppression des polices identiques
|
// Suppression des polices identiques
|
||||||
$importFonts = array_unique($importFonts);
|
$cdnFonts = array_unique($cdnFonts);
|
||||||
|
|
||||||
// Un fichier local de configuration existe
|
// Un fichier local de configuration existe
|
||||||
/*
|
|
||||||
if ( file_exists(self::FILE_DIR . 'source/fonts/fonts.json') )
|
if ( file_exists(self::FILE_DIR . 'source/fonts/fonts.json') )
|
||||||
{
|
{
|
||||||
// Lire le fichier et check l'existence des fichiers locaux
|
// 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
|
// Validité du format
|
||||||
if (is_array($fontList) ) {
|
if (is_array($localFonts) ) {
|
||||||
foreach ($fontList as $fontId => $fontName) {
|
foreach ($localFonts as $fontId => $fontName) {
|
||||||
|
|
||||||
// Validité du tableau :
|
// Validité du tableau :
|
||||||
// L'id de la police est présent dans la liste interne
|
// L'id de la police est présent dans la liste interne
|
||||||
// Le nom de la police fournie correspond à un fichier existant
|
// Le nom de la police fournie correspond à un fichier existant
|
||||||
//
|
|
||||||
if ( array_key_exists($fontId, self::$fonts) &&
|
if ( array_key_exists($fontId, self::$fonts) &&
|
||||||
file_exists(self::FILE_DIR . 'source/fonts/' . $fontName) ) {
|
file_exists(self::FILE_DIR . 'source/fonts/' . $fontName) ) {
|
||||||
// Chargement de la police
|
// La police locale est-elle invoquée ?
|
||||||
$formatFont = explode('.', self::FILE_DIR . 'source/fonts/' . $fontName);
|
$d = array_search($fontId, $cdnFonts);
|
||||||
$css .= '@import url("' . helper::baseUrl(false) . self::FILE_DIR . 'source/fonts/' . $fontName . '");';
|
if ($d) {
|
||||||
// Déchargement l'élément des fonts en ligne
|
// Chargement de la police demandée dans le thème
|
||||||
unset($importFonts[$fontId]);
|
$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) {
|
||||||
// Chargement en ligne des polices
|
$css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");';
|
||||||
foreach ($importFonts as $fontId) {
|
}
|
||||||
$css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");';
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Fond du body
|
// Fond du body
|
||||||
$colors = helper::colorVariants($this->getData(['theme', 'body', 'backgroundColor']));
|
$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 .= '#footerSocials{text-align:' . $this->getData(['theme', 'footer', 'socialsAlign']) . '}';
|
||||||
$css .= '#footerText > p {text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}';
|
$css .= '#footerText > p {text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}';
|
||||||
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
|
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
|
||||||
|
|
||||||
|
|
||||||
// Enregistre la personnalisation
|
// Enregistre la personnalisation
|
||||||
file_put_contents(self::DATA_DIR.'theme.css', $css);
|
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("Cache-Control: post-check=0, pre-check=0", false);
|
||||||
header("Pragma: no-cache");
|
header("Pragma: no-cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check la version rafraichissement du theme admin
|
// Check la version rafraichissement du theme admin
|
||||||
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR.'admin.css'));
|
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR.'admin.css'));
|
||||||
if(empty($cssVersion[1]) OR $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
|
if(empty($cssVersion[1]) OR $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
|
||||||
|
|
||||||
// Version
|
// Version
|
||||||
$css = '/*' . md5(json_encode($this->getData(['admin']))) . '*/';
|
$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']));
|
$colors = helper::colorVariants($this->getData(['admin','backgroundColor']));
|
||||||
$css .= '#site{background-color:' . $colors['normal']. ';}';
|
$css .= '#site{background-color:' . $colors['normal']. ';}';
|
||||||
$css .= '.row > div {font:' . $this->getData(['admin','fontSize']) . ' "' . $this->getData(['admin','fontText']) . '", sans-serif;}';
|
$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:' . $this->getData(['admin','fontTitle' ]) . ', sans-serif;color:' . $this->getData(['admin','colorTitle' ]) . ';}';
|
$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
|
// TinyMCE
|
||||||
$css .= 'body:not(.editorWysiwyg),span .zwiico-help {color:' . $this->getData(['admin','colorText']) . ';}';
|
$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'].';}';
|
$css .= 'table thead tr, table thead tr .zwiico-help{ background-color:'.$this->getData(['admin','colorText']).'; color:'.$colors['normal'].';}';
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user