Fontes chargées à la demande selon le scope

This commit is contained in:
Fred Tempez 2022-04-22 09:17:49 +02:00
parent b5caba6e70
commit bb0436f79f
5 changed files with 60 additions and 55 deletions

View File

@ -184,7 +184,7 @@ class common {
]; ];
public static $fontsWebSafe = [ public static $fontsWebSafe = [
'arial' => [ 'arial' => [
'name' => 'Arial', 'name' => 'Arial',
'font-family' => 'Arial, Helvetica, sans-serif', 'font-family' => 'Arial, Helvetica, sans-serif',
'resource' => 'websafe' 'resource' => 'websafe'
@ -1377,9 +1377,6 @@ class common {
*/ */
echo '<div class="'. $content . '" id="contentSite">'; echo '<div class="'. $content . '" id="contentSite">';
$this->showContent(); $this->showContent();
if (file_exists(self::DATA_DIR . 'body.inc.html')) {
include(self::DATA_DIR . 'body.inc.html');
}
echo '</div>'; echo '</div>';
/** /**
* Barre droite * Barre droite
@ -2162,6 +2159,14 @@ class common {
} }
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 en ligne
if ( file_exists(self::DATA_DIR.'fonts/fonts.html') ){
include_once(self::DATA_DIR . 'fonts/fonts.html');
}
// Import des fontes locales
if (file_exists(self::DATA_DIR.'fonts/fonts.css')) {
echo '<link rel="stylesheet" href="' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/fonts.css?' . md5_file(helper::baseUrl(false) . self::DATA_DIR . 'fonts/fonts.css') . '">';
}
} }
/** /**

View File

@ -13,17 +13,8 @@
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<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'); ?>">
<!-- Import des fontes en ligne --> </head>
<?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,16 +14,6 @@
<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,16 +13,7 @@
<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' )
@ -30,6 +21,7 @@
<link rel="alternate" type="application/rss+xml" href="'<?php echo helper::baseUrl(). $this->getUrl(0) . '/rss';?>" title="fLUX rss"> <link rel="alternate" type="application/rss+xml" href="'<?php echo helper::baseUrl(). $this->getUrl(0) . '/rss';?>" title="fLUX rss">
<?php endif; ?> <?php endif; ?>
<?php $this->showStyle(); ?> <?php $this->showStyle(); ?>
<!-- Script perso dans le header -->
<?php if (file_exists(self::DATA_DIR .'head.inc.html')) { <?php if (file_exists(self::DATA_DIR .'head.inc.html')) {
include(self::DATA_DIR .'head.inc.html'); include(self::DATA_DIR .'head.inc.html');
}?> }?>
@ -196,6 +188,10 @@
<?php $this->showCookies(); ?> <?php $this->showCookies(); ?>
<!-- Les scripts --> <!-- Les scripts -->
<?php $this->showScript();?> <?php $this->showScript();?>
<!-- Script perso dans body -->
<?php if (file_exists(self::DATA_DIR . 'body.inc.html')) {
include(self::DATA_DIR . 'body.inc.html');
}
?>
</body> </body>
</html> </html>

View File

@ -499,6 +499,9 @@ class theme extends common {
* Accueil de la personnalisation * Accueil de la personnalisation
*/ */
public function index() { public function index() {
// Restaurer les fontes utilisateurs
$this->setFonts('user');
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Personnalisation des thèmes', 'title' => 'Personnalisation des thèmes',
@ -560,6 +563,9 @@ class theme extends common {
*/ */
public function fonts() { public function fonts() {
// Toutes les fontes installées
$this->setFonts('all');
// Polices liées au thème // Polices liées au thème
$used = [ $used = [
'Bannière' => $this->getData (['theme', 'header', 'font']), 'Bannière' => $this->getData (['theme', 'header', 'font']),
@ -657,8 +663,7 @@ class theme extends common {
) { ) {
copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $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',
@ -710,9 +715,6 @@ class theme extends common {
copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $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',
@ -751,9 +753,6 @@ 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',
@ -1158,8 +1157,22 @@ class theme extends common {
/** /**
* Création d'un fichier de liens d'appel des fontes * Création d'un fichier de liens d'appel des fontes
* @param string $scope vaut all pour toutes les fontes ; 'user' pour les fontes utilisateurs
*/ */
private function setFonts() { private function setFonts($scope = 'all') {
// Filtrage par fontes installées
$fontsInstalled = [ $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']),
$this->getData(['admin', 'fontText']),
$this->getData(['admin', 'fontTitle']),
];
// Compression
$fontsInstalled = array_unique($fontsInstalled);
/** /**
* Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php * Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php
@ -1167,16 +1180,21 @@ class theme extends common {
$gf = false; $gf = false;
$fileContent = ''; $fileContent = '';
foreach ($this->getData(['fonts', 'imported']) as $fontId => $fontValue) { foreach ($this->getData(['fonts', 'imported']) as $fontId => $fontValue) {
$fileContent .= '<link href="' . $fontValue['resource'] .'" rel="stylesheet">'; if (
// Pré connect pour api.google ( $scope === 'user' && array_key_exists($fontId, $fontsInstalled) )
$gf = strpos($fontValue['resource'], 'fonts.googleapis.com') === false ? $gf || false : $gf || true; || $scope === 'all'
) {
$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. // 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 = $gf ? '<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>' . $fileContent
: $fileContent; : $fileContent;
// Enregistre la personnalisation // Enregistre la personnalisation
file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fileContent); file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fileContent);
/** /**
@ -1184,12 +1202,17 @@ class theme extends common {
*/ */
$fileContent = ''; $fileContent = '';
foreach ($this->getData(['fonts', 'files']) as $fontId => $fontValue) { foreach ($this->getData(['fonts', 'files']) as $fontId => $fontValue) {
if (file_exists(self::DATA_DIR . 'fonts/' . $fontValue['resource']) ) { if (
// Chargement de la police ( $scope === 'user' && array_key_exists($fontId, $fontsInstalled) )
$fileContent .= '@font-face {' ; || $scope === 'all'
$fileContent .= 'font-family:"' . $fontValue['font-family'] . '";'; ) {
$fileContent .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontValue['resource'] . '");'; if (file_exists(self::DATA_DIR . 'fonts/' . $fontValue['resource']) ) {
$fileContent .= '}' ; // 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 // Enregistre la personnalisation