diff --git a/CHANGES.md b/CHANGES.md index 06733512..7ab321b5 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,10 @@ # Changelog +## Version 11.3 +### Modifications + - Désormais, les URL internes seront relatives, cela signifie qu'elles ne contiendront plus le domaine et le chemin d'accès au site. Cela permettra le déplacement d'un site d'un hébergement à un autre, d'un dossier d'hébergement à un autre, sans avoir à convertir les adresses internes. Les données d'un site mis à jour et importées d'une version antérieures sont automatiquement converties. En conséquence, le bloc de conversion de la fenêtre d'import est supprimé. + - Réorganisation massive des modules afin d'éviter de faire cohabiter des formulaires avec des champs d'information. + ## Version 11.2.03 - Corrections : - Addon, bug lors de l'effacement d'un module non initialisé. @@ -10,6 +15,7 @@ - Addons (gestion des modules), le bouton d'accès au store est déplacé à la page de gestion des modules. Quelques étiquettes de boutons sont modifiés. - Thème ; pied de page ; options pied de page fixe et alignement avec le contenu déplacées dans les paramètres. - Mise à jour en ligne, contrôle de la clé MD5 de l'archive update.tar.gz. + - Thème ; pied de page ; options pied de page fixe et alignement avec le contenu déplacées dans les paramètres. ## Version 11.2.02 - Correction : diff --git a/core/core.php b/core/core.php index d13e85d6..02b1a01f 100644 --- a/core/core.php +++ b/core/core.php @@ -45,7 +45,7 @@ class common { // Numéro de version const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/'; - const ZWII_VERSION = '11.2.03'; + const ZWII_VERSION = '11.3.00'; const ZWII_UPDATE_CHANNEL = "test"; public static $actions = []; @@ -1146,6 +1146,27 @@ class common { } + /** + * Fonction de parcours des données de module + * @param string $find donnée à rechercher + * @param string $replace donnée à remplacer + * @param array tableau à analyser + * @param int count nombres d'occurrences + * @return array avec les valeurs remplacées. + */ + private function recursive_array_replace ($find, $replace, $array, &$count) { + if (!is_array($array)) { + return str_replace($find, $replace, $array, $count); + } + + $newArray = []; + foreach ($array as $key => $value) { + $newArray[$key] = $this->recursive_array_replace($find, $replace, $value,$c); + $count += $c; + } + return $newArray; + } + /** * Génère une archive d'un dossier et des sous-dossiers * @param string fileName path et nom de l'archive diff --git a/core/include/update.inc.php b/core/include/update.inc.php index 1bf1d3b7..02c137f5 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -739,4 +739,53 @@ if ($this->getData(['core', 'dataVersion']) < 11202) { // Mise à jour $this->setData(['core', 'dataVersion', 11202]); +} + +// Version 11.2.03 +if ($this->getData(['core', 'dataVersion']) < 11203) { + // Supprimer l'information de redirection + $old = str_replace('?','',$this->getData(['core', 'baseUrl'])); + $new = ''; + $c3 = 0; + $success = false ; + // Boucler sur les pages + foreach($this->getHierarchy(null,null,null) as $parentId => $childIds) { + $content = $this->getPage($parentId, self::$i18n); + $titre = $this->getData(['page', $parentId, 'title']); + $content = $titre . ' ' . $content ; + $replace = str_replace( 'href="' . $old , 'href="'. $new , stripslashes($content),$c1) ; + $replace = str_replace( 'src="' . $old , 'src="'. $new , stripslashes($replace),$c2) ; + + if ($c1 > 0 || $c2 > 0) { + $success = true; + $this->setPage($parentId, $replace, self::$i18n); + $c3 += $c1 + $c2; + } + foreach($childIds as $childId) { + $content = $this->getPage($childId, self::$i18n); + $content = $titre . ' ' . $content ; + $replace = str_replace( 'href="' . $old , 'href="'. $new , stripslashes($content),$c1) ; + $replace = str_replace( 'src="' . $old , 'src="'. $new , stripslashes($replace),$c2) ; + if ($c1 > 0 || $c2 > 0) { + $success = true; + $this->setPage($childId, $replace, self::$i18n); + $c3 += $c1 + $c2; + } + } + } + // Traiter les modules dont la redirection + $content = $this->getdata(['module']); + $replace = $this->recursive_array_replace('href="' . $old , 'href="'. $new, $content, $c1); + $replace = $this->recursive_array_replace('src="' . $old , 'src="'. $new, $replace, $c2); + if ($content !== $replace) { + $this->setdata(['module',$replace]); + $c3 += $c1 + $c2; + $success = true; + } + + // Effacer la baseUrl + $this->deleteData(['core', 'baseUrl']); + + // Mise à jour + $this->setData(['core', 'dataVersion', 11203]); } \ No newline at end of file diff --git a/core/module/config/config.php b/core/module/config/config.php index d39997c0..087d06fb 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -383,6 +383,15 @@ class config extends common { $this->setData(['user',$users]); } } + // Conversion vers des Url relatives + if ($this->getData(['core', 'baseUrl'])) { + $url = str_replace('?','',$this->getData(['core', 'baseUrl'])); + // Suppresion de la base Url + $this->updateBaseUrl($url); + // Effacer la baseUrl + $this->deleteData(['core', 'baseUrl']); + } + // Message de notification $notification = $success === true ? 'Restaurer effectuée avec succès' : 'Erreur inconnue'; $redirect = $this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ? helper::baseUrl() . 'config/restore' : helper::baseUrl() . 'user/login/'; @@ -655,10 +664,8 @@ class config extends common { /** * Met à jour les données de site avec l'adresse transmise */ - public function updateBaseUrl () { + public function updateBaseUrl ($url) { // Supprimer l'information de redirection - $old = str_replace('?','',$this->getData(['core', 'baseUrl'])); - $new = helper::baseUrl(false,false); $c3 = 0; $success = false ; // Boucler sur les pages @@ -666,8 +673,8 @@ class config extends common { $content = $this->getPage($parentId, self::$i18n); $titre = $this->getData(['page', $parentId, 'title']); $content = $titre . ' ' . $content ; - $replace = str_replace( 'href="' . $old , 'href="'. $new , stripslashes($content),$c1) ; - $replace = str_replace( 'src="' . $old , 'src="'. $new , stripslashes($replace),$c2) ; + $replace = str_replace( 'href="' . $url , 'href="'. '' , stripslashes($content),$c1) ; + $replace = str_replace( 'src="' . $url , 'src="'. '' , stripslashes($replace),$c2) ; if ($c1 > 0 || $c2 > 0) { $success = true; @@ -677,8 +684,8 @@ class config extends common { foreach($childIds as $childId) { $content = $this->getPage($childId, self::$i18n); $content = $titre . ' ' . $content ; - $replace = str_replace( 'href="' . $old , 'href="'. $new , stripslashes($content),$c1) ; - $replace = str_replace( 'src="' . $old , 'src="'. $new , stripslashes($replace),$c2) ; + $replace = str_replace( 'href="' . $url , 'href="'. '' , stripslashes($content),$c1) ; + $replace = str_replace( 'src="' . $url , 'src="'. '' , stripslashes($replace),$c2) ; if ($c1 > 0 || $c2 > 0) { $success = true; $this->setPage($childId, $replace, self::$i18n); @@ -688,8 +695,8 @@ class config extends common { } // Traiter les modules dont la redirection $content = $this->getdata(['module']); - $replace = $this->recursive_array_replace('href="' . $old , 'href="'. $new, $content, $c1); - $replace = $this->recursive_array_replace('src="' . $old , 'src="'. $new, $replace, $c2); + $replace = $this->recursive_array_replace('href="' . $url , 'href="'. '', $content, $c1); + $replace = $this->recursive_array_replace('src="' . $url , 'src="'. '', $replace, $c2); if ($content !== $replace) { $this->setdata(['module',$replace]); $c3 += $c1 + $c2; @@ -842,25 +849,4 @@ class config extends common { ]); } - - /** - * Fonction de parcours des données de module - * @param string $find donnée à rechercher - * @param string $replace donnée à remplacer - * @param array tableau à analyser - * @param int count nombres d'occurrences - * @return array avec les valeurs remplacées. - */ - private function recursive_array_replace ($find, $replace, $array, &$count) { - if (!is_array($array)) { - return str_replace($find, $replace, $array, $count); - } - - $newArray = []; - foreach ($array as $key => $value) { - $newArray[$key] = $this->recursive_array_replace($find, $replace, $value,$c); - $count += $c; - } - return $newArray; - } } diff --git a/core/module/config/view/restore/restore.php b/core/module/config/view/restore/restore.php index 22a63cc1..5e4ff26d 100644 --- a/core/module/config/view/restore/restore.php +++ b/core/module/config/view/restore/restore.php @@ -38,46 +38,4 @@ -
-
-
-

Conversion après la restauration

-
-
- getData(['core', 'baseUrl'])) ) { - $baseUrlValue = 'Pas de donnée dans la sauvegarde'; - $buttonClass = 'disabled'; - } elseif ($this->getData(['core', 'baseUrl']) === '') { - $baseUrlValue = '/'; - $buttonClass = helper::baseUrl(false,false) !== $this->getData(['core', 'baseUrl']) ? '' : 'disabled'; - } else { - $baseUrlValue = str_replace('?','',$this->getData(['core', 'baseUrl'])); - $buttonClass = helper::baseUrl(false,false) !== $baseUrlValue ? '' : 'disabled'; - } - echo template::text('configRestoreBaseURLToConvert', [ - 'label' => 'Dossier de l\'archive' , - 'value' => $baseUrlValue, - 'readonly' => true, - 'help' => 'Le dossier de base du site est stockée dans la sauvegarde.' - ]); ?> -
-
- 'Dossier du site actuel', - 'value' => helper::baseUrl(false,false), - 'readonly' => true - ]); ?> -
-
- helper::baseUrl() . 'config/updateBaseUrl', - 'class' => $buttonClass, - 'value' => 'convertir' - ]); ?> -
-
-
-
-
diff --git a/core/vendor/tinymce/init.js b/core/vendor/tinymce/init.js index 6daa4b89..b4d3bad3 100755 --- a/core/vendor/tinymce/init.js +++ b/core/vendor/tinymce/init.js @@ -114,7 +114,7 @@ tinymce.init({ // Active l'onglet avancé lors de l'ajout d'une image image_advtab: true, // Urls absolues - relative_urls: false, + relative_urls: true, // Url de base document_base_url: baseUrl, // Gestionnaire de fichiers @@ -294,7 +294,7 @@ tinymce.init({ // Active l'onglet avancé lors de l'ajout d'une image image_advtab: true, // Urls absolues - relative_urls: false, + relative_urls: true, // Url de base document_base_url: baseUrl, // Contenu du bouton formats