Merge branch 'dev' into 12-dev

This commit is contained in:
fredtempez 2022-03-21 09:42:48 +01:00
commit b0d4823bec
10 changed files with 95 additions and 60 deletions

View File

@ -20,6 +20,14 @@
- Module blog : taille recommandée de l'image erronée lorsque la largeur de l'écran est réglée sur fluide (100%). - Module blog : taille recommandée de l'image erronée lorsque la largeur de l'écran est réglée sur fluide (100%).
- Gestion des pages : positionnement dans le menu accessoire ou dans le menu standard. - Gestion des pages : positionnement dans le menu accessoire ou dans le menu standard.
## Version 11.3.06
### Corrections :
- Bug d'affichage des blocs de présentation.
- Double déclaration d'une fonte locale.
### Améliorations :
- Sauvegarde des fontes avec le thème.
- Une fonte Websafe remplace une fonte locale dont le fichier n'est pas disponible.
## Version 11.3.05 ## Version 11.3.05
### Correction : ### Correction :
- Dossier du fichier de fontes non créé empêchant la création du fichier des appels de fontes. - Dossier du fichier de fontes non créé empêchant la création du fichier des appels de fontes.

View File

@ -406,7 +406,7 @@ class common {
/** /**
* Construit la liste des fontes dans un tableau * Construit la liste des fontes dans un tableau
* @return array @fonts * @return array @fonts
* *
*/ */
public function getFonts() { public function getFonts() {
@ -2342,16 +2342,19 @@ class core extends common {
*/ */
foreach ($fonts as $fontId) { foreach ($fonts as $fontId) {
// Validité du tableau : // Validité du tableau :
if ( isset($fontsAvailable['files'][$fontId]) && if ( isset($fontsAvailable['files'][$fontId]) ) {
file_exists(self::DATA_DIR . 'fonts/' . $f) ) { if (file_exists(self::DATA_DIR . 'fonts/' . $fontId) ) {
// Chargement de la police // Chargement de la police
//$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName);
$css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";'; $css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";';
$css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' .$fontsAvailable['files'][$fontId]['resource'] . '");}'; $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' .$fontsAvailable['files'][$fontId]['resource'] . '");}';
// Tableau pour la construction de la feuille de style // Tableau pour la construction de la feuille de style
$fonts [$fontId] = $fontsAvailable['files'][$fontId]['font-family']; $fonts [$fontId] = $fontsAvailable['files'][$fontId]['font-family'];
} else {
// Le fichier de font n'est pas disponible, fonte par défaut
$fonts [$fontId] = 'verdana';
}
} }
} }
// Fond du body // Fond du body
@ -2583,16 +2586,19 @@ class core extends common {
*/ */
foreach ($fonts as $fontId) { foreach ($fonts as $fontId) {
// Validité du tableau : // Validité du tableau :
if ( isset($fontsAvailable['files'][$fontId]) && if ( isset($fontsAvailable['files'][$fontId]) ) {
file_exists(self::DATA_DIR . 'fonts/' . $f) ) { if (file_exists(self::DATA_DIR . 'fonts/' . $fontId) ) {
// Chargement de la police // Chargement de la police
//$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName);
$css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";'; $css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";';
$css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' .$fontsAvailable['files'][$fontId]['resource'] . '");}'; $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' .$fontsAvailable['files'][$fontId]['resource'] . '");}';
// Tableau pour la construction de la feuille de style // Tableau pour la construction de la feuille de style
$fonts [$fontId] = $fontsAvailable['files'][$fontId]['font-family']; $fonts [$fontId] = $fontsAvailable['files'][$fontId]['font-family'];
} else {
// Le fichier de font n'est pas disponible, fonte par défaut
$fonts [$fontId] = 'verdana';
}
} }
} }
// Thème Administration // Thème Administration

View File

@ -859,6 +859,21 @@ if ($this->getData(['core', 'dataVersion']) < 11303) {
$this->setData(['core', 'dataVersion', 11303]); $this->setData(['core', 'dataVersion', 11303]);
} }
// Version 11.3.06
if ($this->getData(['core', 'dataVersion']) < 11306) {
// Supprime les fontes déclarées en double par la version précédentes
$files = $this->getData(['fonts', 'files']);
foreach ($files as $fontId => $fontFile) {
if ( !is_null($this->getData(['fonts', 'imported', $fontId])) ) {
$this->deleteData(['fonts', 'imported', $fontId]);
}
}
// Mise à jour
$this->setData(['core', 'dataVersion', 11306]);
}
// Version 11.4.00 // Version 11.4.00
if ($this->getData(['core', 'dataVersion']) < 11400) { if ($this->getData(['core', 'dataVersion']) < 11400) {
@ -987,4 +1002,4 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
// Mise à jour // Mise à jour
$this->setData(['core', 'dataVersion', 11400]); $this->setData(['core', 'dataVersion', 11400]);
} }

View File

@ -123,4 +123,4 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -283,7 +283,7 @@ class init extends common {
'menu' => [ 'menu' => [
'backgroundColor' => 'rgba(32, 59, 82, 1)', 'backgroundColor' => 'rgba(32, 59, 82, 1)',
'backgroundColorSub' => 'rgba(32, 59, 82, 1)', 'backgroundColorSub' => 'rgba(32, 59, 82, 1)',
'font' => 'georgia', 'font' => 'arial',
'fontSize' => '1em', 'fontSize' => '1em',
'fontWeight' => 'normal', 'fontWeight' => 'normal',
'height' => '15px 10px', 'height' => '15px 10px',

View File

@ -621,37 +621,31 @@ class theme extends common {
if ($this->isPost()) { if ($this->isPost()) {
// Type d'import en ligne ou local // Type d'import en ligne ou local
$type = $this->getInput('fontAddFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files'; $type = $this->getInput('fontAddFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
$ressource = $type === 'imported' ? $this->getInput('fontAddUrl', helper::FILTER_STRING_SHORT) : $this->getInput('fontAddFile', helper::FILTER__SHORT_STRING); $typeFlip = $type === 'files' ? 'imported' : 'files';
$ressource = $type === 'imported' ? $this->getInput('fontAddUrl', helper::FILTER_STRING_SHORT) : $this->getInput('fontAddFile', helper::FILTER_STRING_SHORT);
$fontId = $this->getInput('fontAddFontId', helper::FILTER_STRING_SHORT, true); $fontId = $this->getInput('fontAddFontId', helper::FILTER_STRING_SHORT, true);
$fontName = $this->getInput('fontAddFontName', helper::FILTER_STRING_SHORT, true); $fontName = $this->getInput('fontAddFontName', helper::FILTER_STRING_SHORT, true);
$fontFamilyName = $this->getInput('fontAddFontFamilyName', helper::FILTER_STRING_SHORT, true); $fontFamilyName = $this->getInput('fontAddFontFamilyName', helper::FILTER_STRING_SHORT, true);
// Vérifier l'existence de fontId et validité de family name si usage en ligne de cdnFonts // Supprime la fonte si elle existe dans le type inverse
if (is_array($this->getData(['fonts', $typeFlip, $fontId])) ) {
$this->deleteData(['fonts', $typeFlip, $fontId ]);
}
// Stocker la fonte
$this->setData(['fonts',
$type,
$fontId, [
'name' => $fontName,
'font-family' => $fontFamilyName,
'resource' => $ressource
]]);
// Charger les données des fontes
$fonts = $this->getData(['fonts']);
// Concaténation dans les tableaux existants
$t = [ $fontId => [
'name' => $fontName,
'font-family' => $fontFamilyName,
'resource' => $ressource
]];
// Stocker les fontes
$this->setData(['fonts', $type, [ $fontId =>
[
'name' => $fontName,
'font-family' => $fontFamilyName,
'resource' => $ressource
]]
]);
// Copier la fonte si le nom du fichier est fourni // Copier la fonte si le nom du fichier est fourni
if ( $type === 'files' && if ( $type === 'files' &&
is_file(self::FILE_DIR . 'source/' . $ressource) file_exists(self::FILE_DIR . 'source/' . $ressource)
) { ) {
copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource ); copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . $ressource );
} }
// Valeurs en sortie // Valeurs en sortie
@ -677,37 +671,29 @@ class theme extends common {
if ($this->isPost()) { if ($this->isPost()) {
// Type d'import en ligne ou local // Type d'import en ligne ou local
$type = $this->getInput('fontEditFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files'; $type = $this->getInput('fontEditFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
$ressource = $type === 'imported' ? $this->getInput('fontEditUrl', helper::FILTER_STRING_SHORT) : $this->getInput('fontEditFile', helper::FILTER__SHORT_STRING); $typeFlip = $type === 'files' ? 'imported' : 'files';
$ressource = $type === 'imported' ? $this->getInput('fontEditUrl', helper::FILTER_STRING_SHORT) : $this->getInput('fontEditFile', helper::FILTER_STRING_SHORT);
$fontId = $this->getInput('fontEditFontId', helper::FILTER_STRING_SHORT, true); $fontId = $this->getInput('fontEditFontId', helper::FILTER_STRING_SHORT, true);
$fontName = $this->getInput('fontEditFontName', helper::FILTER_STRING_SHORT, true); $fontName = $this->getInput('fontEditFontName', helper::FILTER_STRING_SHORT, true);
$fontFamilyName = $this->getInput('fontEditFontFamilyName', helper::FILTER_STRING_SHORT, true); $fontFamilyName = $this->getInput('fontEditFontFamilyName', helper::FILTER_STRING_SHORT, true);
// Vérifier l'existence de fontId et validité de family name si usage en ligne de cdnFonts // Supprime la fonte si elle existe dans le type inverse
if (is_array($this->getData(['fonts', $typeFlip, $fontId])) ) {
// Charger les données des fontes $this->deleteData(['fonts', $typeFlip, $fontId ]);
$fonts = $this->getData(['fonts']); }
// Concaténation dans les tableaux existants
$t = [ $fontId => [
'name' => $fontName,
'font-family' => $fontFamilyName,
'resource' => $ressource
]];
// Stocker les fontes // Stocker les fontes
$this->setData(['fonts', $type, [ $fontId => $this->setData(['fonts',
[ $type,
'name' => $fontName, $fontId, [
'font-family' => $fontFamilyName, 'name' => $fontName,
'resource' => $ressource 'font-family' => $fontFamilyName,
]] 'resource' => $ressource
]); ]]);
// Copier la fonte si le nom du fichier est fourni // Copier la fonte si le nom du fichier est fourni
if ( $type === 'files' && if ( $type === 'files' &&
is_file(self::FILE_DIR . 'source/' . $ressource) file_exists(self::FILE_DIR . 'source/' . $ressource)
) { ) {
copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . 'fonts/' . $ressource ); copy ( self::FILE_DIR . 'source/' . $ressource, self::DATA_DIR . $ressource );
} }
// Valeurs en sortie // Valeurs en sortie
@ -1019,6 +1005,16 @@ class theme extends common {
case 'admin': case 'admin':
$zip->addFile(self::DATA_DIR.'admin.json',self::DATA_DIR.'admin.json'); $zip->addFile(self::DATA_DIR.'admin.json',self::DATA_DIR.'admin.json');
$zip->addFile(self::DATA_DIR.'admin.css',self::DATA_DIR.'admin.css'); $zip->addFile(self::DATA_DIR.'admin.css',self::DATA_DIR.'admin.css');
// Ajoute les fontes
$zip->addEmptyDir(self::DATA_DIR .'fonts');
$fonts = $this->getData(['fonts', 'files']);
foreach ($fonts as $fontId => $fontName) {
$zip->addFile(self::DATA_DIR .'fonts/' . $fontName, self::DATA_DIR.'fonts/' . $fontName);
}
if (file_exists(self::DATA_DIR .'fonts/fonts.html')) {
$zip->addFile(self::DATA_DIR .'fonts/fonts.html', self::DATA_DIR .'fonts/fonts.html');
}
break; break;
case 'theme': case 'theme':
$zip->addFile(self::DATA_DIR.'theme.json',self::DATA_DIR.'theme.json'); $zip->addFile(self::DATA_DIR.'theme.json',self::DATA_DIR.'theme.json');
@ -1043,6 +1039,16 @@ class theme extends common {
self::FILE_DIR . 'source/' . $value ); self::FILE_DIR . 'source/' . $value );
} }
} }
// Ajoute les fontes
$zip->addEmptyDir(self::DATA_DIR .'fonts');
$fonts = $this->getData(['fonts', 'files']);
foreach ($fonts as $fontId => $fontName) {
$zip->addFile(self::DATA_DIR .'fonts/' . $fontName, self::DATA_DIR.'fonts/' . $fontName);
}
if (file_exists(self::DATA_DIR .'fonts/fonts.html')) {
$zip->addFile(self::DATA_DIR .'fonts/fonts.html', self::DATA_DIR .'fonts/fonts.html');
}
break; break;
} }
$ret = $zip->close(); $ret = $zip->close();

View File

@ -172,7 +172,7 @@
<div class="row"> <div class="row">
<div class="col3"> <div class="col3">
<?php echo template::select('themeFooterFont', $module::$fontsList, [ <?php echo template::select('themeFooterFont', $module::$fontsList, [
'label' => 'Police', 'label' => 'Fonte',
'selected' => $this->getData(['theme', 'footer', 'font']), 'selected' => $this->getData(['theme', 'footer', 'font']),
'fonts' => true 'fonts' => true
]); ?> ]); ?>

View File

@ -107,7 +107,7 @@
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::select('themeHeaderFont', $module::$fontsList, [ <?php echo template::select('themeHeaderFont', $module::$fontsList, [
'label' => 'Police', 'label' => 'Fonte',
'selected' => $this->getData(['theme', 'header', 'font']), 'selected' => $this->getData(['theme', 'header', 'font']),
'fonts' => true 'fonts' => true
]); ?> ]); ?>

View File

@ -184,7 +184,7 @@
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::select('themeMenuFont', $module::$fontsList, [ <?php echo template::select('themeMenuFont', $module::$fontsList, [
'label' => 'Police', 'label' => 'Fonte',
'selected' => $this->getData(['theme', 'menu', 'font']), 'selected' => $this->getData(['theme', 'menu', 'font']),
'fonts' => true 'fonts' => true
]); ?> ]); ?>

View File

@ -159,7 +159,7 @@
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::select('themeTextFont', $module::$fontsList, [ <?php echo template::select('themeTextFont', $module::$fontsList, [
'label' => 'Police', 'label' => 'Fonte',
'selected' => $this->getData(['theme', 'text', 'font']), 'selected' => $this->getData(['theme', 'text', 'font']),
'fonts' => true 'fonts' => true
]); ?> ]); ?>
@ -180,7 +180,7 @@
<div class="row"> <div class="row">
<div class="col4"> <div class="col4">
<?php echo template::select('themeTitleFont', $module::$fontsList, [ <?php echo template::select('themeTitleFont', $module::$fontsList, [
'label' => 'Police', 'label' => 'Fonte',
'selected' => $this->getData(['theme', 'title', 'font']), 'selected' => $this->getData(['theme', 'title', 'font']),
'fonts' => true 'fonts' => true
]); ?> ]); ?>