Chargement de toutes les fontes

This commit is contained in:
Fred Tempez 2022-04-21 23:37:57 +02:00
parent 64af161bb2
commit b5caba6e70
6 changed files with 98 additions and 155 deletions

View File

@ -2156,15 +2156,12 @@ class common {
// Import des styles liés à la page // Import des styles liés à la page
if($this->output['style']) { if($this->output['style']) {
echo '<base href="' . helper::baseUrl(true) .'">'; echo '<base href="' . helper::baseUrl(true) .'">';
// Import de la feuille de style des pages admin
if (strpos($this->output['style'], 'admin.css') >= 1 ) { if (strpos($this->output['style'], 'admin.css') >= 1 ) {
echo '<link rel="stylesheet" href="' . self::DATA_DIR . 'admin.css?' . md5_file(self::DATA_DIR .'admin.css') . '">'; echo '<link rel="stylesheet" href="' . self::DATA_DIR . 'admin.css?' . md5_file(self::DATA_DIR .'admin.css') . '">';
} }
echo '<style type="text/css">' . helper::minifyCss($this->output['style']) . '</style>'; echo '<style type="text/css">' . helper::minifyCss($this->output['style']) . '</style>';
} }
// 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 // Version
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/'; $css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
/** /**
* Import des polices de caractères * 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 $f ['files'] = $this->getData(['fonts', 'files']);
$fontsAvailable ['files'] = $this->getData(['fonts', 'files']); $f ['imported'] = $this->getData(['fonts', 'imported']);
$fontsAvailable ['imported'] = $this->getData(['fonts', 'imported']); $f ['websafe'] = self::$fontsWebSafe;
$fontsAvailable ['websafe'] = self::$fontsWebSafe; // Construit un tableau avec leur ID et leur famille
foreach(['websafe', 'imported', 'files'] as $type) {
// Fontes installées if (is_array($f[$type])) {
$fonts = [ $this->getData(['theme', 'text', 'font']), foreach ($f[$type] as $fontId => $fontValue ) {
$this->getData(['theme', 'title', 'font']), $fonts[$fontId] = $fontValue['font-family'];
$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 .= '<link href="' . $fontsAvailable['imported'][$fontId]['resource'] .'" rel="stylesheet">';
// 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 ? '<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>' . $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';
} }
} }
} }
@ -2572,12 +2513,6 @@ class core extends common {
$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 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 // Enregistre la personnalisation
file_put_contents(self::DATA_DIR.'theme.css', $css); file_put_contents(self::DATA_DIR.'theme.css', $css);
@ -2596,61 +2531,18 @@ class core extends common {
// Version // Version
$css = '/*' . md5(json_encode($this->getData(['admin']))) . '*/'; $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 * 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);
/** $f ['files'] = $this->getData(['fonts', 'files']);
* Charge les fontes websafe $f ['imported'] = $this->getData(['fonts', 'imported']);
*/ $f ['websafe'] = self::$fontsWebSafe;
$fontFile = ''; // Construit un tableau avec leur ID et leur famille
foreach ($fonts as $fontId) { foreach(['websafe', 'imported', 'files'] as $type) {
if ( isset($fontsAvailable['websafe'][$fontId])) { if (is_array($f[$type])) {
$fonts [$fontId] = $fontsAvailable['websafe'][$fontId]['font-family']; foreach ($f[$type] as $fontId => $fontValue ) {
} $fonts[$fontId] = $fontValue['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 .= '<link href="' . $fontsAvailable['imported'][$fontId]['resource'] .'" rel="stylesheet">';
// 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';
} }
} }
} }

View File

@ -14,6 +14,16 @@
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/blank.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/blank.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>"></head> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>"></head>
<!-- Import des fontes en ligne -->
<?php
if ( file_exists(self::DATA_DIR.'fonts/fonts.html') ){
include_once(self::DATA_DIR . 'fonts/fonts.html');
} ?>
<!-- Import des fontes livrés dans des fichiers WOFF -->
<?php
if (file_exists(self::DATA_DIR.'fonts/fonts.css')): ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR;?>fonts/fonts.css?<?php echo md5_file(helper::baseUrl(false) . self::DATA_DIR . 'fonts/fonts.css'); ?>">
<?php endif; ?>
<body> <body>
<?php $this->showContent(); ?> <?php $this->showContent(); ?>
<?php $this->showScript(); ?> <?php $this->showScript(); ?>

View File

@ -14,6 +14,16 @@
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/light.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/light.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
<!-- Import des fontes en ligne -->
<?php
if ( file_exists(self::DATA_DIR.'fonts/fonts.html') ){
include_once(self::DATA_DIR . 'fonts/fonts.html');
} ?>
<!-- Import des fontes livrés dans des fichiers WOFF -->
<?php
if (file_exists(self::DATA_DIR.'fonts/fonts.css')): ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR;?>fonts/fonts.css?<?php echo md5_file(helper::baseUrl(false) . self::DATA_DIR . 'fonts/fonts.css'); ?>">
<?php endif; ?>
</head> </head>
<body> <body>
<?php $this->showNotification(); ?> <?php $this->showNotification(); ?>

View File

@ -13,6 +13,16 @@
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css?<?php echo md5_file('core/layout/common.css');?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css?<?php echo md5_file('core/layout/common.css');?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
<!-- Import des fontes en ligne -->
<?php
if ( file_exists(self::DATA_DIR.'fonts/fonts.html') ){
include_once(self::DATA_DIR . 'fonts/fonts.html');
} ?>
<!-- Import des fontes livrés dans des fichiers WOFF -->
<?php
if (file_exists(self::DATA_DIR.'fonts/fonts.css')): ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR;?>fonts/fonts.css?<?php echo md5_file(helper::baseUrl(false) . self::DATA_DIR . 'fonts/fonts.css'); ?>">
<?php endif; ?>
<!-- Détection RSS --> <!-- Détection RSS -->
<?php if ( ( $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'blog' <?php if ( ( $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'blog'
OR $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'news' ) OR $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'news' )

View File

@ -655,9 +655,10 @@ class theme extends common {
if ( $type === 'files' && if ( $type === 'files' &&
file_exists(self::FILE_DIR . 'source/' . $ressource) 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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'notification' => 'La fonte a été créée', 'notification' => 'La fonte a été créée',
@ -706,9 +707,12 @@ class theme extends common {
if ( $type === 'files' && if ( $type === 'files' &&
file_exists(self::FILE_DIR . 'source/' . $ressource) 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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'notification' => 'La fonte a été actualisée', 'notification' => 'La fonte a été actualisée',
@ -747,6 +751,9 @@ class theme extends common {
unlink(self::DATA_DIR . $this->getUrl(2)); 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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'theme/fonts', 'redirect' => helper::baseUrl() . 'theme/fonts',
@ -1149,4 +1156,45 @@ class theme extends common {
ksort(self::$fonts['family']); 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 .= '<link href="' . $fontValue['resource'] .'" rel="stylesheet">';
// 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 ? '<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>' . $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);
}
} }

View File

@ -11,33 +11,6 @@
* @link http://zwiicms.fr/ * @link http://zwiicms.fr/
*/ */
$( document ).ready(function() {
/**
* Chargement des fontes installées pour l'aperçu dans les sélecteurs
*/
var fontsFile = <?php echo json_encode($this->getData(['fonts', 'files']) ); ?>;
var fontsImported = <?php echo json_encode($this->getData(['fonts', 'imported']) ); ?>;
var fonts = <?php echo json_encode(self::$fontsWebSafe); ?>;
// 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 * Aperçu en direct
*/ */