diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 75f9ee2e..8d826ab8 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -29,7 +29,8 @@ class theme extends common { 'admin' => self::GROUP_ADMIN, 'manage' => self::GROUP_ADMIN, 'export' => self::GROUP_ADMIN, - 'save' => self::GROUP_ADMIN + 'save' => self::GROUP_ADMIN, + 'checkImport' => self::GROUP_ADMIN ]; public static $aligns = [ 'left' => 'À gauche', @@ -619,20 +620,31 @@ class theme extends common { if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) { mkdir (self::TEMP_DIR . $tempFolder); $zip->extractTo(self::TEMP_DIR . $tempFolder ); + $modele = ''; // Archive de thème ? - if (( file_exists(self::TEMP_DIR . $tempFolder . '/site/data/custom.css') + if ( + file_exists(self::TEMP_DIR . $tempFolder . '/site/data/custom.css') AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.css') AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json') - ) OR ( - file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json') - ) + ) { + $modele = 'theme'; + } + if( + file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json') + AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.css') + ) { + $mode = 'admin'; + } + if (!empty($modele) ) { // traiter l'archive $success = $zip->extractTo('.'); // traitement de l'erreur - $notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.'; + $notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.'; // Supprimmer le dossier temporaire $this->removeDir(self::TEMP_DIR . $tempFolder); + // Check le thème + $this->checkImport($modele); } else { // pas une archive de thème $success = false; @@ -700,6 +712,50 @@ class theme extends common { ]); } + + /** + * Contrôle du thème + * Vérifie la présence de toutes les clés par rapport au thème par défaut + * les créer si elles n'existent pas. + */ + private function checkImport ($modele = 'theme') { + require_once('core/module/install/ressource/defaultdata.php'); + switch ($modele) { + case 'theme': + $default['theme'] = init::$defaultData['theme']; + // Check le thème + $dataKeys = ['body','footer','header','menu','site','block','text','title','button']; + // Parcourir les clés principales et stocker les contenus + foreach($dataKeys as $key1) { + $itemKeys = $default['theme'][$key1]; + // Parcourir les clés secondaires + foreach ($itemKeys as $key2 => $value) { + // Données nulles ou vides instaurer la donnée par défaut + if ($this->getData(['theme',$key1,$key2]) === NULL + OR empty($this->getData(['theme',$key1,$key2]) ) + ) { + $this->setData(['theme',$key1,$key2,$value]); + } + } + } + break; + case 'admin': + // Check Admin + $default['admin'] = init::$defaultData['admin']; + // Pas de clé secondaire + $itemKeys = $default['admin']; + foreach ($itemKeys as $key1 => $value) { + // Données nulles ou vides instaurer la donnée par défaut + if ($this->getData(['admin',$key1]) === NULL + OR empty($this->getData(['admin',$key1]) ) + ) { + $this->setData(['admin',$key1,$value]); + } + } + break; + } + } + /** * construction du zip * @param string $modele theme ou admin diff --git a/core/module/theme/view/index/index.php b/core/module/theme/view/index/index.php index 8d9316e5..8e7db01d 100644 --- a/core/module/theme/view/index/index.php +++ b/core/module/theme/view/index/index.php @@ -22,20 +22,20 @@
-
- 'code', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced', - 'value' => 'Éditeur CSS' - ]); ?> -
-
+
'upload', 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', 'value' => 'Gestion' ]); ?>
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced', + 'value' => 'Éditeur CSS' + ]); ?> +