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 = [
'arial' => [
'arial' => [
'name' => 'Arial',
'font-family' => 'Arial, Helvetica, sans-serif',
'resource' => 'websafe'
@ -1377,9 +1377,6 @@ class common {
*/
echo '<div class="'. $content . '" id="contentSite">';
$this->showContent();
if (file_exists(self::DATA_DIR . 'body.inc.html')) {
include(self::DATA_DIR . 'body.inc.html');
}
echo '</div>';
/**
* Barre droite
@ -2162,6 +2159,14 @@ class common {
}
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/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; ?>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; ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
</head>
<body>
<?php $this->showContent(); ?>
<?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) . 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'); ?>">
<!-- 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>
<body>
<?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) . 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'); ?>">
<!-- 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 -->
<?php if ( ( $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'blog'
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">
<?php endif; ?>
<?php $this->showStyle(); ?>
<!-- Script perso dans le header -->
<?php if (file_exists(self::DATA_DIR .'head.inc.html')) {
include(self::DATA_DIR .'head.inc.html');
}?>
@ -196,6 +188,10 @@
<?php $this->showCookies(); ?>
<!-- Les scripts -->
<?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>
</html>

View File

@ -499,6 +499,9 @@ class theme extends common {
* Accueil de la personnalisation
*/
public function index() {
// Restaurer les fontes utilisateurs
$this->setFonts('user');
// Valeurs en sortie
$this->addOutput([
'title' => 'Personnalisation des thèmes',
@ -560,6 +563,9 @@ class theme extends common {
*/
public function fonts() {
// Toutes les fontes installées
$this->setFonts('all');
// Polices liées au thème
$used = [
'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 );
}
// Met à jour les fichiers d'appel des fontes utilisés par les layouts
$this->setFonts();
// Valeurs en sortie
$this->addOutput([
'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 );
}
// Met à jour les fichiers d'appel des fontes utilisés par les layouts
$this->setFonts();
// Valeurs en sortie
$this->addOutput([
'notification' => 'La fonte a été actualisée',
@ -751,9 +753,6 @@ class theme extends common {
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
$this->addOutput([
'redirect' => helper::baseUrl() . 'theme/fonts',
@ -1158,8 +1157,22 @@ class theme extends common {
/**
* 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
@ -1167,16 +1180,21 @@ class theme extends common {
$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;
if (
( $scope === 'user' && array_key_exists($fontId, $fontsInstalled) )
|| $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.
$fileContent = $gf ? '<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>' . $fileContent
: $fileContent;
// Enregistre la personnalisation
// Enregistre la personnalisation
file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fileContent);
/**
@ -1184,12 +1202,17 @@ class theme extends common {
*/
$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 .= '}' ;
if (
( $scope === 'user' && array_key_exists($fontId, $fontsInstalled) )
|| $scope === 'all'
) {
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