diff --git a/core/core.php b/core/core.php
index 5c0c63df..4ba417a4 100644
--- a/core/core.php
+++ b/core/core.php
@@ -180,19 +180,71 @@ class common {
];
public static $fontsWebSafe = [
- 'arial' => 'Arial, Helvetica, sans-serif;',
- 'arial-black' => '"Arial Black", Gadget, sans-serif;',
- 'courrier' => 'Courier, "Liberation Mono", monospace;',
- 'courrier-new' => '"Courier New", Courier, monospace',
- 'garamond' => 'Garamond, serif',
- 'georgia' => 'Georgia, serif;',
- 'impact' => 'Impact, Charcoal, sans-serif;',
- 'lucida' => '"Lucida Sans Unicode", "Lucida Grande", sans-serif',
- 'tahoma' => 'Tahoma, Geneva, sans-serif;',
- 'times-new-roman' => '"Times New Roman", "Liberation Serif", serif;',
- 'trebuchet' => '"Trebuchet MS", Arial, Helvetica, sans-serif;',
- 'tahoma' => 'Tahoma, Geneva, sans-serif;',
- 'verdana' => 'Verdana, Geneva, sans-serif;',
+ 'arial' => [
+ 'name' => 'Arial',
+ 'font-family' => 'Arial, Helvetica, sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'arial-black' => [
+ 'name' => 'Arial Black',
+ 'font-family' => '\'Arial Black\', Gadget, sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'courrier' => [
+ 'name' => 'Courier',
+ 'font-family' => 'Courier, \'Liberation Mono\', monospace',
+ 'resource' => 'websafe'
+ ],
+ 'courrier-new' => [
+ 'name' => 'Courier New',
+ 'font-family' => '\'Courier New\', Courier, monospace',
+ 'resource' => 'websafe'
+ ],
+ 'garamond' => [
+ 'name' => 'Garamond',
+ 'font-family' => 'Garamond, serif',
+ 'resource' => 'websafe'
+ ],
+ 'georgia' => [
+ 'name' => 'Geogia',
+ 'font-family' => 'Georgia, serif',
+ 'resource' => 'websafe'
+ ],
+ 'impact' => [
+ 'name' => 'Impact',
+ 'font-family' => 'Impact, Charcoal, sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'lucida' => [
+ 'name' => 'Lucida',
+ 'font-family' => '\'Lucida Sans Unicode\', \'Lucida Grande\', sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'tahoma' => [
+ 'name' => 'Tahoma',
+ 'font-family' => 'Tahoma, Geneva, sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'times-new-roman' => [
+ 'name' => 'Times New Roman',
+ 'font-family' => '\'Times New Roman\', \'Liberation Serif\', serif',
+ 'resource' => 'websafe'
+ ],
+ 'trebuchet' => [
+ 'name' => 'Trebuchet',
+ 'font-family' => '\'Trebuchet MS\', Arial, Helvetica, sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'tahoma' => [
+ 'name' => 'Tahoma',
+ 'font-family' => 'Tahoma, Geneva, sans-serif',
+ 'resource' => 'websafe'
+ ],
+ 'verdana' => [
+ 'name' => 'Verdana',
+ 'font-family' => 'Verdana, Geneva, sans-serif;',
+ 'resource' => 'websafe'
+ ]
];
@@ -403,48 +455,6 @@ class common {
}
}
- /**
- * Construit la liste des fontes dans un tableau
- * @return array @fonts
- *
- */
- public function getFonts() {
-
- // Fusionne la liste des fontes avec les webSafe
- foreach (self::$fontsWebSafe as $fontId => $fontValue) {
- $fontName = explode (',', $fontValue);
- $f ['websafe'] [$fontId] = [
- 'name' => str_replace('"', '', $fontName[0]),
- 'font-family'=> $fontValue
- ];
- }
- // Ajoute les polices importées
- $fontsImported = $this->getData(['fonts', 'imported']);
- if (is_array($fontsImported)
- ) {
- foreach ($fontsImported as $fontId => $fontValue) {
- $f ['imported'] [$fontId] = [
- 'name' => $fontValue ['name'],
- 'font-family'=> $fontValue ['font-family'],
- 'resource' => $fontValue ['resource']
- ];
- }
- }
- // Ajoute les polices locales
- $fontsFiles = $this->getData(['fonts', 'files']);
- if (is_array($fontsFiles)
- ) {
- foreach ($fontsFiles as $fontId => $fontValue) {
- $f ['files'] [$fontId] = [
- 'name' => $fontValue ['name'],
- 'font-family'=> $fontValue ['font-family'],
- 'resource' => $fontValue ['resource']
- ];
- }
- }
- return $f;
- }
-
/**
* Check du token CSRF (true = bo
*/
@@ -2302,7 +2312,10 @@ class core extends common {
*/
// Fonts disponibles
- $fontsAvailable = $this->getFonts();
+ $fontsAvailable ['files'] = $this->getData(['fonts', 'files']);
+ $fontsAvailable ['imported'] = $this->getData(['fonts', 'imported']);
+ $fontsAvailable ['websafe'] = self::$fontsWebSafe;
+
// Fontes installées
$fonts = [ $this->getData(['theme', 'text', 'font']),
$this->getData(['theme', 'title', 'font']),
diff --git a/core/include/update.inc.php b/core/include/update.inc.php
index 6470f750..53664bce 100644
--- a/core/include/update.inc.php
+++ b/core/include/update.inc.php
@@ -896,37 +896,37 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
],
'dancing-script' => [
'name' => 'Dancing Script',
- 'font-family' => '"Dancing Script", sans-serif',
+ 'font-family' => '\'Dancing Script\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/dancing-script'
],
'droid-sans-2'=> [
'name' => 'Droid Sans',
- 'font-family' => '"Droid Sans", sans-serif',
+ 'font-family' => '\'Droid Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/droid-sans-2'
],
'droid-serif-2'=> [
'name' => 'Droid Serif',
- 'font-family' => '"Droid Serif", serif',
+ 'font-family' => '\'Droid Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/droid-serif-2'
],
'indie-flower'=> [
'name' => 'Indie Flower',
- 'font-family' => '"Indie Flower", sans-serif',
+ 'font-family' => '\'Indie Flower\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/indie-flower'
],
'fira-sans' => [
'name' => 'Fira Sans',
- 'font-family' => '"Fira Sans", sans-serif',
+ 'font-family' => '\'Fira Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/fira'
],
'liberation-sans'=> [
'name' => 'Liberation Sans',
- 'font-family' => '"Liberation Sans", sans-serif',
+ 'font-family' => '\'Liberation Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/liberation-sans'
],
'liberation-serif'=> [
'name' => 'Liberation Serif',
- 'font-family' => '"Liberation Serif", serif',
+ 'font-family' => '\'Liberation Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/liberation-serif'
],
'lobster-2'=> [
@@ -946,12 +946,12 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
],
'old-standard-tt-3'=> [
'name' => 'Old Standard TT',
- 'font-family' => '"Old Standard TT", serif',
+ 'font-family' => '\'Old Standard TT\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/old-standard-tt-3'
],
'open-sans' => [
'name' => 'Open Sans',
- 'font-family' => '"Open Sans", sans-serif',
+ 'font-family' => '\'Open Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/open-sans'
],
'oswald-4'=> [
@@ -961,12 +961,12 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
],
'pt-mono'=> [
'name' => 'PT Mono',
- 'font-family' => '"PT Mono", monospace',
+ 'font-family' => '\'PT Mono\', monospace',
'resource' => 'https://fonts.cdnfonts.com/css/pt-mono'
],
'pt-serif'=> [
- 'name' => "PR Serif",
- 'font-family' => '"PT Serif", serif',
+ 'name' => 'PR Serif',
+ 'font-family' => '\'PT Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/pt-serif'
],
'rancho'=> [
diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php
index 7a65d026..236755a5 100644
--- a/core/module/install/ressource/defaultdata.php
+++ b/core/module/install/ressource/defaultdata.php
@@ -100,32 +100,32 @@ class init extends common {
],
'dancing-script' => [
'name' => 'Dancing Script',
- 'font-family' => '"Dancing Script", sans-serif',
+ 'font-family' => '\'Dancing Script\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/dancing-script'
],
'droid-sans-2'=> [
'name' => 'Droid Sans',
- 'font-family' => '"Droid Sans", sans-serif',
+ 'font-family' => '\'Droid Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/droid-sans-2'
],
'droid-serif-2'=> [
'name' => 'Droid Serif',
- 'font-family' => '"Droid Serif", serif',
+ 'font-family' => '\'Droid Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/droid-serif-2'
],
'indie-flower'=> [
'name' => 'Indie Flower',
- 'font-family' => '"Indie Flower", sans-serif',
+ 'font-family' => '\'Indie Flower\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/indie-flower'
],
'liberation-sans'=> [
'name' => 'Liberation Sans',
- 'font-family' => '"Liberation Sans", sans-serif',
+ 'font-family' => '\'Liberation Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/liberation-sans'
],
'liberation-serif'=> [
'name' => 'Liberation Serif',
- 'font-family' => '"Liberation Serif", serif',
+ 'font-family' => '\'Liberation Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/liberation-serif'
],
'lobster-2'=> [
@@ -145,12 +145,12 @@ class init extends common {
],
'old-standard-tt-3'=> [
'name' => 'Old Standard TT',
- 'font-family' => '"Old Standard TT", serif',
+ 'font-family' => '\'Old Standard TT\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/old-standard-tt-3'
],
'open-sans' => [
'name' => 'Open Sans',
- 'font-family' => '"Open Sans", sans-serif',
+ 'font-family' => '\'Open Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/open-sans'
],
'oswald-4'=> [
@@ -160,12 +160,12 @@ class init extends common {
],
'pt-mono'=> [
'name' => 'PT Mono',
- 'font-family' => '"PT Mono", monospace',
+ 'font-family' => '\'PT Mono\', monospace',
'resource' => 'https://fonts.cdnfonts.com/css/pt-mono'
],
'pt-serif'=> [
- 'name' => "PR Serif",
- 'font-family' => '"PT Serif", serif',
+ 'name' => 'PR Serif',
+ 'font-family' => '\'PT Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/pt-serif'
],
'rancho'=> [
diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php
index bb68422a..95169da6 100644
--- a/core/module/theme/theme.php
+++ b/core/module/theme/theme.php
@@ -265,6 +265,8 @@ class theme extends common {
'state' => true
]);
}
+ // Lire les fontes installées
+ $this->enumFonts();
// Valeurs en sortie
$this->addOutput([
'title' => 'Administration',
@@ -569,40 +571,44 @@ class theme extends common {
];
// Récupérer le détail des fontes installées
- $f = $this->getFonts();
+ //$f = $this->getFonts();
+ $f ['files'] = $this->getData(['fonts', 'files']);
+ $f ['imported'] = $this->getData(['fonts', 'imported']);
+ $f ['websafe'] = self::$fontsWebSafe;
// Parcourir les fontes disponibles et construire le tableau pour le formulaire
foreach ($f as $type => $typeValue) {
-
- foreach ($typeValue as $fontId => $fontValue) {
- // Fontes utilisées par les thèmes
- $fontUsed[$fontId] = '';
- foreach ($used as $key => $value) {
- if ( $value === $fontId) {
- $fontUsed[$fontId] .= $key . '
';
+ if (is_array($typeValue)) {
+ foreach ($typeValue as $fontId => $fontValue) {
+ // Fontes utilisées par les thèmes
+ $fontUsed[$fontId] = '';
+ foreach ($used as $key => $value) {
+ if ( $value === $fontId) {
+ $fontUsed[$fontId] .= $key . '
';
+ }
}
+ self::$fontsDetail [] = [
+ $fontId,
+ '' . $f[$type][$fontId]['name'] . '' ,
+ $f[$type][$fontId]['font-family'],
+ $fontUsed[$fontId],
+ $type,
+ $type !== 'websafe' ? template::button('themeFontEdit' . $fontId, [
+ 'class' => 'themeFontEdit',
+ 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontEdit/' . $type . '/' . $fontId . '/' . $_SESSION['csrf'],
+ 'value' => template::ico('pencil'),
+ 'disabled' => !empty($fontUsed[$fontId])
+ ])
+ : '',
+ $type !== 'websafe' ? template::button('themeFontDelete' . $fontId, [
+ 'class' => 'themeFontDelete buttonRed',
+ 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $type . '/' . $fontId . '/' . $_SESSION['csrf'],
+ 'value' => template::ico('cancel'),
+ 'disabled' => !empty($fontUsed[$fontId])
+ ])
+ : ''
+ ];
}
- self::$fontsDetail [] = [
- $fontId,
- '' . $f[$type][$fontId]['name'] . '' ,
- $f[$type][$fontId]['font-family'],
- $fontUsed[$fontId],
- $type,
- $type !== 'websafe' ? template::button('themeFontEdit' . $fontId, [
- 'class' => 'themeFontEdit',
- 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontEdit/' . $type . '/' . $fontId . '/' . $_SESSION['csrf'],
- 'value' => template::ico('pencil'),
- 'disabled' => !empty($fontUsed[$fontId])
- ])
- : '',
- $type !== 'websafe' ? template::button('themeFontDelete' . $fontId, [
- 'class' => 'themeFontDelete buttonRed',
- 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $type . '/' . $fontId . '/' . $_SESSION['csrf'],
- 'value' => template::ico('cancel'),
- 'disabled' => !empty($fontUsed[$fontId])
- ])
- : ''
- ];
}
}
sort(self::$fontsDetail);
@@ -627,6 +633,9 @@ class theme extends common {
$fontName = $this->getInput('fontAddFontName', null, true);
$fontFamilyName = $this->getInput('fontAddFontFamilyName', null, true);
+ // Remplace les doubles quotes par des simples quotes
+ $fontFamilyName = str_replace('"', '\'', $fontFamilyName);
+
// Supprime la fonte si elle existe dans le type inverse
if (is_array($this->getData(['fonts', $typeFlip, $fontId])) ) {
$this->deleteData(['fonts', $typeFlip, $fontId ]);
@@ -677,6 +686,9 @@ class theme extends common {
$fontName = $this->getInput('fontEditFontName', null , true);
$fontFamilyName = $this->getInput('fontEditFontFamilyName', null, true);
+ // Remplace les doubles quotes par des simples quotes
+ $fontFamilyName = str_replace('"', '\'', $fontFamilyName);
+
// Supprime la fonte si elle existe dans le type inverse
if (is_array($this->getData(['fonts', $typeFlip, $fontId])) ) {
$this->deleteData(['fonts', $typeFlip, $fontId ]);
@@ -1115,7 +1127,9 @@ class theme extends common {
// Cette fonction est utile aux sélecteurs de fonts dans les formulaires.
public function enumFonts() {
// Récupère la liste des fontes installées
- $f = $this->getFonts();
+ $f ['files'] = $this->getData(['fonts', 'files']);
+ $f ['imported'] = $this->getData(['fonts', 'imported']);
+ $f ['websafe'] = self::$fontsWebSafe;
// Construit un tableau avec leur ID et leur famille
foreach(['websafe', 'imported', 'files'] as $type) {
if(array_key_exists($type, $f)) {
diff --git a/core/module/theme/view/admin/admin.php b/core/module/theme/view/admin/admin.php
index ef3e4f9a..8dcfaf98 100644
--- a/core/module/theme/view/admin/admin.php
+++ b/core/module/theme/view/admin/admin.php
@@ -128,7 +128,7 @@