From e1d18c54d3aa564ec03a693d740a0c52d65c7663 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Tue, 8 Feb 2022 13:23:15 +0100 Subject: [PATCH 01/35] optimisation fontes dans le theme --- core/core.php | 61 ++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/core/core.php b/core/core.php index b9ede07f..4da8153e 100644 --- a/core/core.php +++ b/core/core.php @@ -2290,33 +2290,30 @@ class core extends common { // Suppression des polices identiques $cdnFonts = array_unique($cdnFonts); - // Un fichier local de configuration existe - if ( file_exists(self::DATA_DIR . 'fonts.json') ) - { - // Lire le fichier et check l'existence des fichiers locaux - // $localFonts = json_decode(file_get_contents (self::FILE_DIR . "source/fonts/fonts.json"), true); - $localFonts = $this->getData(['fonts', 'files']); - // Validité du format - if (is_array($localFonts) ) { - foreach ($localFonts as $fontId => $fontName) { - // Validité du tableau : - // L'id de la police est présent dans la liste interne - // Le nom de la police fournie correspond à un fichier existant - if ( array_key_exists($fontId, self::$fonts) && - file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { - // La police locale est-elle invoquée ? - $d = array_search($fontId, $cdnFonts); - if ( $d !== NULL ) { - // Chargement de la police demandée dans le thème - $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); - $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; - $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; - // Supprimer l'élément des fontes chargées en ligne - unset($cdnFonts[$d]); - } - } - + // Lire le fichier et check l'existence des fichiers locaux + $localFonts = $this->getData(['fonts', 'files']); + // Validité du format + if (is_array($localFonts && + !empty($localFonts)) + ) { + foreach ($localFonts as $fontId => $fontName) { + // Validité du tableau : + // L'id de la police est présent dans la liste interne + // Le nom de la police fournie correspond à un fichier existant + if ( array_key_exists($fontId, self::$fonts) && + file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { + // La police locale est-elle invoquée ? + $d = array_search($fontId, $cdnFonts); + if ( $d !== NULL ) { + // Chargement de la police demandée dans le thème + $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); + $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; + $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; + // Supprimer l'élément des fontes chargées en ligne + unset($cdnFonts[$d]); + } } + } } // Chargement des polices en ligne @@ -2519,12 +2516,12 @@ class core extends common { ]; // Suppression des polices identiques $cdnFonts = array_unique($cdnFonts); - // Un fichier local de configuration existe - if ( file_exists(self::DATA_DIR . 'fonts.json') ) - { - // Lire le fichier et check l'existence des fichiers locaux - // $localFonts = json_decode(file_get_contents (self::FILE_DIR . "source/fonts/fonts.json"), true); - $localFonts = $this->getData(['fonts', 'files']); + // Lire le fichier et check l'existence des fichiers locaux + $localFonts = $this->getData(['fonts', 'files']); + // Validité du format + if ( is_array($localFonts) && + !empty($localFonts) + ) { // Validité du format if (is_array($localFonts) ) { foreach ($localFonts as $fontId => $fontName) { From be0b4ca81873fdab1142115871ca0af54465def5 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Tue, 8 Feb 2022 13:23:34 +0100 Subject: [PATCH 02/35] =?UTF-8?q?r=C3=A9import=20du=20th=C3=A8me=20pour=20?= =?UTF-8?q?les=20fontes=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 71 ++++++++++---------- core/module/theme/view/admin/admin.php | 15 +++-- core/module/theme/view/advanced/advanced.php | 12 ++-- core/module/theme/view/body/body.php | 12 ++-- core/module/theme/view/fonts/fonts copy.php | 11 +++ core/module/theme/view/fonts/fonts.css | 18 +++++ core/module/theme/view/fonts/fonts.php | 5 ++ core/module/theme/view/footer/footer.php | 12 ++-- core/module/theme/view/header/header.php | 12 ++-- core/module/theme/view/index/index.css | 3 +- core/module/theme/view/index/index.php | 22 ++++-- core/module/theme/view/manage/manage.php | 11 ++- core/module/theme/view/menu/menu.php | 12 ++-- core/module/theme/view/site/site.php | 12 ++-- 14 files changed, 134 insertions(+), 94 deletions(-) create mode 100644 core/module/theme/view/fonts/fonts copy.php create mode 100644 core/module/theme/view/fonts/fonts.css create mode 100644 core/module/theme/view/fonts/fonts.php diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index cd1be767..7046ac92 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -29,7 +29,8 @@ class theme extends common { 'manage' => self::GROUP_ADMIN, 'export' => self::GROUP_ADMIN, 'import' => self::GROUP_ADMIN, - 'save' => self::GROUP_ADMIN + 'save' => self::GROUP_ADMIN, + 'fonts' => self::GROUP_ADMIN ]; public static $aligns = [ 'left' => 'À gauche', @@ -226,6 +227,8 @@ class theme extends common { // Variable pour construire la liste des pages du site public static $pagesList = []; + // Variable pour construire la liste des fontes installées + public static $fontsList = []; /** * Thème des écrans d'administration @@ -412,42 +415,14 @@ class theme extends common { $featureContent = $this->getInput('themeHeaderText', null); $featureContent = str_replace(helper::baseUrl(false,false), './', $featureContent); - // Encodage des images en base64 - // Identifier les images - /* - preg_match_all('/]+>/i',$featureContent, $results); - foreach($results[0] as $value) { - // Lire le contenu XML - $sx = simplexml_load_string($value); - // Elément à remplacer - $src = 'src="' . $sx[0]['src'] . '"'; - // Elément encodé en base64 - $base64 = 'src="data:image/'. pathinfo($sx[0]['src'],PATHINFO_EXTENSION) . ';base64,'. base64_encode(file_get_contents($sx[0]['src'])).'"'; - // Effectuer le remplacement dans la chaine - $featureContent = str_replace($src, $base64, $featureContent); - } - - // Encodage des videos en base64 - preg_match_all('/]+>/i',$featureContent, $results); - foreach($results[0] as $value) { - // Lire le contenu XML - $sx = simplexml_load_string($value); - // Elément à remplacer - $src = 'src="' . $sx[0]['src'] . '"'; - // Elément encodé en base64 - $base64 = 'src="data:source/'. pathinfo($sx[0]['src'],PATHINFO_EXTENSION) . ';base64,'. base64_encode(file_get_contents($sx[0]['src'])).'"'; - // Effectuer le remplacement dans la chaine - $featureContent = str_replace($src, $base64, $featureContent); - }*/ - - /** + /** * Stocker les images incluses dans la bannière perso dans un tableau */ - preg_match_all('/]+>/i',$featureContent, $results); - foreach($results[0] as $value) { + preg_match_all('/]+>/i',$featureContent, $results); + foreach($results[0] as $value) { // Lire le contenu XML $sx = simplexml_load_string($value); - // Elément à remplacer + // Élément à remplacer $files [] = str_replace('./site/file/source/','',(string) $sx[0]['src']); } @@ -566,6 +541,32 @@ class theme extends common { ]); } + /** + * Options des fontes + */ + public function fonts() { + // Soumission du formulaire + if($this->isPost()) { + } + //Polices trouvées dans la configuration + + if ( file_exists(self::DATA_DIR . 'fonts.json') ) { + $localFonts = $this->getData(['fonts', 'files']); + } + // Parcourir les fontes installées et construire le tableau pour le formulaire + foreach (self::$fonts as $fontId => $fontName) { + self::$fontsList [] = [ + $fontName, + $fontId + ]; + } + // Valeurs en sortie + $this->addOutput([ + 'title' => 'Gestion des fontes', + 'view' => 'fonts' + ]); + } + /** * Réinitialisation de la personnalisation avancée */ @@ -823,10 +824,10 @@ class theme extends common { // Traite les images du header perso if (!empty($this->getData(['theme','header','featureFiles'])) ) { foreach($this->getData(['theme','header','featureFiles']) as $value) { - $zip->addFile(self::FILE_DIR . 'source/' . $value, + $zip->addFile(self::FILE_DIR . 'source/' . $value, self::FILE_DIR . 'source/' . $value ); } - } + } break; } $ret = $zip->close(); diff --git a/core/module/theme/view/admin/admin.php b/core/module/theme/view/admin/admin.php index 8b81ad02..ef3e4f9a 100644 --- a/core/module/theme/view/admin/admin.php +++ b/core/module/theme/view/admin/admin.php @@ -1,24 +1,25 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+ +
'buttonRed', 'href' => helper::baseUrl() . 'theme/reset/admin' . '&csrf=' . $_SESSION['csrf'], - 'value' => 'Réinitialiser', - 'ico' => 'cancel' + 'value' => template::ico('cancel'), + 'help' => 'Réinitialiser avec le thème par défaut' ]); ?>
diff --git a/core/module/theme/view/advanced/advanced.php b/core/module/theme/view/advanced/advanced.php index f1895306..598b8507 100644 --- a/core/module/theme/view/advanced/advanced.php +++ b/core/module/theme/view/advanced/advanced.php @@ -1,19 +1,19 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
helper::baseUrl() . 'theme/reset/custom' . '&csrf=' . $_SESSION['csrf'], 'class' => 'buttonRed', - 'ico' => 'cancel', - 'value' => 'Réinitialiser' + 'value' => template::ico('cancel'), + 'help' => 'Réinitialiser la feuille de style' + ]); ?>
diff --git a/core/module/theme/view/body/body.php b/core/module/theme/view/body/body.php index 6e1f536d..51243668 100644 --- a/core/module/theme/view/body/body.php +++ b/core/module/theme/view/body/body.php @@ -1,23 +1,21 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
'https://doc.zwiicms.fr/arriere-plan', 'target' => '_blank', - 'ico' => 'help', - 'value' => 'Aide', + 'value' => template::ico('help'), 'class' => 'buttonHelp' ]); ?>
-
+
diff --git a/core/module/theme/view/fonts/fonts copy.php b/core/module/theme/view/fonts/fonts copy.php new file mode 100644 index 00000000..b7d4590b --- /dev/null +++ b/core/module/theme/view/fonts/fonts copy.php @@ -0,0 +1,11 @@ +loadHTMLFile($filefont, LIBXML_NOERROR); +$elements = $doc->getElementsByTagName('i'); +var_dump ($elements); +foreach($elements as $element) { + if ($element->$textContent === 'http://fonts.cdnfonts.com/css/sketched') { + var_dump( $element['textContent'] ); + } +} \ No newline at end of file diff --git a/core/module/theme/view/fonts/fonts.css b/core/module/theme/view/fonts/fonts.css new file mode 100644 index 00000000..52709ea6 --- /dev/null +++ b/core/module/theme/view/fonts/fonts.css @@ -0,0 +1,18 @@ +/** + * This file is part of Zwii. + * + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Rémi Jean + * @copyright Copyright (C) 2008-2018, Rémi Jean + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2022, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** NE PAS EFFACER +* admin.css +*/ \ No newline at end of file diff --git a/core/module/theme/view/fonts/fonts.php b/core/module/theme/view/fonts/fonts.php new file mode 100644 index 00000000..1f5efa0b --- /dev/null +++ b/core/module/theme/view/fonts/fonts.php @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/module/theme/view/footer/footer.php b/core/module/theme/view/footer/footer.php index 9b78b052..9c47aa82 100644 --- a/core/module/theme/view/footer/footer.php +++ b/core/module/theme/view/footer/footer.php @@ -1,23 +1,21 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
'https://doc.zwiicms.fr/pied-de-page', 'target' => '_blank', - 'ico' => 'help', - 'value' => 'Aide', + 'value' => template::ico('help'), 'class' => 'buttonHelp' ]); ?>
-
+
diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index e503d88d..a9956412 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -1,23 +1,21 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
'https://doc.zwiicms.fr/banniere', 'target' => '_blank', - 'ico' => 'help', - 'value' => 'Aide', + 'value' => template::ico('help'), 'class' => 'buttonHelp' ]); ?>
-
+
diff --git a/core/module/theme/view/index/index.css b/core/module/theme/view/index/index.css index 0f66fdf7..9d32a5a3 100755 --- a/core/module/theme/view/index/index.css +++ b/core/module/theme/view/index/index.css @@ -40,7 +40,8 @@ nav li ul { #themeBack, #themeManage, #themeAdmin, -#themeAdvanced { +#themeAdvanced, +#themeFonts { position: relative; z-index: 11; } diff --git a/core/module/theme/view/index/index.php b/core/module/theme/view/index/index.php index 85f0a16f..5f6621be 100644 --- a/core/module/theme/view/index/index.php +++ b/core/module/theme/view/index/index.php @@ -30,9 +30,9 @@
-
+
'cogs', + 'ico' => 'sliders', 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', 'value' => 'Gestion' ]); ?> @@ -52,6 +52,13 @@ 'value' => 'Éditeur CSS' ]); ?>
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', + 'value' => 'Fontes' + ]); ?> +
@@ -75,9 +82,9 @@
-
+
'cogs', + 'ico' => 'sliders', 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', 'value' => 'Gestion' ]); ?> @@ -97,5 +104,12 @@ 'value' => 'Éditeur CSS' ]); ?>
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', + 'value' => 'Fontes' + ]); ?> +
diff --git a/core/module/theme/view/manage/manage.php b/core/module/theme/view/manage/manage.php index 42658cd9..c6c3ac22 100644 --- a/core/module/theme/view/manage/manage.php +++ b/core/module/theme/view/manage/manage.php @@ -1,19 +1,18 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
'buttonRed', 'href' => helper::baseUrl() . 'theme/reset/manage' . '&csrf=' . $_SESSION['csrf'], - 'value' => 'Réinitialiser', - 'ico' => 'cancel' + 'value' => template::ico('cancel'), + 'help' => 'Réinitialiser avec le thème par défaut' ]); ?>
diff --git a/core/module/theme/view/menu/menu.php b/core/module/theme/view/menu/menu.php index 11bde3da..9bcbb88a 100644 --- a/core/module/theme/view/menu/menu.php +++ b/core/module/theme/view/menu/menu.php @@ -1,23 +1,21 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
'https://doc.zwiicms.fr/menu', 'target' => '_blank', - 'ico' => 'help', - 'value' => 'Aide', + 'value' => template::ico('help'), 'class' => 'buttonHelp' ]); ?>
-
+
diff --git a/core/module/theme/view/site/site.php b/core/module/theme/view/site/site.php index 7414f397..7f4c4e67 100644 --- a/core/module/theme/view/site/site.php +++ b/core/module/theme/view/site/site.php @@ -1,23 +1,21 @@
-
+
'buttonGrey', 'href' => helper::baseUrl() . 'theme', - 'ico' => 'left', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
-
+
'https://doc.zwiicms.fr/site61863d315ffe0', 'target' => '_blank', - 'ico' => 'help', - 'value' => 'Aide', + 'value' => template::ico('help'), 'class' => 'buttonHelp' ]); ?>
-
+
From d64c743467bb8408b2b9a9ec7eddc5708bafbfd5 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Tue, 8 Feb 2022 17:00:08 +0100 Subject: [PATCH 03/35] Effacement de police WIP --- core/core.php | 1 + core/module/theme/theme.php | 98 ++++++++++++++++++++-- core/module/theme/view/fontAdd/fontAdd.css | 18 ++++ core/module/theme/view/fontAdd/fontAdd.php | 58 +++++++++++++ core/module/theme/view/fonts/fonts.js.php | 21 +++++ core/module/theme/view/fonts/fonts.php | 21 ++++- core/vendor/filemanager/config/config.php | 2 +- 7 files changed, 208 insertions(+), 11 deletions(-) create mode 100644 core/module/theme/view/fontAdd/fontAdd.css create mode 100644 core/module/theme/view/fontAdd/fontAdd.php create mode 100644 core/module/theme/view/fonts/fonts.js.php diff --git a/core/core.php b/core/core.php index 4da8153e..3cd0db36 100644 --- a/core/core.php +++ b/core/core.php @@ -1940,6 +1940,7 @@ class common { $notificationClass = 'notificationSuccess'; } if(common::$inputNotices) { + var_dump(common::$inputNotices); $notification = 'Impossible de soumettre le formulaire, car il contient des erreurs'; $notificationClass = 'notificationError'; } diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 7046ac92..658e5e83 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -30,7 +30,9 @@ class theme extends common { 'export' => self::GROUP_ADMIN, 'import' => self::GROUP_ADMIN, 'save' => self::GROUP_ADMIN, - 'fonts' => self::GROUP_ADMIN + 'fonts' => self::GROUP_ADMIN, + 'fontAdd' => self::GROUP_ADMIN, + 'fontDelete' => self::GROUP_ADMIN ]; public static $aligns = [ 'left' => 'À gauche', @@ -548,16 +550,22 @@ class theme extends common { // Soumission du formulaire if($this->isPost()) { } - //Polices trouvées dans la configuration - - if ( file_exists(self::DATA_DIR . 'fonts.json') ) { - $localFonts = $this->getData(['fonts', 'files']); - } + //Polices trouvées dans la configuration + $fonts = $this->getData(['fonts']); // Parcourir les fontes installées et construire le tableau pour le formulaire foreach (self::$fonts as $fontId => $fontName) { - self::$fontsList [] = [ + self::$fontsList [] = [ $fontName, - $fontId + $fontId, + array_key_exists($fontId, $fonts['imported']) ? 'Importée' : '', + array_key_exists($fontId, $fonts['files']) ? $fonts['files'][$fontId] : 'CDN Fonts', + array_key_exists($fontId, $fonts['imported']) || array_key_exists($fontId, $fonts['files']) + ? template::button('themeFontDelete' . $fontId, [ + 'class' => 'themeFontDelete buttonRed', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $fontId . '/' . $_SESSION['csrf'], + 'value' => template::ico('cancel') + ]) + : '' ]; } // Valeurs en sortie @@ -567,6 +575,80 @@ class theme extends common { ]); } + /** + * Ajouter une fonte + */ + public function fontAdd() { + // Soumission du formulaire + if ($this->isPost()) { + $fontId = $this->getInput('fontAddFontId', null, true); + $fontName = $this->getInput('fontAddFontName', null, true); + $file = $this->getInput('fontAddFile', null, true); + + // Charger les données des fontes + $files = $this->getData(['fonts', 'files']); + $imported = $this->getData(['fonts', 'imported']); + // Concaténation dans les tableaux existants + $imported = array_merge([$fontId => $fontName], $imported); + $files = array_merge([$fontId => $file], $files); + // Mettre à jour le fichier des fontes + $this->setData(['fonts', 'imported', $imported ]); + $this->setData(['fonts', 'files', $files ]); + // Valeurs en sortie + $this->addOutput([ + 'notification' => 'Fonte importée', + 'redirect' => helper::baseUrl() . 'theme/fonts', + 'state' => true + ]); + } + // Valeurs en sortie + $this->addOutput([ + 'title' => 'Ajouter une fonte', + 'view' => 'fontAdd' + ]); + } + + /** + * Effacer une fonte + */ + public function fontDelete() { + // Jeton incorrect + if ($this->getUrl(3) !== $_SESSION['csrf']) { + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . 'theme/fonts', + 'notification' => 'Action non autorisée' + ]); + } + // Suppression + else { + + // Charger les données des fontes + $files = $this->getData(['fonts', 'files']); + $imported = $this->getData(['fonts', 'imported']); + + // Effacer le fichier existant + if ( file_exists(self::DATA_DIR . $files[$this->getUrl(2)]) ) { + unlink(self::DATA_DIR . $files[$this->getUrl(2)]); + } + + // Supprimer les entrées + unset($file[$this->getUrl(2)]); + unset($imported[$this->getUrl(2)]); + + // Mettre à jour le fichier des fontes + $this->setData(['fonts', 'files', $files ]); + $this->setData(['fonts', 'imported', $imported ]); + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . 'theme/fonts', + 'notification' => 'Fonte supprimée', + 'state' => true + ]); + } + } + + /** * Réinitialisation de la personnalisation avancée */ diff --git a/core/module/theme/view/fontAdd/fontAdd.css b/core/module/theme/view/fontAdd/fontAdd.css new file mode 100644 index 00000000..52709ea6 --- /dev/null +++ b/core/module/theme/view/fontAdd/fontAdd.css @@ -0,0 +1,18 @@ +/** + * This file is part of Zwii. + * + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Rémi Jean + * @copyright Copyright (C) 2008-2018, Rémi Jean + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2022, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** NE PAS EFFACER +* admin.css +*/ \ No newline at end of file diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php new file mode 100644 index 00000000..5b42a036 --- /dev/null +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -0,0 +1,58 @@ + +
+
+ 'buttonGrey', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/theme/font', + 'ico' => 'left', + 'value' => 'Retour' + ]); ?> +
+
+ 'Valider', + 'uniqueSubmission' => true + ]); ?> +
+
+
+
+
+

Identification

+
+
+ 'off', + 'label' => 'Identifiant', + 'placeholder' => 'perry-gothic' + + ]); ?> +
+
+ 'off', + 'label' => 'Nom (Font Family)', + 'placeholder' => 'PerryGothic' + ]); ?> +
+
+
+
+
+
+
+
+

Source

+
+
+ 'Fichier de police (Format WOFF)', + 'placeholder' => 'https://fonts.cdnfonts.com/s/7896/PERRYGOT.woff' + ]); ?> +
+
+
+
+
+ + \ No newline at end of file diff --git a/core/module/theme/view/fonts/fonts.js.php b/core/module/theme/view/fonts/fonts.js.php new file mode 100644 index 00000000..07553822 --- /dev/null +++ b/core/module/theme/view/fonts/fonts.js.php @@ -0,0 +1,21 @@ +/** + * This file is part of Zwii. + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2022, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** + * Confirmation de suppression + */ + $(".themeFontDelete").on("click", function() { + var _this = $(this); + return core.confirm("Êtes-vous sûr de vouloir supprimer cette fonte ?", function() { + $(location).attr("href", _this.attr("href")); + }); +}); \ No newline at end of file diff --git a/core/module/theme/view/fonts/fonts.php b/core/module/theme/view/fonts/fonts.php index 1f5efa0b..34094a38 100644 --- a/core/module/theme/view/fonts/fonts.php +++ b/core/module/theme/view/fonts/fonts.php @@ -1,5 +1,22 @@ +
+
+ 'buttonGrey', + 'href' => helper::baseUrl() . 'theme', + 'ico' => 'left', + 'value' => 'Retour' + ]); ?> +
+
+ helper::baseUrl() . $this->getUrl(0) . '/fontAdd', + 'ico' => 'plus', + 'value' => 'Fonte' + ]); ?> +
+
- + - + \ No newline at end of file diff --git a/core/vendor/filemanager/config/config.php b/core/vendor/filemanager/config/config.php index bb114c4b..786a9b0b 100644 --- a/core/vendor/filemanager/config/config.php +++ b/core/vendor/filemanager/config/config.php @@ -458,7 +458,7 @@ $config = array( 'ext_file' => array( 'doc', 'docx', 'rtf', 'pdf', 'xls', 'xlsx', 'txt', 'csv', 'html', 'xhtml', 'psd', 'sql', 'log', 'fla', 'xml', 'ade', 'adp', 'mdb', 'accdb', 'ppt', 'pptx', 'odt', 'ots', 'ott', 'odb', 'odg', 'otp', 'otg', 'odf', 'ods', 'odp', 'css', 'ai', 'kmz','dwg', 'dxf', 'hpgl', 'plt', 'spl', 'step', 'stp', 'iges', 'igs', 'sat', 'cgm', 'ics', 'gpx', 'kml', ''), //Files 'ext_video' => array( 'mov', 'mpeg', 'm4v', 'mp4', 'avi', 'mpg', 'wma', "flv", "webm" ), //Video 'ext_music' => array( 'mp3', 'mpga', 'm4a', 'ac3', 'aiff', 'mid', 'ogg', 'wav' ), //Audio - 'ext_misc' => array( 'zip', 'rar', 'gz', 'tar', 'iso', 'dmg' ), //Archives + 'ext_misc' => array( 'zip', 'rar', 'gz', 'tar', 'iso', 'dmg', 'woff' ), //Archives et polices de caractères //********************* From a3c2eb3978177ca1c43002e26041d6f76276d8a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Tue, 8 Feb 2022 19:34:37 +0100 Subject: [PATCH 04/35] manque copie du fichier woff --- core/module/theme/theme.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 658e5e83..a754264e 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -562,7 +562,7 @@ class theme extends common { array_key_exists($fontId, $fonts['imported']) || array_key_exists($fontId, $fonts['files']) ? template::button('themeFontDelete' . $fontId, [ 'class' => 'themeFontDelete buttonRed', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $fontId . '/' . $_SESSION['csrf'], + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $fontId . '/' . $_SESSION['csrf'], 'value' => template::ico('cancel') ]) : '' @@ -584,6 +584,8 @@ class theme extends common { $fontId = $this->getInput('fontAddFontId', null, true); $fontName = $this->getInput('fontAddFontName', null, true); $file = $this->getInput('fontAddFile', null, true); + $e = explode ('/', $file); + $file = $e[count($e) - 1 ]; // Charger les données des fontes $files = $this->getData(['fonts', 'files']); From 05e0fad92253f135083cb7c26f8b078535c73c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Tue, 8 Feb 2022 21:19:39 +0100 Subject: [PATCH 05/35] Copy ok --- core/module/theme/theme.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index a754264e..6b2a7d90 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -583,22 +583,28 @@ class theme extends common { if ($this->isPost()) { $fontId = $this->getInput('fontAddFontId', null, true); $fontName = $this->getInput('fontAddFontName', null, true); - $file = $this->getInput('fontAddFile', null, true); - $e = explode ('/', $file); + $filePath = $this->getInput('fontAddFile', null, true); + $e = explode ('/', $filePath); $file = $e[count($e) - 1 ]; // Charger les données des fontes $files = $this->getData(['fonts', 'files']); $imported = $this->getData(['fonts', 'imported']); + // Concaténation dans les tableaux existants $imported = array_merge([$fontId => $fontName], $imported); $files = array_merge([$fontId => $file], $files); + + // Copier la fonte + copy ( self::FILE_DIR . 'source/' . $filePath, self::DATA_DIR . 'fonts/' . $file ); + // Mettre à jour le fichier des fontes $this->setData(['fonts', 'imported', $imported ]); $this->setData(['fonts', 'files', $files ]); // Valeurs en sortie + $this->addOutput([ - 'notification' => 'Fonte importée', + 'notification' => 'La fonte a été importée', 'redirect' => helper::baseUrl() . 'theme/fonts', 'state' => true ]); From 5d3f06a5278a88bdc6b89eee453f6108094086d9 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 9 Feb 2022 10:43:04 +0100 Subject: [PATCH 06/35] Import et suppression des fontes --- core/module/theme/theme.php | 54 ++++++++++++++-------- core/module/theme/view/fontAdd/fontAdd.php | 4 +- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 6b2a7d90..e29761a9 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -583,31 +583,47 @@ class theme extends common { if ($this->isPost()) { $fontId = $this->getInput('fontAddFontId', null, true); $fontName = $this->getInput('fontAddFontName', null, true); - $filePath = $this->getInput('fontAddFile', null, true); + $filePath = $this->getInput('fontAddFile', null); $e = explode ('/', $filePath); $file = $e[count($e) - 1 ]; - // Charger les données des fontes - $files = $this->getData(['fonts', 'files']); - $imported = $this->getData(['fonts', 'imported']); + // Vérifier la validité de fontId si téléchargée de cdnFonts + $data = helper::urlGetContents('https://www.cdnfonts.com/' . $fontId . '.font'); - // Concaténation dans les tableaux existants - $imported = array_merge([$fontId => $fontName], $imported); - $files = array_merge([$fontId => $file], $files); + if ( strpos($data, $fontName) === false + && empty($filePath) + ) { + // Valeurs en sortie + $this->addOutput([ + 'notification' => 'Cette fonte n\'existe pas sur le serveur https://cdnfonts.com
Il faut spécifier un fichier de fonte (format WOFFF) ', + 'redirect' => helper::baseUrl() . 'theme/fontAdd', + 'state' => false + ]); + } else { + // Charger les données des fontes + $files = $this->getData(['fonts', 'files']); + $imported = $this->getData(['fonts', 'imported']); - // Copier la fonte - copy ( self::FILE_DIR . 'source/' . $filePath, self::DATA_DIR . 'fonts/' . $file ); + // Concaténation dans les tableaux existants + $imported = array_merge([$fontId => $fontName], $imported); + $files = array_merge([$fontId => $file], $files); - // Mettre à jour le fichier des fontes - $this->setData(['fonts', 'imported', $imported ]); - $this->setData(['fonts', 'files', $files ]); - // Valeurs en sortie + // Copier la fonte si le nom du fichier est fourni + if (!empty($filePath)) { + copy ( self::FILE_DIR . 'source/' . $filePath, self::DATA_DIR . 'fonts/' . $file ); + } - $this->addOutput([ - 'notification' => 'La fonte a été importée', - 'redirect' => helper::baseUrl() . 'theme/fonts', - 'state' => true - ]); + // Mettre à jour le fichier des fontes + $this->setData(['fonts', 'imported', $imported ]); + $this->setData(['fonts', 'files', $files ]); + + // Valeurs en sortie + $this->addOutput([ + 'notification' => 'La fonte a été importée', + 'redirect' => helper::baseUrl() . 'theme/fonts', + 'state' => true + ]); + } } // Valeurs en sortie $this->addOutput([ @@ -641,7 +657,7 @@ class theme extends common { } // Supprimer les entrées - unset($file[$this->getUrl(2)]); + unset($files[$this->getUrl(2)]); unset($imported[$this->getUrl(2)]); // Mettre à jour le fichier des fontes diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php index 5b42a036..002e3699 100644 --- a/core/module/theme/view/fontAdd/fontAdd.php +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -18,12 +18,12 @@
-

Identification

+

Identité de la fonte

'off', - 'label' => 'Identifiant', + 'label' => 'Identifiant (sans espace ni majuscule)', 'placeholder' => 'perry-gothic' ]); ?> From 34454b72389bf1bda9ecefed87f8d7e59c20fb71 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 9 Feb 2022 10:47:42 +0100 Subject: [PATCH 07/35] Changes --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index ad5cfc38..2b68f7ef 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,7 +8,7 @@ - Modification : - Police de caractères : - Changement de fournisseur, CdnFont remplace Google Font. - - Les polices pourront désormais être téléchargées à partir du site et non du CDN. + - Les polices pourront désormais être téléchargées à partir du site et non du CD grâce à une nouvelle fonctionnalité du thème permet de gérer l'installation des fontes, soit à partir du CDN, soit à partir d'un fichier téléchargé. - Thème / Bannière : ergonomie de l'information sur l'image sélectionnée. - Identifications des éléments du menu, les pages parents prennent comme id CSS leur id, les pages enfants également et pour classe Id de la page parente. From a26f07de0cd1af06b7e48fdcf4b5d2ea62fa85ec Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 9 Feb 2022 12:48:32 +0100 Subject: [PATCH 08/35] bug constructeur de css --- core/core.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/core.php b/core/core.php index 3cd0db36..3cc6edda 100644 --- a/core/core.php +++ b/core/core.php @@ -2305,7 +2305,7 @@ class core extends common { file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { // La police locale est-elle invoquée ? $d = array_search($fontId, $cdnFonts); - if ( $d !== NULL ) { + if ( $d !== false ) { // Chargement de la police demandée dans le thème $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; @@ -2533,7 +2533,7 @@ class core extends common { file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { // La police locale est-elle invoquée ? $d = array_search($fontId, $cdnFonts); - if ( $d !== NULL ) { + if ( $d !== false ) { // Chargement de la police demandée dans le thème $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; From f034ea3b57498d340b92fc6042792b37b78379b3 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 9 Feb 2022 12:56:42 +0100 Subject: [PATCH 09/35] =?UTF-8?q?Autrre=20bug=20de=20d=C3=A9fintiion=20css?= =?UTF-8?q?=20=C3=A0=20v=C3=A9rifier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/core/core.php b/core/core.php index 3cc6edda..99527c2e 100644 --- a/core/core.php +++ b/core/core.php @@ -2293,28 +2293,32 @@ class core extends common { // Lire le fichier et check l'existence des fichiers locaux $localFonts = $this->getData(['fonts', 'files']); - // Validité du format - if (is_array($localFonts && - !empty($localFonts)) - ) { - foreach ($localFonts as $fontId => $fontName) { - // Validité du tableau : - // L'id de la police est présent dans la liste interne - // Le nom de la police fournie correspond à un fichier existant - if ( array_key_exists($fontId, self::$fonts) && - file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { - // La police locale est-elle invoquée ? - $d = array_search($fontId, $cdnFonts); - if ( $d !== false ) { - // Chargement de la police demandée dans le thème - $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); - $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; - $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; - // Supprimer l'élément des fontes chargées en ligne - unset($cdnFonts[$d]); - } - } + // Validité du format + if ( is_array($localFonts) && + !empty($localFonts) + ) { + // Validité du format + if (is_array($localFonts) ) { + foreach ($localFonts as $fontId => $fontName) { + // Validité du tableau : + // L'id de la police est présent dans la liste interne + // Le nom de la police fournie correspond à un fichier existant + if ( array_key_exists($fontId, self::$fonts) && + file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { + // La police locale est-elle invoquée ? + $d = array_search($fontId, $cdnFonts); + if ( $d !== false ) { + // Chargement de la police demandée dans le thème + $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); + $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; + $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; + // Supprimer l'élément des fontes chargées en ligne + unset($cdnFonts[$d]); + } + } + + } } } // Chargement des polices en ligne @@ -2519,6 +2523,7 @@ class core extends common { $cdnFonts = array_unique($cdnFonts); // Lire le fichier et check l'existence des fichiers locaux $localFonts = $this->getData(['fonts', 'files']); + // Validité du format if ( is_array($localFonts) && !empty($localFonts) From 225f38064c04944bccb159515c70654a7f983f2f Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 9 Feb 2022 12:56:59 +0100 Subject: [PATCH 10/35] =?UTF-8?q?Fontes=20employ=C3=A9e=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 31 +++++++++++++++++++++----- core/module/theme/view/fonts/fonts.php | 2 +- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index e29761a9..b9587f1c 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -547,23 +547,44 @@ class theme extends common { * Options des fontes */ public function fonts() { - // Soumission du formulaire - if($this->isPost()) { - } - //Polices trouvées dans la configuration + + // Polices trouvées dans la configuration $fonts = $this->getData(['fonts']); + + // Polices liées au thème + $used = [ + $this->getData (['theme', 'header', 'font']) => 'Bannière', + $this->getData (['theme', 'menu', 'font']) => 'Menu', + $this->getData (['theme', 'title', 'font']) => 'Titre', + $this->getData (['theme', 'text', 'font']) => 'Texte', + $this->getData (['theme', 'footer', 'font']) => 'Pied de page', + $this->getData (['admin', 'fontTitle' ]) => 'Titre (admin)', + $this->getData (['admin', 'fontText' ]) => 'Admin (texte)' + ]; + $fontUsed = []; + foreach (self::$fonts as $fontId => $fontName) { + foreach ($used as $key => $value) { + if ( $key === $fontId) { + $fontUsed[$fontId] = $value . ' '; + } else { + $fontUsed[$fontId] = ''; + } + } + } // Parcourir les fontes installées et construire le tableau pour le formulaire foreach (self::$fonts as $fontId => $fontName) { self::$fontsList [] = [ $fontName, $fontId, + $fontUsed[$fontId], array_key_exists($fontId, $fonts['imported']) ? 'Importée' : '', array_key_exists($fontId, $fonts['files']) ? $fonts['files'][$fontId] : 'CDN Fonts', array_key_exists($fontId, $fonts['imported']) || array_key_exists($fontId, $fonts['files']) ? template::button('themeFontDelete' . $fontId, [ 'class' => 'themeFontDelete buttonRed', 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $fontId . '/' . $_SESSION['csrf'], - 'value' => template::ico('cancel') + 'value' => template::ico('cancel'), + 'disabled' => !empty($fontUsed[$fontId]) ]) : '' ]; diff --git a/core/module/theme/view/fonts/fonts.php b/core/module/theme/view/fonts/fonts.php index 34094a38..d69dad62 100644 --- a/core/module/theme/view/fonts/fonts.php +++ b/core/module/theme/view/fonts/fonts.php @@ -16,7 +16,7 @@
- + \ No newline at end of file From fa4b762d0058721e1295ed7132cd6f3e2aa63608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 15:21:44 +0100 Subject: [PATCH 11/35] =?UTF-8?q?Fontes=20utilis=C3=A9es=20okay=20pour=20t?= =?UTF-8?q?ests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index b9587f1c..ef519def 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -553,26 +553,25 @@ class theme extends common { // Polices liées au thème $used = [ - $this->getData (['theme', 'header', 'font']) => 'Bannière', - $this->getData (['theme', 'menu', 'font']) => 'Menu', - $this->getData (['theme', 'title', 'font']) => 'Titre', - $this->getData (['theme', 'text', 'font']) => 'Texte', - $this->getData (['theme', 'footer', 'font']) => 'Pied de page', - $this->getData (['admin', 'fontTitle' ]) => 'Titre (admin)', - $this->getData (['admin', 'fontText' ]) => 'Admin (texte)' + 'Bannière' => $this->getData (['theme', 'header', 'font']), + 'Menu' => $this->getData (['theme', 'menu', 'font']), + 'Titre ' => $this->getData (['theme', 'title', 'font']), + 'Texte' => $this->getData (['theme', 'text', 'font']), + 'Pied de page' => $this->getData (['theme', 'footer', 'font']), + 'Titre (admin)' => $this->getData (['admin', 'fontTitle' ]), + 'Admin (texte)' => $this->getData (['admin', 'fontText' ]) ]; - $fontUsed = []; - foreach (self::$fonts as $fontId => $fontName) { - foreach ($used as $key => $value) { - if ( $key === $fontId) { - $fontUsed[$fontId] = $value . ' '; - } else { - $fontUsed[$fontId] = ''; - } - } - } + // Parcourir les fontes installées et construire le tableau pour le formulaire foreach (self::$fonts as $fontId => $fontName) { + + // Fontes utilisées par le thème + $fontUsed[$fontId] = ''; + foreach ($used as $key => $value) { + if ( $value === $fontId) { + $fontUsed[$fontId] .= $key . '
'; + } + } self::$fontsList [] = [ $fontName, $fontId, From d7366102483b6245bb7788bfe4ec14dff0ab3a89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 15:32:04 +0100 Subject: [PATCH 12/35] notice effacement d'une page sans module --- core/module/page/page.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/module/page/page.php b/core/module/page/page.php index e4cc020a..4f90fc3d 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -272,7 +272,9 @@ class page extends common { // Effacer le dossier du module $moduleId = $this->getData(['page',$url[0],'moduleId']); $modulesData = helper::getModules(); - if (is_dir($modulesData[$moduleId]['dataDirectory']. $url[0])) { + if ( array_key_exists($moduleId, $modulesData) + && is_dir($modulesData[$moduleId]['dataDirectory'] . $url[0]) + ) { $this->removeDir( $modulesData[$moduleId]['dataDirectory']. $url[0] ); } // Effacer la page From 950396a8a0599f9b9dfc25109321d969b752465f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 15:36:09 +0100 Subject: [PATCH 13/35] changes --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 2b68f7ef..d24180ef 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ - Corrections : - Thème / site : problème d'aperçu du body ; police du thème admin non chargées. - Bugs avec les aperçus des sélecteurs de fontes. + - Notice générée par l'effacement d'une page sans module. - Modification : - Police de caractères : - Changement de fournisseur, CdnFont remplace Google Font. From bc28e72affa4cfc2537c4cb5a9372dd5bbc29574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 15:59:11 +0100 Subject: [PATCH 14/35] Check family name --- core/module/theme/theme.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index ef519def..e1c7a79c 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -603,19 +603,20 @@ class theme extends common { if ($this->isPost()) { $fontId = $this->getInput('fontAddFontId', null, true); $fontName = $this->getInput('fontAddFontName', null, true); - $filePath = $this->getInput('fontAddFile', null); + $filePath = $this->getInput('fontAddFile', null, true); $e = explode ('/', $filePath); $file = $e[count($e) - 1 ]; - // Vérifier la validité de fontId si téléchargée de cdnFonts + // Vérifier l'existence de fontId et validité de family namesi usage en ligne de cdnFonts $data = helper::urlGetContents('https://www.cdnfonts.com/' . $fontId . '.font'); - if ( strpos($data, $fontName) === false + if ( (strpos($data, 'No results found.') >= 0 + || strpos($data, $fontName) === false ) && empty($filePath) ) { // Valeurs en sortie $this->addOutput([ - 'notification' => 'Cette fonte n\'existe pas sur le serveur https://cdnfonts.com
Il faut spécifier un fichier de fonte (format WOFFF) ', + 'notification' => 'Le fichie de police étant absent,
la fonte doit exister sur le serveur https://cdnfonts.com
et le nom de la fonte doit correspondre (family name)
', 'redirect' => helper::baseUrl() . 'theme/fontAdd', 'state' => false ]); From 71fcae697d880e6bd8d1d6aa4804cd1317e4bc3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 16:03:20 +0100 Subject: [PATCH 15/35] core var_dump --- core/core.php | 1 - 1 file changed, 1 deletion(-) diff --git a/core/core.php b/core/core.php index 99527c2e..a4161b22 100644 --- a/core/core.php +++ b/core/core.php @@ -1940,7 +1940,6 @@ class common { $notificationClass = 'notificationSuccess'; } if(common::$inputNotices) { - var_dump(common::$inputNotices); $notification = 'Impossible de soumettre le formulaire, car il contient des erreurs'; $notificationClass = 'notificationError'; } From 2e572a793bcf656931fe0e86bc78c817f70e4921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 16:07:45 +0100 Subject: [PATCH 16/35] retour addform --- core/module/theme/view/fontAdd/fontAdd.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php index 002e3699..13b71a4d 100644 --- a/core/module/theme/view/fontAdd/fontAdd.php +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -3,7 +3,7 @@
'buttonGrey', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/theme/font', + 'href' => helper::baseUrl() . 'theme/fonts', 'ico' => 'left', 'value' => 'Retour' ]); ?> From 98684d3613e7d7f2ef08c36ed4fae826142ef5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 16:10:13 +0100 Subject: [PATCH 17/35] =?UTF-8?q?d=C3=A9calage=20du=20bouton=20dans=20inpu?= =?UTF-8?q?t=20file=20avec=20une=20notice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/class/template.class.php | 12 ++++++------ core/layout/common.css | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core/class/template.class.php b/core/class/template.class.php index 836fd05a..d246b719 100644 --- a/core/class/template.class.php +++ b/core/class/template.class.php @@ -296,12 +296,6 @@ class template { } // Début du wrapper $html = '
'; - // Label - if($attributes['label']) { - $html .= self::label($attributes['id'], $attributes['label'], [ - 'help' => $attributes['help'] - ]); - } // Notice $notice = ''; if(array_key_exists($attributes['id'], common::$inputNotices)) { @@ -309,6 +303,12 @@ class template { $attributes['class'] .= ' notice'; } $html .= self::notice($attributes['id'], $notice); + // Label + if($attributes['label']) { + $html .= self::label($attributes['id'], $attributes['label'], [ + 'help' => $attributes['help'] + ]); + } // Champ caché contenant l'url de la page $html .= self::hidden($attributes['id'], [ 'class' => 'inputFileHidden', diff --git a/core/layout/common.css b/core/layout/common.css index d21cb214..451a10d0 100755 --- a/core/layout/common.css +++ b/core/layout/common.css @@ -339,10 +339,11 @@ td>.col12 { display: inline-block; color: #E74C3C; } -/* Mauvaise position dans les champs File*/ + +/* Mauvaise position dans les champs File .inputFile.notice { display: block; -} +}*/ /* Container */ .container { From 33ba0bef22e1a55e8bbcf89886817ea9b036f926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 16:17:56 +0100 Subject: [PATCH 18/35] Aide fontadd --- core/module/theme/view/fontAdd/fontAdd.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php index 13b71a4d..6af4651b 100644 --- a/core/module/theme/view/fontAdd/fontAdd.php +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -19,6 +19,11 @@

Identité de la fonte

+
+
+ Police utilisée en ligne se connecter sur https://www.cdnfonts.com/ pour récupérer les informations nécessaires.
Sinon, précisez le nom du fichier de fonte au format WOFF. +
+
Date: Wed, 9 Feb 2022 16:19:17 +0100 Subject: [PATCH 19/35] input file pas obligatoire --- core/module/theme/theme.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index e1c7a79c..a700534d 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -603,7 +603,7 @@ class theme extends common { if ($this->isPost()) { $fontId = $this->getInput('fontAddFontId', null, true); $fontName = $this->getInput('fontAddFontName', null, true); - $filePath = $this->getInput('fontAddFile', null, true); + $filePath = $this->getInput('fontAddFile', null); $e = explode ('/', $filePath); $file = $e[count($e) - 1 ]; From 2a8a303de1dae7ff1db2fe65bf01bd0e4dba4481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 9 Feb 2022 16:33:03 +0100 Subject: [PATCH 20/35] =?UTF-8?q?Test=20vir=C3=A9=20en=20attente=20+=20bug?= =?UTF-8?q?=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index a700534d..5b09a03b 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -610,8 +610,8 @@ class theme extends common { // Vérifier l'existence de fontId et validité de family namesi usage en ligne de cdnFonts $data = helper::urlGetContents('https://www.cdnfonts.com/' . $fontId . '.font'); - if ( (strpos($data, 'No results found.') >= 0 - || strpos($data, $fontName) === false ) +/* if ( strpos($data, 'No results found.') >= 0 + //|| strpos($data, $fontName) === false && empty($filePath) ) { // Valeurs en sortie @@ -621,7 +621,7 @@ class theme extends common { 'state' => false ]); } else { - // Charger les données des fontes +*/ // Charger les données des fontes $files = $this->getData(['fonts', 'files']); $imported = $this->getData(['fonts', 'imported']); @@ -636,7 +636,9 @@ class theme extends common { // Mettre à jour le fichier des fontes $this->setData(['fonts', 'imported', $imported ]); - $this->setData(['fonts', 'files', $files ]); + if (!empty($filePath) ) { + $this->setData(['fonts', 'files', $files ]); + } // Valeurs en sortie $this->addOutput([ @@ -644,7 +646,7 @@ class theme extends common { 'redirect' => helper::baseUrl() . 'theme/fonts', 'state' => true ]); - } +// } } // Valeurs en sortie $this->addOutput([ From c0110c7c22c452b26337536a3b4fe113d4c84bc2 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 08:03:52 +0100 Subject: [PATCH 21/35] wwarning suppression de page sans contenu --- core/module/page/page.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/module/page/page.php b/core/module/page/page.php index 4f90fc3d..8f4eb067 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -360,7 +360,9 @@ class page extends common { // Supprime l'ancienne page si l'id a changée if($pageId !== $this->getUrl(2)) { $this->deleteData(['page', $this->getUrl(2)]); - unlink (self::DATA_DIR . self::$i18n . '/content/' . $this->getUrl(2) . '.html'); + if (file_exists(self::DATA_DIR . self::$i18n . '/content/' . $this->getUrl(2) . '.html')) { + unlink (self::DATA_DIR . self::$i18n . '/content/' . $this->getUrl(2) . '.html'); + } } // Traitement des pages spéciales affectées dans la config : if ($this->getUrl(2) === $this->getData(['locale', 'legalPageId']) ) { From 4f9e555e82e0f93c04a8c9b6d51e5742d6d60ee8 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 08:25:23 +0100 Subject: [PATCH 22/35] =?UTF-8?q?Check=20de=20valiait=C3=A9=20sur=20le=20n?= =?UTF-8?q?om=20de=20la=20fonte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 13 +++++++------ core/module/theme/view/fontAdd/fontAdd.php | 10 +--------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 5b09a03b..338d77a5 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -610,18 +610,19 @@ class theme extends common { // Vérifier l'existence de fontId et validité de family namesi usage en ligne de cdnFonts $data = helper::urlGetContents('https://www.cdnfonts.com/' . $fontId . '.font'); -/* if ( strpos($data, 'No results found.') >= 0 - //|| strpos($data, $fontName) === false - && empty($filePath) + if ( $filePath === '' + && strpos($data, $fontName) === false ) { + // Valeurs en sortie $this->addOutput([ - 'notification' => 'Le fichie de police étant absent,
la fonte doit exister sur le serveur https://cdnfonts.com
et le nom de la fonte doit correspondre (family name)
', + 'notification' => 'Erreur de nom ou d\'identifiant', 'redirect' => helper::baseUrl() . 'theme/fontAdd', 'state' => false ]); } else { -*/ // Charger les données des fontes + + // Charger les données des fontes $files = $this->getData(['fonts', 'files']); $imported = $this->getData(['fonts', 'imported']); @@ -646,7 +647,7 @@ class theme extends common { 'redirect' => helper::baseUrl() . 'theme/fonts', 'state' => true ]); -// } + } } // Valeurs en sortie $this->addOutput([ diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php index 6af4651b..62747c7d 100644 --- a/core/module/theme/view/fontAdd/fontAdd.php +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -41,13 +41,6 @@ ]); ?>
-
-
-
-
-
-
-

Source

-
- +
\ No newline at end of file From ce1b69d42bbbf7e1d97b293d221fdb62bc7bc4e5 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 08:29:28 +0100 Subject: [PATCH 23/35] Formatage du code + typo --- core/module/config/view/connect/connect.php | 7 ++----- core/module/page/view/edit/edit.php | 2 +- core/module/theme/theme.php | 3 ++- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index e181571b..a7a5f4f1 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -11,12 +11,9 @@
-
$this->getData(['config', 'connect','captcha']) + 'checked' => $this->getData(['config', 'connect','captcha']) ]); ?> -
-
$this->getData(['config', 'connect', 'captchaStrong']), 'help' => 'Option recommandée pour sécuriser la connexion. S\'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.' @@ -100,7 +97,7 @@ 'Anonymat des adresses IP', 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), - 'help' => 'La réglementation française impose un anonymat de niveau 2' + 'help' => 'La règlementation française impose un anonymat de niveau 2' ]); ?>
diff --git a/core/module/page/view/edit/edit.php b/core/module/page/view/edit/edit.php index dc7625c6..ce91fb07 100644 --- a/core/module/page/view/edit/edit.php +++ b/core/module/page/view/edit/edit.php @@ -59,7 +59,7 @@
'Titre Court', + 'label' => 'Titre court', 'value' => $this->getData(['page', $this->getUrl(2), 'shortTitle']), 'help' => 'Le titre court est affiché dans les menus. Il peut être identique au titre de la page.' ]); ?> diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 338d77a5..6ab3981c 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -616,10 +616,11 @@ class theme extends common { // Valeurs en sortie $this->addOutput([ - 'notification' => 'Erreur de nom ou d\'identifiant', + 'notification' => 'Erreur de nom de fonte ou d\'identifiant', 'redirect' => helper::baseUrl() . 'theme/fontAdd', 'state' => false ]); + } else { // Charger les données des fontes From 77781aa817023f53e76fa8550877afdaf2e4e0e1 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 09:10:21 +0100 Subject: [PATCH 24/35] =?UTF-8?q?Am=C3=A9lioration=20du=20formulaire=20de?= =?UTF-8?q?=20fonte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/view/fontAdd/fontAdd.js.php | 41 +++++++++++++++++++ core/module/theme/view/fontAdd/fontAdd.php | 11 ++++- core/module/theme/view/header/header.js.php | 16 ++++---- 3 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 core/module/theme/view/fontAdd/fontAdd.js.php diff --git a/core/module/theme/view/fontAdd/fontAdd.js.php b/core/module/theme/view/fontAdd/fontAdd.js.php new file mode 100644 index 00000000..dd53c7cf --- /dev/null +++ b/core/module/theme/view/fontAdd/fontAdd.js.php @@ -0,0 +1,41 @@ +/** + * This file is part of Zwii. + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2022, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** + * Option par défaut du sélecteur de mode + */ + $(document).ready(function(){ + $('input[name=fontAddFontImported]').prop('checked', true); + $('#fontAddFileWrapper').hide(); +}); + + +/** + * Mode téléchargement en ligne de la fonte ou installation locale + */ +$("input[name=fontAddFontImported]").on("click", function() { + if( $('input[name=fontAddFontImported]').is(':checked') ){ + $('input[name=fontAddFontFile]').prop('checked', false); + } else { + $('input[name=fontAddFontFile]').prop('checked', true); + } + $('#fontAddFileWrapper').hide(); +}); + +$("input[name=fontAddFontFile]").on("click", function() { + if( $('input[name=fontAddFontFile]').is(':checked') ){ + $('input[name=fontAddFontImported]').prop('checked', false); + } else { + $('input[name=fontAddFontImported]').prop('checked', true); + } + $('#fontAddFileWrapper').show(); +}); diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php index 62747c7d..5b86dbdb 100644 --- a/core/module/theme/view/fontAdd/fontAdd.php +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -20,8 +20,15 @@

Identité de la fonte

-
- Police utilisée en ligne se connecter sur https://www.cdnfonts.com/ pour récupérer les informations nécessaires.
Sinon, précisez le nom du fichier de fonte au format WOFF. +
+ 'Police utilisée en ligne, se connecter sur cdnFonts pour récupérer les informations nécessaires.' + ]); ?> +
+
+ '
Sélectionnez un fichier de fonte au format WOFF.' + ]); ?>
diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index e048c4a7..03ef71df 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -21,14 +21,14 @@ * Aperçu en direct */ $("input, select").on("change", function() { - + var css = ""; // Contenu perso if ($("#themeHeaderFeature").val() == "feature") { - + css = "header{min-height: " + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "; overflow:hidden; background-position:top; background-repeat: no-repeat; line-height:1.15; background-color:unset; background-image:unset; text-align:unset;}"; - + $("#featureContent").appendTo("header").show(); $("#themeHeaderTitle").hide(); @@ -36,7 +36,7 @@ $("input, select").on("change", function() { $("#themeHeaderHeight option:eq(0)").text("Hauteur du contenu personnalisé"); } - + // Couleurs, image, alignement et hauteur de la bannière if ($("#themeHeaderFeature").val() == "wallpaper") { @@ -95,10 +95,10 @@ $("input, select").on("change", function() { css += "background-image:none;"; } css += "line-height:" + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "}"; - + // Taille, couleur, épaisseur et capitalisation du titre de la bannière - css += "header span{font-family:'" + headerFontText + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + ";color:" + $("#themeHeaderTextColor").val() + "}"; + css += "header span{font-family:'" + headerFontText + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + ";color:" + $("#themeHeaderTextColor").val() + "}"; // Cache le titre de la bannière if($("#themeHeaderTextHide").is(":checked")) { @@ -169,9 +169,9 @@ $("input, select").on("change", function() { // Marge dans le site if( $("#themeHeaderMargin").is(":checked") && $("#themeHeaderPosition").val() === "site" - ) { + ) { css += 'header{margin:20px 20px 0 20px !important;}'; - /*} else { + /*} else { css += 'header{margin:0 !important;}';*/ } From dcc0bd6d955868df2e6420dabc6520f23a1e9091 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 09:16:25 +0100 Subject: [PATCH 25/35] =?UTF-8?q?Tri=20alphab=C3=A9tique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 3 +++ core/module/theme/view/fontAdd/fontAdd.php | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/core.php b/core/core.php index a4161b22..1f376082 100644 --- a/core/core.php +++ b/core/core.php @@ -2253,7 +2253,10 @@ class core extends common { if (is_array($fontsImported) && !empty ($fontsImported) ) { + // Fusionner les fonts avec les fontes installées self::$fonts = array_merge(self::$fonts, $fontsImported); + // Tri Alphabétique + sort(self::$fonts); } // Crée le fichier de personnalisation avancée diff --git a/core/module/theme/view/fontAdd/fontAdd.php b/core/module/theme/view/fontAdd/fontAdd.php index 5b86dbdb..8ee65489 100644 --- a/core/module/theme/view/fontAdd/fontAdd.php +++ b/core/module/theme/view/fontAdd/fontAdd.php @@ -22,7 +22,7 @@
'Police utilisée en ligne, se connecter sur cdnFonts pour récupérer les informations nécessaires.' + 'help' => 'Police utilisée en ligne, se connecter sur cdnFonts pour récupérer les informations nécessaires.' ]); ?>
From 53e10841d538a45af82c585f453649b91a5fa2c5 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 09:22:21 +0100 Subject: [PATCH 26/35] Tri des polices bis --- core/core.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core.php b/core/core.php index 1f376082..1caf2ca8 100644 --- a/core/core.php +++ b/core/core.php @@ -2256,7 +2256,7 @@ class core extends common { // Fusionner les fonts avec les fontes installées self::$fonts = array_merge(self::$fonts, $fontsImported); // Tri Alphabétique - sort(self::$fonts); + asort(self::$fonts); } // Crée le fichier de personnalisation avancée From bec2a671e0120dbd291e539d162859c0666e176a Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 09:50:09 +0100 Subject: [PATCH 27/35] guillemet font family --- core/core.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core.php b/core/core.php index 1caf2ca8..8c6f9145 100644 --- a/core/core.php +++ b/core/core.php @@ -2564,7 +2564,7 @@ class core extends common { $colors = helper::colorVariants($this->getData(['admin','backgroundColor'])); $css .= '#site{background-color:' . $colors['normal']. ';}'; $css .= '.row > div {font:' . $this->getData(['admin','fontSize']) . ' "' . self::$fonts[$this->getData(['admin','fontText'])] . '", sans-serif;}'; - $css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . self::$fonts[$this->getData(['admin','fontTitle'])] . ', sans-serif;color:' . $this->getData(['admin','colorTitle' ]) . ';}'; + $css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:"' . self::$fonts[$this->getData(['admin','fontTitle'])] . '", sans-serif;color:' . $this->getData(['admin','colorTitle' ]) . ';}'; // TinyMCE $css .= 'body:not(.editorWysiwyg),span .zwiico-help {color:' . $this->getData(['admin','colorText']) . ';}'; From 155166ea8f1ad8ff70001cac3fde4d3809ccd280 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 10:38:46 +0100 Subject: [PATCH 28/35] Important des fontes en ligne avec link --- core/core.php | 72 ++++++++++++++++++++++++++++++++++++++----- core/layout/blank.php | 1 + core/layout/light.php | 1 + core/layout/main.php | 1 + 4 files changed, 68 insertions(+), 7 deletions(-) diff --git a/core/core.php b/core/core.php index 8c6f9145..0c96d4b7 100644 --- a/core/core.php +++ b/core/core.php @@ -1475,7 +1475,7 @@ class common { if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'right') { $this->showCopyright(); } echo '
'; - // Fermeture du contenaire + // Fermeture du conteneur echo '
'; echo ''; } @@ -1929,6 +1929,61 @@ class common { echo ''; } + /** + * Fontes de caractère à importer depuis cdn fonts + * + */ + public function showFonts() { + $cdnFonts = [ + $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']), + + ]; + // Suppression des polices identiques + $cdnFonts = array_unique($cdnFonts); + + // Lire le fichier et check l'existence des fichiers locaux + $localFonts = $this->getData(['fonts', 'files']); + + // Validité du format + if ( is_array($localFonts) && + !empty($localFonts) + ) { + // Validité du format + if (is_array($localFonts) ) { + foreach ($localFonts as $fontId => $fontName) { + // Validité du tableau : + // L'id de la police est présent dans la liste interne + // Le nom de la police fournie correspond à un fichier existant + if ( array_key_exists($fontId, self::$fonts) && + file_exists(self::DATA_DIR . 'fonts/' . $fontName) + ) { + // La police locale est-elle invoquée oou téléchargée ? + $d = array_search($fontId, $cdnFonts); + if ( $d !== false ) { + // Supprimer l'élément des fontes chargées en ligne + unset($cdnFonts[$d]); + } + } + } + } + } + // Chargement des polices en ligne + $css = ''; + if ($cdnFonts) { + foreach ($cdnFonts as $fontId) { + //$css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; + $css .= ''; + } + echo $css; + } + } + /** @@ -2298,7 +2353,7 @@ class core extends common { // Validité du format if ( is_array($localFonts) && - !empty($localFonts) + !empty($localFonts) ) { // Validité du format if (is_array($localFonts) ) { @@ -2312,7 +2367,7 @@ class core extends common { $d = array_search($fontId, $cdnFonts); if ( $d !== false ) { // Chargement de la police demandée dans le thème - $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); + //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; // Supprimer l'élément des fontes chargées en ligne @@ -2323,12 +2378,14 @@ class core extends common { } } } + /* // Chargement des polices en ligne + /* Désormais dans main.php avec showFonts if ($cdnFonts) { foreach ($cdnFonts as $fontId) { $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; } - } + }*/ // Fond du body $colors = helper::colorVariants($this->getData(['theme', 'body', 'backgroundColor'])); @@ -2528,7 +2585,7 @@ class core extends common { // Validité du format if ( is_array($localFonts) && - !empty($localFonts) + !empty($localFonts) ) { // Validité du format if (is_array($localFonts) ) { @@ -2542,7 +2599,7 @@ class core extends common { $d = array_search($fontId, $cdnFonts); if ( $d !== false ) { // Chargement de la police demandée dans le thème - $formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); + //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; // Supprimer l'élément des fontes chargées en ligne @@ -2555,11 +2612,12 @@ class core extends common { } // Chargement des polices en ligne + /* Désormais dans main.php avec showFonts if ($cdnFonts) { foreach ($cdnFonts as $fontId) { $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; } - } + }*/ $colors = helper::colorVariants($this->getData(['admin','backgroundColor'])); $css .= '#site{background-color:' . $colors['normal']. ';}'; diff --git a/core/layout/blank.php b/core/layout/blank.php index 789b1af6..0146631d 100644 --- a/core/layout/blank.php +++ b/core/layout/blank.php @@ -14,6 +14,7 @@ + showFonts(); ?> showContent(); ?> showScript(); ?> diff --git a/core/layout/light.php b/core/layout/light.php index 833cb19d..403a3a7c 100644 --- a/core/layout/light.php +++ b/core/layout/light.php @@ -14,6 +14,7 @@ + showFonts(); ?> showNotification(); ?> diff --git a/core/layout/main.php b/core/layout/main.php index 7cb5ab98..b72ad402 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -13,6 +13,7 @@ + showFonts(); ?> getData(['page', $this->getUrl(0), 'moduleId']) === 'blog' OR $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'news' ) From 0128e3620d0797e2fea3435f76bd794b6153388f Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 10:44:35 +0100 Subject: [PATCH 29/35] tableau des fontes --- core/module/theme/theme.php | 2 +- core/module/theme/view/fonts/fonts.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 6ab3981c..debf25e7 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -576,7 +576,7 @@ class theme extends common { $fontName, $fontId, $fontUsed[$fontId], - array_key_exists($fontId, $fonts['imported']) ? 'Importée' : '', + //array_key_exists($fontId, $fonts['imported']) ? 'Importée' : '', array_key_exists($fontId, $fonts['files']) ? $fonts['files'][$fontId] : 'CDN Fonts', array_key_exists($fontId, $fonts['imported']) || array_key_exists($fontId, $fonts['files']) ? template::button('themeFontDelete' . $fontId, [ diff --git a/core/module/theme/view/fonts/fonts.php b/core/module/theme/view/fonts/fonts.php index d69dad62..ea71d1bf 100644 --- a/core/module/theme/view/fonts/fonts.php +++ b/core/module/theme/view/fonts/fonts.php @@ -16,7 +16,7 @@
- + \ No newline at end of file From f05e2ae49701718ed972c4d5313cc95cabd410f0 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 13:34:33 +0100 Subject: [PATCH 30/35] needle error --- core/module/theme/theme.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index debf25e7..e4e02ad7 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -601,6 +601,7 @@ class theme extends common { public function fontAdd() { // Soumission du formulaire if ($this->isPost()) { + $fontId = $this->getInput('fontAddFontId', null, true); $fontName = $this->getInput('fontAddFontName', null, true); $filePath = $this->getInput('fontAddFile', null); @@ -611,6 +612,7 @@ class theme extends common { $data = helper::urlGetContents('https://www.cdnfonts.com/' . $fontId . '.font'); if ( $filePath === '' + && $fontName !== '' && strpos($data, $fontName) === false ) { From ef32aa45d2bad9b2f5abbfe54422fa742393fb35 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 14:43:00 +0100 Subject: [PATCH 31/35] getUrlContents --- core/class/helper.class.php | 4 ++-- core/module/addon/addon.php | 8 ++++---- core/module/config/config.php | 4 ++-- core/module/install/install.php | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/class/helper.class.php b/core/class/helper.class.php index 99f33ee2..3c3f7271 100644 --- a/core/class/helper.class.php +++ b/core/class/helper.class.php @@ -53,7 +53,7 @@ class helper { * @return mixed données récupérées */ - public static function urlGetContents ($url) { + public static function getUrlContents ($url) { // Ejecter free.fr if (strpos(self::baseUrl(),'free.fr') > 0 ){ return false; @@ -269,7 +269,7 @@ class helper { * @return string */ public static function getOnlineVersion() { - return (helper::urlGetContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version')); + return (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version')); } diff --git a/core/module/addon/addon.php b/core/module/addon/addon.php index 3c528df4..2aff2f7a 100644 --- a/core/module/addon/addon.php +++ b/core/module/addon/addon.php @@ -246,11 +246,11 @@ class addon extends common { // Récupérer le module en ligne $moduleName = $this->getUrl(2); // Informations sur les module en ligne - $store = json_decode(helper::urlGetContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true); + $store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true); // Url du module à télécharger $moduleFilePath = $store[$moduleName]['file']; // Télécharger le fichier - $moduleData = helper::urlGetContents(self::BASEURL_STORE . self::FILE_DIR . 'source/' . $moduleFilePath); + $moduleData = helper::getUrlContents(self::BASEURL_STORE . self::FILE_DIR . 'source/' . $moduleFilePath); // Extraire de l'arborescence $d = explode('/',$moduleFilePath); $moduleFile = $d[count($d)-1]; @@ -288,7 +288,7 @@ class addon extends common { * Catalogue des modules sur le site ZwiiCMS.fr */ public function store() { - $store = json_decode(helper::urlGetContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true); + $store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true); if ($store) { // Modules installés $infoModules = helper::getModules(); @@ -340,7 +340,7 @@ class addon extends common { * Détail d'un objet du catalogue */ public function item() { - $store = json_decode(helper::urlGetContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true); + $store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true); self::$storeItem = $store [$this->getUrl(2)] ; self::$storeItem ['fileDate'] = mb_detect_encoding(strftime('%d %B %Y',self::$storeItem ['fileDate']), 'UTF-8', true) ? strftime('%d %B %Y', self::$storeItem ['fileDate']) diff --git a/core/module/config/config.php b/core/module/config/config.php index 1a3e66c2..f274265d 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -261,7 +261,7 @@ class config extends common { $site = helper::baseUrl(false); } $success= false; - $googlePagespeedData = helper::urlGetContents('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url='. $site .'&screenshot=true'); + $googlePagespeedData = helper::getUrlContents('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url='. $site .'&screenshot=true'); if ($googlePagespeedData !== false) { $googlePagespeedData = json_decode($googlePagespeedData, true); $data = str_replace('_','/',$googlePagespeedData['lighthouseResult']['audits']['final-screenshot']['details']['data']); @@ -609,7 +609,7 @@ class config extends common { } // Variable de version - self::$onlineVersion = helper::urlGetContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'); + self::$onlineVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'); if (self::$onlineVersion > common::ZWII_VERSION) { self::$updateButtonText = "Mettre à jour" ; } diff --git a/core/module/install/install.php b/core/module/install/install.php index 90f6621d..365defc2 100644 --- a/core/module/install/install.php +++ b/core/module/install/install.php @@ -199,11 +199,11 @@ class install extends common { // Téléchargement case 2: // Téléchargement depuis le serveur de Zwii - //$success = (file_put_contents(self::TEMP_DIR.'update.tar.gz', helper::urlGetContents('https://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz')) !== false); + //$success = (file_put_contents(self::TEMP_DIR.'update.tar.gz', helper::getUrlContents('https://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz')) !== false); // URL sur le git - //$newVersion = helper::urlGetContents('https://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/version'); - file_put_contents(self::TEMP_DIR.'update.tar.gz', helper::urlGetContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz')); - $md5origin = helper::urlGetContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5'); + //$newVersion = helper::getUrlContents('https://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/version'); + file_put_contents(self::TEMP_DIR.'update.tar.gz', helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz')); + $md5origin = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5'); $md5origin = (explode(' ',$md5origin)); $md5target = md5_file(self::TEMP_DIR.'update.tar.gz'); // Valeurs en sortie @@ -291,7 +291,7 @@ class install extends common { */ public function update() { // Nouvelle version - self::$newVersion = helper::urlGetContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'); + self::$newVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'); // Valeurs en sortie $this->addOutput([ 'display' => self::DISPLAY_LAYOUT_LIGHT, From ffd1e3e18ac1d757c1205db641c960d8795e0538 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 10 Feb 2022 14:43:38 +0100 Subject: [PATCH 32/35] getUrlContents --- core/include/update.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/include/update.inc.php b/core/include/update.inc.php index ebdaf896..c0229786 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -241,7 +241,7 @@ if($this->getData(['core', 'dataVersion']) < 10000) { } } // Contrôle des options php.ini pour la mise à jour auto - if (helper::urlGetContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version') === false) { + if (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version') === false) { $this->setData(['config','autoUpdate',false]); } From f0201145888b4ada87d6fcb1067f8568119ebca7 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 11 Feb 2022 11:50:28 +0100 Subject: [PATCH 33/35] Bug import par cdnfonts --- core/core.php | 187 +++++++++++++----------------------------- core/layout/blank.php | 1 - core/layout/light.php | 1 - core/layout/main.php | 1 - 4 files changed, 59 insertions(+), 131 deletions(-) diff --git a/core/core.php b/core/core.php index 0c96d4b7..a044462c 100644 --- a/core/core.php +++ b/core/core.php @@ -1929,63 +1929,6 @@ class common { echo ''; } - /** - * Fontes de caractère à importer depuis cdn fonts - * - */ - public function showFonts() { - $cdnFonts = [ - $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']), - - ]; - // Suppression des polices identiques - $cdnFonts = array_unique($cdnFonts); - - // Lire le fichier et check l'existence des fichiers locaux - $localFonts = $this->getData(['fonts', 'files']); - - // Validité du format - if ( is_array($localFonts) && - !empty($localFonts) - ) { - // Validité du format - if (is_array($localFonts) ) { - foreach ($localFonts as $fontId => $fontName) { - // Validité du tableau : - // L'id de la police est présent dans la liste interne - // Le nom de la police fournie correspond à un fichier existant - if ( array_key_exists($fontId, self::$fonts) && - file_exists(self::DATA_DIR . 'fonts/' . $fontName) - ) { - // La police locale est-elle invoquée oou téléchargée ? - $d = array_search($fontId, $cdnFonts); - if ( $d !== false ) { - // Supprimer l'élément des fontes chargées en ligne - unset($cdnFonts[$d]); - } - } - } - } - } - // Chargement des polices en ligne - $css = ''; - if ($cdnFonts) { - foreach ($cdnFonts as $fontId) { - //$css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; - $css .= ''; - } - echo $css; - } - } - - - /** * Affiche la notification */ @@ -2339,53 +2282,46 @@ class core extends common { * Import des polices de caractères * A partir du CDN ou dans le dossier site/file/source/fonts */ - $cdnFonts = [ $this->getData(['theme', 'text', 'font']), + $fonts = [ $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']) ]; // Suppression des polices identiques - $cdnFonts = array_unique($cdnFonts); - - // Lire le fichier et check l'existence des fichiers locaux + $fonts = array_unique($fonts); + // Lire le fichier des fontes locales $localFonts = $this->getData(['fonts', 'files']); - // Validité du format - if ( is_array($localFonts) && - !empty($localFonts) - ) { - // Validité du format - if (is_array($localFonts) ) { - foreach ($localFonts as $fontId => $fontName) { - // Validité du tableau : - // L'id de la police est présent dans la liste interne - // Le nom de la police fournie correspond à un fichier existant - if ( array_key_exists($fontId, self::$fonts) && - file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { - // La police locale est-elle invoquée ? - $d = array_search($fontId, $cdnFonts); - if ( $d !== false ) { - // Chargement de la police demandée dans le thème - //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); - $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; - $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; - // Supprimer l'élément des fontes chargées en ligne - unset($cdnFonts[$d]); - } - } - - } + /** + * Chargement des polices en ligne + */ + foreach ($fonts as $fontId) { + if (!array_key_exists($fontId, $localFonts) ) { + $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; + // Supprimer l'élément des fontes chargées en ligne + unset($fonts[$fontId]); } } - /* - // Chargement des polices en ligne - /* Désormais dans main.php avec showFonts - if ($cdnFonts) { - foreach ($cdnFonts as $fontId) { - $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; + + /** + * Fontes installées localement + */ + // Validité du format + if ( !empty($localFonts) + ) { + foreach ($localFonts as $fontId => $fontName) { + // Validité du tableau : + if ( array_key_exists($fontId, self::$fonts) && + file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { + // Chargement de la police + //$formatFont = explode('.', 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 $colors = helper::colorVariants($this->getData(['theme', 'body', 'backgroundColor'])); @@ -2575,50 +2511,45 @@ class core extends common { * Import des polices de caractères * A partir du CDN ou dans le dossier site/file/source/fonts */ - $cdnFonts = [ $this->getData(['admin', 'fontText']), + $fonts = [ $this->getData(['admin', 'fontText']), $this->getData(['admin', 'fontTitle']), ]; // Suppression des polices identiques - $cdnFonts = array_unique($cdnFonts); - // Lire le fichier et check l'existence des fichiers locaux + $fonts = array_unique($fonts); + // Lire le fichier des fontes locales $localFonts = $this->getData(['fonts', 'files']); - // Validité du format - if ( is_array($localFonts) && - !empty($localFonts) - ) { - // Validité du format - if (is_array($localFonts) ) { - foreach ($localFonts as $fontId => $fontName) { - // Validité du tableau : - // L'id de la police est présent dans la liste interne - // Le nom de la police fournie correspond à un fichier existant - if ( array_key_exists($fontId, self::$fonts) && - file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { - // La police locale est-elle invoquée ? - $d = array_search($fontId, $cdnFonts); - if ( $d !== false ) { - // Chargement de la police demandée dans le thème - //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); - $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; - $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; - // Supprimer l'élément des fontes chargées en ligne - unset($cdnFonts[$d]); - } - } - - } + /** + * Chargement des polices en ligne + */ + foreach ($fonts as $fontId) { + if (!array_key_exists($fontId, $localFonts) ) { + $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; + // Supprimer l'élément des fontes chargées en ligne + unset($fonts[$fontId]); } } - // Chargement des polices en ligne - /* Désormais dans main.php avec showFonts - if ($cdnFonts) { - foreach ($cdnFonts as $fontId) { - $css .= '@import url("http://fonts.cdnfonts.com/css/' . $fontId . '");'; - } - }*/ + /** + * Fontes installées localement + */ + // Validité du format + if ( !empty($localFonts) + ) { + foreach ($localFonts as $fontId => $fontName) { + // Validité du tableau : + if ( array_key_exists($fontId, self::$fonts) && + file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) { + // Chargement de la police + //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName); + $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";'; + $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}'; + } + } + } + + // Thème Administration $colors = helper::colorVariants($this->getData(['admin','backgroundColor'])); $css .= '#site{background-color:' . $colors['normal']. ';}'; $css .= '.row > div {font:' . $this->getData(['admin','fontSize']) . ' "' . self::$fonts[$this->getData(['admin','fontText'])] . '", sans-serif;}'; diff --git a/core/layout/blank.php b/core/layout/blank.php index 0146631d..789b1af6 100644 --- a/core/layout/blank.php +++ b/core/layout/blank.php @@ -14,7 +14,6 @@ - showFonts(); ?> showContent(); ?> showScript(); ?> diff --git a/core/layout/light.php b/core/layout/light.php index 403a3a7c..833cb19d 100644 --- a/core/layout/light.php +++ b/core/layout/light.php @@ -14,7 +14,6 @@ - showFonts(); ?> showNotification(); ?> diff --git a/core/layout/main.php b/core/layout/main.php index b72ad402..7cb5ab98 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -13,7 +13,6 @@ - showFonts(); ?> getData(['page', $this->getUrl(0), 'moduleId']) === 'blog' OR $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'news' ) From c9d4d8aedacdd8bee38f93522b3b187c011a2c6f Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 11 Feb 2022 14:18:47 +0100 Subject: [PATCH 34/35] Emplacement icone boutons --- core/module/theme/view/index/index.php | 33 +++++++++++++------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/core/module/theme/view/index/index.php b/core/module/theme/view/index/index.php index 5f6621be..e3397280 100644 --- a/core/module/theme/view/index/index.php +++ b/core/module/theme/view/index/index.php @@ -30,7 +30,14 @@
-
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', + 'value' => 'Fontes' + ]); ?> +
+
'sliders', 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', @@ -52,13 +59,6 @@ 'value' => 'Éditeur CSS' ]); ?>
-
- 'code', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', - 'value' => 'Fontes' - ]); ?> -
@@ -82,7 +82,14 @@
-
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', + 'value' => 'Fontes' + ]); ?> +
+
'sliders', 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', @@ -95,7 +102,6 @@ 'href' => helper::baseUrl() . $this->getUrl(0) . '/admin', 'value' => 'Administration' ]); ?> -
'Éditeur CSS' ]); ?>
-
- 'code', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', - 'value' => 'Fontes' - ]); ?> -
From 9a5104f37c5d907fae46053ed2d55dd57ab899ad Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 11 Feb 2022 14:33:05 +0100 Subject: [PATCH 35/35] jeu icone fonte --- core/module/theme/view/index/index.php | 4 ++-- core/vendor/zwiico/css/zwiico-codes.css | 2 ++ core/vendor/zwiico/css/zwiico-embedded.css | 14 ++++++++------ core/vendor/zwiico/css/zwiico-ie7-codes.css | 2 ++ core/vendor/zwiico/css/zwiico-ie7.css | 2 ++ core/vendor/zwiico/css/zwiico.css | 16 +++++++++------- core/vendor/zwiico/font/zwiico.eot | Bin 24312 -> 24880 bytes core/vendor/zwiico/font/zwiico.svg | 4 ++++ core/vendor/zwiico/font/zwiico.ttf | Bin 24152 -> 24720 bytes core/vendor/zwiico/font/zwiico.woff | Bin 15080 -> 15512 bytes core/vendor/zwiico/font/zwiico.woff2 | Bin 12836 -> 13152 bytes 11 files changed, 29 insertions(+), 15 deletions(-) diff --git a/core/module/theme/view/index/index.php b/core/module/theme/view/index/index.php index e3397280..97d1f706 100644 --- a/core/module/theme/view/index/index.php +++ b/core/module/theme/view/index/index.php @@ -32,7 +32,7 @@
'code', + 'ico' => 'font', 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', 'value' => 'Fontes' ]); ?> @@ -84,7 +84,7 @@
'code', + 'ico' => 'font', 'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts', 'value' => 'Fontes' ]); ?> diff --git a/core/vendor/zwiico/css/zwiico-codes.css b/core/vendor/zwiico/css/zwiico-codes.css index 90f637d8..84bf9a4a 100755 --- a/core/vendor/zwiico/css/zwiico-codes.css +++ b/core/vendor/zwiico/css/zwiico-codes.css @@ -24,6 +24,7 @@ .zwiico-eye-off:before { content: '\e815'; } /* '' */ .zwiico-down-open:before { content: '\e816'; } /* '' */ .zwiico-upload:before { content: '\e817'; } /* '' */ +.zwiico-font:before { content: '\e818'; } /* '' */ .zwiico-left-open:before { content: '\e819'; } /* '' */ .zwiico-down-big:before { content: '\e81a'; } /* '' */ .zwiico-cog-alt:before { content: '\e81b'; } /* '' */ @@ -56,6 +57,7 @@ .zwiico-youtube:before { content: '\f167'; } /* '' */ .zwiico-instagram:before { content: '\f16d'; } /* '' */ .zwiico-box:before { content: '\f187'; } /* '' */ +.zwiico-cubes:before { content: '\f1b3'; } /* '' */ .zwiico-file-archive:before { content: '\f1c6'; } /* '' */ .zwiico-sliders:before { content: '\f1de'; } /* '' */ .zwiico-brush:before { content: '\f1fc'; } /* '' */ diff --git a/core/vendor/zwiico/css/zwiico-embedded.css b/core/vendor/zwiico/css/zwiico-embedded.css index f09c2359..7356b707 100755 --- a/core/vendor/zwiico/css/zwiico-embedded.css +++ b/core/vendor/zwiico/css/zwiico-embedded.css @@ -1,15 +1,15 @@ @font-face { font-family: 'zwiico'; - src: url('../font/zwiico.eot?81579449'); - src: url('../font/zwiico.eot?81579449#iefix') format('embedded-opentype'), - url('../font/zwiico.svg?81579449#zwiico') format('svg'); + src: url('../font/zwiico.eot?97047597'); + src: url('../font/zwiico.eot?97047597#iefix') format('embedded-opentype'), + url('../font/zwiico.svg?97047597#zwiico') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'zwiico'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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') format('truetype'); + src: url('data:application/octet-stream;base64,d09GRgABAAAAADyYAA8AAAAAYJAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAARAAAAGB3tVSDY21hcAAAAdgAAAIUAAAFitHcHiJjdnQgAAAD7AAAAAsAAAAOAAAAAGZwZ20AAAP4AAAG7QAADgxiLvl6Z2FzcAAACugAAAAIAAAACAAAABBnbHlmAAAK8AAALHgAAENYnuPgG2hlYWQAADdoAAAAMwAAADYgNG1maGhlYQAAN5wAAAAgAAAAJAgOBKtobXR4AAA3vAAAAHsAAAEE5WD/7GxvY2EAADg4AAAAhAAAAITTmeOObWF4cAAAOLwAAAAgAAAAIAIfD4duYW1lAAA43AAAAYEAAAK1XvCxXHBvc3QAADpgAAABuwAAAn000ReXcHJlcAAAPBwAAAB6AAAAnH62O7Z4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgYW5nnMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDAcUJ36ayBz0P4shinkNw3SgMCOKIiYAg14M+Xic3dS5TltBGMXxv7HZ931fzOasThyyb1DmTajoUkVRFKWhdgmvwTOARMMTIATd14BmXCORczkRXSLR5l79rnyvppjxnDNAO1CWJ1KBtm+U9IvSV30t3X4v03P7vVL6ovc6Sxo3UG1GLRppPx2m43SSTtNFusrVXM8beTvv5N18kI/yWb5uNVrNmxvQeDR+7278ebr81/h7XCXNqc533T/u7p/8+stdjG/TmipaeQeddNGt9fXSRz8DDDLEMCOMMsY4E0wyxTQzzDLHPAssavVVlllhlTXWqfGAhzzisf6np5rFM57T4AUbvOQVr3nDW97xng985BOf2WRLE+i41/r+z6uveJSH/rxtFQmxInWBaaeIkhUpjTYrkhplKxIcFdOOEu2mvSU6TLtMdJr2m+iyItnRbcoA0WPF7KLXlAuiz5QQot+UFWLAlBpi0JQfYsiUJGLYlClixJQuYtSUM2LMlDhi3JQ9YsKUQmLSlEdiypRMYtqUUWLGlFZi1pRbYs6UYGLelGViwZRqYtGUb2LJlHSiaso8sWxKP7Fi6gGxamoEsWbqBrFuaglRM/VFJ4GpOaQ9U4dI+1acRunQ1CvSsalhpBNT10inptaRzk39I12Ymki6NHWSdGVqJ7lq6im5bmosecPUXfK2qcXkHVOfybumZpMPTB0nH5naTj4z9Z58bToBaDVMZwGtprH1G5PU+X54nGNgQAYAAA4AAQB4nK1Xa1sbxxWe1Q2MAQNC2M267ihjUZcdySRxHGIrDtllURwlqcC43XVuu0i4TZNekt7oNb1flD9zVrRPnW/5aXnPzEoBB9ynz1M+6Lwz886c65xZSGhJ4n4UxlJ2H4n5nS5V7j2I6IZL1+LkoRzej6jQSD+bFtOi31f7br1OIiYRqK2RcESQ+E1yNMnkYZMKWtVVvUlFLQdHxeWa8AOqBjJJ/KywHPhZoxhQIdg7lDSrAIJ0QKXe4ahQKOAYqh9crvPsaL7m+JcloPJHVaeKNUWiFx3EoxWnYBSWNBU9qgUR66OVIMgJrhxI+rxHpdUHo2vOXBD2Q6qEUZ2KjXj3rQhkdxhJ6vUwtQk2bTDaiGOZWTYsuoapfCRpndfXmfl5L5KIxjCVNNOLEsxIXpthdJPRzcRN4jh2ES2aDfokdiMSXSbXMXa7dIXRlW76aEH0mfGoLPbjeJDG5HhxnHsQywH8UX7cpLKWsKDUSOHTVNCLaEr5NK18ZABbkiZVTLgRCTnIpvZ9yYvsrmvN518SSdin8lodi4EcyiF0ZevlBiK0EyU9N92NIxXXY0mb9yKsuRyX3JQmTWk6F3gjUbBpnsZQ+QrlovyUCvsPyenDEJpaa9I5LdnaebhVEvuST6DNJGZKsmWsndGjc/MiCP21+qRwzuuThTRrT3E8mBDA9USGQ5VyUk2whcsJIenCyLGVSK1Kt6yKuTO201XsEu6Xrh3fNK+NQ0dzs6IYQour6vEaiviCzgqFkAbpVpMWNKhS0oXgNT4AABmiBR7tYrRg8rWIgxZMUCRi0IdmWgwSOUwkLSJsTVrS3b0oKw224qs0d6AOm1TV3Z2oe89OunXMV838ss7EUnA/ypaWAnJSnxY9vnIoLT+7wD8L+CFnBbkoNnpRxuGDv/4QGYbahbW6wrYxdu06b8FN5pkYnnRgfwezJ5N1RgozIaoK8UJB3Rk5jmOyVdMiE4VwL6Il5cuQ5lF+c4hw4svkP5cuOWJRVIXv+xyBZaw5abY87dGnnvs0wrUCH2teky7qzGF5CfFm+TWdFVk+pbMSS1dnZZaXdVZh+XWdTbG8orNplt/Q2TmWnlbj+FMlQaSVbJHzDt+WJuljiyuTxY/sYvPY4upk8WO7KLWgC96ZfsKpf1tX2c/j/tXhn4RdT8M/lgr+sbwK/1g24B/LVfjH8pvwj+U1+MfyW/CP5Rr8Y9nSsm0K9rqG2kuJRNNzksCkFJewxTW7rum6R9dxH5/BVejIM7Kp0g3Fjf2JDJe9f3ac4my+EnLF0TNrWdmphRGaInv53LHwnMW5oeXzxvLncZrlhF/ViWt7qi08L1b+Jfhv647ayG44Nfb1JuIBB063H5cl3WjSC7p1sd2kjf9GRWH3QX8RKRIrDdmSHW4JCO3d4bCjOughER4+dF28SBuOU1tGhG+hd63QRdBKaKcNQ8tmhU/nA+9g2FJStoc48/ZJmmzZ86ii/DFbUsI9ZXMnOirJsnSPSqvlp2KfO+0MmrYyO9R2QpXg8euacLezr1IpSAaKynhUsVwKUhc44U73+J4UpqH/q23kWEHDNr9YM4HRgvNOUaJsT62giSAZZRRc+Sun4kQ2osFGFPGbd9IvdaEQ2uNYSMyWV/NYqDbC9NJkiWbM+rbqsFLO4p1JCNkZG2kSe1FLtvGgs/X5pGS78lRQpYHR3ePfLjaJp1V7ni3FJf/yMUuCcboS/sB53OVxijfRP1ocxW26GEQ9F2+qbMetbN1Zxr195cTqrts7seqfuvdJOwJNt7wnKdzSdNsbwjauMTh1JhUJbdE6doTGZa7PVRv5FB9ovnWdC1Th+rRw8+z52zqbwVsz3vI/lnTn/1XF7BP3sbZCqzpWL/U4t7ODBnzLG0flVYxue3WVxyX3ZhKCuwhBzV57fI3ghldbdBO3/LUz5rs4zlmu0gvAr2t6EeINjmKIcMttPLzjaL2puaDpDcBv65EQ2wA9AIfBjh45ZmYXwMzcY04HYI85DO4zh8F3mMPgu/oIvTAAioAcg2J95Ni5B0B27i3mOYzeZp5B7zDPoHeZZ9B7rDMESFgng5R1MthnnQz6zHkVYMAcBgfMYfCQOQy+Z+zaAvq+sYvR+8YuRj8wdjH6wNjF6ENjF6MfGrsY/cjYxejHiHF7ksCfmBFtAn5k4SuAH3PQzcjH6Kd4a3POzyxkzs8Nx8k5v8Dmlyan/tKMzI5DC3nHryxk+q9xTk74jYVM+K2FTPgduHcm5/3ejAz9EwuZ/gcLmf5H7MwJf7KQCX+2kAl/AfflyXl/NSND/5uFTP+7hUz/B3bmhH9ayIShhUz4VI/Omy9bqrijUqEY4p8mtMHY92j6gIpXe4fjx7r5BSXaAUEAAAAAAQAB//8AD3icxXwLdFzVee7+93nOmZkzrzNnHpoZjeat0XgkzdOWZHmstyVZlmRhW8bINtiWLTsEHGMIsVUV21wgjU0Jr5CGxFl2kpWkLQQaUpqWrEJT6jQ3JG0hLWnTkDYxWbek996Em/qi4f77nJEfQNLcu9p1PeI893nsvf/H9/3/fyCUkLef5UY4SmSikYHaegE4nvIcXRKBSjyVFmUghOcIP08kAGkrkSTYTUCCKSCax+1yOlS7zapYBJ7IIFtEvQ0KulOMppwVT7EcL8e9cW/RW4Rzv/fmm/Vzb7752osv7rtwYR9HjT3Y8WY9y/YvEELYu/wbd5A+T9KkRvpq6zSgAONEpAIVhSUicFTgFtnLcDxZIkAovuM82+G2Eo4jOwnhyCY9Hkhmk2lJDLclNd0BKkjxWKrsKlW68c28PuNQOh4TJZem+4qFCAVNAjGWWgtxtihVqsVyqaL7QIe9FN9Alr/UPzfX/yVZATB3kyWoJJ4WqUipaK1/2xrSL6m6rl7SQ1Zot+apW1AtPMz1wz39c4pstYh2SYZSqn4HXshTGXKqtf6SojnO6urLDg3Oqjq14AEcAuwUGwM3ZyVx0lpLYWf5U3gQ7sZ5we5txRV2lALrabyYjBfjohhqA68mpuO4YF2tlnGRLjf6wTrt8xYLOueO6hej+kE9Chd9EcCdiO8gbrCdZ9jR13U86n29cVSPsubG+/yU/jW9myRIpNYUCzglnlAY54ASegrw9FEtpGm8GMTRduAwtoPEFqnSOkizRaXQDFW20PG0T6d/7Rh35pznzuFi3MnWziv7Dse5c45bdLZx/rzj3Q0dedaAcG8vv/0ktxPHyEGqZICM1AZbQeAsODmEjhOecijAS4QTKCcsEolQXqIHiICDK5B5AqIIWwmAuJuIIE55I20ePZWKy2KkLVkupdogJoZB03HcKp5SHmVCEvHli4VqLxMfHGIVfF7zfKmyDno5n6ZCLE/xdATgZ4p8UFaMxZneHZ33DFvso7xoESLJ1Vm9Kd4Dxim/O6RENNsrh79+8cWbxTu/+rNnF6dXLlPgNzpn8rfbrVVeSjVF3N6gzdGX1PCEO2Z1isFQZvq2F44ceeEnbMHmB8XCDf+CY+Gvedm+0TumDEA2lYtU9Jvi0dIQihZTFJa3G0JAP7My/ea8Rxt6+CS3HcdXJgtksNa3d3Z8PU/4bgUHuJRpcvIccONE4IVTIuDxU+xRKKUcnCIc5U4RSo/uuH7z1IaRtmws6nFL7BVKqZgKeqGSxHdBOZF0n67hUKZRVkQJfzjuqXI6hXobw2WqhMNdTbVDHthLoxhVGweLKEqVKv6YYOPE+FC4fI2bSXggArR7+o5puuXIFgjJ0n7F6smIgmPSLkkbA0GLxDuPyTZnk2+T6BSHdF6QM4pD3of6qQj7ZdWXNNvKG/1Bi8y5jkk2cIR8mwSHNKLxvMVsrMBc98zM0ZmZO9h5Z8TbVBBV0TsJQo9dHg85FWneYusRxFpEUEVbwRFqcoBNMtoGgtFVkk3SJq9qau0WhP5Qo2nQCTacA96Yg430bSKiXQ6g9t1dw+mhQlhXJTTPARxowqFBIvz42BPuyW21NBGogGPPUZwFwrFJAXKLCMDzsBVXwO8iPPCTTWhV3tWSnHp3w9mam5CWqN/ndFhkfA1Rk0Rfm6+altCgQwkVA0SvhooBlbQP4mVABU+bqv6NwoniCOy0CXz927xd4KGdi1ysd1zkNmo3XLxB69ZPaFLxRLFnmIo2vv4dHpeQ52+9WG9/HR4Le294fYfXe0Jv2EOU7y/TITYKNV0AZnzIZdvj09ycGGhLMqmxgGl48H0KaLw17gs7rBGl/t36d60h6w1WKzyOa1wc3IE61lp/RVHYeXhcUeo3WkPsMYbtvUiPExeJkSIZqvVbKeWpHa3t1XYFR44s4qtRAos4LpQX0byAIMAsDrmwmwggTPn0hOb168wLQSrN7EYeyqWqKKGKVVAZpBiOHaoDCnexUBFwaPlogkl4JQe8T+fOXrcUe+ClB2JL1439I/Cv1Z9xWof2OHXnQIfVCX9rnaj/ov539V9MWK0TIEMK5AkrdJ1c39U//yC9/0B/1/qTh++5BzZg2z2DVqfT2jHg/EuP5zcfe+w3PSlt6TH6+KJmyti/cWe5adRzF/rcdWRDbagHJNmCGswsqSzJpywgcdIpInI8J/JLeA3lZ9EJ4ejjKBwgPE934iG6ad3aRFKPuZNr/G5FbG5LoulEfUclvrzBbGfDCBVbfHphHTBTpJtOI8UU2vBZBR3lq0AvaBGN+oP+j2hRN9VD/qGo/tY3DJMF3FjLlpZx4PTolxX3JSWiXHJZFN8ZXT2j6nDGv8dhXEg1x8rGbz1luLan9Oh4FP8g43NeslovOX3eS+h+0XGjzXv77bf/jQ+gzXOTVpKrtSKsQM1gXg4QaxByEuef8luvdDjeFa+UBbGpjcm9CvGWWB7QHUARe5X2tsREB02nqg3YEWZ95QPuP/JvSS2f9YTA9VX/liTd6Yl8rd5RPhz/KgIdGC0+VRyF9tIIrHNpfx/KqDFj+fvbS61/z0kCpf7i6GjRPcpUQsT3XeDbce5cpEC60QtuQZP//tqhTSqKKYy7wGK1nCJW2XrKCTKVTzmA6buELhBQQJdsaMtF9IUowDz+IariT6oGxJhVGcTYzYSeTM3dsH12y8z05NjohuH+vnW9XWsCXi1QjXtanG6cZTABRwlRFFQLVRRp0MQ4m+RSr8CgVS8w012I8D48EUuVKgUdmCr0Ul1gkCWVRg1Io3ftBV8hfbnJ2PausVU1GOSzfS2pJEdPTPfX/QOTwNuc0VRXi5jIj0wOBVqdcmx1KupUYfnrzBofnYF7F59YoseevhP6e/Nja7av4pLJloEMPzjcOD/HDeRyf6YHwe51TtSv75uY6Ius7ltdSun+UJDqzqBC9VRpdV+InjEtfP2ns4v0zi/fIZ78q7Y8DHDrJ5xeu98PjdOmfYJ5eozYia+mMaiG9gmXaFXRPHkM9+vSViAR69xeLWq5pCiXrCE/3Va3qboVN/E/w95xOK9Pog16Hm3+GrKB1Gprm9w4IdRDTHSDSB0Vb2nF/Ai4JyAINow3PpvfyWz3pvLaVYFsK4OGSRdzrypFxIu+FJ1oGmEvgoCKp4yvxGCBKGnoQCM8ql4vh54VVdVlqiqTXibO3Fm396HZUKKniQZ7Y+FtD3vdNpGroB+kHMeLb13Arc0Hj/BRd9Rvo9ZgRIsIRw5FSsOl5FsXEmjuklwlWbLCFzXnB0b9wQgNRvTRDzi1+gy6RIVOq6qAWM0mzq2f2cGFVA0P6rYI3THjny4vnzXQNt2ZLJVWsAm9wNmIl0RIshZj1vYUmiMeRxyJyynDN7Cx9/hcLl/BGAJTJsslxGp6AaWR43BC8lBBf3phqLOe6BxS/NneVRsujGb7UiH5DAoQf9cXTw72bNvW0zGzpScDIyOp3pkt8LVti4aArWCk69FeJMgwuaG2vT9JRUs7CKIPOIT4yKLGiUUWkREtodIhVxDoEo/jJVKkMMB8N04iulVBFg+wHW6WUZjdzAtNDQ2mkslKMlXWEsyWguZVGTdh2MggKMyiIIhiOncZCnnQvDIMhVgpxchNA1JVywwyGShJ58YS//SxqUd7RpCwoNFjrGNjZk919K606OdtCD1VzWkenb5lDA/6BNv7cYISP/rY1GPsIj+CbHj42d41I1bjcqQ7GxNZGO1VVttt8JXGkY3mvsg3Wq7wugfonxEn6ST5Wls+lfR7kTfKwNlQVeg4jw6FM3jOKcrcejYTj7W4NAFdO1MeyaCROAAuC+hViRkd5u0RHqYqVYNhlFfMLAJBzo206gwjVrAef8digkQlob5YX5TsQpynAvy2u8NzjwG27xQhU/85Nn35ZV0FB8j1X0Cilfm3vvqfYNNWURVgwuG49RBD5z/cxzsbOGGJ/oKrEStpJm3kQ3/AGbBk7AkP4rBVRBJ4XjqM/WYqijwVTuIlgsQJ8wiXmRPBFU9vZF5kuqmWZ+0FCX3rr3XBbM3qchfcq4NeF6MsHj1a5VTKdBvlAYkLMm8mImhqcEB8UjEPKAYOKKJ23wmfurNC++5+8OQAhS/NLf1j/cV/XJrL6h07Sm7bzI6ge5+uLMzUpuHC0FA9qOay2ZzKud2jMaVrerpLiY26O4LBT90cdS72mXaP9iDvUN/D7pU1w+41CGHKtCK0W2kYOhV+hp76L1Qr88JMGE3e+1HuIteKgCpcCwoAGwxYylH0jEeZwyOiy8XjXcuuFleLUOYu1tP1r+2if7Fc/eY3TRl7wrCbSTJG1tV6NoRwLNehorUyIzWu4JSOFYBuaLwjRxhXoYbW0d0MC0/11Xp74rE4jyAXNKZwadEQtVQZO1BeRytStZdWcaBLBtXzaQzMIdht5gwiw0yriBehM2M2NF1KR4BzLzx9sKMwdJ23CZEu8lOe4wCRvsoPTsDC0y8/vfDy5IBgk5ssvICkiipSSNsyVOh45Jaoa/u5vsFxsI/MwPmNJ8ctnT6BVyRm5jkRbxIR/G5n5kj/xMnx8ZPf6z+aVnWlxcoJItpkWQFe8HVaRrlCe+nu0bZs+g7Gft9+HsfnSWIhQdKLeGEr2VqbKTVRwm8WEe5N96P0Tfa1pmVGkHmT3uGwMslGkWxgBQ7/FnHITjLwyM8iamAmiydT42OefCChhSVmb3GQqgzr6u8CulXNK1KUChwntMdsMBukDg1U0eBzku7BgfXoPo25LYgbPDBdxfHWodLWsRoQEs/BwlVw+EL3T7pDgiINWAKTdxes1i1vPVIoNAsKp1oTVrB4t234BI9Cl5753rHW218cXH9DvHxj1HpgU3xhLQPK98P81TD5Nh4O1LcfKFjSoiJlE3dsdGXdJx5VKhZR1EQQ6ssTS03gD8x5PIlVuxZGlZMH9tTWJW6seEwZ/jFylVaTq9gNnUDxbSiF5jO4CqMp6QYY8FnADI1wX6jfiEAWiYj1BlxDBjLWkG2HFc7Ub0Lm8gkkKjus1vp38bB1ByMrJj88y+UN7N5KaoytlEESV7C7RbSckhm1PkUMAM+A+9b3Au5re+LFeKxwBbinVBpB0Lay9jYQHU6grxgBFvdgIJ0TjbCCZMSacGFGevRfgdvfsFXiZ2IV+xuI2y3+M5rjDNrdMz6Py4Dw7jB6HnfUzQdtKxv3PsWCULiA5kymOQLTegOu51wMP7lIAw8c4D6BOLiDrCXDtYECoIcFIjLChhyZp0uEihxF4WXhHmZeBYT2AneAMJGeJSjsu3EDpnq6Eu7WUNzJJFhoMXSZUbZeiUEiPl1iTjWOCALhg8+lRQDKKi9puq9Q4T5R/4WDu+PZnQ/Ouf35zEB+Op8tFPzBrO6Gz2/dov5MHF88vW3g8KGJLKVq/ecth3ZsL8DkuvmlY5nS7V0nd2UGStmorik2hBC86HTHvIu9m7cvDUVBzdUOj9T31yr7YO2CR3fqtfbeGtxsytrX6KPcAMoa2l94B+70MftrobphgdMNUswEjZ6uvwKtinIDWmImbUh/I8oNCv088uRXjE0FPskk8HFDEo3nfIs7gTgnQqK1sN9BjQehrWCgq/E4b9lnRADNQOqKcDeDy+RzXpcZFeBOeOsP6V248HpbcX0uGxkOZ89r3XqrF+6KaPUHvV44ZOx6z8G94SzkQvXbz7HGOFnk7cPIdzagvLtJE7mTfJn8d/I7tY+98beUVxduoIL80ldvQa/5J1/81G3T44PxsAXIU4/XkAt1raIifWiJWjlp/MevUnX0LrBuUEC2CBZZWEJJkagoLaEf4y0qfwBBG7FsJQLTXgH1hMWYZ23YVYkDaZ5wVqvhM6y7iZWzTv3zD//865//3Ifve9+hPTduny0V2rIeTdM8bgcLypZSMZGZPgFVCd0FbnHsUAQ1SLo2CvaeQbDylRhYw6P/6hiYVzPuyEJgqJl4O50t4+zesbQKknlLvAXeDS/GHbylgQ19eHPjBux9XFdfi2rArv01L4WfNWjW7+ZW5yDblYPG+rsyYhibp5nnbQNOoebVRYm37xcVu8fXx9vFSV5IyHbpOkGWhS2S1WyniGLN4xcljjUEbLlesAtTvN8l28XrUGv3bRaVEB0AwRu22qxSjkN2FlakzZslJcyVnMBnZZcr5ONpPw1Z8HCjdVY2WvO/svFKfO+H4RzNNIezWTqLi+5s9pvz+C6qx9eUFG28q48vWMWeJruML2Qr8PyYQxDknM2Ppl+W9guXWwpObKnIPUGjpbWTteTFiNfe5LFRuf6tCYvsUNeplGaakgDWEmTQTqxTHbJlwmJx2tmZiKWEQpjxQZqdsjsttIjnzKvS7JStlDYvsuBF8uWLrADpyxfJpt14kjtBf2zqs1OiSD7GjTAgIm8jjAtHfd5yQ59NAOcy7XzZJV0TYUN9btW7tfOZ5uFI9pzWo2VRfw9qPbjwQimk4+65+u3hBKRCcC+qcdbbzU4xI2Dw3AXEe9PEgRi6m9xXc8QRtbQBFYkFQOIQTdsQTbcTtNUCfxjVXuBlYZ6Bb0Qh82gQ0NagQgICREZ8mTcDuqmp1mFewS39upfM1mzllpTmKVd8cQt6QMFVSqHHE70sP8SIsqvhAdGc+YzgTrxcShnE2cXyAIyZXGHKNnH5LOMKdKekjJSSV9HXl0cUefksUmWbuH27wYrxaGUt3cmamyfoXtbePAGlJ7dvN1qzG45cocDk6pydjaRqcR59OlkJ6BpECo4CuZKVE67OykGLt+VyNg4+X5fhF1cl4+7ftxJzPU8fRY6NWNwBl00+uYJlNIZl3mnwTSfDnXfWo86cs/6TRg4HbjaSOFTX8YTDAbqZ0zkP72dJnRUsg9jdRgKkSLaTsdrI7PTEME9lO/aMo+MWkGQEMSyQxcPlwDVaZQH7LYiigBZbYBkdQZy6biYeHqvG3G0hjwFoEMvnuV7EMsLlLR/OcMwwssyraxHOjH2gKealWJ43rR3+hxYOzZwPzbBh4WCvGssnbNQZLUTccNNVO9sm1vu2ZHalr/P3jUOiMj2an8uPTq+OLcb00ZmFLYW2kR0T412e+LgjtHb72untm0e7dnSHHeNf0PMZmihkSjE+m/Nfs9M/ZxNF21x/50hORysRzIw/cGSwrTem8cAr/tjqxOCRk7OrCrU1uXbNnc/CmlrnqtkG156lLxA/YsLJ2kYby1mOt+DEjREODTsnMkCEIImhegERLQIjhPoE+afEfKE4j2PKG+PJYkkCvymXzKY9elxjdPPqVOnlFCNLlbKQkRFvSKdYENSHWB/1JYVmo5SqoM1oHNTpQyxhGtEaSE6LsIzpC3P9X5LwRVfSqyxA/rSoMOq3kn+FuffOmf5B/Y6rcqyVBNyDV6Pc8I0jcyt5ZcowjIS2JltLC6g6RrIQh4IilQEwqAwDgjxMxT3JisfJAkeelrLhuoVGPMywAKzHZoxafwrCzNvBS1F9+XUD47oe/MuHqRs3zx/qnqGTa8/W/8QIPUMfothD+x58cN+hiBE/WOA+grbPRxJkFVlTq7AkNs81As2IRqkALGXJ88Ism4jdbCKmAv5cWybdHPEnAokmr5FVY67aTJixyaiYuTD0/zEVEKIWeqGUZ0TVDKtyH+ntmV948+C+tb3Dvesntz69ddP63uF61+Btg4O33XfbwMBtenm8jH8QuX3vTV3d3V037b19+59v3laoVArbNv85FAawmdm2nsKGaI44g3f3czaUGivKHIucowXhCSDFIALl0f4i/6YomZTbzdKDU8Vii7vFZaStSwVNirmMJRipyQgYphZyPzl6BP/qf92To7fmemgtu3wGV4/c9hOoC7iA32vrgd6Z3t4Ve/gk+hIrMqEq6amtsVIqCkgCeCQBIACLeosCy2GIKwlKnjJGxBu2LOHJxOJpv26EUzSp4ezSrpQx0cbcMy5AmcUwTT0baIZ+ENGZOOiphCIn0FbHEetwJdVxx5bYUGEyffBRxaLq4LJFT8737B/ydg01deqyQ6PPZ7zLaw3bTp/3ZiLZbF99q+qU1vsj/ikBne4nXXbZ2R9tsfrVoE0z+mj4y7OcHW1+CynU2tHYEhXpHHYR7eHdzIjiqB8gwHFGHooNNnBTvjiiUSNLgZKAaLQXwAhGGz3q5SMUebZPpyceeOkB/INIrkt7bs+HJh/YX6M9h06fO32oBwafQ3Q+/wB9+MKj4m/VHwtnvc8N9i7c/+nTN3fxffse3vihPc95mRygz/gWfYZ0kWEywypJcg6cfRgX0Z1wyLlYBp6nAn9AYlUddFZibng308Opnm4g01PjY33ru4d7hiNh0gVdsuGzWGZ35dcMknj1zxD7lV87VCtX/zym7Jt6UDUy9GDGbeBiqdTRnm1NxMMhXVNtFotN1fRQOJ5ozbZ3lPaX242TkSbflZORWKK1rb29XKrdXKvdvHTz+trNX4x0rukMh3ERoc847AFftCkebmkKaW6Hw62Fgi3heCiqB+wOPKdHQ3guuHKuCc81RX14bvmP17O7GYufhjtDIXa7SCcOpfD2JZzv17ltaLHWkuvJB8nHSH+tdhAE7kEWExy/OucuMJFGI07RiDOVu8pmPHD/0uLRI/v3jW3obBdxSKudcRZ0YREqX8GLpoKlzUWdVcWIqXSs7OksV4wcAJ7ysrBWXDRaxBgNqSY7i7phYHyI4NMxY9yN4TfMu6ezo9NINmD7VDs1HmKoig85ILCT8Vg63ygLaUxqlQEGpmB5sHpE1RWlFp5OYgclKyfbPJw0yVs4uMMbCOv9j04IQhRkPhNUizsznMxt4oGjE+APOiOrEV6Iwj6eVS0JFrFjVqLNYBHeFC02peVAP69QpEUc72yxjwU5+UZBrI9GIrHAxo908fw0PkKz6ba5BQsXZjJL7/f3hMceHeaRPXajL3G2aoX5DllYzaHhoL3gcWvWVDNiEmEXeg1K5bYWSruowvepbluwdPe4IAEIvOJRvcrcat6yA6dm+WIE53zo1hTLKM/xMlWa7BvmZRCF+mGOt6wrcxa+mwLnlFSxXZR3YAto1AP9L+4exEbtZGNtNJ/LRikinQBiZd1NOR7xPeXHGe45ZUbsjIIh08iZgI0Y5oCF6YBMJXQ97opljLS0iCRU5dJGxJJF4szVWqSTqCos4Gb4lIKvUhWlCndPspzdcsfndj9y3ONfvLF7h9vj8PvXTadyyVxg4Gu3CAujm8prK97uEr25kvZtuP/uPTU6RTfCUIUT7Tf2US8NTOzKbt4jeLWx/bDGFq0lxEb/nqQ+9IUaKSJ2ByIyOkK5uxnlB5HMC2DgdYFhgZ042ojY4y7852kxeoHoWwxDUYq78FcuGmFG6tvaETunn/7C6dNHdk9zYx/NZBbO17fB587fuf8wMWKhJvdoJjGSRMTZQ26pvS+Ozw6DhaSjKEIc40Qi4cR5G76iRSAWhoskXkD+wBNF5pV5tMTUKtN5O+AkWLfiygo7Ce5sKpWAlHpKPd1rKuWO9nyuNZNMxFqCPrQnIkF+rpp43LcCK8oNbMG0yKzXqhQdUASp6KuWzbIuF0KRCrjiRqGXi/uSgTYM0FH/Ni505z85Kjor5Uq1DH/2s/WPf/az73vi5YjvdYjoNPVKxHeRHrtc8/OpqA636xXHPzn1qP6M7/bPwvHP/ukTr7P6r/rHz+iV+gQ9cRHxSv2xlZqI7YgnGU9rJ9VaKYOyJ7PIMBohNOnItRjFQtFlachry49SZfwVjRzcVdl/owTpqpIkX2M/fvX+rOZ866cGSORcDh1+xd6eYWPTWIJzBB2u5jCWoA6zsrxhdgFzTwrL8aMPtTb6so5sYjlz8hvkDPkkubN2+72/eWD3mtWdkiR+8NYN6wMuEXHLVGuLRQYJCEqEx2mjouQR5112KqkyIhqJzjsslFN4ynJ681aBgtsNW9ka3DuJG9ybHv/4wx/9yIdPnTj+ods+8L6De2+64frrNm8cSzX+xTVGURp1Z1KjrmwtXLsvvKMuDcq/+vwva//Lzq88b2W/2mC8jNWyyYKIIj9lwJWnGFe9vAlhRVo5Uv/hLznBLv4S28ZF/bX3Pn5lgTx32W2S4zeSpStFcf9wSFIUiS2+daVQ7g8ub37r1z39D5ePPXuZaiNBN/DV39Ae+mOikjCJ16KNjNbVlrQR7Cylril3TJljlDaGjJWAmHHwdyS7NEfdhsDPZsS6lf/pUFjqS4mgyL5opE2N3QbOe5J73cj/ryaralkWz+fe8SINk27qWLWUSnQV+UadgZm2N5w0ZaTWhEUMwjrAKAIw4onMa7NElhmzuNhI0weaL4xHUwNNNNSXad75TNRfaf1OqWyLRezUFnFF7DHxo7vc8R7It3EVbP71+qAR24A/atLvrfqDIQiGfAPH9Odyk+EH4mmL2waK4pZD3N4+1TedaOsqNXKnf4n89G3cUkmWjNaGYwjRYVyyINMTZBCWRFQmgdzNbIrMIQvCY/IskWVWWSULU4S0pluioSZdczntzKByhHMpoq/Ngx6garJQo4gEd0tmKtzriqOMp4veOJL8gv78V17oykN+ddeO1fTDz+Q74nm7+BWAr4DVn+qJ7TwCP19+hbZ+obVSma5U6rX685Dp7kuFXaH6N75/3/mmSXcw6oTFlZqhDo7xniKrV84CiJ1xgTNMoygwer3Eomosvc/yDqzyhtUr80YImdFrjt8Uz1R0jXGLcJuhhpd1E19dQ0kqoEQJjYlFUWOTZoYlWEiCVTAo8nFDto/LivCC4MT/YO+x7ctn5x+EiT743NGt97dkyt0zvpE5GJeVF5j8v6CwZsIL4tHZY/DA/pFjEf/Rz904GZ/pbou5jq7wjSt9G6z1ZdE7dsaxN3Z0wRzrHhFEsmTkk7C/S4362gPIrXi6FYWWdY+y7pW1eFIzu4dyF3MwGtINl02dUf72K7rX6NNVvfyl3btFNnvlWOnlx96ze0wG/5DX6bOIORJkDatrzruMvIaZ0jBKEMqlTNrnZmplFBdelUJhZcwacCoYkNjTCyzivlJ8eLnqmVUgwjZW1Vl/iyVUBScfEsVXXxVh4CWqijFZhG9TmxSXZDiELVQxJAivvioIIdzE1oO4C4LAttF94sXfe1VU6cRyuyRzFs4m05fwBgpV62fq/9u86NXvYWt8RP0twWniqn9GX7eZ7IF7xp5QJrfV9Il+apGasIedaTtH0aGV8LXHmsaesOJZ90R/iROuOd30yy6ZnR17woLXrCeSRTqF6MjCgnACyzdaGcVWQOFgCeWCJR2XWGkZsSrEOksUfC8FDhCrleFRK5lqMl9t8OobyYhiZVFGvv5/fzPWk7VEEqRTFvh/fKP/gF7Nzs7W3DftntuxeTqQjQXbWlfHYzYjFNkIJKDwS964SiWjKolWDTuFB1n+28i7pJmNjpVdPh0pMOLySrmUp6gbyKSQliJpNwoqWQrJq7EGvZSlZM8Wcr5MMKX1Iu7wDPX443l30El7c+19botHoQFvrrJZ0HkLKBaNbq7kvAGnrtK+jlwPOn6d5ofuCiJvsXsCAVs0lPPnC/+yqkfTtUF9i5dDdgORqJYKZny5QmmVP6dGnLZAwGNn6BxoN6VU1fwBezSY968qgfEmCT0aAScCd7l5prxKCzp1Z1+jtnnBqDvliIfEyTD5LzWbV6ASDdsZpBo3hSJnteAhjpMOK0j6kNfJ9AD7CgKNKewnRBTJVlYXspOVhmxqqq0ym1OJW/o12uMEDQ2s7+3uKiYrCMMSLiebIF+Lq6X6DnD0zo8CVsCR+UXJ5cKjlW8tjMDgMOd+641XFDnBzBAu4IuKHGfbuHglF3rrjXA2Gx4pJRPJ0suVRDxZgeFwdhPtOWikDq5d5JbLrDX9RjhbYYClYi6zTNLYOI7iOFoQ0frQm3ZjF3eSO8hJ8iD5DP1mLXH+7MnFDwm691Fo0jsBLEiPYUtvTzSEtttdyVKJiOOmLt+K7jsSPNWMDcN6U3iJGSGLwFuWPHYrh8pkucUhY3ObTTqciLdwEeLVI94DMUCeEA7o4QMkoCLlDQjzhkdwsw9z3C6FEslNDmhOaiM+v823wLZs/huJ3+afbuj+cfPBiThtiXgjLd6la17BLvD2JQ/YLYL9Fitc+x7kP+YlmM2YN1/i3Z1+R1+bw1xTQG/6dx7ksMmChM+SfCs7kn838Ut+ZqLU/z+DXTv87z0TFv+jHzrLDOHQQw899JmHPnPu05/65Mc/9sjDD/z2ffeeuOv4sTs/+IHD8/v27tk5d/32zdNjo0OD/evXoO4VCx3trZlEvDncFGQ03+V2x2NJZjy9iJLSZZaPYQm4QrKI1Ljo6qZIio16orUQZ8YQ8VK5lE7FpHLcVSwbxhNJtGFV1zItZaeYMrNSUMTG2DiGewUwPiARo0aAymlErqJGoAuKaKrLLMpVbDby6rFGGhwtc9UVLzeeXfSyR5VpRLfbbHb9j4uF5X/u+b3u6tlCweVQAAqCVIr8q6B0+QuFQFNEEb5aBN4d3OPQx3SHU5/QFAr13+3ogN9W5UJ0X/3G+WhBcjikQnQeHt/XUpDU5b9a079aDnqdPemfO714FV7qdf5RMRIKyHyRKg7X7xxN2j5nSwUCqZlSqf6noP2Vz0rd3/i7kN0bK9/cqjZHPlg/3dTc7GiXwoKW6lyT84ZC3tyunDcccTgEGrgtnb4tXT95otaSx1nkcrFekHGbs1p53Kb933/kkezGNe0fTe/Oa+Gwd9XuVewG+frrzXGvPfy9H9j8f0PM+MqT3Kzx/ZCLBMkMeR+5qbbLDZyAREahkqQcJnarSkXBLhphYSLwBxgsA1aZhMKlAD1gQWFEWZxla8m2i9gk22S0aWHv3Oz01NqerjWr0Sk2zUQ3ezTPVQUXxjdG1UaJedUs8y3oyVgbCwWzGVapLuJPY6AN57egV/CHs83+aKqCv5Lx1VEeaYTYEIrYu4Ti8jdGY0tfvosuPntsXSQXotFMrP4jPt2tDeRdoaxNlHnK/omKLRtydvRlx5XRXK1kD+WUK6es2bAzP5SahM9zwtIHCvXCkSWBw80jnUA6jyyK3EotQvf17EGL9K77vJFINhLZx4uyld13IDUpTqYG/JlQ1ioqPPsnU+U9T9U/vdRp3F9cvM24/8q2gYmf5P4M58xGQiRHumurkywWyngmy6I0QD5Ll12J+Vzz3WUZ/yUKZlqH5f1wJlgWMHmVu2Rsc6WerFpuVIXu1Jyn2Yca9tMOHdbr6ltvsKAN51b1uOZ46zMGd+a24+outskY8weXL7Im1I/L/3aGbbIFIRLzh/xzBq6QCIvyeNAr1lhccW1Hi0/3Nj5XtSoWWRIFDnG+/9rPiaqVVLI5wol6m1AtS+lqWoLGOr2ybxbusAyKuVr5QM38Sq3QbFThshTc3pdfTrz22g+49bj+wQ9e8+PqzTff5K7TPJfUhFoHDlf2Sx4N/Nr/8Hsu2SP2S5r/f2j+tQef2LFu1+7d9U83Nvp3PLRj3YGFhfrR17WY5bgs/wYALo9bYtrr3oS8//t6Qj4oigctMd/398sJgmiA4YLZq8YhjtigSkbJZvhwzZoAYoPxAXDDmOn6d9nxCNrvwzgYNnqLD5EzDo+05PJTyS1K7kViUcFGLLZ5L/vejAN+XtEpZwUcQxGdAPsOWDsQBA9xOjzOAwFwyLJjK64c8k4iO+RNTeYXaruveQ4s/ic8qHZj4xlMVv+THoI+bWB8rK3NZpNlHrHs5KaxzeObNwwPDfaubau2MaxeLHTmc6lkSySg2xw2VululVHqeInHVzECFk2syhgdmK8cDzfW3mQEvFdlmllUyYdwkuVYPC6zzhI9UYsLfOb3ZGmWiCwXjY97CxXT+MHe4TMj+Af/1alHfMtu84upn+kVx+h3BOn3xa+zGPHwSP01eF8PP7k4QQVbdThnd49FstmeDM3RY8PDIyMjw8byb50l//KicQvumBFlTn3HJf6+9NYTtCfqfX1k5K3PwEefd6j5XtrVoTrizw4Pq/V/1UM6/hFTDp80ahE4QxObGlHXfkT8n6z9ThtYxW6w83Q86PJykhNpliTO+wA5lU2xzgccGieowD4fnPfjhNmpzT7vYcEHulW3uDmQGbAn7BDldrL42KaBgVqts6MlGgr5/Zom4NwMDA/gvNT6a/1969dUOtZ1rmtNRdtb2kPNoeZI2N/kbwoGNB9iAa9d4T2C5/LcVHGkkwzXmwElswDP21L24HG25hjSXyl/RV4G79gXsJ0H273wAty7YqHUi/XI8ePcbH3vcSOGfdqIWzfCg2fMnfXHj9cjNRz9xiXs8MvDwxAZGVl+YXiYnli5jFnL+msr17Ev34bNZiu5YrO2KsNiiCEPRcw2zsO7v9MFEov6dUUmDnA0yoSQgVIj4w1VqIBR4m7Q1qovQtln0Dx3Kt0DgT8cq/QP74ES7Gmp5/TRdqAPfnBgoRYDnycaVXyymsiu7uKmS+l4Z/3sYHH/6Xbojyw/l+21Zo4+XNp+uM+l6m4tWYrqV/JAF7jNaKUGa31xEKgHcKrHQ+xLAHREPDX+DwA8+z8AIIVEFs4+mwEjksbSyBxMDQ50r+lsb01nkqLob3OVjGJdMJNcqbSkCg4w6iTWgZnZQi1S2ZfdvfwKAY9Q5p3SeS47uuvmrm2PzmkdtV1dqVFEcLLqdMfckmDxB8LurlWxVAcUEs2lRNApwp03vf9h1ak67ZZwzm+jQs/CZFcERk/PVvbtGsrTRPO6Vv9qvSMT4sRtruLS7lsTXe2TkI8l7xvOhzq6aj3BXYfuf38gHwzyjgJYcr1dRr3rAn87zqEXrXc7MrsNiKLuqN3Wv7bSkU2IPM6nHSwO4rCQJRsoTlAdijrPrL3F6ph3AZHQtRt1GLLo5thXJLPGxkrZNwJbcmhh/96bds/dsH3bls1Tm8bHRoZKxfyqTFqP++Iuh41Vj3lB85hiwYSbQzTErBMXZzFWn6fXiIGpRgSMucBUTPThKEKlamxLxja6xbzhLQ08ABIr6e+GxqeeRtF/nOGreOP/XoATwbejNYrINSETWC4HMkLNwhjwi6qGPssfYkvdfhFtDIMDrxiQIKS/4AYt5MdTON2qtny8NLraOlGY0xyvoGrMFSaUNaMlMRVYORBIwflMb4rWTwejEAvA4WxXjtb7wK9eVBGMsCUkDJhx0QAnVzaViw6dx+c7dOqmX/7Rm529hgb2dr75o0AEjO0o+T//F8jteJxjYGRgYADiX1Xl1+L5bb4y8DO/AIow3NMReQCj///6n8mynzkCyOVgYAKJAgCG1g3iAHicY2BkYGAO+p/FwMDK+v/X/18s+xmAIijAEQCdEQbBeJxjfsHAwOwBxAuAWBCKI///hdBQ/AKKgWpY9P//B2HGVJDY//9Mp6BqgHJMP4DYGkk9kj7muUC5UzAzoGJA/WC7YWqA5jA1AeleIHaCiQPVnAer/QW2A2Z+JESOyRooDzInEuE2uPkLUP3AyorMh7idpYyBAQD8GT32AAAAAAAARgDIARABWgHgAgoCzANQA4YD/gSEBNwFoAXIBlgGnAcyB5oIHAhECGQI9AmmCdwKYArcCxALVAz4DTwN2g4KDkIO6A9yD7oQIBBiENQRJBHMEtATQBN6FBAUdhWEFcgWOBaeFwwXehfsGToZ3hwqHQQdZh3qHy4f6iBEIMwhrAABAAAAQQDyAAsAAAAAAAIASgCHAI0AAAD7DgwAAAAAeJx1kNFOwjAUhv8CYgTjhSZe1xsDMQ5c4oV6QyRRrzTxgsR4YcYYW8lYSVcg8Ai+gw/hC/ks/myNERPXtPvOf/6enhbAIb4gUH6XnCUL1BmVXMEubhxXqd86rpEfHO+giUfHdY4Xxw2c4c1xE0d4ZwVR22M0wYdjgX2x67iCA3HkuEr9xHGNfO54B8fiynGd+pPjBgbi1XETp+Kzr2cro+LEyla/Lf2u78vhSmpKKgtSGcxtok0ue3KsMxulqfZCPV0vlQr1cxTP08CUQbkOIpMrnckLr1sK91EWmcBGo03VfBH71o7l2OipvHP15MzoSRRaL7F2dt3p/D4HfWjMsIKBQowEFhItqm3+fXQ5fdKQDkln6VLIECClEmDOHUmRyRn3OMeMMqoRHSnZQ8h1ijWW3KmK6JnZmHtTVjBbmd88oGtTVxUVJS5Yq7vluKcjK1xBceLop9ccC57gU7XsaNOVKbqQuPvTn+T9N7kJlZC6V7yCpXqNDsc/9/kGt3N9DQAAAHicbZDXdtswEEQ5EkhKjiw7vTenFyZxek+cPwGBJYkjEOBBsSN/fUDp+C37NgvM7p3NJtm2drL/1xEmmIIhR4ESM8yxg3NYYBdL7GEf53EBF3EJl3EFV3EN13EDN3ELt3EHd3EP93GAB3iIR3iMJ3iKZ3iOF3iJCq/wGm9wiLd4h/f4gI/4hM/4gq/4hu/4gZ/4hd84wp9sMejoK6Gc0CQLbVsbAxt7heBGkGYd6SHvlYmetcRdMZARSk/iMKU1zaQ9MdpyWTRWS3J59OQ809QE1nOl2aiLOEgeiHW2pzw47js22kph+55MYKLjoUzDKts08/GlsmlJco2DWWNNmI8DN93NwqpWbXK3FdchfRtlLrQ1tLvhPEuTi47EqmhV6GKdp2jKMG3FivWqV4VUx0oSazRvC5+CiS4fGQ6ZH5Qpw4kKgdys4YJqa1eJWHiWcGMeeK2JeevCbIw4Qsy0MiuSyizP7lElnigX2wxbwYSVVAzx9FTTUnBNRnJXUT+EdblOV481zZXxgbeO99Pa/s1FavlFozRVI586ptLrBO18Xrvou3kiTZDkw57v7JBUW9Xcryhk2T+qF7EsAHicY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZ2J02MjBoQWguFHonAwMDNxJrJwMzA4PLRhXGjsCIDQ4dESB+istGDRB/BwcDRIDBJVJ6ozpIaBdHAwMji0NHcghMAgQ2MvBp7WD837qBpXcjE4PLZtYUNgYXFwCUHCoHAAA=') format('woff'), + url('data:application/octet-stream;base64,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LCMgLkawAiVGsBdDWFAbUllYIDxZIyAuRrACJUawF0NYUhtQWVggPFkusTABFCstsEMssDorIyAuRrACJUawF0NYUBtSWVggPFkusTABFCstsEQssDsriiAgPLAGI0KKOCMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrsAZDLrAwKy2wRSywABawBCWwBCYgICBGI0dhsAwjQi5HI0cjYbALQysjIDwgLiM4sTABFCstsEYssQoEJUKwABawBCWwBCUgLkcjRyNhILAGI0KxDABCsAtDKyCwYFBYILBAUVizBCAFIBuzBCYFGllCQiMgR7AGQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsARDYGQjsAVDYWRQWLAEQ2EbsAVDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsTABFCstsEcssQA6Ky6xMAEUKy2wSCyxADsrISMgIDywBiNCIzixMAEUK7AGQy6wMCstsEkssAAVIEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrEAACqxAAdCsQAKKrEAB0KxAAoqsQAHQrkAAAALKrEAB0K5AAAACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVmxAA4quAH/hbAEjbECAESzBWQGAERE') format('truetype'); } /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ @@ -17,7 +17,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'zwiico'; - src: url('../font/zwiico.svg?81579449#zwiico') format('svg'); + src: url('../font/zwiico.svg?97047597#zwiico') format('svg'); } } */ @@ -82,6 +82,7 @@ .zwiico-eye-off:before { content: '\e815'; } /* '' */ .zwiico-down-open:before { content: '\e816'; } /* '' */ .zwiico-upload:before { content: '\e817'; } /* '' */ +.zwiico-font:before { content: '\e818'; } /* '' */ .zwiico-left-open:before { content: '\e819'; } /* '' */ .zwiico-down-big:before { content: '\e81a'; } /* '' */ .zwiico-cog-alt:before { content: '\e81b'; } /* '' */ @@ -114,6 +115,7 @@ .zwiico-youtube:before { content: '\f167'; } /* '' */ .zwiico-instagram:before { content: '\f16d'; } /* '' */ .zwiico-box:before { content: '\f187'; } /* '' */ +.zwiico-cubes:before { content: '\f1b3'; } /* '' */ .zwiico-file-archive:before { content: '\f1c6'; } /* '' */ .zwiico-sliders:before { content: '\f1de'; } /* '' */ .zwiico-brush:before { content: '\f1fc'; } /* '' */ diff --git a/core/vendor/zwiico/css/zwiico-ie7-codes.css b/core/vendor/zwiico/css/zwiico-ie7-codes.css index f4b1860e..cf2e2b43 100755 --- a/core/vendor/zwiico/css/zwiico-ie7-codes.css +++ b/core/vendor/zwiico/css/zwiico-ie7-codes.css @@ -24,6 +24,7 @@ .zwiico-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.zwiico-font { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-left-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-down-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } @@ -56,6 +57,7 @@ .zwiico-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-instagram { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-box { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.zwiico-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-file-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-sliders { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-brush { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/core/vendor/zwiico/css/zwiico-ie7.css b/core/vendor/zwiico/css/zwiico-ie7.css index 9116cba6..e7004bb7 100755 --- a/core/vendor/zwiico/css/zwiico-ie7.css +++ b/core/vendor/zwiico/css/zwiico-ie7.css @@ -35,6 +35,7 @@ .zwiico-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.zwiico-font { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-left-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-down-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } @@ -67,6 +68,7 @@ .zwiico-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-instagram { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-box { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.zwiico-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-file-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-sliders { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .zwiico-brush { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/core/vendor/zwiico/css/zwiico.css b/core/vendor/zwiico/css/zwiico.css index 4e79bfea..ac4535d3 100755 --- a/core/vendor/zwiico/css/zwiico.css +++ b/core/vendor/zwiico/css/zwiico.css @@ -1,11 +1,11 @@ @font-face { font-family: 'zwiico'; - src: url('../font/zwiico.eot?39677933'); - src: url('../font/zwiico.eot?39677933#iefix') format('embedded-opentype'), - url('../font/zwiico.woff2?39677933') format('woff2'), - url('../font/zwiico.woff?39677933') format('woff'), - url('../font/zwiico.ttf?39677933') format('truetype'), - url('../font/zwiico.svg?39677933#zwiico') format('svg'); + src: url('../font/zwiico.eot?24592042'); + src: url('../font/zwiico.eot?24592042#iefix') format('embedded-opentype'), + url('../font/zwiico.woff2?24592042') format('woff2'), + url('../font/zwiico.woff?24592042') format('woff'), + url('../font/zwiico.ttf?24592042') format('truetype'), + url('../font/zwiico.svg?24592042#zwiico') format('svg'); font-weight: normal; font-style: normal; } @@ -15,7 +15,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'zwiico'; - src: url('../font/zwiico.svg?39677933#zwiico') format('svg'); + src: url('../font/zwiico.svg?24592042#zwiico') format('svg'); } } */ @@ -79,6 +79,7 @@ .zwiico-eye-off:before { content: '\e815'; } /* '' */ .zwiico-down-open:before { content: '\e816'; } /* '' */ .zwiico-upload:before { content: '\e817'; } /* '' */ +.zwiico-font:before { content: '\e818'; } /* '' */ .zwiico-left-open:before { content: '\e819'; } /* '' */ .zwiico-down-big:before { content: '\e81a'; } /* '' */ .zwiico-cog-alt:before { content: '\e81b'; } /* '' */ @@ -111,6 +112,7 @@ .zwiico-youtube:before { content: '\f167'; } /* '' */ .zwiico-instagram:before { content: '\f16d'; } /* '' */ .zwiico-box:before { content: '\f187'; } /* '' */ +.zwiico-cubes:before { content: '\f1b3'; } /* '' */ .zwiico-file-archive:before { content: '\f1c6'; } /* '' */ .zwiico-sliders:before { content: '\f1de'; } /* '' */ .zwiico-brush:before { content: '\f1fc'; } /* '' */ diff --git a/core/vendor/zwiico/font/zwiico.eot b/core/vendor/zwiico/font/zwiico.eot index e79d43711e6838afe324bc9f70665f88039163ca..7300125a0d5264e9adeabfe2ab35115d4b4ed9a2 100755 GIT binary patch delta 1640 zcmZvcZ%h+s9LK-U-St}jT?;+h>VW>CSVUH^mf{fFqQt2~MP(avM5zoYNVP%6Sfi9} zE+k84M$ScDqRIAh+Y6UQUzlu?Ei+qU7R?s37=of%QjJ@HA#shN`<;h-wYz+t&+~nr z>vQ+~F1;t;vWwp{u{HvH(lsdtgss*@W-|O<@>2T;0BZx#)g6n(Z%&uFC|?A0A9arm zJ7}DaJ-<^U^~U>RhrItJD5ojr_eGAyY1~Bl2HDUz_-^lo`*&Xe^o_ulj%ZKhEr&nW z3+y;e^MNQ07$o5<%GW8oqp{)9jz7Axk7!_yZYm5O?T-9lt8o8|4%6p`Q5Ip_9mN97TI=o zMhS8iYZG9!2G}t8XT552F8wM2fo-D+FB}jcIVY7($0GP0Tp*vV=p=<$(OGXW=A%>?LurqxWKoUCRd2{(1r0Rk0dH4|7v zRx<$)S>uJMTFE-$O|2le%V z`k>(Pm%BuLd62jI%6My`T*g?PBp?q9Uj`Y91RD0S<`^oVzPv5f?;-q{#>;2DK0fpB2^^y)E^M8QW1FQ zkq0Bpup*2N;o7EJr`1wyE-Ew`rGmWN9D`oe@f?E<9BTy!?n6c^jnoI$RM^XS(Xvig zU#Iufd-QC@p69t(7L81F)vy(LnWxSl2vLcW)CPQZR>n%1l?u~y>z4c8y;;7QJUe^O zMp{~0;$M}`8ObdzGoDnCG0V&*FWAhPg0g~)Y+I0RO@}XbhPon=r8Ix6Z_gyGTMrr=AH&Gg zw-cDDmhV1yHk0kALUm9!(C)Q^3c&Bp4$ya4NAnrss`mL>nN`)S3~!He{CVZ}_V+oR zPT9X>=f3GYQ(k-ilY+*A+fuHySxOs+j8{w!(;?Guh3>-ZMK{c0b3!)BBgH3+f3j?} zT(IU_6V^wo8dlAeRFw*)y`>NBUi(8wi{rZU>t}atPA%>Dn`6z&!<}OSYi663=&sLo dLhsQd!%EKXB~jP?_Mx6*N_KZcYGd1!^e@e7mEZsX delta 1055 zcmZvaTS!zv0EYi_cJorYYwM+~)!j_HS!TDbth5_+QE>|&7P8INyb!LQTG36)wHFJD zXge0wQ$bJ<5ye^%lttx&5K+)Wg;~ACA{A;SCQI9YoI_8|@Xi1KGjnFnnKO5uN)wNy zxCuAlatGra#v9$f#Ng%=f!@mFfaC;FUF-EIGg_>RnePD8nrquy?d)f%xXQ*pTZ-@2YnIJN+DYG_oT;Y@EZ) z=aJj!ZS}hb`(j_&@rE7Irj}Yy@5g=_*!7CJ%j@wga+didu-nOOZ}xcW+#`3Zm=!?2 zr?mK52d)=B0Lm9JH!DZ#l+ODb?gRTDs+XjF(h2pav`f0E7R!10ZIHMIBn5^kx0E`a zPqo1)ZRbD%>@dPKFBqAno{?>-;nAVd=-7&}U@Qi(7m-Z0PtH<5$i)k*;AidlSC66d ze^uRT2ynAF^|fL0ydlw?q`iPVp|vcCPl!zTd>sh&@f12rlD=Zx`1G_Z*p6li}i{#jb+LRMN{=WEu|vjo)m=J!jCF;4-Mm1X6rFNB- zR`g7Nn{+JcNwPcnY;xGtWEwXYo3ER{q_|RU&U9KTEzd1~QhQP-(-YFm(jR8zWSqmsvCSw)K>CIJ+Qw*tXsF!hUONpOR2^`43qtQ7z6+wa0l)E!s1#I`$TY4)1+z F`U|c^9UcGx diff --git a/core/vendor/zwiico/font/zwiico.svg b/core/vendor/zwiico/font/zwiico.svg index 28537fc6..1dde89db 100755 --- a/core/vendor/zwiico/font/zwiico.svg +++ b/core/vendor/zwiico/font/zwiico.svg @@ -56,6 +56,8 @@ + + @@ -120,6 +122,8 @@ + + diff --git a/core/vendor/zwiico/font/zwiico.ttf b/core/vendor/zwiico/font/zwiico.ttf index a5945ace10d334a1af9b00b5b585503669e075b5..208a279cfc3ffa8c74e79a3005d6e25602ec4a04 100755 GIT binary patch delta 1623 zcmZvcZ%h+s9LK-U-St}jT?;+hs?dKFipYxAQXB#;N}M|U&m40^s0=7bwL!)hQA!+( z$&wk#xu{DtnJ>4!aB1`fS)$7_;}WxIW{g=3ie_0g&HyTLjiLLUhkLcVe4fwqeV*%c z_xvusJ3q1$Kd}?8#Ko4+0Ja@KM`tV&zj@d0rhEa=ebG5I=%jHvcHE&x>W=rs_WAx9 zp`4nyr*RYI8)QRI|EJyO9^PLD=<9&>tK%kVYW&&koH52fX)l8tAtY!ks$*VL_ z0nD7yzzXu$8mJ`yqJg)_ziLpWG4mVUpBkWw!d(rlB;VHnEj}}?0YCX~4Xh?V)j$B4 zrCq6@noJ9;AV{X`R8T|i(ZCvVOapJXQ0JHiYRO3rtR-L7KplBX1NG!r8fXCK=mAv_ zB2Q@0o3`tJmJ=M1>E+MzJ84JtcqiQCXClWlh+H!Sp5p~>44lYw;wT_85o`=P@Pdx- z1qJZ~h$4$nhwZ4V^%N{GDlzHBq7^zcHyOwAD(PKxwpXPD{u1c^i}x%wxt!80`~3uyQSx1^XT!`rh)#g z6&xomym0lm?eVkip`NkB<$+IX$2-cK0u@e+oSn;wS%PRPa2Jj??AkN7!O5h`@W94} zXgJu->if(VlO zxgg(Ul=5=2vkZDs$8!ueaI6^|xX&4_G*lBTD|Og;(Xv8UQ?2*bc=c@2-Z!~W7L81F zSFuI;n729*3{i;^)CTjVecSWk!8G4Uo}PYSBhAmx^Y6*#wB(T%7*EPe zn`LH`=WOP5o;@!u+va3j{r(GWp^ivo;rwD}ecM-Uq29i}g`r2XJL`zSkYJ43BUx_w zQK82Wy=Uj`8`_O^FJR>9(+Nyf%J<(mlg{)~p;{>$ zX!qJd1>kpP`sg#PqxrOOS^In~&Z=ruZf%Tm{8^=T(@{>RQzkcU*>yL^l+%*?GOsT0 z4=Gz(C#8%7#z~XYw9j-a-;;m6;D$MD9+6G*P~mvtHOm^yIcu(U#QJ1O?UJdYiejO- zyZEug=XmUFa$a|R|N4%N$=#cuaja3;2a1uA62T)9hkpUWkNhHB|6H$jsGrC0sqFsEO^?O9g=_ zr=og@il81MiY*}!D@s9#DCogJ%wA%Niq$e~5x4(1hn||@oB#i3=FFTkXNF!%Q=`&Q zruRwh89=HA(AeyDDr-6|8<`>2&x{x^3)dsk+6+)T+4LO?iL%nK^DUx}04K`(v1| zQ6pUKr&~{kIj#WVHeg>}TZ{9!^<(1!;9wue3)|QcK4C~>=JUvEb9eXEO^=1XvEu_f zmfAa;olicE%fO*`%xB%sK1EJ9UjQ7{%(f1vyQLxUxSm-7TWbX)YbaZ&}h;&Y^l@3W))tgfG<{n5~0+NET6_-nm;zKNm+6KQT8mw=`ccKO71H?1ev7&5+a861g;|9(}C+|LOod|Eua9*~`sVs|8^}wNZ{V z8?`r(7qyn9)K_H4m%ORq(u_P7zYf;Y>%c;tG$d zju%-BI>@Hi!FqZfj=(g$S_9-W z%nGoT`dI*O6! z>Wlz;sY?QI&OBd410~d9f%XT(UnTe!ED71Z*!`En?U7yQ?;SH2FTfn;=UmL#2epg4 zqM=~ugrQd*bEKphdKiL+UU4P033@401CBPezT&JpTTxMUIcmx{V0;nX5Iq<@VQM%1 zHkX?3n!m)<#oUjrj;oD(9k(2RIX;*ekyx2Hnq*HJN?J}b82L`nP(urpWic=DF!F;u9D@ diff --git a/core/vendor/zwiico/font/zwiico.woff b/core/vendor/zwiico/font/zwiico.woff index ed6f9c0c0e4bf8946082c1070bb0216d7ca813f3..7a79d4151b6b2778c3cc45ba990f46e0b7f63f1e 100755 GIT binary patch delta 13020 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 CU}skV diff --git a/core/vendor/zwiico/font/zwiico.woff2 b/core/vendor/zwiico/font/zwiico.woff2 index fa1423efa240366ef4e6b92d5420595282eea91e..9f4f1cc0e35bb5bcaf78ef35d90e87c2f4a0f82f 100755 GIT binary patch literal 13152 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

QT)Ay?I%{SdM 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�n5A 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 CE!)-r