column renommé + import des polices en cours

This commit is contained in:
fredtempez 2022-03-09 12:50:05 +01:00
parent f5ba9c2ccb
commit 3284486383
1 changed files with 69 additions and 48 deletions

View File

@ -298,7 +298,7 @@ class common {
// Construit la liste des pages parents/enfants // Construit la liste des pages parents/enfants
if($this->hierarchy['all'] === []) { if($this->hierarchy['all'] === []) {
$pages = helper::arrayCollumn($this->getData(['page']), 'position', 'SORT_ASC'); $pages = helper::arrayColumn($this->getData(['page']), 'position', 'SORT_ASC');
// Parents // Parents
foreach($pages as $pageId => $pagePosition) { foreach($pages as $pageId => $pagePosition) {
if( if(
@ -411,6 +411,54 @@ class common {
} }
} }
/**
* Construit la liste des fontes dans un tableau
* @return @fonts
* fontid
* 'familyName' =>
* 'type=> websafe ou imported ou file
* 'ressource' => stack ou file
*/
public function getFonts() {
// Fusionne la liste des fontes avec les webSafe
foreach (self::$fontsWebSafe as $fontId => $fontValue) {
$fontName = explode (',', $fontValue);
$f[$fontId] = [
'fontfamily'=> $fontName[0],
'ressource' => $fontValue,
'type' => 'websafe'
];
}
// Ajoute les polices importées chez cdnfonts
$fontsImported = $this->getData(['fonts', 'imported']);
if (is_array($fontsImported)
) {
foreach ($fontsImported as $fontId => $fontValue) {
$f[$fontId] = [
'fontfamily'=> $fontValue,
'ressource' => $fontValue . "; sans-serif", // Format par défaut
'type' => 'imported'
];
}
}
// Ajoute les polices locales
$fontsFiles = $this->getData(['fonts', 'files']);
if (is_array($fontsFiles)
) {
foreach ($fontsFiles as $fontId => $fontValue) {
$f[$fontId] = [
// la fonte family est reprise de files
'ressource' => $fontValue,
'type' => 'files'
];
}
}
// Tri Alphabétique
ksort($f);
return $f;
}
/** /**
* Check du token CSRF (true = bo * Check du token CSRF (true = bo
*/ */
@ -2265,27 +2313,6 @@ class core extends common {
} }
} }
/**
* Traitement des polices de caractères
*/
// Fusionne la liste des fontes avec les webSafe
foreach (self::$fontsWebSafe as $fontId => $fontValue) {
$fontName = explode (',', $fontValue);
self::$fonts [$fontId] = $fontName[0];
}
// Importe les polices personnalisées
$fontsImported = $this->getData(['fonts', 'imported']);
if (is_array($fontsImported) &&
!empty ($fontsImported)
) {
// Fusionner avec les fontes installées
self::$fonts = array_merge(self::$fonts, $fontsImported);
}
// Tri Alphabétique
asort(self::$fonts);
// Crée le fichier de personnalisation avancée // Crée le fichier de personnalisation avancée
if(file_exists(self::DATA_DIR.'custom.css') === false) { if(file_exists(self::DATA_DIR.'custom.css') === false) {
file_put_contents(self::DATA_DIR.'custom.css', file_get_contents('core/module/theme/resource/custom.css')); file_put_contents(self::DATA_DIR.'custom.css', file_get_contents('core/module/theme/resource/custom.css'));
@ -2301,18 +2328,24 @@ class core extends common {
file_put_contents(self::DATA_DIR.'admin.css', ''); file_put_contents(self::DATA_DIR.'admin.css', '');
chmod(self::DATA_DIR.'admin.css', 0755); chmod(self::DATA_DIR.'admin.css', 0755);
} }
// Check la version rafraichissement du theme // Check la version rafraichissement du theme
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR.'theme.css')); $cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR.'theme.css'));
if(empty($cssVersion[1]) OR $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) { if(empty($cssVersion[1]) OR $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) {
// 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 * A partir du CDN
* ou dans le dossier site/file/source/fonts * ou dans le dossier site/file/source/fonts
* ou pas du tout si fonte webSafe * ou pas du tout si fonte webSafe
*/ */
// Fonts disponibles
$fontsAvailable = $this->getFonts();
// Fontes installées
$fonts = [ $this->getData(['theme', 'text', 'font']), $fonts = [ $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']),
@ -2322,44 +2355,32 @@ class core extends common {
// Suppression des polices identiques // Suppression des polices identiques
$fonts = array_unique($fonts); $fonts = array_unique($fonts);
/**
* Fontes Web Safe, ne sont pas chargées.
*/
foreach ($fonts as $fontId) {
if (array_key_exists($fontId, self::$fontsWebSafe) ) {
unset($fonts[$fontId]);
}
}
/** /**
* 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
*/ */
$localFonts = $this->getData(['fonts', 'files']);
$fontFile = ''; $fontFile = '';
foreach ($fonts as $fontId) { foreach ($fonts as $fontId) {
if (!array_key_exists($fontId, $localFonts) ) { if ( isset($fontsAvailable[$fontId]) &&
$fontFile .= '<link href="https://fonts.cdnfonts.com/css/' . $fontId .'" rel="stylesheet">'; $fontsAvailable[$fontId]['type'] === 'imported' ) {
// Supprimer l'élément des fontes chargées en ligne $fontFile .= '<link href="https://fonts.cdnfonts.com/css/' . $fontId .'" rel="stylesheet">';
unset($fonts[$fontId]);
} }
} }
// Enregistre la personnalisation
file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fontFile);
/** /**
* Fontes installées localement * Fontes installées localement
*/ */
if ( !empty($localFonts) foreach ($fonts as $fontId) {
) { // Validité du tableau :
foreach ($localFonts as $fontId => $fontName) { if ( array_key_exists($fontId, self::$fonts) &&
// Validité du tableau : file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) {
if ( array_key_exists($fontId, self::$fonts) && // Chargement de la police
file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName);
// Chargement de la police $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";';
//$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}';
$css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";';
$css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}';
}
} }
} }
// Fond du body // Fond du body