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 @@

Mise en forme du texte

- 'Police du texte', 'selected' => $this->getData(['admin', 'fontText']), 'fonts' => true @@ -141,7 +141,7 @@ ]); ?>
- 'Police des titres', 'selected' => $this->getData(['admin', 'fontTitle']), 'fonts' => true diff --git a/core/module/theme/view/fontEdit/fontEdit.php b/core/module/theme/view/fontEdit/fontEdit.php index 17a9596b..21bf456c 100644 --- a/core/module/theme/view/fontEdit/fontEdit.php +++ b/core/module/theme/view/fontEdit/fontEdit.php @@ -61,7 +61,7 @@ 'off', 'label' => 'Famille', - 'value' => $this->getData(['fonts', $this->getUrl(2), $this->getUrl(3), 'font-family']) + 'value' => stripslashes($this->getData(['fonts', $this->getUrl(2), $this->getUrl(3), 'font-family'])) ]); ?>