From 511dbd1246a0bc6215bec2841187e732bcd0f9e3 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 29 Oct 2021 16:14:51 +0200 Subject: [PATCH 001/277] nouvelle config WIP --- core/module/config/config.php | 243 +++++++- core/module/config/view/advanced/advanced.php | 548 ------------------ core/module/config/view/index/index.css | 2 +- core/module/config/view/index/index.help.html | 169 +++++- core/module/config/view/index/index.php | 267 +++++---- core/module/config/view/locale/locale.css | 18 + .../config/view/locale/locale.help.html | 10 + core/module/config/view/locale/locale.php | 191 ++++++ .../advanced.css => network/network.css} | 0 .../network.help.html} | 0 .../network.js.php} | 0 core/module/config/view/network/network.php | 172 ++++++ core/module/config/view/safety/safety.css | 37 ++ .../config/view/safety/safety.help.html | 159 +++++ core/module/config/view/safety/safety.js.php | 135 +++++ core/module/config/view/safety/safety.php | 167 ++++++ core/module/config/view/social/social.css | 37 ++ .../config/view/social/social.help.html | 159 +++++ core/module/config/view/social/social.js.php | 135 +++++ core/module/config/view/social/social.php | 226 ++++++++ 20 files changed, 1994 insertions(+), 681 deletions(-) delete mode 100644 core/module/config/view/advanced/advanced.php create mode 100644 core/module/config/view/locale/locale.css create mode 100644 core/module/config/view/locale/locale.help.html create mode 100644 core/module/config/view/locale/locale.php rename core/module/config/view/{advanced/advanced.css => network/network.css} (100%) rename core/module/config/view/{advanced/advanced.help.html => network/network.help.html} (100%) rename core/module/config/view/{advanced/advanced.js.php => network/network.js.php} (100%) create mode 100644 core/module/config/view/network/network.php create mode 100644 core/module/config/view/safety/safety.css create mode 100644 core/module/config/view/safety/safety.help.html create mode 100644 core/module/config/view/safety/safety.js.php create mode 100644 core/module/config/view/safety/safety.php create mode 100644 core/module/config/view/social/social.css create mode 100644 core/module/config/view/social/social.help.html create mode 100644 core/module/config/view/social/social.js.php create mode 100644 core/module/config/view/social/social.php diff --git a/core/module/config/config.php b/core/module/config/config.php index 87e751f4..9e5acb54 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -22,7 +22,10 @@ class config extends common { 'configMetaImage' => self::GROUP_ADMIN, 'generateFiles' => self::GROUP_ADMIN, 'index' => self::GROUP_ADMIN, - 'advanced' => self::GROUP_ADMIN, + 'locale' => self::GROUP_ADMIN, + 'social' => self::GROUP_ADMIN, + 'safety' => self::GROUP_ADMIN, + 'network' => self::GROUP_ADMIN, 'restore' => self::GROUP_ADMIN, 'updateBaseUrl' => self::GROUP_ADMIN, 'script' => self::GROUP_ADMIN, @@ -385,11 +388,149 @@ class config extends common { ]); } + /** * + * Configuration de base + */ + public function index() { + // Soumission du formulaire + if($this->isPost()) { + // Basculement en mise à jour auto + // Remise à 0 du compteur + if ($this->getData(['config','autoUpdate']) === false && + $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN) === true) { + $this->setData(['core','lastAutoUpdate',0]); + } + // Eviter déconnexion automatique après son activation + if ( $this->getData(['config','autoDisconnect']) === false + AND $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN) === true ) { + $this->setData(['user',$this->getuser('id'),'accessCsrf',$_SESSION['csrf']]); + } + // Sauvegarder + $this->setData([ + 'config', + [ + 'analyticsId' => $this->getInput('configAdvancedAnalyticsId'), + 'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN), + 'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN), + 'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN), + 'favicon' => $this->getInput('configAdvancedFavicon'), + 'faviconDark' => $this->getInput('configAdvancedFaviconDark'), + 'social' => [ + 'facebookId' => $this->getInput('configAdvancedSocialFacebookId'), + 'linkedinId' => $this->getInput('configAdvancedSocialLinkedinId'), + 'instagramId' => $this->getInput('configAdvancedSocialInstagramId'), + 'pinterestId' => $this->getInput('configAdvancedSocialPinterestId'), + 'twitterId' => $this->getInput('configAdvancedSocialTwitterId'), + 'youtubeId' => $this->getInput('configAdvancedSocialYoutubeId'), + 'youtubeUserId' => $this->getInput('configAdvancedSocialYoutubeUserId'), + 'githubId' => $this->getInput('configAdvancedSocialGithubId') + ], + 'timezone' => $this->getInput('configAdvancedTimezone', helper::FILTER_STRING_SHORT, true), + 'autoUpdate' => $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN), + 'autoUpdateHtaccess' => $this->getInput('configAdvancedAutoUpdateHtaccess', helper::FILTER_BOOLEAN), + 'proxyType' => $this->getInput('configAdvancedProxyType'), + 'proxyUrl' => $this->getInput('configAdvancedProxyUrl'), + 'proxyPort' => $this->getInput('configAdvancedProxyPort',helper::FILTER_INT), + 'captchaStrong' => $this->getInput('configAdvancedCaptchaStrong',helper::FILTER_BOOLEAN), + 'autoDisconnect' => $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN), + 'smtp' => [ + 'enable' => $this->getInput('configAdvancedSmtpEnable',helper::FILTER_BOOLEAN), + 'host' => $this->getInput('configAdvancedSmtpHost',helper::FILTER_STRING_SHORT), + 'port' => $this->getInput('configAdvancedSmtpPort',helper::FILTER_INT), + 'auth' => $this->getInput('configAdvancedSmtpAuth',helper::FILTER_BOOLEAN), + 'secure' => $this->getInput('configAdvancedSmtpSecure'), + 'username' => $this->getInput('configAdvancedSmtpUsername',helper::FILTER_STRING_SHORT), + 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configAdvancedSmtpPassword')), + 'sender' => $this->getInput('configAdvancedSmtpSender',helper::FILTER_MAIL) + ], + 'seo' => [ + 'robots' => $this->getInput('configAdvancedSeoRobots',helper::FILTER_BOOLEAN) + ], + 'connect' => [ + 'attempt' => $this->getInput('configAdvancedConnectAttempt',helper::FILTER_INT), + 'timeout' => $this->getInput('configAdvancedConnectTimeout',helper::FILTER_INT), + 'log' => $this->getInput('configAdvancedConnectLog',helper::FILTER_BOOLEAN), + 'anonymousIp' => $this->getInput('configAdvancedConnectAnonymousIp',helper::FILTER_INT), + 'captcha' => $this->getInput('configAdvancedConnectCaptcha',helper::FILTER_BOOLEAN), + ], + 'i18n' => [ + 'enable' => $this->getData(['config', 'i18n', 'enable']) + ] + ] + ]); + // Efface les fichiers de backup lorsque l'option est désactivée + if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) { + $path = realpath('site/data'); + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) + { + if (strpos($filename,'backup.json')) { + unlink($filename); + } + } + if (file_exists('site/data/.backup')) unlink('site/data/.backup'); + } else { + touch('site/data/.backup'); + } + // Notice + if(self::$inputNotices === []) { + // Active la réécriture d'URL + $rewrite = $this->getInput('rewrite', helper::FILTER_BOOLEAN); + if( + $rewrite + AND helper::checkRewrite() === false + ) { + // Ajout des lignes dans le .htaccess + file_put_contents( + '.htaccess', + PHP_EOL . + '' . PHP_EOL . + "\tRewriteEngine on" . PHP_EOL . + "\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL . + "\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL . + "\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL . + "\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL . + "\tRewriteCond %{SERVER_PORT} 80" . PHP_EOL . + "\tRewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]" . PHP_EOL . + '', + FILE_APPEND + ); + // Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection) + helper::$rewriteStatus = true; + } + // Désactive la réécriture d'URL + elseif( + $rewrite === false + AND helper::checkRewrite() + ) { + // Suppression des lignes dans le .htaccess + $htaccess = explode('# URL rewriting', file_get_contents('.htaccess')); + file_put_contents('.htaccess', $htaccess[0] . '# URL rewriting'); + // Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection) + helper::$rewriteStatus = false; + } + // Met à jour la baseUrl + $this->setData(['core', 'baseUrl', helper::baseUrl(true,false) ]); + } + // Générer robots.txt et sitemap + $this->generateFiles(); + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . $this->getUrl(), + 'notification' => 'Modifications enregistrées ' , + 'state' => true + ]); + } + // Valeurs en sortie + $this->addOutput([ + 'title' => 'Configuration de base', + 'view' => 'index' + ]); + } /** * Configuration */ - public function index() { + public function locale() { // Soumission du formulaire if($this->isPost()) { @@ -456,15 +597,103 @@ class config extends common { // Valeurs en sortie $this->addOutput([ - 'title' => 'Configuration', - 'view' => 'index' + 'title' => 'Localisation', + 'view' => 'locale' ]); } + + /** + * Sécurité de la connexion + **/ + public function safety() { + // Valeurs en sortie + $this->addOutput([ + 'title' => 'Configuration avancée', + 'view' => 'safety' + ]); + } + + /** + * Configuration + */ + public function social() { + // Soumission du formulaire + if($this->isPost()) { + + // Répercuter la suppression de la page dans la configuration du footer + if ( $this->getData(['theme','footer','displaySearch']) === true + AND $this->getInput('configSearchPageId') === 'none' + ){ + $this->setData(['theme', 'footer', 'displaySearch', false]); + } + if ( $this->getData(['theme','footer','displayLegal']) === true + AND $this->getInput('configLegalPageId') === 'none' + ){ + $this->setData(['theme', 'footer', 'displayLegal', false]); + } + + // Sauvegarder + $this->setData([ + 'locale', + [ + 'homePageId' => $this->getInput('configHomePageId', helper::FILTER_ID, true), + 'page404' => $this->getInput('configPage404'), + 'page403' => $this->getInput('configPage403'), + 'page302' => $this->getInput('configPage302'), + 'legalPageId' => $this->getInput('configLegalPageId'), + 'searchPageId' => $this->getInput('configSearchPageId'), + 'searchPageLabel' => empty($this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT), + 'legalPageLabel' => empty($this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT), + 'sitemapPageLabel' => empty($this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT), + 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), + 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) + ] + ]); + + $this->setData(['config', 'i18n', 'enable', $this->getInput('configI18n',helper::FILTER_BOOLEAN) ]); + + // Générer robots.txt et sitemap + $this->generateFiles(); + + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . $this->getUrl(), + 'notification' => 'Modifications enregistrées', + 'state' => true + ]); + } + + // Liste des pages + self::$pagesList = $this->getData(['page']); + foreach(self::$pagesList as $page => $pageId) { + if ($this->getData(['page',$page,'block']) === 'bar' || + $this->getData(['page',$page,'disable']) === true) { + unset(self::$pagesList[$page]); + } + } + + self::$orphansList = $this->getData(['page']); + foreach(self::$orphansList as $page => $pageId) { + if ($this->getData(['page',$page,'block']) === 'bar' || + $this->getData(['page',$page,'disable']) === true || + $this->getdata(['page',$page, 'position']) !== 0) { + unset(self::$orphansList[$page]); + } + } + + // Valeurs en sortie + $this->addOutput([ + 'title' => 'Référencements', + 'view' => 'social' + ]); + } + + /** * Configuration avancée */ - public function advanced() { + public function network() { // Soumission du formulaire if($this->isPost()) { // Basculement en mise à jour auto @@ -595,8 +824,8 @@ class config extends common { } // Valeurs en sortie $this->addOutput([ - 'title' => 'Configuration avancée', - 'view' => 'advanced' + 'title' => 'Reseau et scripts', + 'view' => 'network' ]); } diff --git a/core/module/config/view/advanced/advanced.php b/core/module/config/view/advanced/advanced.php deleted file mode 100644 index a96b5786..00000000 --- a/core/module/config/view/advanced/advanced.php +++ /dev/null @@ -1,548 +0,0 @@ - -
-
- 'buttonGrey', - 'href' => helper::baseUrl() . 'config', - 'ico' => 'left', - 'value' => 'Retour' - ]); ?> -
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
-
- -
-
- -
- -
-
-
-
-

Maintenance

-
-
- $this->getData(['config', 'maintenance']) - ]); ?> -
-
- helper::baseUrl() . 'config/backup', - 'value' => 'Sauvegarder', - 'ico' => 'download-cloud' - ]); ?> -
-
- helper::baseUrl() . 'config/restore', - 'value' => 'Restaurer', - 'ico' => 'upload-cloud' - ]); ?> -
-
-
-
-
-
-
-
-

Réglages

-
-
- 1, - 'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', - 'label' => 'Favicon', - 'value' => $this->getData(['config', 'favicon']) - ]); ?> -
-
- 1, - 'help' => 'Sélectionnez une icône adaptée à un thème sombre.
Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', - 'label' => 'Favicon thème sombre', - 'value' => $this->getData(['config', 'faviconDark']) - ]); ?> -
-
- 'Fuseau horaire', - 'selected' => $this->getData(['config', 'timezone']), - 'help' => 'Le fuseau horaire est utile au bon référencement' - ]); ?> -
-
-
-
- $this->getData(['config', 'cookieConsent']), - 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' - ]); ?> -
-
- helper::checkRewrite(), - 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' - ]); ?> -
- -
-
-
- $this->getData(['config','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.' - ]); ?> -
-
- $this->getData(['config','autoDisconnect']), - 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' - ]); ?> -
- -
-
-
- $this->getData(['config', 'autoBackup']), - 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' - ]); ?> -

-
- helper::baseUrl() . 'config/copyBackups', - 'value' => 'Backups Auto ➜ FileManager' - ]); ?> -
-
-
-
-
-
-
-
-

Mises à jour automatisée

- -
-
- $this->getData(['config', 'autoUpdate']), - 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', - 'disabled' => !$updateError - ]); ?> -
-
- $this->getData(['config', 'autoUpdateHtaccess']), - 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', - 'disabled' => !$updateError - ]); ?> -
-
- 'download-cloud', - 'href' => helper::baseUrl() . 'install/update', - 'value' => 'Mise à jour manuelle', - 'class' => 'buttonRed', - 'disabled' => !$updateError - ]); ?> -
-
-
-
-
-
-
-
-

Réseaux sociaux -
- -
-

-
-
-
- 'Saisissez votre ID : https://www.facebook.com/[ID].', - 'label' => 'Facebook', - 'value' => $this->getData(['config', 'social', 'facebookId']) - ]); ?> -
-
- 'Saisissez votre ID : https://www.instagram.com/[ID].', - 'label' => 'Instagram', - 'value' => $this->getData(['config', 'social', 'instagramId']) - ]); ?> -
-
- 'ID de la chaîne : https://www.youtube.com/channel/[ID].', - 'label' => 'Chaîne Youtube', - 'value' => $this->getData(['config', 'social', 'youtubeId']) - ]); ?> -
-
- 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', - 'label' => 'Youtube', - 'value' => $this->getData(['config', 'social', 'youtubeUserId']) - ]); ?> -
-
-
-
- 'Saisissez votre ID : https://twitter.com/[ID].', - 'label' => 'Twitter', - 'value' => $this->getData(['config', 'social', 'twitterId']) - ]); ?> -
-
- 'Saisissez votre ID : https://pinterest.com/[ID].', - 'label' => 'Pinterest', - 'value' => $this->getData(['config', 'social', 'pinterestId']) - ]); ?> -
-
- 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', - 'label' => 'Linkedin', - 'value' => $this->getData(['config', 'social', 'linkedinId']) - ]); ?> -
-
- 'Saisissez votre ID Github : https://github.com/[ID].', - 'label' => 'Github', - 'value' => $this->getData(['config', 'social', 'githubId']) - ]); ?> -
-
-
-
-
-
-
-
-
-

Référencement -
- -
-

-
-
-
-
-
- helper::baseUrl() . 'config/configMetaImage', - 'value' => 'Capture Open Graph', - 'ico' => 'pencil' - ]); ?> -
-
-
-
- helper::baseUrl() . 'config/generateFiles', - 'value' => 'Sitemap.xml / Robots.txt', - 'ico' => 'pencil' - ]); ?> -
-
-
-
- $this->getData(['config', 'seo','robots']) - ]); ?> -
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
-

Sécurité de la connexion -
- -
-

-
-
-
- 'Connexions successives', - 'selected' => $this->getData(['config', 'connect', 'attempt']) - ]); ?> -
-
- 'Blocage après échecs', - 'selected' => $this->getData(['config', 'connect', 'timeout']) - ]); ?> -
-
- - helper::baseUrl() . 'config/blacklistDownload', - 'value' => 'Télécharger liste noire', - 'ico' => 'download' - ]); ?> -
-
- 'buttonRed', - 'href' => helper::baseUrl() . 'config/blacklistReset', - 'value' => 'Réinitialiser liste', - 'ico' => 'cancel' - ]); ?> -
-
-
-
- $this->getData(['config', 'connect','captcha']) - ]); ?> -
-
-
-
-
-
-
-
-
-

Journalisation -
- -
-

-
-
-
- $this->getData(['config', 'connect', 'log']) - ]); ?> -
-
- 'Anonymat des adresses IP', - 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), - 'help' => 'La réglementation française impose un anonymat de niveau 2' - ]); ?> -
-
-
-
- helper::baseUrl() . 'config/logDownload', - 'value' => 'Télécharger le journal', - 'ico' => 'download' - ]); ?> -
-
- 'buttonRed', - 'href' => helper::baseUrl() . 'config/logReset', - 'value' => 'Réinitialiser le journal', - 'ico' => 'cancel' - ]); ?> -
-
-
-
-
-
-
-
-
-

Réseau -
- -
-

-
-
-
- 'Type de proxy', - 'selected' => $this->getData(['config', 'proxyType']) - ]); ?> -
-
- 'Adresse du proxy', - 'placeholder' => 'cache.proxy.fr', - 'value' => $this->getData(['config', 'proxyUrl']) - ]); ?> -
-
- 'Port du proxy', - 'placeholder' => '6060', - 'value' => $this->getData(['config', 'proxyPort']) - ]); ?> -
-
-
-
-
-
-
-
-
-

Messagerie SMTP -
- -
-

-
-
-
- $this->getData(['config', 'smtp','enable']), - 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' - ]); ?> -
-
-
-
-
- 'Adresse SMTP', - 'placeholder' => 'smtp.fr', - 'value' => $this->getData(['config', 'smtp','host']) - ]); ?> -
-
- 'Port SMTP', - 'placeholder' => '589', - 'value' => $this->getData(['config', 'smtp','port']) - ]); ?> -
-
- 'Authentification', - 'selected' => $this->getData(['config', 'smtp','auth']) - ]); ?> -
-
-
-
-
- 'Nom utilisateur', - 'value' => $this->getData(['config', 'smtp','username' ]) - ]); ?> -
-
- 'Mot de passe', - 'autocomplete' => 'off', - 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' - ]); ?> -
-
- 'Sécurité', - 'selected' => $this->getData(['config', 'smtp','secure']) - ]); ?> -
-
-
-
-
-
-
-
-
-
-
-

Scripts -
- -
-

-
-
-
- 'Saisissez l\'ID de suivi.', - 'label' => 'Google Analytics', - 'placeholder' => 'UA-XXXXXXXX-X', - 'value' => $this->getData(['config', 'analyticsId']) - ]); ?> -
-
- helper::baseUrl() . 'config/script/head', - 'value' => 'Script dans head', - 'ico' => 'pencil' - ]); ?> -
-
- helper::baseUrl() . 'config/script/body', - 'value' => 'Script dans body', - 'ico' => 'pencil' - ]); ?> -
-
-
-
-
-
- - diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index 5a91e7a7..a3e7fba7 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -15,4 +15,4 @@ /** NE PAS EFFACER * admin.css -*/ \ No newline at end of file +*/ diff --git a/core/module/config/view/index/index.help.html b/core/module/config/view/index/index.help.html index 2db152a1..64f01311 100644 --- a/core/module/config/view/index/index.help.html +++ b/core/module/config/view/index/index.help.html @@ -1,10 +1,159 @@ -

MENTIONS LEGALES

-

Pour faire apparaître un lien 'Mentions légales' dans le pied de page, vous sélectionnez la page puis -dans la barre d'administration vous sélectionnez 'Personnaliser les thèmes', vous cliquez sur le pied de page et vous cochez la case 'Mentions légales'.
-Vous pouvez personnaliser la page 'Mentions légales', accessible en choisissant cette page dans la barre d'administration, ou créer votre propre page.
-Ce site officiel vous indique les mentions obligatoires à y faire figurer

-

RECHERCHE

-

Pour faire apparaître un lien 'Recherche' dans le pied de page, vous procédez de manière similaire.

-

ERREURS ET SITE EN MAINTENANCE

-

Les pages par défaut sont 'Erreur403', 'Erreur 404' et 'Site en maintenance'. Vous pouvez les modifier, en les choisissant à partir de la barre -d'administration, ou créer vos propres pages orphelines (en édition de page sélectionnez dans le bloc 'Emplacement dans le menu' : 'Ne pas afficher').

+

Maintenance

+

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
+Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
+Ici il est possible de "Sauvegarder" et "Restaurer" le site.

+

Sauvegarder

+

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
+Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
+Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
+À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
+Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
+Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

+

Restaurer

+
Paramètres
+

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
+Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

+
Conversion des URL
+

Cette opération est à réaliser AVANT de lancer la restauration !
+Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
+Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
+Ensuite il y a juste à cliquer sur le bouton "convertir".
+Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. +

+

Réglages

+

À ce niveau plusieurs paramètres importants peuvent être configurés.

+

Favicon

+

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
+Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
+Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
+Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
+Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
+Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

+

Favicon thème sombre

+

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

+

Fuseau horaire

+

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

+

Consentement aux cookies

+

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
+Le texte suivant apparaîtra :
+Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
+En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
+Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
+Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
+Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
+ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

+

Sauvegarde quotidienne

+

Il est prudent d'activer ce paramètre.
+Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
+Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". +Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
+

+

Mise à jour en ligne

+

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
+Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
+Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
+Il est donc conseillé d'activer ce paramètre.
+Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
+Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
+

+

Mise à jour manuelle

+

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
+Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
+Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
+L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
+Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
+La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
+

+

Captcha renforcée

+

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
+Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
+Elle s'applique à l'ensemble des Captchas du site.
+Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
+ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
+

+

Copie de sauvegarde

+

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
+En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
+Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
+

+

Préserver htaccess

+

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
+Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
+

+

Réécriture d'URL

+

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
+L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
+En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
+Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
+Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

+

Réseaux sociaux

+

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
+Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
+Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
+Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. +

+

Référencement

+

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
+Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
+Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
+Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

+

Capture Open Graph

+

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
+C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
+Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
+Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
+Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

+

Sitemap.xml / Robots.txt

+

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

+
Sitemap.xml
+

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
+Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

+
Robots.txt
+

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. +Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. +Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
+Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. +

+

Sécurité de la connexion

+

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

+
Connexions successives
+

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

+
Blocage après échecs
+

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

+
Comptes inexistants
+

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
+En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
+Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
+En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
+Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
+Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

+
Captcha à la connexion
+

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
+ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
+

+

Journalisation

+

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
+Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
+Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
+

+

Réseau

+

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
+Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
+Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
+Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
+

+

Messagerie SMTP

+

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
+Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
+Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
+Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
+

+

Scripts

+

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

+

Google Analytics

+

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
+À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
+De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

+

Scripts dans head / Scripts dans body

+

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
+

diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 8d0c2d92..550b5c40 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -1,4 +1,4 @@ - +
- 'buttonHelp', 'ico' => 'help', 'value' => 'Aide' ]); ?>
-
- helper::baseUrl() . 'config/advanced', - 'value' => 'Avancée', - 'ico' => 'cog-alt', - ]); ?> -
-
- +
+
- +
- + +
+
+
+
+
+ helper::baseUrl() . 'config/index', + 'value' => 'Bases' + ]); ?> +
+
+ helper::baseUrl() . 'config/locale', + 'value' => 'Localisation' + ]); ?> +
+
+ helper::baseUrl() . 'config/social', + 'value' => 'Référencement' + ]); ?> +
+
+ helper::baseUrl() . 'config/safety', + 'value' => 'Sécurité' + ]); ?> +
+
+ helper::baseUrl() . 'config/network', + 'value' => 'Réseau' + ]); ?> +
+
+
-

Langues étrangères

+

Paramètres

-
- $this->getData(['config', 'i18n', 'enable']), - 'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.' +
+ 1, + 'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', + 'label' => 'Favicon', + 'value' => $this->getData(['config', 'favicon']) + ]); ?> +
+
+ 1, + 'help' => 'Sélectionnez une icône adaptée à un thème sombre.
Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', + 'label' => 'Favicon thème sombre', + 'value' => $this->getData(['config', 'faviconDark']) + ]); ?> +
+
+ 'Fuseau horaire', + 'selected' => $this->getData(['config', 'timezone']), + 'help' => 'Le fuseau horaire est utile au bon référencement' + ]); ?> +
+
+
+
+ $this->getData(['config', 'cookieConsent']), + 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' + ]); ?> +
+
+ helper::checkRewrite(), + 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' + ]); ?> +
+ +
+
+
+ $this->getData(['config','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.' + ]); ?> +
+
+ $this->getData(['config','autoDisconnect']), + 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' + ]); ?> +
+ +
+
+
+ $this->getData(['config', 'autoBackup']), + 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' ]); ?>

@@ -48,113 +132,66 @@
-

Identité du site (en langue )

-

Cette page doit être adaptée à chaque traduction rédigée.

+

Mises à jour automatisée

+
-
- 'Titre du site' , - 'value' => $this->getData(['locale', 'title']), - 'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' +
+ $this->getData(['config', 'autoUpdate']), + 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', + 'disabled' => !$updateError + ]); ?> +
+
+ $this->getData(['config', 'autoUpdateHtaccess']), + 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', + 'disabled' => !$updateError + ]); ?> +
+
+ 'download-cloud', + 'href' => helper::baseUrl() . 'install/update', + 'value' => 'Mise à jour manuelle', + 'class' => 'buttonRed', + 'disabled' => !$updateError + ]); ?> +
+
+
+
+
+
+
+
+

Maintenance

+
+
+ $this->getData(['config', 'maintenance']) ]); ?>
- 'ZwiiCMS Version', - 'value' => common::ZWII_VERSION, - 'readonly' => true + helper::baseUrl() . 'config/backup', + 'value' => 'Sauvegarder', + 'ico' => 'download-cloud' ]); ?>
-
-
-
- 'Description du site', - 'value' => $this->getData(['locale', 'metaDescription']), - 'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.' +
+ helper::baseUrl() . 'config/restore', + 'value' => 'Restaurer', + 'ico' => 'upload-cloud' ]); ?>
-
-
-
-
-

Etiquettes des pages spéciales

-
-
- 'Mentions légales', - 'placeholder' => 'Mentions légales', - 'value' => $this->getData(['locale', 'legalPageLabel']) +
+ helper::baseUrl() . 'config/copyBackups', + 'value' => 'Backups Auto ➜ FileManager' ]); ?>
-
- 'Rechercher', - 'placeholder' => 'Rechercher', - 'value' => $this->getData(['locale', 'searchPageLabel']) - ]); ?> -
-
- 'Plan du site', - 'placeholder' => 'Plan du site', - 'value' => $this->getData(['locale', 'sitemapPageLabel']), - ]); ?> -
-
-
-
-
-
-
-
-

Assignation des pages spéciales

-
-
- 'Accueil du site', - 'selected' =>$this->getData(['locale', 'homePageId']), - 'help' => 'La première page que vos visiteurs verront.' - ]); ?> -
-
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ - 'label' => 'Accès interdit, erreur 403', - 'selected' =>$this->getData(['locale', 'page403']), - 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' - ]); ?> -
-
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ - 'label' => 'Page inexistante, erreur 404', - 'selected' =>$this->getData(['locale', 'page404']), - 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' - ]); ?> -
-
-
-
- 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ - 'label' => 'Mentions légales', - 'selected' => $this->getData(['locale', 'legalPageId']), - 'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.' - ]); ?> -
-
- 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ - 'label' => 'Recherche dans le site', - 'selected' => $this->getData(['locale', 'searchPageId']), - 'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.' - ]); ?> -
-
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ - 'label' => 'Site en maintenance', - 'selected' =>$this->getData(['locale', 'page302']), - 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' - ]); ?> -
diff --git a/core/module/config/view/locale/locale.css b/core/module/config/view/locale/locale.css new file mode 100644 index 00000000..f125f340 --- /dev/null +++ b/core/module/config/view/locale/locale.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-2021, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** NE PAS EFFACER +* admin.css +*/ diff --git a/core/module/config/view/locale/locale.help.html b/core/module/config/view/locale/locale.help.html new file mode 100644 index 00000000..2db152a1 --- /dev/null +++ b/core/module/config/view/locale/locale.help.html @@ -0,0 +1,10 @@ +

MENTIONS LEGALES

+

Pour faire apparaître un lien 'Mentions légales' dans le pied de page, vous sélectionnez la page puis +dans la barre d'administration vous sélectionnez 'Personnaliser les thèmes', vous cliquez sur le pied de page et vous cochez la case 'Mentions légales'.
+Vous pouvez personnaliser la page 'Mentions légales', accessible en choisissant cette page dans la barre d'administration, ou créer votre propre page.
+Ce site officiel vous indique les mentions obligatoires à y faire figurer

+

RECHERCHE

+

Pour faire apparaître un lien 'Recherche' dans le pied de page, vous procédez de manière similaire.

+

ERREURS ET SITE EN MAINTENANCE

+

Les pages par défaut sont 'Erreur403', 'Erreur 404' et 'Site en maintenance'. Vous pouvez les modifier, en les choisissant à partir de la barre +d'administration, ou créer vos propres pages orphelines (en édition de page sélectionnez dans le bloc 'Emplacement dans le menu' : 'Ne pas afficher').

diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php new file mode 100644 index 00000000..fe707e17 --- /dev/null +++ b/core/module/config/view/locale/locale.php @@ -0,0 +1,191 @@ + +
+
+ 'buttonGrey', + 'href' => helper::baseUrl(false), + 'ico' => 'home', + 'value' => 'Accueil' + ]); ?> +
+
+ 'buttonHelp', + 'ico' => 'help', + 'value' => 'Aide' + ]); ?> +
+
+ +
+
+ +
+ +
+
+
+
+
+ helper::baseUrl() . 'config/index', + 'value' => 'Bases' + ]); ?> +
+
+ helper::baseUrl() . 'config/locale', + 'value' => 'Localisation' + ]); ?> +
+
+ helper::baseUrl() . 'config/social', + 'value' => 'Référencement' + ]); ?> +
+
+ helper::baseUrl() . 'config/safety', + 'value' => 'Sécurité' + ]); ?> +
+
+ helper::baseUrl() . 'config/network', + 'value' => 'Réseau' + ]); ?> +
+
+
+
+
+
+
+

Langues étrangères

+
+
+ $this->getData(['config', 'i18n', 'enable']), + 'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.' + ]); ?> +
+
+
+
+
+
+
+
+

Identité du site (en langue )

+

Cette page doit être adaptée à chaque traduction rédigée.

+
+
+ 'Titre du site' , + 'value' => $this->getData(['locale', 'title']), + 'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' + ]); ?> +
+
+ 'ZwiiCMS Version', + 'value' => common::ZWII_VERSION, + 'readonly' => true + ]); ?> +
+
+
+
+ 'Description du site', + 'value' => $this->getData(['locale', 'metaDescription']), + 'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.' + ]); ?> +
+
+
+
+
+

Etiquettes des pages spéciales

+
+
+ 'Mentions légales', + 'placeholder' => 'Mentions légales', + 'value' => $this->getData(['locale', 'legalPageLabel']) + ]); ?> +
+
+ 'Rechercher', + 'placeholder' => 'Rechercher', + 'value' => $this->getData(['locale', 'searchPageLabel']) + ]); ?> +
+
+ 'Plan du site', + 'placeholder' => 'Plan du site', + 'value' => $this->getData(['locale', 'sitemapPageLabel']), + ]); ?> +
+
+
+
+
+
+
+
+

Assignation des pages spéciales

+
+
+ 'Accueil du site', + 'selected' =>$this->getData(['locale', 'homePageId']), + 'help' => 'La première page que vos visiteurs verront.' + ]); ?> +
+
+ 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'label' => 'Accès interdit, erreur 403', + 'selected' =>$this->getData(['locale', 'page403']), + 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' + ]); ?> +
+
+ 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'label' => 'Page inexistante, erreur 404', + 'selected' =>$this->getData(['locale', 'page404']), + 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' + ]); ?> +
+
+
+
+ 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ + 'label' => 'Mentions légales', + 'selected' => $this->getData(['locale', 'legalPageId']), + 'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.' + ]); ?> +
+
+ 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ + 'label' => 'Recherche dans le site', + 'selected' => $this->getData(['locale', 'searchPageId']), + 'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.' + ]); ?> +
+
+ 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'label' => 'Site en maintenance', + 'selected' =>$this->getData(['locale', 'page302']), + 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' + ]); ?> +
+
+
+
+
+ diff --git a/core/module/config/view/advanced/advanced.css b/core/module/config/view/network/network.css similarity index 100% rename from core/module/config/view/advanced/advanced.css rename to core/module/config/view/network/network.css diff --git a/core/module/config/view/advanced/advanced.help.html b/core/module/config/view/network/network.help.html similarity index 100% rename from core/module/config/view/advanced/advanced.help.html rename to core/module/config/view/network/network.help.html diff --git a/core/module/config/view/advanced/advanced.js.php b/core/module/config/view/network/network.js.php similarity index 100% rename from core/module/config/view/advanced/advanced.js.php rename to core/module/config/view/network/network.js.php diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php new file mode 100644 index 00000000..2eaadbaf --- /dev/null +++ b/core/module/config/view/network/network.php @@ -0,0 +1,172 @@ + +
+
+ 'buttonGrey', + 'href' => helper::baseUrl(false), + 'ico' => 'home', + 'value' => 'Accueil' + ]); ?> +
+
+ 'buttonHelp', + 'ico' => 'help', + 'value' => 'Aide' + ]); ?> +
+
+ +
+
+ +
+ +
+
+
+
+
+ helper::baseUrl() . 'config/index', + 'value' => 'Bases' + ]); ?> +
+
+ helper::baseUrl() . 'config/locale', + 'value' => 'Localisation' + ]); ?> +
+
+ helper::baseUrl() . 'config/social', + 'value' => 'Référencement' + ]); ?> +
+
+ helper::baseUrl() . 'config/safety', + 'value' => 'Sécurité' + ]); ?> +
+
+ helper::baseUrl() . 'config/network', + 'value' => 'Réseau' + ]); ?> +
+
+
+
+
+
+
+

Réseau +
+ +
+

+
+
+
+ 'Type de proxy', + 'selected' => $this->getData(['config', 'proxyType']) + ]); ?> +
+
+ 'Adresse du proxy', + 'placeholder' => 'cache.proxy.fr', + 'value' => $this->getData(['config', 'proxyUrl']) + ]); ?> +
+
+ 'Port du proxy', + 'placeholder' => '6060', + 'value' => $this->getData(['config', 'proxyPort']) + ]); ?> +
+
+
+
+
+
+
+
+
+

Messagerie SMTP +
+ +
+

+
+
+
+ $this->getData(['config', 'smtp','enable']), + 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' + ]); ?> +
+
+
+
+
+ 'Adresse SMTP', + 'placeholder' => 'smtp.fr', + 'value' => $this->getData(['config', 'smtp','host']) + ]); ?> +
+
+ 'Port SMTP', + 'placeholder' => '589', + 'value' => $this->getData(['config', 'smtp','port']) + ]); ?> +
+
+ 'Authentification', + 'selected' => $this->getData(['config', 'smtp','auth']) + ]); ?> +
+
+
+
+
+ 'Nom utilisateur', + 'value' => $this->getData(['config', 'smtp','username' ]) + ]); ?> +
+
+ 'Mot de passe', + 'autocomplete' => 'off', + 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' + ]); ?> +
+
+ 'Sécurité', + 'selected' => $this->getData(['config', 'smtp','secure']) + ]); ?> +
+
+
+
+
+
+
+
+ + diff --git a/core/module/config/view/safety/safety.css b/core/module/config/view/safety/safety.css new file mode 100644 index 00000000..fdc5d676 --- /dev/null +++ b/core/module/config/view/safety/safety.css @@ -0,0 +1,37 @@ +/** + * 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-2021, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** NE PAS EFFACER +* admin.css +*/ + +.blockContainer { + display : none; +} + +#info .zwiico-plus-circled { + display: inline; +} + +.zwiico-minus-circled, +#info .zwiico-minus-circled { + display: none; +} + + +.zwiico-minus-circled, +.zwiico-plus-circled { + cursor: pointer; +} \ No newline at end of file diff --git a/core/module/config/view/safety/safety.help.html b/core/module/config/view/safety/safety.help.html new file mode 100644 index 00000000..64f01311 --- /dev/null +++ b/core/module/config/view/safety/safety.help.html @@ -0,0 +1,159 @@ +

Maintenance

+

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
+Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
+Ici il est possible de "Sauvegarder" et "Restaurer" le site.

+

Sauvegarder

+

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
+Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
+Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
+À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
+Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
+Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

+

Restaurer

+
Paramètres
+

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
+Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

+
Conversion des URL
+

Cette opération est à réaliser AVANT de lancer la restauration !
+Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
+Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
+Ensuite il y a juste à cliquer sur le bouton "convertir".
+Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. +

+

Réglages

+

À ce niveau plusieurs paramètres importants peuvent être configurés.

+

Favicon

+

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
+Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
+Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
+Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
+Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
+Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

+

Favicon thème sombre

+

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

+

Fuseau horaire

+

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

+

Consentement aux cookies

+

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
+Le texte suivant apparaîtra :
+Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
+En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
+Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
+Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
+Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
+ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

+

Sauvegarde quotidienne

+

Il est prudent d'activer ce paramètre.
+Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
+Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". +Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
+

+

Mise à jour en ligne

+

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
+Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
+Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
+Il est donc conseillé d'activer ce paramètre.
+Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
+Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
+

+

Mise à jour manuelle

+

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
+Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
+Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
+L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
+Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
+La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
+

+

Captcha renforcée

+

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
+Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
+Elle s'applique à l'ensemble des Captchas du site.
+Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
+ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
+

+

Copie de sauvegarde

+

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
+En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
+Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
+

+

Préserver htaccess

+

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
+Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
+

+

Réécriture d'URL

+

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
+L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
+En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
+Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
+Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

+

Réseaux sociaux

+

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
+Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
+Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
+Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. +

+

Référencement

+

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
+Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
+Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
+Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

+

Capture Open Graph

+

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
+C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
+Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
+Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
+Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

+

Sitemap.xml / Robots.txt

+

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

+
Sitemap.xml
+

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
+Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

+
Robots.txt
+

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. +Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. +Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
+Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. +

+

Sécurité de la connexion

+

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

+
Connexions successives
+

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

+
Blocage après échecs
+

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

+
Comptes inexistants
+

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
+En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
+Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
+En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
+Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
+Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

+
Captcha à la connexion
+

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
+ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
+

+

Journalisation

+

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
+Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
+Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
+

+

Réseau

+

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
+Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
+Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
+Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
+

+

Messagerie SMTP

+

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
+Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
+Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
+Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
+

+

Scripts

+

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

+

Google Analytics

+

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
+À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
+De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

+

Scripts dans head / Scripts dans body

+

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
+

diff --git a/core/module/config/view/safety/safety.js.php b/core/module/config/view/safety/safety.js.php new file mode 100644 index 00000000..34cdb188 --- /dev/null +++ b/core/module/config/view/safety/safety.js.php @@ -0,0 +1,135 @@ +/** + * 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-2021, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + +$( document).ready(function() { + /** + * Afficher et masquer options SMTP + */ + if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { + $("#configAdvancedSmtpParam").addClass("disabled"); + $("#configAdvancedSmtpParam").slideDown(); + } else { + $("#configAdvancedSmtpParam").removeClass("disabled"); + $("#configAdvancedSmtpParam").slideUp(); + } + + /** + * Afficher et masquer options Auth + */ + + if ($("select[name=configAdvancedSmtpEnable]").val() == true) { + $("#configAdvancedSmtpAuthParam").addClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideDown(); + } else { + $("#configAdvancedSmtpAuthParam").removeClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideUp(); + } + + + /** + * Initialisation des blocs + */ + + var i = [ "social", "seo", "network", "smtp", "login", "logs", "script" ]; + $.each(i,function(e) { + if (getCookie(i[e]) === "true") { + $("#" + i[e]).find(".zwiico-plus-circled").hide(); + $("#" + i[e]).find(".zwiico-minus-circled").show(); + $("#" + i[e]).find(".blockContainer").show(); + } + }); + + /** + * + * Blocs dépliants + */ + + $("div .block").click(function(e) { + $(this).find(".zwiico-plus-circled").toggle(); + $(this).find(".zwiico-minus-circled").toggle(); + $(this).find(".blockContainer").slideToggle(); + /* + * Sauvegarder la position des blocs + * true = bloc déplié + */ + document.cookie = $(this).attr('id') + "=" + $(this).find(".zwiico-minus-circled").is(":visible") + ";expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax"; + }).on("click", "span > input, input, textarea, label, option, button, a:not(.inputFile), .blockContainer", function(e) { + // Empêcher les déclenchements dans les blocs + e.stopPropagation(); + }); + + + + /** + * Afficher et masquer options SMTP + */ + $("input[name=configAdvancedSmtpEnable]").on("change", function() { + if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { + $("#configAdvancedSmtpParam").addClass("disabled"); + $("#configAdvancedSmtpParam").slideDown(); + } else { + $("#configAdvancedSmtpParam").removeClass("disabled"); + $("#configAdvancedSmtpParam").slideUp(); + } + }); + + /** + * Afficher et masquer options Auth + */ + + $("select[name=configAdvancedSmtpAuth]").on("change", function() { + if ($("select[name=configAdvancedSmtpAuth]").val() == true) { + $("#configAdvancedSmtpAuthParam").addClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideDown(); + } else { + $("#configAdvancedSmtpAuthParam").removeClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideUp(); + } + }); + + /** + * Options de blocage de connexions + * Contrôle la cohérence des sélections et interdit une seule valeur Aucune + */ + $("select[name=configConnectAttempt]").on("change", function() { + if ($("select[name=configConnectAttempt]").val() === "999") { + $("select[name=configConnectTimeout]").val(0); + } else { + if ($("select[name=configConnectTimeout]").val() === "0") { + $("select[name=configConnectTimeout]").val(300); + } + } + }); + $("select[name=configConnectTimeout]").on("change", function() { + if ($("select[name=configConnectTimeout]").val() === "0") { + $("select[name=configConnectAttempt]").val(999); + } else { + if ($("select[name=configConnectAttempt]").val() === "999") { + $("select[name=configConnectAttempt]").val(3); + } + } + }); + +}); + + + + /** + * Lire un cookie s'il existe + */ + function getCookie(name) { + var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); + return v ? v[2] : null; + } + + + diff --git a/core/module/config/view/safety/safety.php b/core/module/config/view/safety/safety.php new file mode 100644 index 00000000..f26a8717 --- /dev/null +++ b/core/module/config/view/safety/safety.php @@ -0,0 +1,167 @@ + +
+
+ 'buttonGrey', + 'href' => helper::baseUrl(false), + 'ico' => 'home', + 'value' => 'Accueil' + ]); ?> +
+
+ 'buttonHelp', + 'ico' => 'help', + 'value' => 'Aide' + ]); ?> +
+
+ +
+
+ +
+ +
+
+
+
+
+ helper::baseUrl() . 'config/index', + 'value' => 'Bases' + ]); ?> +
+
+ helper::baseUrl() . 'config/locale', + 'value' => 'Localisation' + ]); ?> +
+
+ helper::baseUrl() . 'config/social', + 'value' => 'Référencement' + ]); ?> +
+
+ helper::baseUrl() . 'config/safety', + 'value' => 'Sécurité' + ]); ?> +
+
+ helper::baseUrl() . 'config/network', + 'value' => 'Réseau' + ]); ?> +
+
+
+
+
+
+
+

Sécurité de la connexion +
+ +
+

+
+
+
+ 'Connexions successives', + 'selected' => $this->getData(['config', 'connect', 'attempt']) + ]); ?> +
+
+ 'Blocage après échecs', + 'selected' => $this->getData(['config', 'connect', 'timeout']) + ]); ?> +
+
+ + helper::baseUrl() . 'config/blacklistDownload', + 'value' => 'Télécharger liste noire', + 'ico' => 'download' + ]); ?> +
+
+ 'buttonRed', + 'href' => helper::baseUrl() . 'config/blacklistReset', + 'value' => 'Réinitialiser liste', + 'ico' => 'cancel' + ]); ?> +
+
+
+
+ $this->getData(['config', 'connect','captcha']) + ]); ?> +
+
+
+
+
+
+
+
+
+

Journalisation +
+ +
+

+
+
+
+ $this->getData(['config', 'connect', 'log']) + ]); ?> +
+
+ 'Anonymat des adresses IP', + 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), + 'help' => 'La réglementation française impose un anonymat de niveau 2' + ]); ?> +
+
+
+
+ helper::baseUrl() . 'config/logDownload', + 'value' => 'Télécharger le journal', + 'ico' => 'download' + ]); ?> +
+
+ 'buttonRed', + 'href' => helper::baseUrl() . 'config/logReset', + 'value' => 'Réinitialiser le journal', + 'ico' => 'cancel' + ]); ?> +
+
+
+
+
+
+ diff --git a/core/module/config/view/social/social.css b/core/module/config/view/social/social.css new file mode 100644 index 00000000..fdc5d676 --- /dev/null +++ b/core/module/config/view/social/social.css @@ -0,0 +1,37 @@ +/** + * 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-2021, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** NE PAS EFFACER +* admin.css +*/ + +.blockContainer { + display : none; +} + +#info .zwiico-plus-circled { + display: inline; +} + +.zwiico-minus-circled, +#info .zwiico-minus-circled { + display: none; +} + + +.zwiico-minus-circled, +.zwiico-plus-circled { + cursor: pointer; +} \ No newline at end of file diff --git a/core/module/config/view/social/social.help.html b/core/module/config/view/social/social.help.html new file mode 100644 index 00000000..64f01311 --- /dev/null +++ b/core/module/config/view/social/social.help.html @@ -0,0 +1,159 @@ +

Maintenance

+

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
+Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
+Ici il est possible de "Sauvegarder" et "Restaurer" le site.

+

Sauvegarder

+

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
+Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
+Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
+À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
+Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
+Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

+

Restaurer

+
Paramètres
+

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
+Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

+
Conversion des URL
+

Cette opération est à réaliser AVANT de lancer la restauration !
+Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
+Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
+Ensuite il y a juste à cliquer sur le bouton "convertir".
+Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. +

+

Réglages

+

À ce niveau plusieurs paramètres importants peuvent être configurés.

+

Favicon

+

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
+Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
+Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
+Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
+Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
+Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

+

Favicon thème sombre

+

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

+

Fuseau horaire

+

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

+

Consentement aux cookies

+

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
+Le texte suivant apparaîtra :
+Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
+En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
+Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
+Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
+Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
+ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

+

Sauvegarde quotidienne

+

Il est prudent d'activer ce paramètre.
+Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
+Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". +Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
+

+

Mise à jour en ligne

+

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
+Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
+Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
+Il est donc conseillé d'activer ce paramètre.
+Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
+Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
+

+

Mise à jour manuelle

+

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
+Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
+Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
+L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
+Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
+La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
+

+

Captcha renforcée

+

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
+Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
+Elle s'applique à l'ensemble des Captchas du site.
+Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
+ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
+

+

Copie de sauvegarde

+

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
+En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
+Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
+

+

Préserver htaccess

+

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
+Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
+

+

Réécriture d'URL

+

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
+L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
+En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
+Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
+Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

+

Réseaux sociaux

+

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
+Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
+Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
+Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. +

+

Référencement

+

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
+Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
+Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
+Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

+

Capture Open Graph

+

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
+C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
+Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
+Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
+Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

+

Sitemap.xml / Robots.txt

+

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

+
Sitemap.xml
+

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
+Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

+
Robots.txt
+

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. +Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. +Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
+Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. +

+

Sécurité de la connexion

+

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

+
Connexions successives
+

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

+
Blocage après échecs
+

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

+
Comptes inexistants
+

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
+En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
+Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
+En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
+Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
+Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

+
Captcha à la connexion
+

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
+ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
+

+

Journalisation

+

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
+Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
+Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
+

+

Réseau

+

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
+Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
+Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
+Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
+

+

Messagerie SMTP

+

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
+Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
+Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
+Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
+

+

Scripts

+

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

+

Google Analytics

+

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
+À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
+De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

+

Scripts dans head / Scripts dans body

+

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
+

diff --git a/core/module/config/view/social/social.js.php b/core/module/config/view/social/social.js.php new file mode 100644 index 00000000..34cdb188 --- /dev/null +++ b/core/module/config/view/social/social.js.php @@ -0,0 +1,135 @@ +/** + * 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-2021, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + +$( document).ready(function() { + /** + * Afficher et masquer options SMTP + */ + if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { + $("#configAdvancedSmtpParam").addClass("disabled"); + $("#configAdvancedSmtpParam").slideDown(); + } else { + $("#configAdvancedSmtpParam").removeClass("disabled"); + $("#configAdvancedSmtpParam").slideUp(); + } + + /** + * Afficher et masquer options Auth + */ + + if ($("select[name=configAdvancedSmtpEnable]").val() == true) { + $("#configAdvancedSmtpAuthParam").addClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideDown(); + } else { + $("#configAdvancedSmtpAuthParam").removeClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideUp(); + } + + + /** + * Initialisation des blocs + */ + + var i = [ "social", "seo", "network", "smtp", "login", "logs", "script" ]; + $.each(i,function(e) { + if (getCookie(i[e]) === "true") { + $("#" + i[e]).find(".zwiico-plus-circled").hide(); + $("#" + i[e]).find(".zwiico-minus-circled").show(); + $("#" + i[e]).find(".blockContainer").show(); + } + }); + + /** + * + * Blocs dépliants + */ + + $("div .block").click(function(e) { + $(this).find(".zwiico-plus-circled").toggle(); + $(this).find(".zwiico-minus-circled").toggle(); + $(this).find(".blockContainer").slideToggle(); + /* + * Sauvegarder la position des blocs + * true = bloc déplié + */ + document.cookie = $(this).attr('id') + "=" + $(this).find(".zwiico-minus-circled").is(":visible") + ";expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax"; + }).on("click", "span > input, input, textarea, label, option, button, a:not(.inputFile), .blockContainer", function(e) { + // Empêcher les déclenchements dans les blocs + e.stopPropagation(); + }); + + + + /** + * Afficher et masquer options SMTP + */ + $("input[name=configAdvancedSmtpEnable]").on("change", function() { + if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { + $("#configAdvancedSmtpParam").addClass("disabled"); + $("#configAdvancedSmtpParam").slideDown(); + } else { + $("#configAdvancedSmtpParam").removeClass("disabled"); + $("#configAdvancedSmtpParam").slideUp(); + } + }); + + /** + * Afficher et masquer options Auth + */ + + $("select[name=configAdvancedSmtpAuth]").on("change", function() { + if ($("select[name=configAdvancedSmtpAuth]").val() == true) { + $("#configAdvancedSmtpAuthParam").addClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideDown(); + } else { + $("#configAdvancedSmtpAuthParam").removeClass("disabled"); + $("#configAdvancedSmtpAuthParam").slideUp(); + } + }); + + /** + * Options de blocage de connexions + * Contrôle la cohérence des sélections et interdit une seule valeur Aucune + */ + $("select[name=configConnectAttempt]").on("change", function() { + if ($("select[name=configConnectAttempt]").val() === "999") { + $("select[name=configConnectTimeout]").val(0); + } else { + if ($("select[name=configConnectTimeout]").val() === "0") { + $("select[name=configConnectTimeout]").val(300); + } + } + }); + $("select[name=configConnectTimeout]").on("change", function() { + if ($("select[name=configConnectTimeout]").val() === "0") { + $("select[name=configConnectAttempt]").val(999); + } else { + if ($("select[name=configConnectAttempt]").val() === "999") { + $("select[name=configConnectAttempt]").val(3); + } + } + }); + +}); + + + + /** + * Lire un cookie s'il existe + */ + function getCookie(name) { + var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); + return v ? v[2] : null; + } + + + diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php new file mode 100644 index 00000000..260e2161 --- /dev/null +++ b/core/module/config/view/social/social.php @@ -0,0 +1,226 @@ + +
+
+ 'buttonGrey', + 'href' => helper::baseUrl(false), + 'ico' => 'home', + 'value' => 'Accueil' + ]); ?> +
+
+ 'buttonHelp', + 'ico' => 'help', + 'value' => 'Aide' + ]); ?> +
+
+ +
+
+ +
+ +
+
+
+
+
+ helper::baseUrl() . 'config/index', + 'value' => 'Bases' + ]); ?> +
+
+ helper::baseUrl() . 'config/locale', + 'value' => 'Localisation' + ]); ?> +
+
+ helper::baseUrl() . 'config/social', + 'value' => 'Référencement' + ]); ?> +
+
+ helper::baseUrl() . 'config/safety', + 'value' => 'Sécurité' + ]); ?> +
+
+ helper::baseUrl() . 'config/network', + 'value' => 'Réseau' + ]); ?> +
+
+
+
+
+
+
+

Réseaux sociaux +
+ +
+

+
+
+
+ 'Saisissez votre ID : https://www.facebook.com/[ID].', + 'label' => 'Facebook', + 'value' => $this->getData(['config', 'social', 'facebookId']) + ]); ?> +
+
+ 'Saisissez votre ID : https://www.instagram.com/[ID].', + 'label' => 'Instagram', + 'value' => $this->getData(['config', 'social', 'instagramId']) + ]); ?> +
+
+ 'ID de la chaîne : https://www.youtube.com/channel/[ID].', + 'label' => 'Chaîne Youtube', + 'value' => $this->getData(['config', 'social', 'youtubeId']) + ]); ?> +
+
+ 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', + 'label' => 'Youtube', + 'value' => $this->getData(['config', 'social', 'youtubeUserId']) + ]); ?> +
+
+
+
+ 'Saisissez votre ID : https://twitter.com/[ID].', + 'label' => 'Twitter', + 'value' => $this->getData(['config', 'social', 'twitterId']) + ]); ?> +
+
+ 'Saisissez votre ID : https://pinterest.com/[ID].', + 'label' => 'Pinterest', + 'value' => $this->getData(['config', 'social', 'pinterestId']) + ]); ?> +
+
+ 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', + 'label' => 'Linkedin', + 'value' => $this->getData(['config', 'social', 'linkedinId']) + ]); ?> +
+
+ 'Saisissez votre ID Github : https://github.com/[ID].', + 'label' => 'Github', + 'value' => $this->getData(['config', 'social', 'githubId']) + ]); ?> +
+
+
+
+
+
+
+
+
+

Référencement +
+ +
+

+
+
+
+
+
+ helper::baseUrl() . 'config/configMetaImage', + 'value' => 'Capture Open Graph', + 'ico' => 'pencil' + ]); ?> +
+
+
+
+ helper::baseUrl() . 'config/generateFiles', + 'value' => 'Sitemap.xml / Robots.txt', + 'ico' => 'pencil' + ]); ?> +
+
+
+
+ $this->getData(['config', 'seo','robots']) + ]); ?> +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+

Scripts externes

+
+
+
+ 'Saisissez l\'ID de suivi.', + 'label' => 'Google Analytics', + 'placeholder' => 'UA-XXXXXXXX-X', + 'value' => $this->getData(['config', 'analyticsId']) + ]); ?> +
+
+ helper::baseUrl() . 'config/script/head', + 'value' => 'Script dans head', + 'ico' => 'pencil' + ]); ?> +
+
+ helper::baseUrl() . 'config/script/body', + 'value' => 'Script dans body', + 'ico' => 'pencil' + ]); ?> +
+
+
+
+
+
+ + From f891e5a0c1beb1842ba0de8cd17af44065b54066 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 29 Oct 2021 18:34:01 +0200 Subject: [PATCH 002/277] masques ok --- core/core.js.php | 10 +- core/core.php | 2 +- core/layout/common.css | 10 +- core/module/config/config.php | 2 +- core/module/config/view/index/index.help.html | 143 ++------- core/module/config/view/index/index.php | 8 +- .../config/view/locale/locale.help.html | 10 +- core/module/config/view/locale/locale.php | 10 +- core/module/config/view/network/network.css | 19 -- .../config/view/network/network.help.html | 152 +--------- .../module/config/view/network/network.js.php | 47 +-- core/module/config/view/network/network.php | 150 +++++----- .../config/view/safety/safety.help.html | 143 +-------- core/module/config/view/safety/safety.js.php | 135 --------- core/module/config/view/safety/safety.php | 156 +++++----- core/module/config/view/social/social.css | 21 +- .../config/view/social/social.help.html | 137 +-------- core/module/config/view/social/social.js.php | 135 --------- core/module/config/view/social/social.php | 280 ++++++++---------- 19 files changed, 337 insertions(+), 1233 deletions(-) delete mode 100644 core/module/config/view/safety/safety.js.php delete mode 100644 core/module/config/view/social/social.js.php diff --git a/core/core.js.php b/core/core.js.php index f21a5f9d..6dbbe598 100644 --- a/core/core.js.php +++ b/core/core.js.php @@ -483,16 +483,20 @@ $(document).ready(function(){ * */ - $(".buttonHelp").on({ - click: function () { + $(".buttonHelp").click(function() { $(".helpDisplayContent").slideToggle(); + /** if( $(".buttonHelp").css('opacity') > '0.75'){ $(".buttonHelp").css('opacity','0.5'); } else{ $(".buttonHelp").css('opacity','1'); } - } + */ + }); + + $(".helpDisplayContent").click(function() { + $(".helpDisplayContent").slideToggle(); }); /** diff --git a/core/core.php b/core/core.php index 37413657..d881e4a8 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.1.00'; + const ZWII_VERSION = '11.1.01'; const ZWII_UPDATE_CHANNEL = "v11"; public static $actions = []; diff --git a/core/layout/common.css b/core/layout/common.css index bd6e8b5d..375ebad9 100755 --- a/core/layout/common.css +++ b/core/layout/common.css @@ -1711,13 +1711,13 @@ th.col12 { display: none; width: 100%; padding: 10px 10px; - -webkit-box-shadow: 5px 5px 11px 0px #222222; - box-shadow: 5px 5px 11px 0px #222222; - border-radius: 5px; - z-index: 30; + -webkit-box-shadow: 5px 5px 11px 0px #222222; + box-shadow: 5px 5px 11px 0px #222222; + border-radius: 5px; + z-index: 30; } -.helpDisplayButton { +.helpDisplayContent, .helpDisplayButton { cursor: pointer; } diff --git a/core/module/config/config.php b/core/module/config/config.php index 9e5acb54..6b2bc2cb 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -684,7 +684,7 @@ class config extends common { // Valeurs en sortie $this->addOutput([ - 'title' => 'Référencements', + 'title' => 'Référencement', 'view' => 'social' ]); } diff --git a/core/module/config/view/index/index.help.html b/core/module/config/view/index/index.help.html index 64f01311..31508ccc 100644 --- a/core/module/config/view/index/index.help.html +++ b/core/module/config/view/index/index.help.html @@ -1,26 +1,5 @@ -

Maintenance

-

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
-Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
-Ici il est possible de "Sauvegarder" et "Restaurer" le site.

-

Sauvegarder

-

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
-Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
-Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
-À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
-Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
-Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

-

Restaurer

-
Paramètres
-

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
-Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

-
Conversion des URL
-

Cette opération est à réaliser AVANT de lancer la restauration !
-Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
-Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
-Ensuite il y a juste à cliquer sur le bouton "convertir".
-Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. -

-

Réglages

+

Aide

+

PARAMETRES

À ce niveau plusieurs paramètres importants peuvent être configurés.

Favicon

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
@@ -48,7 +27,8 @@ Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /s Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.

-

Mise à jour en ligne

+

MISE A JOUR AUTOMATISEE

+

Rechercher une mise à jour en ligne

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
@@ -64,96 +44,25 @@ L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hé Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
La seule possibilité pour alors réaliser une mise à jour est alors via FTP.

-

Captcha renforcée

-

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
-Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
-Elle s'applique à l'ensemble des Captchas du site.
-Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
-ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
-

-

Copie de sauvegarde

-

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
-En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
-Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
-

-

Préserver htaccess

-

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
-Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
-

-

Réécriture d'URL

-

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
-L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
-En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
-Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
-Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

-

Réseaux sociaux

-

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
-Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
-Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
-Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. -

-

Référencement

-

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
-Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
-Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
-Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

-

Capture Open Graph

-

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
-C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
-Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
-Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
-Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

-

Sitemap.xml / Robots.txt

-

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

-
Sitemap.xml
-

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
-Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

-
Robots.txt
-

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. -Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. -Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
-Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. -

-

Sécurité de la connexion

-

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

-
Connexions successives
-

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

-
Blocage après échecs
-

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

-
Comptes inexistants
-

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
-En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
-Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
-En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
-Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
-Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

-
Captcha à la connexion
-

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
-ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
-

-

Journalisation

-

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
-Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
-Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
-

-

Réseau

-

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
-Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
-Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
-Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
-

-

Messagerie SMTP

-

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
-Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
-Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
-Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
-

-

Scripts

-

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

-

Google Analytics

-

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
-À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
-De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

-

Scripts dans head / Scripts dans body

-

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
-

+

MAINTENANCE

+

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
+Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
+Ici il est possible de "Sauvegarder" et "Restaurer" le site.

+

Sauvegarder

+

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
+Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
+Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
+À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
+Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
+Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

+

Restaurer

+
Paramètres
+

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
+Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

+
Conversion des URL
+

Cette opération est à réaliser AVANT de lancer la restauration !
+Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
+Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
+Ensuite il y a juste à cliquer sur le bouton "convertir".
+Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. +

\ No newline at end of file diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 550b5c40..c37ad64d 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -1,4 +1,7 @@ +
+ +
-
- -
helper::baseUrl() . 'config/index', - 'value' => 'Bases' + 'value' => 'Paramètres' ]); ?>
diff --git a/core/module/config/view/locale/locale.help.html b/core/module/config/view/locale/locale.help.html index 2db152a1..f82dbe2c 100644 --- a/core/module/config/view/locale/locale.help.html +++ b/core/module/config/view/locale/locale.help.html @@ -1,4 +1,10 @@ -

MENTIONS LEGALES

+

Aide

+

LANGUES ETRANGERES

+

L'activation des langues étrangères active une nouvelle option dans la barre d'administration. Plus d'aide y sont disponible concernant ce mode.

+

Identité du site

+

Lorsque votre site est traduite manuellement dans plusieurs langues cette page doit être renseignée dans la langue de traduction. La langue courante est celle indiquée par le drapeau.

+

PAGES SPECIALES

+

>Les pages spéciales sont affectées à des fonctions particulières. Elles sont également accessibles dans le pied de page. L'étiquette dans ce pied de page peut également être traduit.

Pour faire apparaître un lien 'Mentions légales' dans le pied de page, vous sélectionnez la page puis dans la barre d'administration vous sélectionnez 'Personnaliser les thèmes', vous cliquez sur le pied de page et vous cochez la case 'Mentions légales'.
Vous pouvez personnaliser la page 'Mentions légales', accessible en choisissant cette page dans la barre d'administration, ou créer votre propre page.
@@ -7,4 +13,4 @@ Vous pouvez personnaliser la page 'Mentions légales', accessible en choisissant

Pour faire apparaître un lien 'Recherche' dans le pied de page, vous procédez de manière similaire.

ERREURS ET SITE EN MAINTENANCE

Les pages par défaut sont 'Erreur403', 'Erreur 404' et 'Site en maintenance'. Vous pouvez les modifier, en les choisissant à partir de la barre -d'administration, ou créer vos propres pages orphelines (en édition de page sélectionnez dans le bloc 'Emplacement dans le menu' : 'Ne pas afficher').

+d'administration, ou créer vos propres pages orphelines (en édition de page sélectionnez dans le bloc 'Emplacement dans le menu' : 'Ne pas afficher').

\ No newline at end of file diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index fe707e17..a149bd4b 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -1,4 +1,8 @@ + +
+ +
- -
- -
helper::baseUrl() . 'config/index', - 'value' => 'Bases' + 'value' => 'Paramètres' ]); ?>
diff --git a/core/module/config/view/network/network.css b/core/module/config/view/network/network.css index fdc5d676..a3e7fba7 100644 --- a/core/module/config/view/network/network.css +++ b/core/module/config/view/network/network.css @@ -16,22 +16,3 @@ /** NE PAS EFFACER * admin.css */ - -.blockContainer { - display : none; -} - -#info .zwiico-plus-circled { - display: inline; -} - -.zwiico-minus-circled, -#info .zwiico-minus-circled { - display: none; -} - - -.zwiico-minus-circled, -.zwiico-plus-circled { - cursor: pointer; -} \ No newline at end of file diff --git a/core/module/config/view/network/network.help.html b/core/module/config/view/network/network.help.html index 64f01311..f599f255 100644 --- a/core/module/config/view/network/network.help.html +++ b/core/module/config/view/network/network.help.html @@ -1,159 +1,13 @@ -

Maintenance

-

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
-Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
-Ici il est possible de "Sauvegarder" et "Restaurer" le site.

-

Sauvegarder

-

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
-Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
-Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
-À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
-Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
-Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

-

Restaurer

-
Paramètres
-

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
-Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

-
Conversion des URL
-

Cette opération est à réaliser AVANT de lancer la restauration !
-Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
-Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
-Ensuite il y a juste à cliquer sur le bouton "convertir".
-Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. -

-

Réglages

-

À ce niveau plusieurs paramètres importants peuvent être configurés.

-

Favicon

-

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
-Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
-Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
-Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
-Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
-Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

-

Favicon thème sombre

-

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

-

Fuseau horaire

-

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

-

Consentement aux cookies

-

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
-Le texte suivant apparaîtra :
-Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
-En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
-Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
-Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
-Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
-ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

-

Sauvegarde quotidienne

-

Il est prudent d'activer ce paramètre.
-Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
-Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". -Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
-

-

Mise à jour en ligne

-

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
-Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
-Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
-Il est donc conseillé d'activer ce paramètre.
-Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
-Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
-

-

Mise à jour manuelle

-

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
-Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
-Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
-L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
-Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
-La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
-

-

Captcha renforcée

-

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
-Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
-Elle s'applique à l'ensemble des Captchas du site.
-Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
-ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
-

-

Copie de sauvegarde

-

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
-En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
-Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
-

-

Préserver htaccess

-

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
-Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
-

-

Réécriture d'URL

-

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
-L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
-En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
-Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
-Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

-

Réseaux sociaux

-

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
-Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
-Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
-Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. -

-

Référencement

-

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
-Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
-Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
-Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

-

Capture Open Graph

-

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
-C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
-Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
-Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
-Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

-

Sitemap.xml / Robots.txt

-

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

-
Sitemap.xml
-

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
-Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

-
Robots.txt
-

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. -Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. -Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
-Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. -

-

Sécurité de la connexion

-

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

-
Connexions successives
-

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

-
Blocage après échecs
-

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

-
Comptes inexistants
-

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
-En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
-Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
-En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
-Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
-Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

-
Captcha à la connexion
-

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
-ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
-

-

Journalisation

-

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
-Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
-Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
-

-

Réseau

+

Aide

+

RESEAU

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.

-

Messagerie SMTP

+

SMTP

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.

-

Scripts

-

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

-

Google Analytics

-

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
-À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
-De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

-

Scripts dans head / Scripts dans body

-

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
-

diff --git a/core/module/config/view/network/network.js.php b/core/module/config/view/network/network.js.php index 34cdb188..339cb959 100644 --- a/core/module/config/view/network/network.js.php +++ b/core/module/config/view/network/network.js.php @@ -35,39 +35,7 @@ $( document).ready(function() { } - /** - * Initialisation des blocs - */ - - var i = [ "social", "seo", "network", "smtp", "login", "logs", "script" ]; - $.each(i,function(e) { - if (getCookie(i[e]) === "true") { - $("#" + i[e]).find(".zwiico-plus-circled").hide(); - $("#" + i[e]).find(".zwiico-minus-circled").show(); - $("#" + i[e]).find(".blockContainer").show(); - } - }); - - /** - * - * Blocs dépliants - */ - - $("div .block").click(function(e) { - $(this).find(".zwiico-plus-circled").toggle(); - $(this).find(".zwiico-minus-circled").toggle(); - $(this).find(".blockContainer").slideToggle(); - /* - * Sauvegarder la position des blocs - * true = bloc déplié - */ - document.cookie = $(this).attr('id') + "=" + $(this).find(".zwiico-minus-circled").is(":visible") + ";expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax"; - }).on("click", "span > input, input, textarea, label, option, button, a:not(.inputFile), .blockContainer", function(e) { - // Empêcher les déclenchements dans les blocs - e.stopPropagation(); - }); - - + /** * Afficher et masquer options SMTP @@ -120,16 +88,3 @@ $( document).ready(function() { }); }); - - - - /** - * Lire un cookie s'il existe - */ - function getCookie(name) { - var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); - return v ? v[2] : null; - } - - - diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php index 2eaadbaf..c78de792 100644 --- a/core/module/config/view/network/network.php +++ b/core/module/config/view/network/network.php @@ -29,7 +29,7 @@
helper::baseUrl() . 'config/index', - 'value' => 'Bases' + 'value' => 'Paramètres' ]); ?>
@@ -61,37 +61,28 @@
-
-

Réseau -
- +
+

Réseau

+
+
+ 'Type de proxy', + 'selected' => $this->getData(['config', 'proxyType']) + ]); ?> +
+
+ 'Adresse du proxy', + 'placeholder' => 'cache.proxy.fr', + 'value' => $this->getData(['config', 'proxyUrl']) + ]); ?>
-

-
-
-
- 'Type de proxy', - 'selected' => $this->getData(['config', 'proxyType']) - ]); ?> -
-
- 'Adresse du proxy', - 'placeholder' => 'cache.proxy.fr', - 'value' => $this->getData(['config', 'proxyUrl']) - ]); ?> -
-
- 'Port du proxy', - 'placeholder' => '6060', - 'value' => $this->getData(['config', 'proxyPort']) - ]); ?> -
+
+ 'Port du proxy', + 'placeholder' => '6060', + 'value' => $this->getData(['config', 'proxyPort']) + ]); ?>
@@ -99,69 +90,60 @@
-
-

Messagerie SMTP -
- +
+

SMTP

+
+
+ $this->getData(['config', 'smtp','enable']), + 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' + ]); ?>
-

-
+
+
-
- $this->getData(['config', 'smtp','enable']), - 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' - ]); ?> +
+ 'Adresse SMTP', + 'placeholder' => 'smtp.fr', + 'value' => $this->getData(['config', 'smtp','host']) + ]); ?> +
+
+ 'Port SMTP', + 'placeholder' => '589', + 'value' => $this->getData(['config', 'smtp','port']) + ]); ?> +
+
+ 'Authentification', + 'selected' => $this->getData(['config', 'smtp','auth']) + ]); ?>
-
+
-
- 'Adresse SMTP', - 'placeholder' => 'smtp.fr', - 'value' => $this->getData(['config', 'smtp','host']) +
+ 'Nom utilisateur', + 'value' => $this->getData(['config', 'smtp','username' ]) + ]); ?> +
+
+ 'Mot de passe', + 'autocomplete' => 'off', + 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' ]); ?>
- 'Port SMTP', - 'placeholder' => '589', - 'value' => $this->getData(['config', 'smtp','port']) + 'Sécurité', + 'selected' => $this->getData(['config', 'smtp','secure']) ]); ?>
-
- 'Authentification', - 'selected' => $this->getData(['config', 'smtp','auth']) - ]); ?> -
-
-
-
-
- 'Nom utilisateur', - 'value' => $this->getData(['config', 'smtp','username' ]) - ]); ?> -
-
- 'Mot de passe', - 'autocomplete' => 'off', - 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' - ]); ?> -
-
- 'Sécurité', - 'selected' => $this->getData(['config', 'smtp','secure']) - ]); ?> -
-
diff --git a/core/module/config/view/safety/safety.help.html b/core/module/config/view/safety/safety.help.html index 64f01311..8903a51f 100644 --- a/core/module/config/view/safety/safety.help.html +++ b/core/module/config/view/safety/safety.help.html @@ -1,120 +1,5 @@ -

Maintenance

-

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
-Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
-Ici il est possible de "Sauvegarder" et "Restaurer" le site.

-

Sauvegarder

-

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
-Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
-Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
-À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
-Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
-Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

-

Restaurer

-
Paramètres
-

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
-Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

-
Conversion des URL
-

Cette opération est à réaliser AVANT de lancer la restauration !
-Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
-Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
-Ensuite il y a juste à cliquer sur le bouton "convertir".
-Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. -

-

Réglages

-

À ce niveau plusieurs paramètres importants peuvent être configurés.

-

Favicon

-

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
-Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
-Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
-Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
-Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
-Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

-

Favicon thème sombre

-

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

-

Fuseau horaire

-

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

-

Consentement aux cookies

-

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
-Le texte suivant apparaîtra :
-Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
-En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
-Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
-Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
-Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
-ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

-

Sauvegarde quotidienne

-

Il est prudent d'activer ce paramètre.
-Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
-Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". -Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
-

-

Mise à jour en ligne

-

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
-Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
-Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
-Il est donc conseillé d'activer ce paramètre.
-Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
-Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
-

-

Mise à jour manuelle

-

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
-Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
-Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
-L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
-Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
-La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
-

-

Captcha renforcée

-

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
-Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
-Elle s'applique à l'ensemble des Captchas du site.
-Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
-ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
-

-

Copie de sauvegarde

-

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
-En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
-Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
-

-

Préserver htaccess

-

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
-Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
-

-

Réécriture d'URL

-

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
-L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
-En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
-Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
-Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

-

Réseaux sociaux

-

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
-Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
-Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
-Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. -

-

Référencement

-

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
-Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
-Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
-Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

-

Capture Open Graph

-

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
-C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
-Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
-Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
-Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

-

Sitemap.xml / Robots.txt

-

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

-
Sitemap.xml
-

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
-Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

-
Robots.txt
-

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. -Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. -Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
-Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. -

-

Sécurité de la connexion

+

Aide

+

SECURITE DE LA CONNEXION

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

Connexions successives

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

@@ -131,29 +16,9 @@ Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative d

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !

-

Journalisation

+

JOURNALISATION

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.

-

Réseau

-

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
-Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
-Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
-Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
-

-

Messagerie SMTP

-

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
-Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
-Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
-Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
-

-

Scripts

-

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

-

Google Analytics

-

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
-À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
-De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

-

Scripts dans head / Scripts dans body

-

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
-

+

Attention, la réglementation française impose le masquage de niveau 2 des adresses IP.

\ No newline at end of file diff --git a/core/module/config/view/safety/safety.js.php b/core/module/config/view/safety/safety.js.php deleted file mode 100644 index 34cdb188..00000000 --- a/core/module/config/view/safety/safety.js.php +++ /dev/null @@ -1,135 +0,0 @@ -/** - * 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-2021, Frédéric Tempez - * @license GNU General Public License, version 3 - * @link http://zwiicms.fr/ - */ - -$( document).ready(function() { - /** - * Afficher et masquer options SMTP - */ - if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { - $("#configAdvancedSmtpParam").addClass("disabled"); - $("#configAdvancedSmtpParam").slideDown(); - } else { - $("#configAdvancedSmtpParam").removeClass("disabled"); - $("#configAdvancedSmtpParam").slideUp(); - } - - /** - * Afficher et masquer options Auth - */ - - if ($("select[name=configAdvancedSmtpEnable]").val() == true) { - $("#configAdvancedSmtpAuthParam").addClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideDown(); - } else { - $("#configAdvancedSmtpAuthParam").removeClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideUp(); - } - - - /** - * Initialisation des blocs - */ - - var i = [ "social", "seo", "network", "smtp", "login", "logs", "script" ]; - $.each(i,function(e) { - if (getCookie(i[e]) === "true") { - $("#" + i[e]).find(".zwiico-plus-circled").hide(); - $("#" + i[e]).find(".zwiico-minus-circled").show(); - $("#" + i[e]).find(".blockContainer").show(); - } - }); - - /** - * - * Blocs dépliants - */ - - $("div .block").click(function(e) { - $(this).find(".zwiico-plus-circled").toggle(); - $(this).find(".zwiico-minus-circled").toggle(); - $(this).find(".blockContainer").slideToggle(); - /* - * Sauvegarder la position des blocs - * true = bloc déplié - */ - document.cookie = $(this).attr('id') + "=" + $(this).find(".zwiico-minus-circled").is(":visible") + ";expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax"; - }).on("click", "span > input, input, textarea, label, option, button, a:not(.inputFile), .blockContainer", function(e) { - // Empêcher les déclenchements dans les blocs - e.stopPropagation(); - }); - - - - /** - * Afficher et masquer options SMTP - */ - $("input[name=configAdvancedSmtpEnable]").on("change", function() { - if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { - $("#configAdvancedSmtpParam").addClass("disabled"); - $("#configAdvancedSmtpParam").slideDown(); - } else { - $("#configAdvancedSmtpParam").removeClass("disabled"); - $("#configAdvancedSmtpParam").slideUp(); - } - }); - - /** - * Afficher et masquer options Auth - */ - - $("select[name=configAdvancedSmtpAuth]").on("change", function() { - if ($("select[name=configAdvancedSmtpAuth]").val() == true) { - $("#configAdvancedSmtpAuthParam").addClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideDown(); - } else { - $("#configAdvancedSmtpAuthParam").removeClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideUp(); - } - }); - - /** - * Options de blocage de connexions - * Contrôle la cohérence des sélections et interdit une seule valeur Aucune - */ - $("select[name=configConnectAttempt]").on("change", function() { - if ($("select[name=configConnectAttempt]").val() === "999") { - $("select[name=configConnectTimeout]").val(0); - } else { - if ($("select[name=configConnectTimeout]").val() === "0") { - $("select[name=configConnectTimeout]").val(300); - } - } - }); - $("select[name=configConnectTimeout]").on("change", function() { - if ($("select[name=configConnectTimeout]").val() === "0") { - $("select[name=configConnectAttempt]").val(999); - } else { - if ($("select[name=configConnectAttempt]").val() === "999") { - $("select[name=configConnectAttempt]").val(3); - } - } - }); - -}); - - - - /** - * Lire un cookie s'il existe - */ - function getCookie(name) { - var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); - return v ? v[2] : null; - } - - - diff --git a/core/module/config/view/safety/safety.php b/core/module/config/view/safety/safety.php index f26a8717..78bfa11c 100644 --- a/core/module/config/view/safety/safety.php +++ b/core/module/config/view/safety/safety.php @@ -21,7 +21,7 @@
- +
@@ -29,7 +29,7 @@
helper::baseUrl() . 'config/index', - 'value' => 'Bases' + 'value' => 'Paramètres' ]); ?>
@@ -61,57 +61,48 @@
-
-

Sécurité de la connexion -
- +
+

Sécurité de la connexion

+
+
+ 'Connexions successives', + 'selected' => $this->getData(['config', 'connect', 'attempt']) + ]); ?>
-

-
-
-
- 'Connexions successives', - 'selected' => $this->getData(['config', 'connect', 'attempt']) - ]); ?> -
-
- 'Blocage après échecs', - 'selected' => $this->getData(['config', 'connect', 'timeout']) - ]); ?> -
-
- - helper::baseUrl() . 'config/blacklistDownload', - 'value' => 'Télécharger liste noire', - 'ico' => 'download' - ]); ?> -
-
- 'buttonRed', - 'href' => helper::baseUrl() . 'config/blacklistReset', - 'value' => 'Réinitialiser liste', - 'ico' => 'cancel' - ]); ?> -
+
+ 'Blocage après échecs', + 'selected' => $this->getData(['config', 'connect', 'timeout']) + ]); ?>
-
-
- $this->getData(['config', 'connect','captcha']) - ]); ?> -
+
+ + helper::baseUrl() . 'config/blacklistDownload', + 'value' => 'Télécharger la liste', + 'ico' => 'download' + ]); ?> +
+
+ 'buttonRed', + 'href' => helper::baseUrl() . 'config/blacklistReset', + 'value' => 'Réinitialiser la liste', + 'ico' => 'cancel' + ]); ?> +
+
+
+
+ $this->getData(['config', 'connect','captcha']) + ]); ?>
@@ -119,46 +110,35 @@
-
-

Journalisation -
- +
+

Journalisation

+
+
+ $this->getData(['config', 'connect', 'log']) + ]); ?>
-

-
-
-
- $this->getData(['config', 'connect', 'log']) +
+ 'Anonymat des adresses IP', + 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), + 'help' => 'La réglementation française impose un anonymat de niveau 2' ]); ?> -
-
- 'Anonymat des adresses IP', - 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), - 'help' => 'La réglementation française impose un anonymat de niveau 2' - ]); ?> -
-
-
- helper::baseUrl() . 'config/logDownload', - 'value' => 'Télécharger le journal', - 'ico' => 'download' - ]); ?> -
-
- 'buttonRed', - 'href' => helper::baseUrl() . 'config/logReset', - 'value' => 'Réinitialiser le journal', - 'ico' => 'cancel' - ]); ?> -
+
+ helper::baseUrl() . 'config/logDownload', + 'value' => 'Télécharger le journal', + 'ico' => 'download' + ]); ?> +
+
+ 'buttonRed', + 'href' => helper::baseUrl() . 'config/logReset', + 'value' => 'Réinitialiser le journal', + 'ico' => 'cancel' + ]); ?>
diff --git a/core/module/config/view/social/social.css b/core/module/config/view/social/social.css index fdc5d676..a302df10 100644 --- a/core/module/config/view/social/social.css +++ b/core/module/config/view/social/social.css @@ -15,23 +15,4 @@ /** NE PAS EFFACER * admin.css -*/ - -.blockContainer { - display : none; -} - -#info .zwiico-plus-circled { - display: inline; -} - -.zwiico-minus-circled, -#info .zwiico-minus-circled { - display: none; -} - - -.zwiico-minus-circled, -.zwiico-plus-circled { - cursor: pointer; -} \ No newline at end of file +*/ \ No newline at end of file diff --git a/core/module/config/view/social/social.help.html b/core/module/config/view/social/social.help.html index 64f01311..b5578474 100644 --- a/core/module/config/view/social/social.help.html +++ b/core/module/config/view/social/social.help.html @@ -1,98 +1,5 @@ -

Maintenance

-

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
-Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
-Ici il est possible de "Sauvegarder" et "Restaurer" le site.

-

Sauvegarder

-

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
-Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
-Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
-À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
-Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
-Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

-

Restaurer

-
Paramètres
-

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
-Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

-
Conversion des URL
-

Cette opération est à réaliser AVANT de lancer la restauration !
-Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
-Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
-Ensuite il y a juste à cliquer sur le bouton "convertir".
-Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. -

-

Réglages

-

À ce niveau plusieurs paramètres importants peuvent être configurés.

-

Favicon

-

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
-Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
-Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
-Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
-Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
-Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

-

Favicon thème sombre

-

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

-

Fuseau horaire

-

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

-

Consentement aux cookies

-

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
-Le texte suivant apparaîtra :
-Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
-En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
-Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
-Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
-Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
-ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

-

Sauvegarde quotidienne

-

Il est prudent d'activer ce paramètre.
-Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
-Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". -Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
-

-

Mise à jour en ligne

-

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
-Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
-Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
-Il est donc conseillé d'activer ce paramètre.
-Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
-Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
-

-

Mise à jour manuelle

-

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
-Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
-Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
-L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
-Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
-La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
-

-

Captcha renforcée

-

Par défaut ZwiiCMS dispose d'une Captcha simple qui consiste à additionner 2 nombres de 0 à 10 : par mesure de sécurité cette Captcha est activée par défaut (rubrique "Sécurité de la connexion", case "Captcha à la connexion" cochée par défaut).
-Afin d'assurer une meilleure sécurité la Captcha renforcée utilise 4 opérations avec les nombres de 0 à 20.
-Elle s'applique à l'ensemble des Captchas du site.
-Il est fortement conseillé de l'activer afin de beaucoup mieux sécuriser la connexion au site et d'éviter par exemple les spams via un formulaire de contact.
-ATTENTION : si la "Captcha à la connexion" est décochée à la rubique "Sécurité de la connexion", même si la Captcha renforcée est cochée, aucune captcha ne s'appliquera !
-

-

Copie de sauvegarde

-

Là encore c'est un paramètre qu'il est préférable d'activer afin, en cas de problème, d'éviter que le site soit corrompu et inaccssible.
-En l'activant, une copie des fichiers .json (ZwiiCMS n'a pas de base de données et toutes les données sont en fait enrégistrées dans des fichiers .json) est automatiquement réalisée dès l'édition ou l'effacement/modification d'une donnée : un fichier sous la forme nom.backup.json est généré.
-Si pour une raison quelconque un fichier .json est corrompu au moment de son enregistrement le fichier de sauvegarde est alors disponible pour le remplacer après un simple renommage via FTP (en faire une copie avant renommage par prudence) : seules les dernières modifications depuis le dernier enregistrement sont ainsi éventuellement perdues et l'accès au site rétabli avec toutes ses fonctionnalités très rapidement.
-

-

Préserver htaccess

-

Si le fichier .htaccess à la racine du site a été adapté ou modifié il faut absolument activer ce paramètre afin qu'il ne soit pas remplacé lors d'une mise à jour automatique (via l'icône dans la barre d'administration ou le bouton rouge "Mise à jour manuelle").
-Si une mise à jour est réalisée via FTP ce paramètre n'empêchera pas le remplacement du fichier .htaccess : il faut alors penser à ne pas le remplacer.
-

-

Réécriture d'URL

-

Sans cette option le nom d'une page dans la barre d'adresse est précédé d'un "?".
-L'adresse d'une page nommée par exemple "accueil" est ainsi /mon_site/mon_zwii/?accueil.
-En activant la réécriture d'URL la page s'affiche avec l'adresse /mon_site/mon_zwii/accueil, sans le "?", et est plus lisible pour notre esprit.
-Un lien déjà communiqué avec le "?" fonctionne toujours après activation de la redirection.
-Avant d'activer ce paramètre s'assurer que l'hébergeur autorise son usage : ce n'est par exemple pas le cas de Free.

-

Réseaux sociaux

-

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
-Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
-Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
-Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. -

-

Référencement

+

Aide

+

PARAMETRES DU REFERENCEMENT

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
@@ -114,41 +21,13 @@ Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème.

-

Sécurité de la connexion

-

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

-
Connexions successives
-

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

-
Blocage après échecs
-

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

-
Comptes inexistants
-

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
-En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
-Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
-En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
-Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
-Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

-
Captcha à la connexion
-

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
-ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
+

RESEAUX SOCIAUX

+

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
+Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
+Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
+Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer.

-

Journalisation

-

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
-Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
-Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
-

-

Réseau

-

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
-Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
-Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
-Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
-

-

Messagerie SMTP

-

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
-Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
-Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
-Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
-

-

Scripts

+

SCRIPTS

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

Google Analytics

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
diff --git a/core/module/config/view/social/social.js.php b/core/module/config/view/social/social.js.php deleted file mode 100644 index 34cdb188..00000000 --- a/core/module/config/view/social/social.js.php +++ /dev/null @@ -1,135 +0,0 @@ -/** - * 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-2021, Frédéric Tempez - * @license GNU General Public License, version 3 - * @link http://zwiicms.fr/ - */ - -$( document).ready(function() { - /** - * Afficher et masquer options SMTP - */ - if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { - $("#configAdvancedSmtpParam").addClass("disabled"); - $("#configAdvancedSmtpParam").slideDown(); - } else { - $("#configAdvancedSmtpParam").removeClass("disabled"); - $("#configAdvancedSmtpParam").slideUp(); - } - - /** - * Afficher et masquer options Auth - */ - - if ($("select[name=configAdvancedSmtpEnable]").val() == true) { - $("#configAdvancedSmtpAuthParam").addClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideDown(); - } else { - $("#configAdvancedSmtpAuthParam").removeClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideUp(); - } - - - /** - * Initialisation des blocs - */ - - var i = [ "social", "seo", "network", "smtp", "login", "logs", "script" ]; - $.each(i,function(e) { - if (getCookie(i[e]) === "true") { - $("#" + i[e]).find(".zwiico-plus-circled").hide(); - $("#" + i[e]).find(".zwiico-minus-circled").show(); - $("#" + i[e]).find(".blockContainer").show(); - } - }); - - /** - * - * Blocs dépliants - */ - - $("div .block").click(function(e) { - $(this).find(".zwiico-plus-circled").toggle(); - $(this).find(".zwiico-minus-circled").toggle(); - $(this).find(".blockContainer").slideToggle(); - /* - * Sauvegarder la position des blocs - * true = bloc déplié - */ - document.cookie = $(this).attr('id') + "=" + $(this).find(".zwiico-minus-circled").is(":visible") + ";expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax"; - }).on("click", "span > input, input, textarea, label, option, button, a:not(.inputFile), .blockContainer", function(e) { - // Empêcher les déclenchements dans les blocs - e.stopPropagation(); - }); - - - - /** - * Afficher et masquer options SMTP - */ - $("input[name=configAdvancedSmtpEnable]").on("change", function() { - if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { - $("#configAdvancedSmtpParam").addClass("disabled"); - $("#configAdvancedSmtpParam").slideDown(); - } else { - $("#configAdvancedSmtpParam").removeClass("disabled"); - $("#configAdvancedSmtpParam").slideUp(); - } - }); - - /** - * Afficher et masquer options Auth - */ - - $("select[name=configAdvancedSmtpAuth]").on("change", function() { - if ($("select[name=configAdvancedSmtpAuth]").val() == true) { - $("#configAdvancedSmtpAuthParam").addClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideDown(); - } else { - $("#configAdvancedSmtpAuthParam").removeClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideUp(); - } - }); - - /** - * Options de blocage de connexions - * Contrôle la cohérence des sélections et interdit une seule valeur Aucune - */ - $("select[name=configConnectAttempt]").on("change", function() { - if ($("select[name=configConnectAttempt]").val() === "999") { - $("select[name=configConnectTimeout]").val(0); - } else { - if ($("select[name=configConnectTimeout]").val() === "0") { - $("select[name=configConnectTimeout]").val(300); - } - } - }); - $("select[name=configConnectTimeout]").on("change", function() { - if ($("select[name=configConnectTimeout]").val() === "0") { - $("select[name=configConnectAttempt]").val(999); - } else { - if ($("select[name=configConnectAttempt]").val() === "999") { - $("select[name=configConnectAttempt]").val(3); - } - } - }); - -}); - - - - /** - * Lire un cookie s'il existe - */ - function getCookie(name) { - var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); - return v ? v[2] : null; - } - - - diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index 260e2161..6a8fce99 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -1,4 +1,8 @@ + +

+ +
- -
- -
helper::baseUrl() . 'config/index', - 'value' => 'Bases' + 'value' => 'Paramètres' ]); ?>
@@ -61,75 +61,42 @@
-
-

Réseaux sociaux -
- -
-

-
-
-
- 'Saisissez votre ID : https://www.facebook.com/[ID].', - 'label' => 'Facebook', - 'value' => $this->getData(['config', 'social', 'facebookId']) - ]); ?> -
-
- 'Saisissez votre ID : https://www.instagram.com/[ID].', - 'label' => 'Instagram', - 'value' => $this->getData(['config', 'social', 'instagramId']) - ]); ?> -
-
- 'ID de la chaîne : https://www.youtube.com/channel/[ID].', - 'label' => 'Chaîne Youtube', - 'value' => $this->getData(['config', 'social', 'youtubeId']) - ]); ?> -
-
- 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', - 'label' => 'Youtube', - 'value' => $this->getData(['config', 'social', 'youtubeUserId']) - ]); ?> -
-
-
-
- 'Saisissez votre ID : https://twitter.com/[ID].', - 'label' => 'Twitter', - 'value' => $this->getData(['config', 'social', 'twitterId']) - ]); ?> -
-
- 'Saisissez votre ID : https://pinterest.com/[ID].', - 'label' => 'Pinterest', - 'value' => $this->getData(['config', 'social', 'pinterestId']) - ]); ?> -
-
- 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', - 'label' => 'Linkedin', - 'value' => $this->getData(['config', 'social', 'linkedinId']) - ]); ?> -
-
- 'Saisissez votre ID Github : https://github.com/[ID].', - 'label' => 'Github', - 'value' => $this->getData(['config', 'social', 'githubId']) +
+

Paramètres

+
+
+
+
+ helper::baseUrl() . 'config/configMetaImage', + 'value' => 'Générer une capture Open Graph' ]); ?> +
+
+
+ helper::baseUrl() . 'config/generateFiles', + 'value' => 'Générer sitemap.xml et robots.txt' + ]); ?> +
+
+
+
+ $this->getData(['config', 'seo','robots']) + ]); ?> +
+
+
+
+ +
+
+ +
+
+
@@ -137,86 +104,97 @@
-
-

Référencement -
- -
-

-
-
-
-
-
- helper::baseUrl() . 'config/configMetaImage', - 'value' => 'Capture Open Graph', - 'ico' => 'pencil' - ]); ?> -
-
-
-
- helper::baseUrl() . 'config/generateFiles', - 'value' => 'Sitemap.xml / Robots.txt', - 'ico' => 'pencil' - ]); ?> -
-
-
-
- $this->getData(['config', 'seo','robots']) - ]); ?> -
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
-
-
-
-

Scripts externes

-
-
-
- 'Saisissez l\'ID de suivi.', - 'label' => 'Google Analytics', - 'placeholder' => 'UA-XXXXXXXX-X', - 'value' => $this->getData(['config', 'analyticsId']) - ]); ?> -
-
- helper::baseUrl() . 'config/script/head', - 'value' => 'Script dans head', - 'ico' => 'pencil' - ]); ?> -
-
- helper::baseUrl() . 'config/script/body', - 'value' => 'Script dans body', - 'ico' => 'pencil' +
+

Réseaux sociaux

+
+
+ 'Saisissez votre ID : https://www.facebook.com/[ID].', + 'label' => 'Facebook', + 'value' => $this->getData(['config', 'social', 'facebookId']) ]); ?> -
+
+
+ 'Saisissez votre ID : https://www.instagram.com/[ID].', + 'label' => 'Instagram', + 'value' => $this->getData(['config', 'social', 'instagramId']) + ]); ?> +
+
+ 'ID de la chaîne : https://www.youtube.com/channel/[ID].', + 'label' => 'Chaîne Youtube', + 'value' => $this->getData(['config', 'social', 'youtubeId']) + ]); ?> +
+
+ 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', + 'label' => 'Youtube', + 'value' => $this->getData(['config', 'social', 'youtubeUserId']) + ]); ?> +
+
+
+
+ 'Saisissez votre ID : https://twitter.com/[ID].', + 'label' => 'Twitter', + 'value' => $this->getData(['config', 'social', 'twitterId']) + ]); ?> +
+
+ 'Saisissez votre ID : https://pinterest.com/[ID].', + 'label' => 'Pinterest', + 'value' => $this->getData(['config', 'social', 'pinterestId']) + ]); ?> +
+
+ 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', + 'label' => 'Linkedin', + 'value' => $this->getData(['config', 'social', 'linkedinId']) + ]); ?> +
+
+ 'Saisissez votre ID Github : https://github.com/[ID].', + 'label' => 'Github', + 'value' => $this->getData(['config', 'social', 'githubId']) + ]); ?> +
+
+
+
+
+
+
+
+

Scripts externes

+
+
+ 'Saisissez l\'ID de suivi.', + 'label' => 'Google Analytics', + 'placeholder' => 'UA-XXXXXXXX-X', + 'value' => $this->getData(['config', 'analyticsId']) + ]); ?> +
+
+ helper::baseUrl() . 'config/script/head', + 'value' => 'Script dans head', + 'ico' => 'pencil' + ]); ?> +
+
+ helper::baseUrl() . 'config/script/body', + 'value' => 'Script dans body', + 'ico' => 'pencil' + ]); ?>
From 47775ec420e934ac6b4574b466a5470e789aa644 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 29 Oct 2021 19:25:17 +0200 Subject: [PATCH 003/277] =?UTF-8?q?cinfig=20=C3=A0=20v=C3=A9rifier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/config.php | 277 ++++------------------ core/module/config/view/index/index.php | 34 +-- core/module/config/view/safety/safety.php | 26 +- 3 files changed, 79 insertions(+), 258 deletions(-) diff --git a/core/module/config/config.php b/core/module/config/config.php index 6b2bc2cb..fa17a5ea 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -406,58 +406,15 @@ class config extends common { $this->setData(['user',$this->getuser('id'),'accessCsrf',$_SESSION['csrf']]); } // Sauvegarder - $this->setData([ - 'config', - [ - 'analyticsId' => $this->getInput('configAdvancedAnalyticsId'), - 'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN), - 'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN), - 'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN), - 'favicon' => $this->getInput('configAdvancedFavicon'), - 'faviconDark' => $this->getInput('configAdvancedFaviconDark'), - 'social' => [ - 'facebookId' => $this->getInput('configAdvancedSocialFacebookId'), - 'linkedinId' => $this->getInput('configAdvancedSocialLinkedinId'), - 'instagramId' => $this->getInput('configAdvancedSocialInstagramId'), - 'pinterestId' => $this->getInput('configAdvancedSocialPinterestId'), - 'twitterId' => $this->getInput('configAdvancedSocialTwitterId'), - 'youtubeId' => $this->getInput('configAdvancedSocialYoutubeId'), - 'youtubeUserId' => $this->getInput('configAdvancedSocialYoutubeUserId'), - 'githubId' => $this->getInput('configAdvancedSocialGithubId') - ], - 'timezone' => $this->getInput('configAdvancedTimezone', helper::FILTER_STRING_SHORT, true), - 'autoUpdate' => $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN), - 'autoUpdateHtaccess' => $this->getInput('configAdvancedAutoUpdateHtaccess', helper::FILTER_BOOLEAN), - 'proxyType' => $this->getInput('configAdvancedProxyType'), - 'proxyUrl' => $this->getInput('configAdvancedProxyUrl'), - 'proxyPort' => $this->getInput('configAdvancedProxyPort',helper::FILTER_INT), - 'captchaStrong' => $this->getInput('configAdvancedCaptchaStrong',helper::FILTER_BOOLEAN), - 'autoDisconnect' => $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN), - 'smtp' => [ - 'enable' => $this->getInput('configAdvancedSmtpEnable',helper::FILTER_BOOLEAN), - 'host' => $this->getInput('configAdvancedSmtpHost',helper::FILTER_STRING_SHORT), - 'port' => $this->getInput('configAdvancedSmtpPort',helper::FILTER_INT), - 'auth' => $this->getInput('configAdvancedSmtpAuth',helper::FILTER_BOOLEAN), - 'secure' => $this->getInput('configAdvancedSmtpSecure'), - 'username' => $this->getInput('configAdvancedSmtpUsername',helper::FILTER_STRING_SHORT), - 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configAdvancedSmtpPassword')), - 'sender' => $this->getInput('configAdvancedSmtpSender',helper::FILTER_MAIL) - ], - 'seo' => [ - 'robots' => $this->getInput('configAdvancedSeoRobots',helper::FILTER_BOOLEAN) - ], - 'connect' => [ - 'attempt' => $this->getInput('configAdvancedConnectAttempt',helper::FILTER_INT), - 'timeout' => $this->getInput('configAdvancedConnectTimeout',helper::FILTER_INT), - 'log' => $this->getInput('configAdvancedConnectLog',helper::FILTER_BOOLEAN), - 'anonymousIp' => $this->getInput('configAdvancedConnectAnonymousIp',helper::FILTER_INT), - 'captcha' => $this->getInput('configAdvancedConnectCaptcha',helper::FILTER_BOOLEAN), - ], - 'i18n' => [ - 'enable' => $this->getData(['config', 'i18n', 'enable']) - ] - ] - ]); + $this->setData(['config', 'autoBackup', $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN)]); + $this->setData(['config', 'maintenance', $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN)]); + $this->setData(['config', 'cookieConsent', $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN)]); + $this->setData(['config', 'favicon', $this->getInput('configAdvancedFavicon')]); + $this->setData(['config', 'faviconDark', $this->getInput('configAdvancedFaviconDark')]); + $this->setData(['config', 'timezone', $this->getInput('configAdvancedTimezone', helper::FILTER_STRING_SHORT, true)]); + $this->setData(['config', 'autoUpdate', $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN)]); + $this->setData(['config', 'autoUpdateHtaccess', $this->getInput('configAdvancedAutoUpdateHtaccess', helper::FILTER_BOOLEAN)]); + // Efface les fichiers de backup lorsque l'option est désactivée if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) { $path = realpath('site/data'); @@ -561,14 +518,11 @@ class config extends common { 'sitemapPageLabel' => empty($this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT), 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) - ] + ], ]); $this->setData(['config', 'i18n', 'enable', $this->getInput('configI18n',helper::FILTER_BOOLEAN) ]); - // Générer robots.txt et sitemap - $this->generateFiles(); - // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(), @@ -607,6 +561,18 @@ class config extends common { * Sécurité de la connexion **/ public function safety() { + // Soumission du formulaire + if($this->isPost()) { + $this->setData([ 'config', 'captchaStrong', $this->getInput('configAdvancedCaptchaStrong',helper::FILTER_BOOLEAN)]); + $this->setData([ 'config', 'autoDisconnect', $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN)]); + $this->setData([ 'config', 'connect' => [ + 'attempt' => $this->getInput('configAdvancedConnectAttempt',helper::FILTER_INT), + 'timeout' => $this->getInput('configAdvancedConnectTimeout',helper::FILTER_INT), + 'log' => $this->getInput('configAdvancedConnectLog',helper::FILTER_BOOLEAN), + 'anonymousIp' => $this->getInput('configAdvancedConnectAnonymousIp',helper::FILTER_INT), + 'captcha' => $this->getInput('configAdvancedConnectCaptcha',helper::FILTER_BOOLEAN) + ]]); + } // Valeurs en sortie $this->addOutput([ 'title' => 'Configuration avancée', @@ -620,68 +586,31 @@ class config extends common { public function social() { // Soumission du formulaire if($this->isPost()) { - - // Répercuter la suppression de la page dans la configuration du footer - if ( $this->getData(['theme','footer','displaySearch']) === true - AND $this->getInput('configSearchPageId') === 'none' - ){ - $this->setData(['theme', 'footer', 'displaySearch', false]); - } - if ( $this->getData(['theme','footer','displayLegal']) === true - AND $this->getInput('configLegalPageId') === 'none' - ){ - $this->setData(['theme', 'footer', 'displayLegal', false]); - } - // Sauvegarder - $this->setData([ - 'locale', - [ - 'homePageId' => $this->getInput('configHomePageId', helper::FILTER_ID, true), - 'page404' => $this->getInput('configPage404'), - 'page403' => $this->getInput('configPage403'), - 'page302' => $this->getInput('configPage302'), - 'legalPageId' => $this->getInput('configLegalPageId'), - 'searchPageId' => $this->getInput('configSearchPageId'), - 'searchPageLabel' => empty($this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT), - 'legalPageLabel' => empty($this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT), - 'sitemapPageLabel' => empty($this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT), - 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), - 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) - ] - ]); + $this->setData([ 'config', 'analyticsId', $this->getInput('configAdvancedAnalyticsId')]); + $this->setData([ 'config', 'social' => [ + 'facebookId' => $this->getInput('configAdvancedSocialFacebookId'), + 'linkedinId' => $this->getInput('configAdvancedSocialLinkedinId'), + 'instagramId' => $this->getInput('configAdvancedSocialInstagramId'), + 'pinterestId' => $this->getInput('configAdvancedSocialPinterestId'), + 'twitterId' => $this->getInput('configAdvancedSocialTwitterId'), + 'youtubeId' => $this->getInput('configAdvancedSocialYoutubeId'), + 'youtubeUserId' => $this->getInput('configAdvancedSocialYoutubeUserId'), + 'githubId' => $this->getInput('configAdvancedSocialGithubId') + ]]); - $this->setData(['config', 'i18n', 'enable', $this->getInput('configI18n',helper::FILTER_BOOLEAN) ]); - - // Générer robots.txt et sitemap - $this->generateFiles(); + $this->setData([ 'config', 'seo' => [ + 'robots' => $this->getInput('configAdvancedSeoRobots',helper::FILTER_BOOLEAN) + ]]); // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(), - 'notification' => 'Modifications enregistrées', + 'notification' => 'Modifications enregistrées ' , 'state' => true ]); } - // Liste des pages - self::$pagesList = $this->getData(['page']); - foreach(self::$pagesList as $page => $pageId) { - if ($this->getData(['page',$page,'block']) === 'bar' || - $this->getData(['page',$page,'disable']) === true) { - unset(self::$pagesList[$page]); - } - } - - self::$orphansList = $this->getData(['page']); - foreach(self::$orphansList as $page => $pageId) { - if ($this->getData(['page',$page,'block']) === 'bar' || - $this->getData(['page',$page,'disable']) === true || - $this->getdata(['page',$page, 'position']) !== 0) { - unset(self::$orphansList[$page]); - } - } - // Valeurs en sortie $this->addOutput([ 'title' => 'Référencement', @@ -696,125 +625,21 @@ class config extends common { public function network() { // Soumission du formulaire if($this->isPost()) { - // Basculement en mise à jour auto - // Remise à 0 du compteur - if ($this->getData(['config','autoUpdate']) === false && - $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN) === true) { - $this->setData(['core','lastAutoUpdate',0]); - } - // Eviter déconnexion automatique après son activation - if ( $this->getData(['config','autoDisconnect']) === false - AND $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN) === true ) { - $this->setData(['user',$this->getuser('id'),'accessCsrf',$_SESSION['csrf']]); - } // Sauvegarder - $this->setData([ - 'config', - [ - 'analyticsId' => $this->getInput('configAdvancedAnalyticsId'), - 'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN), - 'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN), - 'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN), - 'favicon' => $this->getInput('configAdvancedFavicon'), - 'faviconDark' => $this->getInput('configAdvancedFaviconDark'), - 'social' => [ - 'facebookId' => $this->getInput('configAdvancedSocialFacebookId'), - 'linkedinId' => $this->getInput('configAdvancedSocialLinkedinId'), - 'instagramId' => $this->getInput('configAdvancedSocialInstagramId'), - 'pinterestId' => $this->getInput('configAdvancedSocialPinterestId'), - 'twitterId' => $this->getInput('configAdvancedSocialTwitterId'), - 'youtubeId' => $this->getInput('configAdvancedSocialYoutubeId'), - 'youtubeUserId' => $this->getInput('configAdvancedSocialYoutubeUserId'), - 'githubId' => $this->getInput('configAdvancedSocialGithubId') - ], - 'timezone' => $this->getInput('configAdvancedTimezone', helper::FILTER_STRING_SHORT, true), - 'autoUpdate' => $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN), - 'autoUpdateHtaccess' => $this->getInput('configAdvancedAutoUpdateHtaccess', helper::FILTER_BOOLEAN), - 'proxyType' => $this->getInput('configAdvancedProxyType'), - 'proxyUrl' => $this->getInput('configAdvancedProxyUrl'), - 'proxyPort' => $this->getInput('configAdvancedProxyPort',helper::FILTER_INT), - 'captchaStrong' => $this->getInput('configAdvancedCaptchaStrong',helper::FILTER_BOOLEAN), - 'autoDisconnect' => $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN), - 'smtp' => [ - 'enable' => $this->getInput('configAdvancedSmtpEnable',helper::FILTER_BOOLEAN), - 'host' => $this->getInput('configAdvancedSmtpHost',helper::FILTER_STRING_SHORT), - 'port' => $this->getInput('configAdvancedSmtpPort',helper::FILTER_INT), - 'auth' => $this->getInput('configAdvancedSmtpAuth',helper::FILTER_BOOLEAN), - 'secure' => $this->getInput('configAdvancedSmtpSecure'), - 'username' => $this->getInput('configAdvancedSmtpUsername',helper::FILTER_STRING_SHORT), - 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configAdvancedSmtpPassword')), - 'sender' => $this->getInput('configAdvancedSmtpSender',helper::FILTER_MAIL) - ], - 'seo' => [ - 'robots' => $this->getInput('configAdvancedSeoRobots',helper::FILTER_BOOLEAN) - ], - 'connect' => [ - 'attempt' => $this->getInput('configAdvancedConnectAttempt',helper::FILTER_INT), - 'timeout' => $this->getInput('configAdvancedConnectTimeout',helper::FILTER_INT), - 'log' => $this->getInput('configAdvancedConnectLog',helper::FILTER_BOOLEAN), - 'anonymousIp' => $this->getInput('configAdvancedConnectAnonymousIp',helper::FILTER_INT), - 'captcha' => $this->getInput('configAdvancedConnectCaptcha',helper::FILTER_BOOLEAN), - ], - 'i18n' => [ - 'enable' => $this->getData(['config', 'i18n', 'enable']) - ] - ] - ]); - // Efface les fichiers de backup lorsque l'option est désactivée - if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) { - $path = realpath('site/data'); - foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) - { - if (strpos($filename,'backup.json')) { - unlink($filename); - } - } - if (file_exists('site/data/.backup')) unlink('site/data/.backup'); - } else { - touch('site/data/.backup'); - } - // Notice - if(self::$inputNotices === []) { - // Active la réécriture d'URL - $rewrite = $this->getInput('rewrite', helper::FILTER_BOOLEAN); - if( - $rewrite - AND helper::checkRewrite() === false - ) { - // Ajout des lignes dans le .htaccess - file_put_contents( - '.htaccess', - PHP_EOL . - '' . PHP_EOL . - "\tRewriteEngine on" . PHP_EOL . - "\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL . - "\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL . - "\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL . - "\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL . - "\tRewriteCond %{SERVER_PORT} 80" . PHP_EOL . - "\tRewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]" . PHP_EOL . - '', - FILE_APPEND - ); - // Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection) - helper::$rewriteStatus = true; - } - // Désactive la réécriture d'URL - elseif( - $rewrite === false - AND helper::checkRewrite() - ) { - // Suppression des lignes dans le .htaccess - $htaccess = explode('# URL rewriting', file_get_contents('.htaccess')); - file_put_contents('.htaccess', $htaccess[0] . '# URL rewriting'); - // Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection) - helper::$rewriteStatus = false; - } - // Met à jour la baseUrl - $this->setData(['core', 'baseUrl', helper::baseUrl(true,false) ]); - } - // Générer robots.txt et sitemap - $this->generateFiles(); + $this->setData([ 'config', 'proxyType', $this->getInput('configAdvancedProxyType')]); + $this->setData([ 'config', 'proxyUrl', $this->getInput('configAdvancedProxyUrl')]); + $this->setData([ 'config', 'proxyUrl', $this->getInput('configAdvancedProxyUrl')]); + $this->setData([ 'config', 'smtp' => [ + 'enable' => $this->getInput('configAdvancedSmtpEnable',helper::FILTER_BOOLEAN), + 'host' => $this->getInput('configAdvancedSmtpHost',helper::FILTER_STRING_SHORT), + 'port' => $this->getInput('configAdvancedSmtpPort',helper::FILTER_INT), + 'auth' => $this->getInput('configAdvancedSmtpAuth',helper::FILTER_BOOLEAN), + 'secure' => $this->getInput('configAdvancedSmtpSecure'), + 'username' => $this->getInput('configAdvancedSmtpUsername',helper::FILTER_STRING_SHORT), + 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configAdvancedSmtpPassword')), + 'sender' => $this->getInput('configAdvancedSmtpSender',helper::FILTER_MAIL) + ]]); + // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(), diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index c37ad64d..9b88bb5a 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -101,30 +101,6 @@ 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' ]); ?>
- -
-
-
- $this->getData(['config','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.' - ]); ?> -
-
- $this->getData(['config','autoDisconnect']), - 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' - ]); ?> -
- -
-
-
- $this->getData(['config', 'autoBackup']), - 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' - ]); ?> -

@@ -167,11 +143,19 @@

Maintenance

-
+
+ $this->getData(['config', 'autoBackup']), + 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' + ]); ?> +

+
$this->getData(['config', 'maintenance']) ]); ?>
+
+
helper::baseUrl() . 'config/backup', diff --git a/core/module/config/view/safety/safety.php b/core/module/config/view/safety/safety.php index 78bfa11c..9b9cd75d 100644 --- a/core/module/config/view/safety/safety.php +++ b/core/module/config/view/safety/safety.php @@ -63,6 +63,25 @@

Sécurité de la connexion

+
+
+ $this->getData(['config', 'connect','captcha']) + ]); ?> +
+
+ $this->getData(['config','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.' + ]); ?> +
+
+ $this->getData(['config','autoDisconnect']), + 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' + ]); ?> +
+
-
-
- $this->getData(['config', 'connect','captcha']) - ]); ?> -
-
From 716495c9e2b718d9f108a3c904828572ea3b504c Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 12:31:24 +0200 Subject: [PATCH 004/277] =?UTF-8?q?config=20tout=20en=20un=20seul=20=C3=A9?= =?UTF-8?q?cran?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/view/index/index.css | 2 +- .../network.js.php => index/index.js.php} | 0 core/module/config/view/index/index.php | 203 +++-------- core/module/config/view/locale/locale.css | 18 - core/module/config/view/locale/locale.php | 286 ++++++---------- core/module/config/view/network/network.css | 18 - core/module/config/view/network/network.php | 219 +++++------- core/module/config/view/safety/safety.css | 37 -- core/module/config/view/safety/safety.php | 240 +++++-------- .../index.help.html => setup/setup.help.html} | 0 core/module/config/view/setup/setup.php | 123 +++++++ core/module/config/view/social/social.css | 18 - core/module/config/view/social/social.php | 321 +++++++----------- 13 files changed, 578 insertions(+), 907 deletions(-) rename core/module/config/view/{network/network.js.php => index/index.js.php} (100%) delete mode 100644 core/module/config/view/locale/locale.css delete mode 100644 core/module/config/view/network/network.css delete mode 100644 core/module/config/view/safety/safety.css rename core/module/config/view/{index/index.help.html => setup/setup.help.html} (100%) create mode 100644 core/module/config/view/setup/setup.php delete mode 100644 core/module/config/view/social/social.css diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index a3e7fba7..f125f340 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -15,4 +15,4 @@ /** NE PAS EFFACER * admin.css -*/ +*/ diff --git a/core/module/config/view/network/network.js.php b/core/module/config/view/index/index.js.php similarity index 100% rename from core/module/config/view/network/network.js.php rename to core/module/config/view/index/index.js.php diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 9b88bb5a..34708200 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -1,7 +1,4 @@ - -
- -
+
-
-
-
-
- helper::baseUrl() . 'config/index', - 'value' => 'Paramètres' - ]); ?> -
-
- helper::baseUrl() . 'config/locale', - 'value' => 'Localisation' - ]); ?> -
-
- helper::baseUrl() . 'config/social', - 'value' => 'Référencement' - ]); ?> -
-
- helper::baseUrl() . 'config/safety', - 'value' => 'Sécurité' - ]); ?> -
-
- helper::baseUrl() . 'config/network', - 'value' => 'Réseau' - ]); ?> -
-
-
+
+
+
+ helper::baseUrl() . 'config/index', + 'value' => 'Paramètres' + ]); ?> +
+
+ helper::baseUrl() . 'config/locale', + 'value' => 'Localisation' + ]); ?> +
+
+ helper::baseUrl() . 'config/social', + 'value' => 'Référencement' + ]); ?> +
+
+ helper::baseUrl() . 'config/safety', + 'value' => 'Sécurité' + ]); ?> +
+
+ helper::baseUrl() . 'config/network', + 'value' => 'Réseau' + ]); ?> +
+
+
-
-
-
-

Paramètres

-
-
- 1, - 'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', - 'label' => 'Favicon', - 'value' => $this->getData(['config', 'favicon']) - ]); ?> -
-
- 1, - 'help' => 'Sélectionnez une icône adaptée à un thème sombre.
Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', - 'label' => 'Favicon thème sombre', - 'value' => $this->getData(['config', 'faviconDark']) - ]); ?> -
-
- 'Fuseau horaire', - 'selected' => $this->getData(['config', 'timezone']), - 'help' => 'Le fuseau horaire est utile au bon référencement' - ]); ?> -
-
-
-
- $this->getData(['config', 'cookieConsent']), - 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' - ]); ?> -
-
- helper::checkRewrite(), - 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' - ]); ?> -
-
-
-
-
-
-
-
-

Mises à jour automatisée

- -
-
- $this->getData(['config', 'autoUpdate']), - 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', - 'disabled' => !$updateError - ]); ?> -
-
- $this->getData(['config', 'autoUpdateHtaccess']), - 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', - 'disabled' => !$updateError - ]); ?> -
-
- 'download-cloud', - 'href' => helper::baseUrl() . 'install/update', - 'value' => 'Mise à jour manuelle', - 'class' => 'buttonRed', - 'disabled' => !$updateError - ]); ?> -
-
-
-
-
-
-
-
-

Maintenance

-
-
- $this->getData(['config', 'autoBackup']), - 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' - ]); ?> -

-
- $this->getData(['config', 'maintenance']) - ]); ?> -
-
-
-
- helper::baseUrl() . 'config/backup', - 'value' => 'Sauvegarder', - 'ico' => 'download-cloud' - ]); ?> -
-
- helper::baseUrl() . 'config/restore', - 'value' => 'Restaurer', - 'ico' => 'upload-cloud' - ]); ?> -
-
- helper::baseUrl() . 'config/copyBackups', - 'value' => 'Backups Auto ➜ FileManager' - ]); ?> -
-
-
-
-
- + + + + + + + \ No newline at end of file diff --git a/core/module/config/view/locale/locale.css b/core/module/config/view/locale/locale.css deleted file mode 100644 index f125f340..00000000 --- a/core/module/config/view/locale/locale.css +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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-2021, Frédéric Tempez - * @license GNU General Public License, version 3 - * @link http://zwiicms.fr/ - */ - - -/** NE PAS EFFACER -* admin.css -*/ diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index a149bd4b..e0dd66c6 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -1,191 +1,131 @@ - - -
- -
-
-
- 'buttonGrey', - 'href' => helper::baseUrl(false), - 'ico' => 'home', - 'value' => 'Accueil' - ]); ?> -
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
-
- -
-
-
-
-
-
- helper::baseUrl() . 'config/index', - 'value' => 'Paramètres' - ]); ?> -
-
- helper::baseUrl() . 'config/locale', - 'value' => 'Localisation' - ]); ?> -
-
- helper::baseUrl() . 'config/social', - 'value' => 'Référencement' - ]); ?> -
-
- helper::baseUrl() . 'config/safety', - 'value' => 'Sécurité' - ]); ?> -
-
- helper::baseUrl() . 'config/network', - 'value' => 'Réseau' - ]); ?> -
-
-
-
-
-
-
-

Langues étrangères

-
-
- $this->getData(['config', 'i18n', 'enable']), - 'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.' - ]); ?> +
+
+
+
+

Langues étrangères

+
+
+ $this->getData(['config', 'i18n', 'enable']), + 'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.' + ]); ?> +
-
-
-
-
-

Identité du site (en langue )

-

Cette page doit être adaptée à chaque traduction rédigée.

-
-
- 'Titre du site' , - 'value' => $this->getData(['locale', 'title']), - 'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' - ]); ?> +
+
+
+

Identité du site (en langue )

+

Cette page doit être adaptée à chaque traduction rédigée.

+
+
+ 'Titre du site' , + 'value' => $this->getData(['locale', 'title']), + 'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' + ]); ?> +
+
+ 'ZwiiCMS Version', + 'value' => common::ZWII_VERSION, + 'readonly' => true + ]); ?> +
-
- 'ZwiiCMS Version', - 'value' => common::ZWII_VERSION, - 'readonly' => true - ]); ?> +
+
+ 'Description du site', + 'value' => $this->getData(['locale', 'metaDescription']), + 'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.' + ]); ?> +
-
-
-
- 'Description du site', - 'value' => $this->getData(['locale', 'metaDescription']), - 'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.' - ]); ?> -
-
-
-
-
-

Etiquettes des pages spéciales

-
-
- 'Mentions légales', - 'placeholder' => 'Mentions légales', - 'value' => $this->getData(['locale', 'legalPageLabel']) - ]); ?> -
-
- 'Rechercher', - 'placeholder' => 'Rechercher', - 'value' => $this->getData(['locale', 'searchPageLabel']) - ]); ?> -
-
- 'Plan du site', - 'placeholder' => 'Plan du site', - 'value' => $this->getData(['locale', 'sitemapPageLabel']), - ]); ?> +
+
+
+

Etiquettes des pages spéciales

+
+
+ 'Mentions légales', + 'placeholder' => 'Mentions légales', + 'value' => $this->getData(['locale', 'legalPageLabel']) + ]); ?> +
+
+ 'Rechercher', + 'placeholder' => 'Rechercher', + 'value' => $this->getData(['locale', 'searchPageLabel']) + ]); ?> +
+
+ 'Plan du site', + 'placeholder' => 'Plan du site', + 'value' => $this->getData(['locale', 'sitemapPageLabel']), + ]); ?> +
-
-
-
-
-

Assignation des pages spéciales

-
-
- 'Accueil du site', - 'selected' =>$this->getData(['locale', 'homePageId']), - 'help' => 'La première page que vos visiteurs verront.' - ]); ?> -
-
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ - 'label' => 'Accès interdit, erreur 403', - 'selected' =>$this->getData(['locale', 'page403']), - 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' +
+
+
+

Assignation des pages spéciales

+
+
+ 'Accueil du site', + 'selected' =>$this->getData(['locale', 'homePageId']), + 'help' => 'La première page que vos visiteurs verront.' ]); ?> +
+
+ 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'label' => 'Accès interdit, erreur 403', + 'selected' =>$this->getData(['locale', 'page403']), + 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' + ]); ?> +
+
+ 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'label' => 'Page inexistante, erreur 404', + 'selected' =>$this->getData(['locale', 'page404']), + 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' + ]); ?> +
-
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ - 'label' => 'Page inexistante, erreur 404', - 'selected' =>$this->getData(['locale', 'page404']), - 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' +
+
+ 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ + 'label' => 'Mentions légales', + 'selected' => $this->getData(['locale', 'legalPageId']), + 'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.' ]); ?> -
-
-
-
- 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ - 'label' => 'Mentions légales', - 'selected' => $this->getData(['locale', 'legalPageId']), - 'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.' - ]); ?> -
-
- 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ - 'label' => 'Recherche dans le site', - 'selected' => $this->getData(['locale', 'searchPageId']), - 'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.' - ]); ?> -
-
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ - 'label' => 'Site en maintenance', - 'selected' =>$this->getData(['locale', 'page302']), - 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' +
+
+ 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ + 'label' => 'Recherche dans le site', + 'selected' => $this->getData(['locale', 'searchPageId']), + 'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.' ]); ?> +
+
+ 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'label' => 'Site en maintenance', + 'selected' =>$this->getData(['locale', 'page302']), + 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' + ]); ?> +
-
- +
\ No newline at end of file diff --git a/core/module/config/view/network/network.css b/core/module/config/view/network/network.css deleted file mode 100644 index a3e7fba7..00000000 --- a/core/module/config/view/network/network.css +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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-2021, Frédéric Tempez - * @license GNU General Public License, version 3 - * @link http://zwiicms.fr/ - */ - - -/** NE PAS EFFACER -* admin.css -*/ diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php index c78de792..c9cc5bfd 100644 --- a/core/module/config/view/network/network.php +++ b/core/module/config/view/network/network.php @@ -1,154 +1,93 @@ - -
-
- 'buttonGrey', - 'href' => helper::baseUrl(false), - 'ico' => 'home', - 'value' => 'Accueil' - ]); ?> -
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
-
- -
-
- -
- -
-
-
-
-
- helper::baseUrl() . 'config/index', - 'value' => 'Paramètres' - ]); ?> -
-
- helper::baseUrl() . 'config/locale', - 'value' => 'Localisation' - ]); ?> -
-
- helper::baseUrl() . 'config/social', - 'value' => 'Référencement' - ]); ?> -
-
- helper::baseUrl() . 'config/safety', - 'value' => 'Sécurité' - ]); ?> -
-
- helper::baseUrl() . 'config/network', - 'value' => 'Réseau' - ]); ?> -
-
-
-
-
-
-
-

Réseau

-
-
- 'Type de proxy', - 'selected' => $this->getData(['config', 'proxyType']) - ]); ?> -
-
- 'Adresse du proxy', - 'placeholder' => 'cache.proxy.fr', - 'value' => $this->getData(['config', 'proxyUrl']) - ]); ?> -
-
- 'Port du proxy', - 'placeholder' => '6060', - 'value' => $this->getData(['config', 'proxyPort']) - ]); ?> -
-
-
-
-
-
-
-
-

SMTP

-
-
- $this->getData(['config', 'smtp','enable']), - 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' - ]); ?> -
-
-
+
+
+
+
+

Réseau

-
- 'Adresse SMTP', - 'placeholder' => 'smtp.fr', - 'value' => $this->getData(['config', 'smtp','host']) - ]); ?> -
-
- 'Port SMTP', - 'placeholder' => '589', - 'value' => $this->getData(['config', 'smtp','port']) - ]); ?> -
-
- 'Authentification', - 'selected' => $this->getData(['config', 'smtp','auth']) - ]); ?> -
-
-
-
-
- 'Nom utilisateur', - 'value' => $this->getData(['config', 'smtp','username' ]) +
+ 'Type de proxy', + 'selected' => $this->getData(['config', 'proxyType']) ]); ?>
-
- 'Mot de passe', - 'autocomplete' => 'off', - 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' +
+ 'Adresse du proxy', + 'placeholder' => 'cache.proxy.fr', + 'value' => $this->getData(['config', 'proxyUrl']) + ]); ?> +
+
+ 'Port du proxy', + 'placeholder' => '6060', + 'value' => $this->getData(['config', 'proxyPort']) + ]); ?> +
+
+
+
+
+
+
+
+

SMTP

+
+
+ $this->getData(['config', 'smtp','enable']), + 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' + ]); ?> +
+
+
+
+
+ 'Adresse SMTP', + 'placeholder' => 'smtp.fr', + 'value' => $this->getData(['config', 'smtp','host']) ]); ?>
- 'Sécurité', - 'selected' => $this->getData(['config', 'smtp','secure']) + 'Port SMTP', + 'placeholder' => '589', + 'value' => $this->getData(['config', 'smtp','port']) ]); ?>
+
+ 'Authentification', + 'selected' => $this->getData(['config', 'smtp','auth']) + ]); ?> +
+
+
+
+
+ 'Nom utilisateur', + 'value' => $this->getData(['config', 'smtp','username' ]) + ]); ?> +
+
+ 'Mot de passe', + 'autocomplete' => 'off', + 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' + ]); ?> +
+
+ 'Sécurité', + 'selected' => $this->getData(['config', 'smtp','secure']) + ]); ?> +
+
- - diff --git a/core/module/config/view/safety/safety.css b/core/module/config/view/safety/safety.css deleted file mode 100644 index fdc5d676..00000000 --- a/core/module/config/view/safety/safety.css +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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-2021, Frédéric Tempez - * @license GNU General Public License, version 3 - * @link http://zwiicms.fr/ - */ - - -/** NE PAS EFFACER -* admin.css -*/ - -.blockContainer { - display : none; -} - -#info .zwiico-plus-circled { - display: inline; -} - -.zwiico-minus-circled, -#info .zwiico-minus-circled { - display: none; -} - - -.zwiico-minus-circled, -.zwiico-plus-circled { - cursor: pointer; -} \ No newline at end of file diff --git a/core/module/config/view/safety/safety.php b/core/module/config/view/safety/safety.php index 9b9cd75d..746bded3 100644 --- a/core/module/config/view/safety/safety.php +++ b/core/module/config/view/safety/safety.php @@ -1,159 +1,99 @@ - -
-
- 'buttonGrey', - 'href' => helper::baseUrl(false), - 'ico' => 'home', - 'value' => 'Accueil' - ]); ?> -
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
-
- -
-
- -
- -
-
-
-
-
- helper::baseUrl() . 'config/index', - 'value' => 'Paramètres' - ]); ?> -
-
- helper::baseUrl() . 'config/locale', - 'value' => 'Localisation' - ]); ?> -
-
- helper::baseUrl() . 'config/social', - 'value' => 'Référencement' - ]); ?> -
-
- helper::baseUrl() . 'config/safety', - 'value' => 'Sécurité' - ]); ?> -
-
- helper::baseUrl() . 'config/network', - 'value' => 'Réseau' - ]); ?> -
-
-
-
-
-
-
-

Sécurité de la connexion

-
-
- $this->getData(['config', 'connect','captcha']) - ]); ?> -
-
- $this->getData(['config','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.' - ]); ?> -
-
- $this->getData(['config','autoDisconnect']), - 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' +
+
+
+
+

Sécurité de la connexion

+
+
+ $this->getData(['config', 'connect','captcha']) ]); ?> -
-
-
-
- 'Connexions successives', - 'selected' => $this->getData(['config', 'connect', 'attempt']) - ]); ?> -
-
- 'Blocage après échecs', - 'selected' => $this->getData(['config', 'connect', 'timeout']) - ]); ?> -
-
- - helper::baseUrl() . 'config/blacklistDownload', - 'value' => 'Télécharger la liste', - 'ico' => 'download' - ]); ?> -
-
- 'buttonRed', - 'href' => helper::baseUrl() . 'config/blacklistReset', - 'value' => 'Réinitialiser la liste', - 'ico' => 'cancel' - ]); ?> -
-
-
-
-
-
-
-
-

Journalisation

-
-
- $this->getData(['config', 'connect', 'log']) - ]); ?> -
-
- 'Anonymat des adresses IP', - 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), - 'help' => 'La réglementation française impose un anonymat de niveau 2' +
+
+ $this->getData(['config','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.' ]); ?> +
+
+ $this->getData(['config','autoDisconnect']), + 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' + ]); ?> +
-
- helper::baseUrl() . 'config/logDownload', - 'value' => 'Télécharger le journal', - 'ico' => 'download' - ]); ?> +
+
+ 'Connexions successives', + 'selected' => $this->getData(['config', 'connect', 'attempt']) + ]); ?> +
+
+ 'Blocage après échecs', + 'selected' => $this->getData(['config', 'connect', 'timeout']) + ]); ?> +
+
+ + helper::baseUrl() . 'config/blacklistDownload', + 'value' => 'Télécharger la liste', + 'ico' => 'download' + ]); ?> +
+
+ 'buttonRed', + 'href' => helper::baseUrl() . 'config/blacklistReset', + 'value' => 'Réinitialiser la liste', + 'ico' => 'cancel' + ]); ?> +
-
- 'buttonRed', - 'href' => helper::baseUrl() . 'config/logReset', - 'value' => 'Réinitialiser le journal', - 'ico' => 'cancel' - ]); ?> +
+
+
+
+
+
+

Journalisation

+
+
+ $this->getData(['config', 'connect', 'log']) + ]); ?> +
+
+ 'Anonymat des adresses IP', + 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), + 'help' => 'La réglementation française impose un anonymat de niveau 2' + ]); ?> +
+
+ helper::baseUrl() . 'config/logDownload', + 'value' => 'Télécharger le journal', + 'ico' => 'download' + ]); ?> +
+
+ 'buttonRed', + 'href' => helper::baseUrl() . 'config/logReset', + 'value' => 'Réinitialiser le journal', + 'ico' => 'cancel' + ]); ?> +
- diff --git a/core/module/config/view/index/index.help.html b/core/module/config/view/setup/setup.help.html similarity index 100% rename from core/module/config/view/index/index.help.html rename to core/module/config/view/setup/setup.help.html diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php new file mode 100644 index 00000000..b9394d5c --- /dev/null +++ b/core/module/config/view/setup/setup.php @@ -0,0 +1,123 @@ +
+
+
+
+

Paramètres

+
+
+ 1, + 'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', + 'label' => 'Favicon', + 'value' => $this->getData(['config', 'favicon']) + ]); ?> +
+
+ 1, + 'help' => 'Sélectionnez une icône adaptée à un thème sombre.
Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', + 'label' => 'Favicon thème sombre', + 'value' => $this->getData(['config', 'faviconDark']) + ]); ?> +
+
+ 'Fuseau horaire', + 'selected' => $this->getData(['config', 'timezone']), + 'help' => 'Le fuseau horaire est utile au bon référencement' + ]); ?> +
+
+
+
+ $this->getData(['config', 'cookieConsent']), + 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' + ]); ?> +
+
+ helper::checkRewrite(), + 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' + ]); ?> +
+
+
+
+
+
+
+
+

Mises à jour automatisée

+ +
+
+ $this->getData(['config', 'autoUpdate']), + 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', + 'disabled' => !$updateError + ]); ?> +
+
+ $this->getData(['config', 'autoUpdateHtaccess']), + 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', + 'disabled' => !$updateError + ]); ?> +
+
+ 'download-cloud', + 'href' => helper::baseUrl() . 'install/update', + 'value' => 'Mise à jour manuelle', + 'class' => 'buttonRed', + 'disabled' => !$updateError + ]); ?> +
+
+
+
+
+
+
+
+

Maintenance

+
+
+ $this->getData(['config', 'autoBackup']), + 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' + ]); ?> +

+
+ $this->getData(['config', 'maintenance']) + ]); ?> +
+
+
+
+ helper::baseUrl() . 'config/backup', + 'value' => 'Sauvegarder', + 'ico' => 'download-cloud' + ]); ?> +
+
+ helper::baseUrl() . 'config/restore', + 'value' => 'Restaurer', + 'ico' => 'upload-cloud' + ]); ?> +
+
+ helper::baseUrl() . 'config/copyBackups', + 'value' => 'Backups Auto ➜ FileManager' + ]); ?> +
+
+
+
+
+
diff --git a/core/module/config/view/social/social.css b/core/module/config/view/social/social.css deleted file mode 100644 index a302df10..00000000 --- a/core/module/config/view/social/social.css +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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-2021, 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/config/view/social/social.php b/core/module/config/view/social/social.php index 6a8fce99..465c283f 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -1,204 +1,143 @@ - - -
- -
-
-
- 'buttonGrey', - 'href' => helper::baseUrl(false), - 'ico' => 'home', - 'value' => 'Accueil' - ]); ?> -
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
-
- -
-
-
-
-
-
- helper::baseUrl() . 'config/index', - 'value' => 'Paramètres' - ]); ?> -
-
- helper::baseUrl() . 'config/locale', - 'value' => 'Localisation' - ]); ?> -
-
- helper::baseUrl() . 'config/social', - 'value' => 'Référencement' - ]); ?> -
-
- helper::baseUrl() . 'config/safety', - 'value' => 'Sécurité' - ]); ?> -
-
- helper::baseUrl() . 'config/network', - 'value' => 'Réseau' - ]); ?> -
-
-
-
-
-
-
-

Paramètres

-
-
-
-
- helper::baseUrl() . 'config/configMetaImage', - 'value' => 'Générer une capture Open Graph' - ]); ?> -
-
-
-
- helper::baseUrl() . 'config/generateFiles', - 'value' => 'Générer sitemap.xml et robots.txt' - ]); ?> -
-
-
-
- $this->getData(['config', 'seo','robots']) - ]); ?> -
-
-
-
- +
+
+
+
+

Paramètres

+
+
-
- +
+ helper::baseUrl() . 'config/configMetaImage', + 'value' => 'Générer une capture Open Graph' + ]); ?>
+
+
+
+ helper::baseUrl() . 'config/generateFiles', + 'value' => 'Générer sitemap.xml et robots.txt' + ]); ?> +
+
+
+
+ $this->getData(['config', 'seo','robots']) + ]); ?> +
+
+
+
+ +
+
+ +
+
+
-
-
-
-
-
-

Réseaux sociaux

-
-
- 'Saisissez votre ID : https://www.facebook.com/[ID].', - 'label' => 'Facebook', - 'value' => $this->getData(['config', 'social', 'facebookId']) - ]); ?> -
-
- 'Saisissez votre ID : https://www.instagram.com/[ID].', - 'label' => 'Instagram', - 'value' => $this->getData(['config', 'social', 'instagramId']) - ]); ?> -
-
- 'ID de la chaîne : https://www.youtube.com/channel/[ID].', - 'label' => 'Chaîne Youtube', - 'value' => $this->getData(['config', 'social', 'youtubeId']) - ]); ?> -
-
- 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', - 'label' => 'Youtube', - 'value' => $this->getData(['config', 'social', 'youtubeUserId']) - ]); ?> -
-
-
-
- 'Saisissez votre ID : https://twitter.com/[ID].', - 'label' => 'Twitter', - 'value' => $this->getData(['config', 'social', 'twitterId']) - ]); ?> -
-
- 'Saisissez votre ID : https://pinterest.com/[ID].', - 'label' => 'Pinterest', - 'value' => $this->getData(['config', 'social', 'pinterestId']) - ]); ?> -
-
- 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', - 'label' => 'Linkedin', - 'value' => $this->getData(['config', 'social', 'linkedinId']) - ]); ?> -
-
- 'Saisissez votre ID Github : https://github.com/[ID].', - 'label' => 'Github', - 'value' => $this->getData(['config', 'social', 'githubId']) +
+
+
+

Réseaux sociaux

+
+
+ 'Saisissez votre ID : https://www.facebook.com/[ID].', + 'label' => 'Facebook', + 'value' => $this->getData(['config', 'social', 'facebookId']) ]); ?> +
+
+ 'Saisissez votre ID : https://www.instagram.com/[ID].', + 'label' => 'Instagram', + 'value' => $this->getData(['config', 'social', 'instagramId']) + ]); ?> +
+
+ 'ID de la chaîne : https://www.youtube.com/channel/[ID].', + 'label' => 'Chaîne Youtube', + 'value' => $this->getData(['config', 'social', 'youtubeId']) + ]); ?> +
+
+ 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', + 'label' => 'Youtube', + 'value' => $this->getData(['config', 'social', 'youtubeUserId']) + ]); ?> +
+
+
+
+ 'Saisissez votre ID : https://twitter.com/[ID].', + 'label' => 'Twitter', + 'value' => $this->getData(['config', 'social', 'twitterId']) + ]); ?> +
+
+ 'Saisissez votre ID : https://pinterest.com/[ID].', + 'label' => 'Pinterest', + 'value' => $this->getData(['config', 'social', 'pinterestId']) + ]); ?> +
+
+ 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', + 'label' => 'Linkedin', + 'value' => $this->getData(['config', 'social', 'linkedinId']) + ]); ?> +
+
+ 'Saisissez votre ID Github : https://github.com/[ID].', + 'label' => 'Github', + 'value' => $this->getData(['config', 'social', 'githubId']) + ]); ?> +
+
+
+
+
+
+
+
+

Scripts externes

+
+
+ 'Saisissez l\'ID de suivi.', + 'label' => 'Google Analytics', + 'placeholder' => 'UA-XXXXXXXX-X', + 'value' => $this->getData(['config', 'analyticsId']) + ]); ?> +
+
+ helper::baseUrl() . 'config/script/head', + 'value' => 'Script dans head', + 'ico' => 'pencil' + ]); ?> +
+
+ helper::baseUrl() . 'config/script/body', + 'value' => 'Script dans body', + 'ico' => 'pencil' + ]); ?> +
-
-
-
-

Scripts externes

-
-
- 'Saisissez l\'ID de suivi.', - 'label' => 'Google Analytics', - 'placeholder' => 'UA-XXXXXXXX-X', - 'value' => $this->getData(['config', 'analyticsId']) - ]); ?> -
-
- helper::baseUrl() . 'config/script/head', - 'value' => 'Script dans head', - 'ico' => 'pencil' - ]); ?> -
-
- helper::baseUrl() . 'config/script/body', - 'value' => 'Script dans body', - 'ico' => 'pencil' - ]); ?> -
-
-
-
-
- - From 650d57b7cb915d6f8b6f7cab7b798a30df21f2dc Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 12:48:29 +0200 Subject: [PATCH 005/277] Virer advanced et unifier la fonction index --- core/module/config/config.php | 269 +++++++------------- core/module/config/view/index/index.js.php | 44 ++-- core/module/config/view/index/index.php | 14 +- core/module/config/view/network/network.php | 24 +- core/module/config/view/safety/safety.php | 22 +- core/module/config/view/setup/setup.php | 18 +- core/module/config/view/social/social.php | 28 +- core/module/translate/view/index/index.php | 2 +- 8 files changed, 170 insertions(+), 251 deletions(-) diff --git a/core/module/config/config.php b/core/module/config/config.php index fa17a5ea..8b813ddf 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -22,10 +22,6 @@ class config extends common { 'configMetaImage' => self::GROUP_ADMIN, 'generateFiles' => self::GROUP_ADMIN, 'index' => self::GROUP_ADMIN, - 'locale' => self::GROUP_ADMIN, - 'social' => self::GROUP_ADMIN, - 'safety' => self::GROUP_ADMIN, - 'network' => self::GROUP_ADMIN, 'restore' => self::GROUP_ADMIN, 'updateBaseUrl' => self::GROUP_ADMIN, 'script' => self::GROUP_ADMIN, @@ -388,35 +384,110 @@ class config extends common { ]); } - /** * - * Configuration de base + + /** + * Configuration */ public function index() { // Soumission du formulaire if($this->isPost()) { - // Basculement en mise à jour auto - // Remise à 0 du compteur + + // Basculement en mise à jour auto, remise à 0 du compteur if ($this->getData(['config','autoUpdate']) === false && - $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN) === true) { + $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN) === true) { $this->setData(['core','lastAutoUpdate',0]); } + // Eviter déconnexion automatique après son activation if ( $this->getData(['config','autoDisconnect']) === false - AND $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN) === true ) { + AND $this->getInput('configAutoDisconnect',helper::FILTER_BOOLEAN) === true ) { $this->setData(['user',$this->getuser('id'),'accessCsrf',$_SESSION['csrf']]); } - // Sauvegarder - $this->setData(['config', 'autoBackup', $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN)]); - $this->setData(['config', 'maintenance', $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN)]); - $this->setData(['config', 'cookieConsent', $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN)]); - $this->setData(['config', 'favicon', $this->getInput('configAdvancedFavicon')]); - $this->setData(['config', 'faviconDark', $this->getInput('configAdvancedFaviconDark')]); - $this->setData(['config', 'timezone', $this->getInput('configAdvancedTimezone', helper::FILTER_STRING_SHORT, true)]); - $this->setData(['config', 'autoUpdate', $this->getInput('configAdvancedAutoUpdate', helper::FILTER_BOOLEAN)]); - $this->setData(['config', 'autoUpdateHtaccess', $this->getInput('configAdvancedAutoUpdateHtaccess', helper::FILTER_BOOLEAN)]); + // Répercuter la suppression de la page dans la configuration du footer + if ( $this->getData(['theme','footer','displaySearch']) === true + AND $this->getInput('configSearchPageId') === 'none' + ){ + $this->setData(['theme', 'footer', 'displaySearch', false]); + } + if ( $this->getData(['theme','footer','displayLegal']) === true + AND $this->getInput('configLegalPageId') === 'none' + ){ + $this->setData(['theme', 'footer', 'displayLegal', false]); + } + + // Sauvegarder les locales + $this->setData([ + 'locale', + [ + 'homePageId' => $this->getInput('configHomePageId', helper::FILTER_ID, true), + 'page404' => $this->getInput('configPage404'), + 'page403' => $this->getInput('configPage403'), + 'page302' => $this->getInput('configPage302'), + 'legalPageId' => $this->getInput('configLegalPageId'), + 'searchPageId' => $this->getInput('configSearchPageId'), + 'searchPageLabel' => empty($this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT), + 'legalPageLabel' => empty($this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT), + 'sitemapPageLabel' => empty($this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT), + 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), + 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) + ] + ]); + // Sauvegarder la configuration + $this->setData([ + 'config', + [ + 'analyticsId' => $this->getInput('configAnalyticsId'), + 'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN), + 'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN), + 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), + 'favicon' => $this->getInput('configFavicon'), + 'faviconDark' => $this->getInput('configFaviconDark'), + 'social' => [ + 'facebookId' => $this->getInput('configSocialFacebookId'), + 'linkedinId' => $this->getInput('configSocialLinkedinId'), + 'instagramId' => $this->getInput('configSocialInstagramId'), + 'pinterestId' => $this->getInput('configSocialPinterestId'), + 'twitterId' => $this->getInput('configSocialTwitterId'), + 'youtubeId' => $this->getInput('configSocialYoutubeId'), + 'youtubeUserId' => $this->getInput('configSocialYoutubeUserId'), + 'githubId' => $this->getInput('configSocialGithubId') + ], + 'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT, true), + 'autoUpdate' => $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN), + 'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN), + 'proxyType' => $this->getInput('configProxyType'), + 'proxyUrl' => $this->getInput('configProxyUrl'), + 'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT), + 'captchaStrong' => $this->getInput('configCaptchaStrong',helper::FILTER_BOOLEAN), + 'autoDisconnect' => $this->getInput('configAutoDisconnect',helper::FILTER_BOOLEAN), + 'smtp' => [ + 'enable' => $this->getInput('configSmtpEnable',helper::FILTER_BOOLEAN), + 'host' => $this->getInput('configSmtpHost',helper::FILTER_STRING_SHORT), + 'port' => $this->getInput('configSmtpPort',helper::FILTER_INT), + 'auth' => $this->getInput('configSmtpAuth',helper::FILTER_BOOLEAN), + 'secure' => $this->getInput('configSmtpSecure'), + 'username' => $this->getInput('configSmtpUsername',helper::FILTER_STRING_SHORT), + 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configSmtpPassword')), + 'sender' => $this->getInput('configSmtpSender',helper::FILTER_MAIL) + ], + 'seo' => [ + 'robots' => $this->getInput('configSeoRobots',helper::FILTER_BOOLEAN) + ], + 'connect' => [ + 'attempt' => $this->getInput('configConnectAttempt',helper::FILTER_INT), + 'timeout' => $this->getInput('configConnectTimeout',helper::FILTER_INT), + 'log' => $this->getInput('configConnectLog',helper::FILTER_BOOLEAN), + 'anonymousIp' => $this->getInput('configConnectAnonymousIp',helper::FILTER_INT), + 'captcha' => $this->getInput('configConnectCaptcha',helper::FILTER_BOOLEAN), + ], + 'i18n' => [ + 'enable' => $this->getData(['config', 'i18n', 'enable']) + ] + ] + ]); // Efface les fichiers de backup lorsque l'option est désactivée - if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) { + if ($this->getInput('configFileBackup', helper::FILTER_BOOLEAN) === false) { $path = realpath('site/data'); foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) { @@ -477,61 +548,7 @@ class config extends common { 'state' => true ]); } - // Valeurs en sortie - $this->addOutput([ - 'title' => 'Configuration de base', - 'view' => 'index' - ]); - } - - /** - * Configuration - */ - public function locale() { - // Soumission du formulaire - if($this->isPost()) { - - // Répercuter la suppression de la page dans la configuration du footer - if ( $this->getData(['theme','footer','displaySearch']) === true - AND $this->getInput('configSearchPageId') === 'none' - ){ - $this->setData(['theme', 'footer', 'displaySearch', false]); - } - if ( $this->getData(['theme','footer','displayLegal']) === true - AND $this->getInput('configLegalPageId') === 'none' - ){ - $this->setData(['theme', 'footer', 'displayLegal', false]); - } - - // Sauvegarder - $this->setData([ - 'locale', - [ - 'homePageId' => $this->getInput('configHomePageId', helper::FILTER_ID, true), - 'page404' => $this->getInput('configPage404'), - 'page403' => $this->getInput('configPage403'), - 'page302' => $this->getInput('configPage302'), - 'legalPageId' => $this->getInput('configLegalPageId'), - 'searchPageId' => $this->getInput('configSearchPageId'), - 'searchPageLabel' => empty($this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT), - 'legalPageLabel' => empty($this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT), - 'sitemapPageLabel' => empty($this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT), - 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), - 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) - ], - ]); - - $this->setData(['config', 'i18n', 'enable', $this->getInput('configI18n',helper::FILTER_BOOLEAN) ]); - - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl(), - 'notification' => 'Modifications enregistrées', - 'state' => true - ]); - } - - // Liste des pages + // Générer la list des pages disponibles self::$pagesList = $this->getData(['page']); foreach(self::$pagesList as $page => $pageId) { if ($this->getData(['page',$page,'block']) === 'bar' || @@ -548,112 +565,14 @@ class config extends common { unset(self::$orphansList[$page]); } } - // Valeurs en sortie $this->addOutput([ - 'title' => 'Localisation', - 'view' => 'locale' + 'title' => 'Configuration', + 'view' => 'index' ]); } - /** - * Sécurité de la connexion - **/ - public function safety() { - // Soumission du formulaire - if($this->isPost()) { - $this->setData([ 'config', 'captchaStrong', $this->getInput('configAdvancedCaptchaStrong',helper::FILTER_BOOLEAN)]); - $this->setData([ 'config', 'autoDisconnect', $this->getInput('configAdvancedAutoDisconnect',helper::FILTER_BOOLEAN)]); - $this->setData([ 'config', 'connect' => [ - 'attempt' => $this->getInput('configAdvancedConnectAttempt',helper::FILTER_INT), - 'timeout' => $this->getInput('configAdvancedConnectTimeout',helper::FILTER_INT), - 'log' => $this->getInput('configAdvancedConnectLog',helper::FILTER_BOOLEAN), - 'anonymousIp' => $this->getInput('configAdvancedConnectAnonymousIp',helper::FILTER_INT), - 'captcha' => $this->getInput('configAdvancedConnectCaptcha',helper::FILTER_BOOLEAN) - ]]); - } - // Valeurs en sortie - $this->addOutput([ - 'title' => 'Configuration avancée', - 'view' => 'safety' - ]); - } - - /** - * Configuration - */ - public function social() { - // Soumission du formulaire - if($this->isPost()) { - // Sauvegarder - $this->setData([ 'config', 'analyticsId', $this->getInput('configAdvancedAnalyticsId')]); - $this->setData([ 'config', 'social' => [ - 'facebookId' => $this->getInput('configAdvancedSocialFacebookId'), - 'linkedinId' => $this->getInput('configAdvancedSocialLinkedinId'), - 'instagramId' => $this->getInput('configAdvancedSocialInstagramId'), - 'pinterestId' => $this->getInput('configAdvancedSocialPinterestId'), - 'twitterId' => $this->getInput('configAdvancedSocialTwitterId'), - 'youtubeId' => $this->getInput('configAdvancedSocialYoutubeId'), - 'youtubeUserId' => $this->getInput('configAdvancedSocialYoutubeUserId'), - 'githubId' => $this->getInput('configAdvancedSocialGithubId') - ]]); - - $this->setData([ 'config', 'seo' => [ - 'robots' => $this->getInput('configAdvancedSeoRobots',helper::FILTER_BOOLEAN) - ]]); - - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl(), - 'notification' => 'Modifications enregistrées ' , - 'state' => true - ]); - } - - // Valeurs en sortie - $this->addOutput([ - 'title' => 'Référencement', - 'view' => 'social' - ]); - } - - - /** - * Configuration avancée - */ - public function network() { - // Soumission du formulaire - if($this->isPost()) { - // Sauvegarder - $this->setData([ 'config', 'proxyType', $this->getInput('configAdvancedProxyType')]); - $this->setData([ 'config', 'proxyUrl', $this->getInput('configAdvancedProxyUrl')]); - $this->setData([ 'config', 'proxyUrl', $this->getInput('configAdvancedProxyUrl')]); - $this->setData([ 'config', 'smtp' => [ - 'enable' => $this->getInput('configAdvancedSmtpEnable',helper::FILTER_BOOLEAN), - 'host' => $this->getInput('configAdvancedSmtpHost',helper::FILTER_STRING_SHORT), - 'port' => $this->getInput('configAdvancedSmtpPort',helper::FILTER_INT), - 'auth' => $this->getInput('configAdvancedSmtpAuth',helper::FILTER_BOOLEAN), - 'secure' => $this->getInput('configAdvancedSmtpSecure'), - 'username' => $this->getInput('configAdvancedSmtpUsername',helper::FILTER_STRING_SHORT), - 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configAdvancedSmtpPassword')), - 'sender' => $this->getInput('configAdvancedSmtpSender',helper::FILTER_MAIL) - ]]); - - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl(), - 'notification' => 'Modifications enregistrées ' , - 'state' => true - ]); - } - // Valeurs en sortie - $this->addOutput([ - 'title' => 'Reseau et scripts', - 'view' => 'network' - ]); - } - public function script() { // Soumission du formulaire if($this->isPost()) { diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 339cb959..544b8ee6 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -14,24 +14,24 @@ $( document).ready(function() { /** * Afficher et masquer options SMTP */ - if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { - $("#configAdvancedSmtpParam").addClass("disabled"); - $("#configAdvancedSmtpParam").slideDown(); + if ($("input[name=SmtpEnable]").is(':checked')) { + $("#SmtpParam").addClass("disabled"); + $("#SmtpParam").slideDown(); } else { - $("#configAdvancedSmtpParam").removeClass("disabled"); - $("#configAdvancedSmtpParam").slideUp(); + $("#SmtpParam").removeClass("disabled"); + $("#SmtpParam").slideUp(); } /** * Afficher et masquer options Auth */ - if ($("select[name=configAdvancedSmtpEnable]").val() == true) { - $("#configAdvancedSmtpAuthParam").addClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideDown(); + if ($("select[name=SmtpEnable]").val() == true) { + $("#SmtpAuthParam").addClass("disabled"); + $("#SmtpAuthParam").slideDown(); } else { - $("#configAdvancedSmtpAuthParam").removeClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideUp(); + $("#SmtpAuthParam").removeClass("disabled"); + $("#SmtpAuthParam").slideUp(); } @@ -40,13 +40,13 @@ $( document).ready(function() { /** * Afficher et masquer options SMTP */ - $("input[name=configAdvancedSmtpEnable]").on("change", function() { - if ($("input[name=configAdvancedSmtpEnable]").is(':checked')) { - $("#configAdvancedSmtpParam").addClass("disabled"); - $("#configAdvancedSmtpParam").slideDown(); + $("input[name=SmtpEnable]").on("change", function() { + if ($("input[name=SmtpEnable]").is(':checked')) { + $("#SmtpParam").addClass("disabled"); + $("#SmtpParam").slideDown(); } else { - $("#configAdvancedSmtpParam").removeClass("disabled"); - $("#configAdvancedSmtpParam").slideUp(); + $("#SmtpParam").removeClass("disabled"); + $("#SmtpParam").slideUp(); } }); @@ -54,13 +54,13 @@ $( document).ready(function() { * Afficher et masquer options Auth */ - $("select[name=configAdvancedSmtpAuth]").on("change", function() { - if ($("select[name=configAdvancedSmtpAuth]").val() == true) { - $("#configAdvancedSmtpAuthParam").addClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideDown(); + $("select[name=SmtpAuth]").on("change", function() { + if ($("select[name=SmtpAuth]").val() == true) { + $("#SmtpAuthParam").addClass("disabled"); + $("#SmtpAuthParam").slideDown(); } else { - $("#configAdvancedSmtpAuthParam").removeClass("disabled"); - $("#configAdvancedSmtpAuthParam").slideUp(); + $("#SmtpAuthParam").removeClass("disabled"); + $("#SmtpAuthParam").slideUp(); } }); diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 34708200..e7661cd1 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -9,45 +9,45 @@ ]); ?>
- 'buttonHelp', 'ico' => 'help', 'value' => 'Aide' ]); ?>
- +
- helper::baseUrl() . 'config/index', 'value' => 'Paramètres' ]); ?>
- helper::baseUrl() . 'config/locale', 'value' => 'Localisation' ]); ?>
- helper::baseUrl() . 'config/social', 'value' => 'Référencement' ]); ?>
- helper::baseUrl() . 'config/safety', 'value' => 'Sécurité' ]); ?>
- helper::baseUrl() . 'config/network', 'value' => 'Réseau' ]); ?> diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php index c9cc5bfd..5e096aa6 100644 --- a/core/module/config/view/network/network.php +++ b/core/module/config/view/network/network.php @@ -5,20 +5,20 @@

Réseau

- 'Type de proxy', 'selected' => $this->getData(['config', 'proxyType']) ]); ?>
- 'Adresse du proxy', 'placeholder' => 'cache.proxy.fr', 'value' => $this->getData(['config', 'proxyUrl']) ]); ?>
- 'Port du proxy', 'placeholder' => '6060', 'value' => $this->getData(['config', 'proxyPort']) @@ -34,52 +34,52 @@

SMTP

- $this->getData(['config', 'smtp','enable']), 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' ]); ?>
-
+
- 'Adresse SMTP', 'placeholder' => 'smtp.fr', 'value' => $this->getData(['config', 'smtp','host']) ]); ?>
- 'Port SMTP', 'placeholder' => '589', 'value' => $this->getData(['config', 'smtp','port']) ]); ?>
- 'Authentification', 'selected' => $this->getData(['config', 'smtp','auth']) ]); ?>
-
+
- 'Nom utilisateur', 'value' => $this->getData(['config', 'smtp','username' ]) ]); ?>
- 'Mot de passe', 'autocomplete' => 'off', 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' ]); ?>
- 'Sécurité', 'selected' => $this->getData(['config', 'smtp','secure']) ]); ?> diff --git a/core/module/config/view/safety/safety.php b/core/module/config/view/safety/safety.php index 746bded3..5db5f624 100644 --- a/core/module/config/view/safety/safety.php +++ b/core/module/config/view/safety/safety.php @@ -5,18 +5,18 @@

Sécurité de la connexion

- $this->getData(['config', 'connect','captcha']) ]); ?>
- $this->getData(['config','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.' ]); ?>
- $this->getData(['config','autoDisconnect']), 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' ]); ?> @@ -24,13 +24,13 @@
- 'Connexions successives', 'selected' => $this->getData(['config', 'connect', 'attempt']) ]); ?>
- 'Blocage après échecs', 'selected' => $this->getData(['config', 'connect', 'timeout']) ]); ?> @@ -42,14 +42,14 @@ Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.'); ?> - helper::baseUrl() . 'config/blacklistDownload', 'value' => 'Télécharger la liste', 'ico' => 'download' ]); ?>
- 'buttonRed', 'href' => helper::baseUrl() . 'config/blacklistReset', 'value' => 'Réinitialiser la liste', @@ -66,26 +66,26 @@

Journalisation

- $this->getData(['config', 'connect', 'log']) ]); ?>
- 'Anonymat des adresses IP', 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), 'help' => 'La réglementation française impose un anonymat de niveau 2' ]); ?>
- helper::baseUrl() . 'config/logDownload', 'value' => 'Télécharger le journal', 'ico' => 'download' ]); ?>
- 'buttonRed', 'href' => helper::baseUrl() . 'config/logReset', 'value' => 'Réinitialiser le journal', diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index b9394d5c..558ada51 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -5,7 +5,7 @@

Paramètres

- 1, 'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', 'label' => 'Favicon', @@ -13,7 +13,7 @@ ]); ?>
- 1, 'help' => 'Sélectionnez une icône adaptée à un thème sombre.
Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', 'label' => 'Favicon thème sombre', @@ -21,7 +21,7 @@ ]); ?>
- 'Fuseau horaire', 'selected' => $this->getData(['config', 'timezone']), 'help' => 'Le fuseau horaire est utile au bon référencement' @@ -30,7 +30,7 @@
- $this->getData(['config', 'cookieConsent']), 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' ]); ?> @@ -52,21 +52,21 @@
- $this->getData(['config', 'autoUpdate']), 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', 'disabled' => !$updateError ]); ?>
- $this->getData(['config', 'autoUpdateHtaccess']), 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', 'disabled' => !$updateError ]); ?>
- 'download-cloud', 'href' => helper::baseUrl() . 'install/update', 'value' => 'Mise à jour manuelle', @@ -84,13 +84,13 @@

Maintenance

- $this->getData(['config', 'autoBackup']), 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' ]); ?>

- $this->getData(['config', 'maintenance']) ]); ?>
diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index 465c283f..1f925195 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -7,7 +7,7 @@
- helper::baseUrl() . 'config/configMetaImage', 'value' => 'Générer une capture Open Graph' ]); ?> @@ -15,7 +15,7 @@
- helper::baseUrl() . 'config/generateFiles', 'value' => 'Générer sitemap.xml et robots.txt' ]); ?> @@ -23,7 +23,7 @@
- $this->getData(['config', 'seo','robots']) ]); ?>
@@ -48,28 +48,28 @@

Réseaux sociaux

- 'Saisissez votre ID : https://www.facebook.com/[ID].', 'label' => 'Facebook', 'value' => $this->getData(['config', 'social', 'facebookId']) ]); ?>
- 'Saisissez votre ID : https://www.instagram.com/[ID].', 'label' => 'Instagram', 'value' => $this->getData(['config', 'social', 'instagramId']) ]); ?>
- 'ID de la chaîne : https://www.youtube.com/channel/[ID].', 'label' => 'Chaîne Youtube', 'value' => $this->getData(['config', 'social', 'youtubeId']) ]); ?>
- 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', 'label' => 'Youtube', 'value' => $this->getData(['config', 'social', 'youtubeUserId']) @@ -78,28 +78,28 @@
- 'Saisissez votre ID : https://twitter.com/[ID].', 'label' => 'Twitter', 'value' => $this->getData(['config', 'social', 'twitterId']) ]); ?>
- 'Saisissez votre ID : https://pinterest.com/[ID].', 'label' => 'Pinterest', 'value' => $this->getData(['config', 'social', 'pinterestId']) ]); ?>
- 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', 'label' => 'Linkedin', 'value' => $this->getData(['config', 'social', 'linkedinId']) ]); ?>
- 'Saisissez votre ID Github : https://github.com/[ID].', 'label' => 'Github', 'value' => $this->getData(['config', 'social', 'githubId']) @@ -115,7 +115,7 @@

Scripts externes

- 'Saisissez l\'ID de suivi.', 'label' => 'Google Analytics', 'placeholder' => 'UA-XXXXXXXX-X', @@ -123,14 +123,14 @@ ]); ?>
- helper::baseUrl() . 'config/script/head', 'value' => 'Script dans head', 'ico' => 'pencil' ]); ?>
- helper::baseUrl() . 'config/script/body', 'value' => 'Script dans body', 'ico' => 'pencil' diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php index 138b3d68..94bc2693 100644 --- a/core/module/translate/view/index/index.php +++ b/core/module/translate/view/index/index.php @@ -16,7 +16,7 @@ ]); ?>
- helper::baseUrl() . 'translate/copy', 'value' => 'Utilitaire de copie', 'ico' => 'cog-alt', From 1b97a52cedf42e889acb35fcf1aacef982c6683d Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 17:40:18 +0200 Subject: [PATCH 006/277] =?UTF-8?q?d=C3=A9placement=20captchaStrong?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/include/update.inc.php | 9 ++++++++- core/module/install/ressource/defaultdata.php | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/include/update.inc.php b/core/include/update.inc.php index fcdf367a..6cfd3502 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -670,4 +670,11 @@ if ($this->getData(['core', 'dataVersion']) < 11100) { $this->setData(['theme', 'menu', 'burgerLogo', '']); $this->setData(['core', 'dataVersion', 11100]); -} \ No newline at end of file +} + +// Version 11.2.00 +if ($this->getData(['core', 'dataVersion']) < 11200) { + // Déplacer la valeur captcha + $this->setData(['config', 'connect', 'captchaStrong', $this->getData(['config', 'captchaStrong'])]); + $this->setData(['core', 'dataVersion', 11200]); +} diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index 5acdb0ec..e7f44552 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -10,7 +10,6 @@ class init extends common { 'favicon' => 'favicon.ico', 'faviconDark' => 'faviconDark.ico', 'maintenance' => false, - 'captchaStrong' => false, 'social' => [ 'facebookId' => 'facebook', 'instagramId' => '', @@ -35,7 +34,8 @@ class init extends common { 'attempt' => 3, 'log' => false, 'anonymousIp' => 2, - 'captcha' => true + 'captcha' => true, + 'captchaStrong' => false, ], 'i18n' => [ 'enable'=> true, @@ -53,7 +53,7 @@ class init extends common { ] ], 'core' => [ - 'dataVersion' => 11100, + 'dataVersion' => 11200, 'lastBackup' => 0, 'lastClearTmp' => 0, 'lastAutoUpdate' => 0, From 5e49633f8125f65ec7240f95a58d66455c86c2e0 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 17:52:19 +0200 Subject: [PATCH 007/277] Version 11.2.00 --- CHANGES.md | 3 ++- README.md | 2 +- core/core.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index fa4a44ed..7e5d3414 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,7 +1,8 @@ # Changelog -## Version 11.1.01 +## Version 11.2.00 - Modifications : + - Disposition des options du menu de configuration du site. - Dispositions des écrans du thème : site, menu, pied de page, menu et bannière. ## Version 11.1.00 diff --git a/README.md b/README.md index 98060049..84e47c24 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ZwiiCMS 11.1.01 +# ZwiiCMS 11.2.00 Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation. diff --git a/core/core.php b/core/core.php index d881e4a8..890c7368 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.1.01'; + const ZWII_VERSION = '11.2.00'; const ZWII_UPDATE_CHANNEL = "v11"; public static $actions = []; From b41c352bc519c9527d689ea87b252929b2805fbe Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:11:50 +0200 Subject: [PATCH 008/277] =?UTF-8?q?D=C3=A9placement=20autodisconnect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/install/ressource/defaultdata.php | 1 + 1 file changed, 1 insertion(+) diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index e7f44552..3bad20ea 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -36,6 +36,7 @@ class init extends common { 'anonymousIp' => 2, 'captcha' => true, 'captchaStrong' => false, + 'autoDisconnect' => true ], 'i18n' => [ 'enable'=> true, From 02ff10df39e1f3be3343aba563ce63437878e8bd Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:12:34 +0200 Subject: [PATCH 009/277] =?UTF-8?q?Validations=20=C3=A0=20v=C3=A9rifier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 1 + core/include/update.inc.php | 8 ++- core/module/config/config.php | 18 +++--- .../connect.help.html} | 0 .../safety.php => connect/connect.php} | 24 ++++---- core/module/config/view/index/index.css | 8 +++ core/module/config/view/index/index.js.php | 55 +++++++++++++++++++ core/module/config/view/index/index.php | 19 +++---- core/module/config/view/locale/locale.php | 5 +- core/module/config/view/network/network.php | 2 +- core/module/config/view/setup/setup.php | 18 +++--- core/module/config/view/social/social.php | 2 +- 12 files changed, 114 insertions(+), 46 deletions(-) rename core/module/config/view/{safety/safety.help.html => connect/connect.help.html} (100%) rename core/module/config/view/{safety/safety.php => connect/connect.php} (76%) diff --git a/core/core.php b/core/core.php index 890c7368..4a98bdd2 100644 --- a/core/core.php +++ b/core/core.php @@ -1844,6 +1844,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/include/update.inc.php b/core/include/update.inc.php index 6cfd3502..dd14a012 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -674,7 +674,13 @@ if ($this->getData(['core', 'dataVersion']) < 11100) { // Version 11.2.00 if ($this->getData(['core', 'dataVersion']) < 11200) { - // Déplacer la valeur captcha + + // Mise àjour des données de config $this->setData(['config', 'connect', 'captchaStrong', $this->getData(['config', 'captchaStrong'])]); + $this->deleteData(['config', 'captchaStrong']); + $this->setData(['config', 'connect', 'autoDisconnect', $this->getData(['config', 'autoDisconnect'])]); + $this->deleteData(['config', 'autoDisconnect']); + + // Mise à jour $this->setData(['core', 'dataVersion', 11200]); } diff --git a/core/module/config/config.php b/core/module/config/config.php index 8b813ddf..3742ccba 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -443,6 +443,12 @@ class config extends common { 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), 'favicon' => $this->getInput('configFavicon'), 'faviconDark' => $this->getInput('configFaviconDark'), + 'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT), + 'autoUpdate' => $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN), + 'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN), + 'proxyType' => $this->getInput('configProxyType'), + 'proxyUrl' => $this->getInput('configProxyUrl'), + 'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT), 'social' => [ 'facebookId' => $this->getInput('configSocialFacebookId'), 'linkedinId' => $this->getInput('configSocialLinkedinId'), @@ -453,14 +459,6 @@ class config extends common { 'youtubeUserId' => $this->getInput('configSocialYoutubeUserId'), 'githubId' => $this->getInput('configSocialGithubId') ], - 'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT, true), - 'autoUpdate' => $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN), - 'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN), - 'proxyType' => $this->getInput('configProxyType'), - 'proxyUrl' => $this->getInput('configProxyUrl'), - 'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT), - 'captchaStrong' => $this->getInput('configCaptchaStrong',helper::FILTER_BOOLEAN), - 'autoDisconnect' => $this->getInput('configAutoDisconnect',helper::FILTER_BOOLEAN), 'smtp' => [ 'enable' => $this->getInput('configSmtpEnable',helper::FILTER_BOOLEAN), 'host' => $this->getInput('configSmtpHost',helper::FILTER_STRING_SHORT), @@ -474,12 +472,14 @@ class config extends common { 'seo' => [ 'robots' => $this->getInput('configSeoRobots',helper::FILTER_BOOLEAN) ], - 'connect' => [ + 'safety' => [ 'attempt' => $this->getInput('configConnectAttempt',helper::FILTER_INT), 'timeout' => $this->getInput('configConnectTimeout',helper::FILTER_INT), 'log' => $this->getInput('configConnectLog',helper::FILTER_BOOLEAN), 'anonymousIp' => $this->getInput('configConnectAnonymousIp',helper::FILTER_INT), 'captcha' => $this->getInput('configConnectCaptcha',helper::FILTER_BOOLEAN), + 'captchaStrong' => $this->getInput('configConnectCaptchaStrong',helper::FILTER_BOOLEAN), + 'autoDisconnect' => $this->getInput('configConnectAutoDisconnect',helper::FILTER_BOOLEAN), ], 'i18n' => [ 'enable' => $this->getData(['config', 'i18n', 'enable']) diff --git a/core/module/config/view/safety/safety.help.html b/core/module/config/view/connect/connect.help.html similarity index 100% rename from core/module/config/view/safety/safety.help.html rename to core/module/config/view/connect/connect.help.html diff --git a/core/module/config/view/safety/safety.php b/core/module/config/view/connect/connect.php similarity index 76% rename from core/module/config/view/safety/safety.php rename to core/module/config/view/connect/connect.php index 5db5f624..8b345ba8 100644 --- a/core/module/config/view/safety/safety.php +++ b/core/module/config/view/connect/connect.php @@ -1,22 +1,22 @@ -
+

Sécurité de la connexion

- $this->getData(['config', 'connect','captcha']) ]); ?>
- $this->getData(['config','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.' ]); ?>
- $this->getData(['config','autoDisconnect']), 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' ]); ?> @@ -24,13 +24,13 @@
- 'Connexions successives', 'selected' => $this->getData(['config', 'connect', 'attempt']) ]); ?>
- 'Blocage après échecs', 'selected' => $this->getData(['config', 'connect', 'timeout']) ]); ?> @@ -42,14 +42,14 @@ Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.'); ?> - helper::baseUrl() . 'config/blacklistDownload', 'value' => 'Télécharger la liste', 'ico' => 'download' ]); ?>
- 'buttonRed', 'href' => helper::baseUrl() . 'config/blacklistReset', 'value' => 'Réinitialiser la liste', @@ -66,26 +66,26 @@

Journalisation

- $this->getData(['config', 'connect', 'log']) ]); ?>
- 'Anonymat des adresses IP', 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), 'help' => 'La réglementation française impose un anonymat de niveau 2' ]); ?>
- helper::baseUrl() . 'config/logDownload', 'value' => 'Télécharger le journal', 'ico' => 'download' ]); ?>
- 'buttonRed', 'href' => helper::baseUrl() . 'config/logReset', 'value' => 'Réinitialiser le journal', diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index f125f340..9d2c2fc4 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -16,3 +16,11 @@ /** NE PAS EFFACER * admin.css */ + +#setupContainer { + display: block; +} + +#localeContainer, #socialContainer, #safetyContainer, #networkContainer { + display: none; +} \ No newline at end of file diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 544b8ee6..52cf0bf0 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -87,4 +87,59 @@ $( document).ready(function() { } }); + /** + * Captcha strong si captcha sélectionné + */ + $("input[name=configConnectCaptcha]").on("change", function() { + + if ($("input[name=configConnectCaptcha]").is(':checked')) { + $("#configConnectCaptchaStrongWrapper").addClass("disabled"); + $("#configConnectCaptchaStrongWrapper").slideDown(); + $( "#configConnectCaptchaStrong" ).prop( "checked", false ); + } else { + $("#configConnectCaptchaStrongWrapper").removeClass("disabled"); + $("#configConnectCaptchaStrongWrapper").slideUp(); + } + }); + + + /** + * Sélection de la page de configuration à afficher + */ + $("#configSetupButton").on("click", function() { + $("#localeContainer").slideUp(); + $("#socialContainer").slideUp(); + $("#connectContainer").slideUp(); + $("#networkContainer").slideUp(); + $("#setupContainer").slideDown(); + }); + $("#configLocalButton").on("click", function() { + $("#setupContainer").slideUp(); + $("#socialContainer").slideUp(); + $("#connectContainer").slideUp(); + $("#networkContainer").slideUp(); + $("#localeContainer").slideDown(); + }); + $("#configSocialButton").on("click", function() { + $("#connectContainer").slideUp(); + $("#setupContainer").slideUp(); + $("#localeContainer").slideUp(); + $("#networkContainer").slideUp(); + $("#socialContainer").slideDown(); + }); + $("#configConnectButton").on("click", function() { + $("#setupContainer").slideUp(); + $("#localeContainer").slideUp(); + $("#socialContainer").slideUp(); + $("#networkContainer").slideUp(); + $("#connectContainer").slideDown(); + }); + $("#configNetworkButton").on("click", function() { + $("#setupContainer").slideUp(); + $("#localeContainer").slideUp(); + $("#socialContainer").slideUp(); + $("#connectContainer").slideUp(); + $("#networkContainer").slideDown(); + }); + }); diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index e7661cd1..57ceb7af 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -23,32 +23,27 @@
- helper::baseUrl() . 'config/index', + 'Paramètres' ]); ?>
- helper::baseUrl() . 'config/locale', + 'Localisation' ]); ?>
- helper::baseUrl() . 'config/social', + 'Référencement' ]); ?>
- helper::baseUrl() . 'config/safety', - 'value' => 'Sécurité' + 'Connexion' ]); ?>
- helper::baseUrl() . 'config/network', + 'Réseau' ]); ?>
@@ -59,6 +54,6 @@ - + \ No newline at end of file diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index e0dd66c6..fc5284a5 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -1,4 +1,4 @@ -
+
@@ -44,6 +44,9 @@ ]); ?>
+
+
+
diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php index 5e096aa6..2c9f4ece 100644 --- a/core/module/config/view/network/network.php +++ b/core/module/config/view/network/network.php @@ -1,4 +1,4 @@ -
+
diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 558ada51..278733b0 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -1,4 +1,4 @@ -
+
@@ -21,7 +21,7 @@ ]); ?>
- 'Fuseau horaire', 'selected' => $this->getData(['config', 'timezone']), 'help' => 'Le fuseau horaire est utile au bon référencement' @@ -30,13 +30,13 @@
- $this->getData(['config', 'cookieConsent']), 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' ]); ?>
- helper::checkRewrite(), 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' ]); ?> @@ -52,21 +52,21 @@
- $this->getData(['config', 'autoUpdate']), 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', 'disabled' => !$updateError ]); ?>
- $this->getData(['config', 'autoUpdateHtaccess']), 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', 'disabled' => !$updateError ]); ?>
- 'download-cloud', 'href' => helper::baseUrl() . 'install/update', 'value' => 'Mise à jour manuelle', @@ -84,13 +84,13 @@

Maintenance

- $this->getData(['config', 'autoBackup']), 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' ]); ?>

- $this->getData(['config', 'maintenance']) ]); ?>
diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index 1f925195..8b84a69c 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -1,4 +1,4 @@ -
+
From 0ae97913ee5a67cf8425950ca32fecc6563f7cbd Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:36:43 +0200 Subject: [PATCH 010/277] setup + locale ok --- core/module/config/config.php | 37 +++++++++++---------- core/module/config/view/connect/connect.php | 20 +++++------ core/module/config/view/index/index.css | 2 +- core/module/config/view/locale/locale.php | 26 +++++++-------- core/module/config/view/setup/setup.php | 18 +++++----- core/module/config/view/social/social.php | 12 +++---- 6 files changed, 59 insertions(+), 56 deletions(-) diff --git a/core/module/config/config.php b/core/module/config/config.php index 3742ccba..24dfb562 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -419,17 +419,17 @@ class config extends common { $this->setData([ 'locale', [ - 'homePageId' => $this->getInput('configHomePageId', helper::FILTER_ID, true), - 'page404' => $this->getInput('configPage404'), - 'page403' => $this->getInput('configPage403'), - 'page302' => $this->getInput('configPage302'), - 'legalPageId' => $this->getInput('configLegalPageId'), - 'searchPageId' => $this->getInput('configSearchPageId'), - 'searchPageLabel' => empty($this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('configSearchPageLabel', helper::FILTER_STRING_SHORT), - 'legalPageLabel' => empty($this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('configLegalPageLabel', helper::FILTER_STRING_SHORT), - 'sitemapPageLabel' => empty($this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('configSitemapPageLabel', helper::FILTER_STRING_SHORT), - 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), - 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) + 'homePageId' => $this->getInput('localeHomePageId', helper::FILTER_ID, true), + 'page404' => $this->getInput('localePage404'), + 'page403' => $this->getInput('localePage403'), + 'page302' => $this->getInput('localePage302'), + 'legalPageId' => $this->getInput('localeLegalPageId'), + 'searchPageId' => $this->getInput('localeSearchPageId'), + 'searchPageLabel' => empty($this->getInput('localeSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('localeSearchPageLabel', helper::FILTER_STRING_SHORT), + 'legalPageLabel' => empty($this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT), + 'sitemapPageLabel' => empty($this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT), + 'metaDescription' => $this->getInput('localeMetaDescription', helper::FILTER_STRING_LONG, true), + 'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true) ] ]); @@ -437,15 +437,16 @@ class config extends common { $this->setData([ 'config', [ - 'analyticsId' => $this->getInput('configAnalyticsId'), - 'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN), - 'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN), - 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), 'favicon' => $this->getInput('configFavicon'), 'faviconDark' => $this->getInput('configFaviconDark'), - 'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT), + 'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT, true), + 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), 'autoUpdate' => $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN), 'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN), + + 'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN), + 'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN), + 'proxyType' => $this->getInput('configProxyType'), 'proxyUrl' => $this->getInput('configProxyUrl'), 'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT), @@ -470,7 +471,8 @@ class config extends common { 'sender' => $this->getInput('configSmtpSender',helper::FILTER_MAIL) ], 'seo' => [ - 'robots' => $this->getInput('configSeoRobots',helper::FILTER_BOOLEAN) + 'robots' => $this->getInput('SeoRobots',helper::FILTER_BOOLEAN), + 'analyticsId' => $this->getInput('SeoAnalyticsId') ], 'safety' => [ 'attempt' => $this->getInput('configConnectAttempt',helper::FILTER_INT), @@ -486,6 +488,7 @@ class config extends common { ] ] ]); + // Efface les fichiers de backup lorsque l'option est désactivée if ($this->getInput('configFileBackup', helper::FILTER_BOOLEAN) === false) { $path = realpath('site/data'); diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index 8b345ba8..b2339b0e 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -5,18 +5,18 @@

Sécurité de la connexion

- $this->getData(['config', 'connect','captcha']) ]); ?>
- $this->getData(['config','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.' ]); ?>
- $this->getData(['config','autoDisconnect']), 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' ]); ?> @@ -24,13 +24,13 @@
- 'Connexions successives', 'selected' => $this->getData(['config', 'connect', 'attempt']) ]); ?>
- 'Blocage après échecs', 'selected' => $this->getData(['config', 'connect', 'timeout']) ]); ?> @@ -42,14 +42,14 @@ Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.'); ?> - helper::baseUrl() . 'config/blacklistDownload', 'value' => 'Télécharger la liste', 'ico' => 'download' ]); ?>
- 'buttonRed', 'href' => helper::baseUrl() . 'config/blacklistReset', 'value' => 'Réinitialiser la liste', @@ -66,12 +66,12 @@

Journalisation

- $this->getData(['config', 'connect', 'log']) ]); ?>
- 'Anonymat des adresses IP', 'selected' => $this->getData(['config', 'connect', 'anonymousIp']), 'help' => 'La réglementation française impose un anonymat de niveau 2' @@ -85,7 +85,7 @@ ]); ?>
- 'buttonRed', 'href' => helper::baseUrl() . 'config/logReset', 'value' => 'Réinitialiser le journal', diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index 9d2c2fc4..3c502d03 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -21,6 +21,6 @@ display: block; } -#localeContainer, #socialContainer, #safetyContainer, #networkContainer { +#localeContainer, #socialContainer, #connectContainer, #networkContainer { display: none; } \ No newline at end of file diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index fc5284a5..e4a95aba 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -5,7 +5,7 @@

Langues étrangères

- $this->getData(['config', 'i18n', 'enable']), 'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.' ]); ?> @@ -21,14 +21,14 @@

Cette page doit être adaptée à chaque traduction rédigée.

- 'Titre du site' , 'value' => $this->getData(['locale', 'title']), 'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' ]); ?>
- 'ZwiiCMS Version', 'value' => common::ZWII_VERSION, 'readonly' => true @@ -37,7 +37,7 @@
- 'Description du site', 'value' => $this->getData(['locale', 'metaDescription']), 'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.' @@ -53,21 +53,21 @@

Etiquettes des pages spéciales

- 'Mentions légales', 'placeholder' => 'Mentions légales', 'value' => $this->getData(['locale', 'legalPageLabel']) ]); ?>
- 'Rechercher', 'placeholder' => 'Rechercher', 'value' => $this->getData(['locale', 'searchPageLabel']) ]); ?>
- 'Plan du site', 'placeholder' => 'Plan du site', 'value' => $this->getData(['locale', 'sitemapPageLabel']), @@ -83,21 +83,21 @@

Assignation des pages spéciales

- 'Accueil du site', 'selected' =>$this->getData(['locale', 'homePageId']), 'help' => 'La première page que vos visiteurs verront.' ]); ?>
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ 'label' => 'Accès interdit, erreur 403', 'selected' =>$this->getData(['locale', 'page403']), 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' ]); ?>
- 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ 'label' => 'Page inexistante, erreur 404', 'selected' =>$this->getData(['locale', 'page404']), 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' @@ -106,14 +106,14 @@
- 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ + 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ 'label' => 'Mentions légales', 'selected' => $this->getData(['locale', 'legalPageId']), 'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.' ]); ?>
- 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ + 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ 'label' => 'Recherche dans le site', 'selected' => $this->getData(['locale', 'searchPageId']), 'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.' @@ -121,7 +121,7 @@
'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ + echo template::select('localePage302', array_merge(['none' => 'Page par défaut'],helper::arrayCollumn($module::$orphansList, 'title', 'SORT_ASC')), [ 'label' => 'Site en maintenance', 'selected' =>$this->getData(['locale', 'page302']), 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 278733b0..3d0aeb82 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -5,7 +5,7 @@

Paramètres

- 1, 'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', 'label' => 'Favicon', @@ -13,7 +13,7 @@ ]); ?>
- 1, 'help' => 'Sélectionnez une icône adaptée à un thème sombre.
Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.', 'label' => 'Favicon thème sombre', @@ -30,13 +30,13 @@
- $this->getData(['config', 'cookieConsent']), 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' ]); ?>
- helper::checkRewrite(), 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).' ]); ?> @@ -52,21 +52,21 @@
- $this->getData(['config', 'autoUpdate']), 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.', 'disabled' => !$updateError ]); ?>
- $this->getData(['config', 'autoUpdateHtaccess']), 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', 'disabled' => !$updateError ]); ?>
- 'download-cloud', 'href' => helper::baseUrl() . 'install/update', 'value' => 'Mise à jour manuelle', @@ -84,13 +84,13 @@

Maintenance

- $this->getData(['config', 'autoBackup']), 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.

Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' ]); ?>

- $this->getData(['config', 'maintenance']) ]); ?>
diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index 8b84a69c..84c6ae2a 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -7,7 +7,7 @@
- helper::baseUrl() . 'config/configMetaImage', 'value' => 'Générer une capture Open Graph' ]); ?> @@ -15,7 +15,7 @@
- helper::baseUrl() . 'config/generateFiles', 'value' => 'Générer sitemap.xml et robots.txt' ]); ?> @@ -115,22 +115,22 @@

Scripts externes

- 'Saisissez l\'ID de suivi.', 'label' => 'Google Analytics', 'placeholder' => 'UA-XXXXXXXX-X', - 'value' => $this->getData(['config', 'analyticsId']) + 'value' => $this->getData(['config', 'seo', 'analyticsId']) ]); ?>
- helper::baseUrl() . 'config/script/head', 'value' => 'Script dans head', 'ico' => 'pencil' ]); ?>
- helper::baseUrl() . 'config/script/body', 'value' => 'Script dans body', 'ico' => 'pencil' From 0535dc951b154af9560dca097015d6fe49936e12 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:45:17 +0200 Subject: [PATCH 011/277] captcha strong --- core/module/user/view/login/login.php | 2 +- module/blog/view/article/article.php | 2 +- module/form/view/index/index.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/module/user/view/login/login.php b/core/module/user/view/login/login.php index 32ae1b03..2e6363ea 100644 --- a/core/module/user/view/login/login.php +++ b/core/module/user/view/login/login.php @@ -16,7 +16,7 @@
$this->getData(['config','captchaStrong']) + 'limit' => $this->getData(['config','connect', 'captchaStrong']) ]); ?>
diff --git a/module/blog/view/article/article.php b/module/blog/view/article/article.php index 05f9626b..d6523d8a 100644 --- a/module/blog/view/article/article.php +++ b/module/blog/view/article/article.php @@ -116,7 +116,7 @@
$this->getData(['config','captchaStrong']) + 'limit' => $this->getData(['config','connect', 'captchaStrong']) ]); ?>
diff --git a/module/form/view/index/index.php b/module/form/view/index/index.php index 32dddf28..ade838e2 100644 --- a/module/form/view/index/index.php +++ b/module/form/view/index/index.php @@ -47,7 +47,7 @@
$this->getData(['config','captchaStrong']) + 'limit' => $this->getData(['config','connect', 'captchaStrong']) ]); ?>
From 3d928d866b1ff548470235b1b7c22114178ddc49 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:48:33 +0200 Subject: [PATCH 012/277] autodisconnect --- core/core.php | 2 +- core/module/config/config.php | 2 +- core/module/config/view/connect/connect.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/core.php b/core/core.php index 4a98bdd2..e5167c9d 100644 --- a/core/core.php +++ b/core/core.php @@ -2402,7 +2402,7 @@ class core extends common { $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') AND ( $this->getUser('group') === self::GROUP_BANNED OR ( $_SESSION['csrf'] !== $this->getData(['user',$this->getUser('id'),'accessCsrf']) - AND $this->getData(['config','autoDisconnect']) === true) + AND $this->getData(['config','connect', 'autoDisconnect']) === true) ) ) { $user = new user; diff --git a/core/module/config/config.php b/core/module/config/config.php index 24dfb562..825ce311 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -399,7 +399,7 @@ class config extends common { } // Eviter déconnexion automatique après son activation - if ( $this->getData(['config','autoDisconnect']) === false + if ( $this->getData(['config','connect', 'autoDisconnect']) === false AND $this->getInput('configAutoDisconnect',helper::FILTER_BOOLEAN) === true ) { $this->setData(['user',$this->getuser('id'),'accessCsrf',$_SESSION['csrf']]); } diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index b2339b0e..127fa142 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -17,7 +17,7 @@
$this->getData(['config','autoDisconnect']), + 'checked' => $this->getData(['config','connect', 'autoDisconnect']), 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' ]); ?>
From cbb43f91746bd0231b701fa53cae3368d6cf72ba Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:59:58 +0200 Subject: [PATCH 013/277] =?UTF-8?q?V=C3=A9rif=20toute=20saisie=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/config.php | 54 ++++++++++----------- core/module/config/view/index/index.js.php | 34 ++++++------- core/module/config/view/network/network.php | 24 ++++----- core/module/config/view/social/social.php | 28 +++++------ 4 files changed, 69 insertions(+), 71 deletions(-) diff --git a/core/module/config/config.php b/core/module/config/config.php index 825ce311..ae157936 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -443,45 +443,43 @@ class config extends common { 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), 'autoUpdate' => $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN), 'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN), - 'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN), 'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN), - 'proxyType' => $this->getInput('configProxyType'), 'proxyUrl' => $this->getInput('configProxyUrl'), 'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT), 'social' => [ - 'facebookId' => $this->getInput('configSocialFacebookId'), - 'linkedinId' => $this->getInput('configSocialLinkedinId'), - 'instagramId' => $this->getInput('configSocialInstagramId'), - 'pinterestId' => $this->getInput('configSocialPinterestId'), - 'twitterId' => $this->getInput('configSocialTwitterId'), - 'youtubeId' => $this->getInput('configSocialYoutubeId'), - 'youtubeUserId' => $this->getInput('configSocialYoutubeUserId'), - 'githubId' => $this->getInput('configSocialGithubId') + 'facebookId' => $this->getInput('socialFacebookId'), + 'linkedinId' => $this->getInput('socialLinkedinId'), + 'instagramId' => $this->getInput('socialInstagramId'), + 'pinterestId' => $this->getInput('socialPinterestId'), + 'twitterId' => $this->getInput('socialTwitterId'), + 'youtubeId' => $this->getInput('socialYoutubeId'), + 'youtubeUserId' => $this->getInput('socialYoutubeUserId'), + 'githubId' => $this->getInput('socialGithubId') ], 'smtp' => [ - 'enable' => $this->getInput('configSmtpEnable',helper::FILTER_BOOLEAN), - 'host' => $this->getInput('configSmtpHost',helper::FILTER_STRING_SHORT), - 'port' => $this->getInput('configSmtpPort',helper::FILTER_INT), - 'auth' => $this->getInput('configSmtpAuth',helper::FILTER_BOOLEAN), - 'secure' => $this->getInput('configSmtpSecure'), - 'username' => $this->getInput('configSmtpUsername',helper::FILTER_STRING_SHORT), - 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('configSmtpPassword')), - 'sender' => $this->getInput('configSmtpSender',helper::FILTER_MAIL) + 'enable' => $this->getInput('smtpEnable',helper::FILTER_BOOLEAN), + 'host' => $this->getInput('smtpHost',helper::FILTER_STRING_SHORT), + 'port' => $this->getInput('smtpPort',helper::FILTER_INT), + 'auth' => $this->getInput('smtpAuth',helper::FILTER_BOOLEAN), + 'secure' => $this->getInput('smtpSecure'), + 'username' => $this->getInput('smtpUsername',helper::FILTER_STRING_SHORT), + 'password' =>helper::encrypt($this->getData(['config','smtp','username']),$this->getInput('smtpPassword')), + 'sender' => $this->getInput('smtpSender',helper::FILTER_MAIL) ], 'seo' => [ - 'robots' => $this->getInput('SeoRobots',helper::FILTER_BOOLEAN), - 'analyticsId' => $this->getInput('SeoAnalyticsId') + 'robots' => $this->getInput('seoRobots',helper::FILTER_BOOLEAN), + 'analyticsId' => $this->getInput('seoAnalyticsId') ], - 'safety' => [ - 'attempt' => $this->getInput('configConnectAttempt',helper::FILTER_INT), - 'timeout' => $this->getInput('configConnectTimeout',helper::FILTER_INT), - 'log' => $this->getInput('configConnectLog',helper::FILTER_BOOLEAN), - 'anonymousIp' => $this->getInput('configConnectAnonymousIp',helper::FILTER_INT), - 'captcha' => $this->getInput('configConnectCaptcha',helper::FILTER_BOOLEAN), - 'captchaStrong' => $this->getInput('configConnectCaptchaStrong',helper::FILTER_BOOLEAN), - 'autoDisconnect' => $this->getInput('configConnectAutoDisconnect',helper::FILTER_BOOLEAN), + 'connect' => [ + 'attempt' => $this->getInput('connectAttempt',helper::FILTER_INT), + 'timeout' => $this->getInput('connectTimeout',helper::FILTER_INT), + 'log' => $this->getInput('connectLog',helper::FILTER_BOOLEAN), + 'anonymousIp' => $this->getInput('connectAnonymousIp',helper::FILTER_INT), + 'captcha' => $this->getInput('connectCaptcha',helper::FILTER_BOOLEAN), + 'captchaStrong' => $this->getInput('connectCaptchaStrong',helper::FILTER_BOOLEAN), + 'autoDisconnect' => $this->getInput('connectAutoDisconnect',helper::FILTER_BOOLEAN), ], 'i18n' => [ 'enable' => $this->getData(['config', 'i18n', 'enable']) diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 52cf0bf0..8b1792f9 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -68,21 +68,21 @@ $( document).ready(function() { * Options de blocage de connexions * Contrôle la cohérence des sélections et interdit une seule valeur Aucune */ - $("select[name=configConnectAttempt]").on("change", function() { - if ($("select[name=configConnectAttempt]").val() === "999") { - $("select[name=configConnectTimeout]").val(0); + $("select[name=connectAttempt]").on("change", function() { + if ($("select[name=connectAttempt]").val() === "999") { + $("select[name=connectTimeout]").val(0); } else { - if ($("select[name=configConnectTimeout]").val() === "0") { - $("select[name=configConnectTimeout]").val(300); + if ($("select[name=connectTimeout]").val() === "0") { + $("select[name=connectTimeout]").val(300); } } }); - $("select[name=configConnectTimeout]").on("change", function() { - if ($("select[name=configConnectTimeout]").val() === "0") { - $("select[name=configConnectAttempt]").val(999); + $("select[name=connectTimeout]").on("change", function() { + if ($("select[name=connectTimeout]").val() === "0") { + $("select[name=connectAttempt]").val(999); } else { - if ($("select[name=configConnectAttempt]").val() === "999") { - $("select[name=configConnectAttempt]").val(3); + if ($("select[name=connectAttempt]").val() === "999") { + $("select[name=connectAttempt]").val(3); } } }); @@ -90,15 +90,15 @@ $( document).ready(function() { /** * Captcha strong si captcha sélectionné */ - $("input[name=configConnectCaptcha]").on("change", function() { + $("input[name=connectCaptcha]").on("change", function() { - if ($("input[name=configConnectCaptcha]").is(':checked')) { - $("#configConnectCaptchaStrongWrapper").addClass("disabled"); - $("#configConnectCaptchaStrongWrapper").slideDown(); - $( "#configConnectCaptchaStrong" ).prop( "checked", false ); + if ($("input[name=connectCaptcha]").is(':checked')) { + $("#connectCaptchaStrongWrapper").addClass("disabled"); + $("#connectCaptchaStrongWrapper").slideDown(); + $( "#connectCaptchaStrong" ).prop( "checked", false ); } else { - $("#configConnectCaptchaStrongWrapper").removeClass("disabled"); - $("#configConnectCaptchaStrongWrapper").slideUp(); + $("#connectCaptchaStrongWrapper").removeClass("disabled"); + $("#connectCaptchaStrongWrapper").slideUp(); } }); diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php index 2c9f4ece..bfabba9f 100644 --- a/core/module/config/view/network/network.php +++ b/core/module/config/view/network/network.php @@ -5,20 +5,20 @@

Réseau

- 'Type de proxy', 'selected' => $this->getData(['config', 'proxyType']) ]); ?>
- 'Adresse du proxy', 'placeholder' => 'cache.proxy.fr', 'value' => $this->getData(['config', 'proxyUrl']) ]); ?>
- 'Port du proxy', 'placeholder' => '6060', 'value' => $this->getData(['config', 'proxyPort']) @@ -34,52 +34,52 @@

SMTP

- $this->getData(['config', 'smtp','enable']), 'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.' ]); ?>
-
+
- 'Adresse SMTP', 'placeholder' => 'smtp.fr', 'value' => $this->getData(['config', 'smtp','host']) ]); ?>
- 'Port SMTP', 'placeholder' => '589', 'value' => $this->getData(['config', 'smtp','port']) ]); ?>
- 'Authentification', 'selected' => $this->getData(['config', 'smtp','auth']) ]); ?>
-
+
- 'Nom utilisateur', 'value' => $this->getData(['config', 'smtp','username' ]) ]); ?>
- 'Mot de passe', 'autocomplete' => 'off', 'value' => $this->getData(['config', 'smtp','username' ]) ? helper::decrypt ($this->getData(['config', 'smtp','username' ]),$this->getData(['config','smtp','password'])) : '' ]); ?>
- 'Sécurité', 'selected' => $this->getData(['config', 'smtp','secure']) ]); ?> diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index 84c6ae2a..9f46a5d1 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -7,7 +7,7 @@
- helper::baseUrl() . 'config/configMetaImage', 'value' => 'Générer une capture Open Graph' ]); ?> @@ -15,7 +15,7 @@
- helper::baseUrl() . 'config/generateFiles', 'value' => 'Générer sitemap.xml et robots.txt' ]); ?> @@ -23,7 +23,7 @@
- $this->getData(['config', 'seo','robots']) ]); ?>
@@ -48,28 +48,28 @@

Réseaux sociaux

- 'Saisissez votre ID : https://www.facebook.com/[ID].', 'label' => 'Facebook', 'value' => $this->getData(['config', 'social', 'facebookId']) ]); ?>
- 'Saisissez votre ID : https://www.instagram.com/[ID].', 'label' => 'Instagram', 'value' => $this->getData(['config', 'social', 'instagramId']) ]); ?>
- 'ID de la chaîne : https://www.youtube.com/channel/[ID].', 'label' => 'Chaîne Youtube', 'value' => $this->getData(['config', 'social', 'youtubeId']) ]); ?>
- 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].', 'label' => 'Youtube', 'value' => $this->getData(['config', 'social', 'youtubeUserId']) @@ -78,28 +78,28 @@
- 'Saisissez votre ID : https://twitter.com/[ID].', 'label' => 'Twitter', 'value' => $this->getData(['config', 'social', 'twitterId']) ]); ?>
- 'Saisissez votre ID : https://pinterest.com/[ID].', 'label' => 'Pinterest', 'value' => $this->getData(['config', 'social', 'pinterestId']) ]); ?>
- 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].', 'label' => 'Linkedin', 'value' => $this->getData(['config', 'social', 'linkedinId']) ]); ?>
- 'Saisissez votre ID Github : https://github.com/[ID].', 'label' => 'Github', 'value' => $this->getData(['config', 'social', 'githubId']) @@ -115,7 +115,7 @@

Scripts externes

- 'Saisissez l\'ID de suivi.', 'label' => 'Google Analytics', 'placeholder' => 'UA-XXXXXXXX-X', @@ -123,14 +123,14 @@ ]); ?>
- helper::baseUrl() . 'config/script/head', 'value' => 'Script dans head', 'ico' => 'pencil' ]); ?>
- helper::baseUrl() . 'config/script/body', 'value' => 'Script dans body', 'ico' => 'pencil' From 92cbc0b6d410026dc96c0a31fa4b14f23da0b658 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sun, 31 Oct 2021 11:32:56 +0100 Subject: [PATCH 014/277] effet couleur menus --- core/module/config/view/index/index.css | 6 +- core/module/config/view/index/index.js.php | 75 ++++++++++++++-------- 2 files changed, 55 insertions(+), 26 deletions(-) diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index 3c502d03..cad14a16 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -23,4 +23,8 @@ #localeContainer, #socialContainer, #connectContainer, #networkContainer { display: none; -} \ No newline at end of file +} + +.activeButton { + filter : brightness(125%); +} diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 8b1792f9..0d4182fe 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -107,39 +107,64 @@ $( document).ready(function() { * Sélection de la page de configuration à afficher */ $("#configSetupButton").on("click", function() { - $("#localeContainer").slideUp(); - $("#socialContainer").slideUp(); - $("#connectContainer").slideUp(); - $("#networkContainer").slideUp(); - $("#setupContainer").slideDown(); + $("#localeContainer").hide(); + $("#socialContainer").hide(); + $("#connectContainer").hide(); + $("#networkContainer").hide(); + $("#setupContainer").show(); + $("#configSetupButton").addClass("activeButton"); + $("#configLocalButton").removeClass("activeButton"); + $("#configSocialButton").removeClass("activeButton"); + $("#configConnectButton").removeClass("activeButton"); + $("#configNetworkButton").removeClass("activeButton"); }); $("#configLocalButton").on("click", function() { - $("#setupContainer").slideUp(); - $("#socialContainer").slideUp(); - $("#connectContainer").slideUp(); - $("#networkContainer").slideUp(); - $("#localeContainer").slideDown(); + $("#setupContainer").hide(); + $("#socialContainer").hide(); + $("#connectContainer").hide(); + $("#networkContainer").hide(); + $("#localeContainer").show(); + $("#configSetupButton").removeClass("activeButton"); + $("#configLocalButton").addClass("activeButton"); + $("#configSocialButton").removeClass("activeButton"); + $("#configConnectButton").removeClass("activeButton"); + $("#configNetworkButton").removeClass("activeButton"); }); $("#configSocialButton").on("click", function() { - $("#connectContainer").slideUp(); - $("#setupContainer").slideUp(); - $("#localeContainer").slideUp(); - $("#networkContainer").slideUp(); - $("#socialContainer").slideDown(); + $("#connectContainer").hide(); + $("#setupContainer").hide(); + $("#localeContainer").hide(); + $("#networkContainer").hide(); + $("#socialContainer").show(); + $("#configSetupButton").removeClass("activeButton"); + $("#configLocalButton").removeClass("activeButton"); + $("#configSocialButton").addClass("activeButton"); + $("#configConnectButton").removeClass("activeButton"); + $("#configNetworkButton").removeClass("activeButton"); }); $("#configConnectButton").on("click", function() { - $("#setupContainer").slideUp(); - $("#localeContainer").slideUp(); - $("#socialContainer").slideUp(); - $("#networkContainer").slideUp(); - $("#connectContainer").slideDown(); + $("#setupContainer").hide(); + $("#localeContainer").hide(); + $("#socialContainer").hide(); + $("#networkContainer").hide(); + $("#connectContainer").show(); + $("#configSetupButton").removeClass("activeButton"); + $("#configLocalButton").removeClass("activeButton"); + $("#configSocialButton").removeClass("activeButton"); + $("#configConnectButton").addClass("activeButton"); + $("#configNetworkButton").removeClass("activeButton"); }); $("#configNetworkButton").on("click", function() { - $("#setupContainer").slideUp(); - $("#localeContainer").slideUp(); - $("#socialContainer").slideUp(); - $("#connectContainer").slideUp(); - $("#networkContainer").slideDown(); + $("#setupContainer").hide(); + $("#localeContainer").hide(); + $("#socialContainer").hide(); + $("#connectContainer").hide(); + $("#networkContainer").show(); + $("#configSetupButton").removeClass("activeButton"); + $("#configLocalButton").removeClass("activeButton"); + $("#configSocialButton").removeClass("activeButton"); + $("#configConnectButton").removeClass("activeButton"); + $("#configNetworkButton").addClass("activeButton"); }); }); From af6e4beb3255310ad9aa4b6889efafca5d45f9c1 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sun, 31 Oct 2021 16:18:49 +0100 Subject: [PATCH 015/277] Activation i18n ok --- core/module/config/config.php | 13 ++++++++++++- core/module/config/view/locale/locale.php | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/module/config/config.php b/core/module/config/config.php index ae157936..9b529921 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -482,7 +482,18 @@ class config extends common { 'autoDisconnect' => $this->getInput('connectAutoDisconnect',helper::FILTER_BOOLEAN), ], 'i18n' => [ - 'enable' => $this->getData(['config', 'i18n', 'enable']) + 'enable' => $this->getInput('localei18n',helper::FILTER_BOOLEAN), + 'scriptGoogle' => $this->getData(['config', 'i18n', 'scriptGoogle']), + 'showCredits' => $this->getData(['config', 'i18n', 'showCredits']), + 'autoDetect' => $this->getData(['config', 'i18n', 'autoDetect']), + 'admin' => $this->getData(['config', 'i18n', 'admin']), + 'fr' => $this->getData(['config', 'i18n', 'fr']), + 'de' => $this->getData(['config', 'i18n', 'de']), + 'en' => $this->getData(['config', 'i18n', 'en']), + 'es' => $this->getData(['config', 'i18n', 'es']), + 'it' => $this->getData(['config', 'i18n', 'it']), + 'nl' => $this->getData(['config', 'i18n', 'nl']), + 'pt' => $this->getData(['config', 'i18n', 'pt']) ] ] ]); diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index e4a95aba..50a22e51 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -5,7 +5,7 @@

Langues étrangères

- $this->getData(['config', 'i18n', 'enable']), 'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.' ]); ?> From c8a6fd616583dfd8dbd45d63f42ede47fac86ef7 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sun, 31 Oct 2021 17:11:05 +0100 Subject: [PATCH 016/277] =?UTF-8?q?S=C3=A9lection=20de=20la=20div=20apr?= =?UTF-8?q?=C3=A8s=20submit=20ok?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/view/index/index.css | 4 -- core/module/config/view/index/index.js.php | 51 ++++++++++++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index cad14a16..7bad11b4 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -21,10 +21,6 @@ display: block; } -#localeContainer, #socialContainer, #connectContainer, #networkContainer { - display: none; -} - .activeButton { filter : brightness(125%); } diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 0d4182fe..1f71aaba 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -117,6 +117,7 @@ $( document).ready(function() { $("#configSocialButton").removeClass("activeButton"); $("#configConnectButton").removeClass("activeButton"); $("#configNetworkButton").removeClass("activeButton"); + setCookie("configLayout","setup"); }); $("#configLocalButton").on("click", function() { $("#setupContainer").hide(); @@ -129,6 +130,7 @@ $( document).ready(function() { $("#configSocialButton").removeClass("activeButton"); $("#configConnectButton").removeClass("activeButton"); $("#configNetworkButton").removeClass("activeButton"); + setCookie("configLayout","locale"); }); $("#configSocialButton").on("click", function() { $("#connectContainer").hide(); @@ -141,6 +143,7 @@ $( document).ready(function() { $("#configSocialButton").addClass("activeButton"); $("#configConnectButton").removeClass("activeButton"); $("#configNetworkButton").removeClass("activeButton"); + setCookie("configLayout","social"); }); $("#configConnectButton").on("click", function() { $("#setupContainer").hide(); @@ -153,6 +156,7 @@ $( document).ready(function() { $("#configSocialButton").removeClass("activeButton"); $("#configConnectButton").addClass("activeButton"); $("#configNetworkButton").removeClass("activeButton"); + setCookie("configLayout","connect"); }); $("#configNetworkButton").on("click", function() { $("#setupContainer").hide(); @@ -165,6 +169,53 @@ $( document).ready(function() { $("#configSocialButton").removeClass("activeButton"); $("#configConnectButton").removeClass("activeButton"); $("#configNetworkButton").addClass("activeButton"); + setCookie("configLayout","network"); }); }); + +$( document).ready(function() { + var configLayout = getCookie("configLayout"); + if (configLayout == null) { + $("#localeContainer").hide(); + $("#socialContainer").hide(); + $("#connectContainer").hide(); + $("#networkContainer").hide(); + $("#setupContainer").show(); + $("#configSetupButton").addClass("activeButton"); + $("#configLocalButton").removeClass("activeButton"); + $("#configSocialButton").removeClass("activeButton"); + $("#configConnectButton").removeClass("activeButton"); + $("#configNetworkButton").removeClass("activeButton"); + setCookie("configLayout","setup"); + } + $("#localeContainer").hide(); + $("#socialContainer").hide(); + $("#connectContainer").hide(); + $("#networkContainer").hide(); + $("#setupContainer").hide(); + $("#" + configLayout + "Container" ).show(); + +}); + + +function setCookie(name,value,days) { + var expires = ""; + if (days) { + var date = new Date(); + date.setTime(date.getTime() + (days*24*60*60*1000)); + expires = "; expires=" + date.toUTCString(); + } + document.cookie = name + "=" + (value || "") + expires + "; path=/"; +} + +function getCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; +} From 698d433c3b50855623769f5904bb685a135cb7ca Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 30 Oct 2021 18:42:00 +0200 Subject: [PATCH 017/277] fichier robots.txt absent des ressources suppriemr la copie --- core/core.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core/core.php b/core/core.php index e5167c9d..062f28f6 100644 --- a/core/core.php +++ b/core/core.php @@ -945,15 +945,13 @@ class common { // Move flushed files to their final location. Compress if the option is enabled. $sitemap->finalize(); - // Update robots.txt file in output directory or create a new one + // Update robots.txt file in output directory if ($this->getData(['config','seo', 'robots']) === true) { unlink('robots.txt'); $sitemap->updateRobots(); - } else { - copy('core/module/install/ressource/robots.txt', 'robots.txt'); } - + // Submit your sitemaps to Google, Yahoo, Bing and Ask.com if (empty ($this->getData(['config','proxyType']) . $this->getData(['config','proxyUrl']) . ':' . $this->getData(['config','proxyPort'])) ) { $sitemap->submitSitemap(); From 7d9f7c343a4c726b52225929345227b0c47000c2 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Mon, 1 Nov 2021 14:38:15 +0100 Subject: [PATCH 018/277] Aide manquante --- core/module/config/view/index/index.js.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 1f71aaba..9940dcb2 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -183,7 +183,7 @@ $( document).ready(function() { $("#networkContainer").hide(); $("#setupContainer").show(); $("#configSetupButton").addClass("activeButton"); - $("#configLocalButton").removeClass("activeButton"); + $("#configLocaleButton").removeClass("activeButton"); $("#configSocialButton").removeClass("activeButton"); $("#configConnectButton").removeClass("activeButton"); $("#configNetworkButton").removeClass("activeButton"); From 3e48fc61b64c995540684fb74e6aad0a4d522989 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Mon, 1 Nov 2021 14:38:28 +0100 Subject: [PATCH 019/277] bug jquery --- core/module/translate/view/index/index.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php index 94bc2693..54eeb9ba 100644 --- a/core/module/translate/view/index/index.php +++ b/core/module/translate/view/index/index.php @@ -34,11 +34,7 @@
-

Traduction automatique - - - -

+

Traduction automatique

Date: Mon, 1 Nov 2021 20:05:09 +0100 Subject: [PATCH 020/277] Setup ok --- core/core.js.php | 10 ++-- core/module/config/view/index/index.css | 18 +++++++ core/module/config/view/index/index.js.php | 17 +++++++ core/module/config/view/index/index.php | 28 +++++++---- core/module/config/view/setup/setup.help.html | 47 +------------------ core/module/config/view/setup/setup.php | 18 +++++-- .../view/setup/setup_maintenance.help.html | 29 ++++++++++++ .../config/view/setup/setup_update.help.html | 18 +++++++ 8 files changed, 123 insertions(+), 62 deletions(-) create mode 100644 core/module/config/view/setup/setup_maintenance.help.html create mode 100644 core/module/config/view/setup/setup_update.help.html diff --git a/core/core.js.php b/core/core.js.php index 6dbbe598..0a26537b 100644 --- a/core/core.js.php +++ b/core/core.js.php @@ -478,12 +478,12 @@ $(document).ready(function(){ }; }); - /** - * Active le système d'aide interne - * - */ + /** + * Active le système d'aide interne + * + */ - $(".buttonHelp").click(function() { + $(".buttonHelp").click(function() { $(".helpDisplayContent").slideToggle(); /** if( $(".buttonHelp").css('opacity') > '0.75'){ diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index 7bad11b4..fb0b8336 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -24,3 +24,21 @@ .activeButton { filter : brightness(125%); } + +/** Div d'aide */ + +.helpDisplayContainer { + display: none; + width: 100%; + padding: 10px 10px; + -webkit-box-shadow: 5px 5px 11px 0px #222222; + box-shadow: 5px 5px 11px 0px #222222; + border-radius: 5px; + z-index: 30; +} + +/** Bouton d'aide et croix de fermeture */ + +.zwiico-cancel, .helpDisplayButton { + cursor: pointer; +} diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 9940dcb2..ae2f5dad 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -172,6 +172,23 @@ $( document).ready(function() { setCookie("configLayout","network"); }); + /** Boutons d'aide */ + $("#setupHelpButton").on("click", function() { + $("#setupHelpContainer").slideDown(); + }); + $("#updateHelpButton").on("click", function() { + $("#updateHelpContainer").slideDown(); + }); + $("#maintenanceHelpButton").on("click", function() { + $("#maintenanceHelpContainer").slideDown(); + }); + + /** Bouton de fermeture */ + + $(".zwiico-cancel").click(function() { + $(".helpDisplayContainer").slideUp(); + }); + }); $( document).ready(function() { diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 57ceb7af..938dc019 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -8,14 +8,7 @@ 'value' => 'Accueil' ]); ?>
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
-
+
@@ -50,6 +43,25 @@
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
diff --git a/core/module/config/view/setup/setup.help.html b/core/module/config/view/setup/setup.help.html index 31508ccc..50ed1789 100644 --- a/core/module/config/view/setup/setup.help.html +++ b/core/module/config/view/setup/setup.help.html @@ -20,49 +20,4 @@ En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
-ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

-

Sauvegarde quotidienne

-

Il est prudent d'activer ce paramètre.
-Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
-Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". -Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
-

-

MISE A JOUR AUTOMATISEE

-

Rechercher une mise à jour en ligne

-

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
-Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
-Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
-Il est donc conseillé d'activer ce paramètre.
-Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
-Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
-

-

Mise à jour manuelle

-

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
-Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
-Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
-L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
-Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
-La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
-

-

MAINTENANCE

-

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
-Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
-Ici il est possible de "Sauvegarder" et "Restaurer" le site.

-

Sauvegarder

-

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
-Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
-Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
-À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
-Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
-Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

-

Restaurer

-
Paramètres
-

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
-Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

-
Conversion des URL
-

Cette opération est à réaliser AVANT de lancer la restauration !
-Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
-Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
-Ensuite il y a juste à cliquer sur le bouton "convertir".
-Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. -

\ No newline at end of file +ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

\ No newline at end of file diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 3d0aeb82..03352aa7 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -2,7 +2,11 @@
-

Paramètres

+

Paramètres + + + +

-

Mises à jour automatisée

+

Mises à jour automatisées + + + +

@@ -81,7 +89,11 @@
-

Maintenance

+

Maintenances + + + +

Aide +

MAINTENANCE

+

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
+Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
+Ici il est possible de "Sauvegarder" et "Restaurer" le site.

+

Sauvegarder

+

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
+Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
+Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
+À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
+Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
+Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

+

Restaurer

+
Paramètres
+

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
+Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

+
Conversion des URL
+

Cette opération est à réaliser AVANT de lancer la restauration !
+Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
+Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
+Ensuite il y a juste à cliquer sur le bouton "convertir".
+Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. +

+

Sauvegarde quotidienne

+

Il est prudent d'activer ce paramètre.
+Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
+Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". +Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
+

\ No newline at end of file diff --git a/core/module/config/view/setup/setup_update.help.html b/core/module/config/view/setup/setup_update.help.html new file mode 100644 index 00000000..557a8d95 --- /dev/null +++ b/core/module/config/view/setup/setup_update.help.html @@ -0,0 +1,18 @@ +

Aide

+

MISE A JOUR AUTOMATISEE

+

Rechercher une mise à jour en ligne

+

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
+Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
+Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
+Il est donc conseillé d'activer ce paramètre.
+Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
+Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
+

+

Mise à jour manuelle

+

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
+Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
+Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
+L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
+Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
+La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
+

\ No newline at end of file From 2d55016495a04916d6a1f6bbd7e7612cb7746102 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Mon, 1 Nov 2021 20:05:33 +0100 Subject: [PATCH 021/277] locale + modif setup --- core/module/config/view/index/index.css | 2 + core/module/config/view/index/index.js.php | 23 +++++++++- core/module/config/view/index/index.php | 44 ++++++++++++++----- core/module/config/view/locale/locale.php | 19 ++++++-- .../config/view/locale/locale0.help.html | 3 ++ .../config/view/locale/locale1.help.html | 3 ++ .../{locale.help.html => locale2.help.html} | 4 -- .../{setup.help.html => setup0.help.html} | 0 ...etup_update.help.html => setup1.help.html} | 0 ...maintenance.help.html => setup2.help.html} | 0 10 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 core/module/config/view/locale/locale0.help.html create mode 100644 core/module/config/view/locale/locale1.help.html rename core/module/config/view/locale/{locale.help.html => locale2.help.html} (75%) rename core/module/config/view/setup/{setup.help.html => setup0.help.html} (100%) rename core/module/config/view/setup/{setup_update.help.html => setup1.help.html} (100%) rename core/module/config/view/setup/{setup_maintenance.help.html => setup2.help.html} (100%) diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index fb0b8336..9920a351 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -28,6 +28,8 @@ /** Div d'aide */ .helpDisplayContainer { + position: sticky; + background-color: white; display: none; width: 100%; padding: 10px 10px; diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index ae2f5dad..d13507ac 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -172,7 +172,11 @@ $( document).ready(function() { setCookie("configLayout","network"); }); - /** Boutons d'aide */ + /** + * Boutons d'aide + * Page des paramètres + */ + $("#setupHelpButton").on("click", function() { $("#setupHelpContainer").slideDown(); }); @@ -183,6 +187,23 @@ $( document).ready(function() { $("#maintenanceHelpContainer").slideDown(); }); + /** + * Boutons d'aide + * Page des locales + */ + + $("#localeHelpButton").on("click", function() { + $("#localeHelpContainer").slideDown(); + }); + $("#labelHelpButton").on("click", function() { + console.log("e"); + $("#labelHelpContainer").slideDown(); + }); + $("#specialeHelpButton").on("click", function() { + console.log("f"); + $("#specialeHelpContainer").slideDown(); + }); + /** Bouton de fermeture */ $(".zwiico-cancel").click(function() { diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 938dc019..96a5ed7e 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -43,28 +43,50 @@
- -
-
+ + +
+
- +
-
-
+
+
- +
-
-
+
+
- +
- + + +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ + diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 50a22e51..a983c333 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -17,8 +17,11 @@
-

Identité du site (en langue )

-

Cette page doit être adaptée à chaque traduction rédigée.

+

Identité du site ( ) + + + +

-

Etiquettes des pages spéciales

+

Etiquettes des pages spéciales + + + +

-

Assignation des pages spéciales

+

Assignation des pages spéciales + + + +

Aide +

IDENTITE DU SITE

+

Lorsque votre site est traduite manuellement dans plusieurs langues cette page doit être renseignée dans la langue de traduction. La langue courante est celle indiquée par le drapeau.

\ No newline at end of file diff --git a/core/module/config/view/locale/locale1.help.html b/core/module/config/view/locale/locale1.help.html new file mode 100644 index 00000000..9e550fa2 --- /dev/null +++ b/core/module/config/view/locale/locale1.help.html @@ -0,0 +1,3 @@ +

Aide

+

ETIQUETTES DES PAGES SPECIALES

+

Lorsque votre site est traduit manuellement dans une aautre langue, vous pouvez traduire l'étiquette affichée dans le pied de page dans la langue courante.

\ No newline at end of file diff --git a/core/module/config/view/locale/locale.help.html b/core/module/config/view/locale/locale2.help.html similarity index 75% rename from core/module/config/view/locale/locale.help.html rename to core/module/config/view/locale/locale2.help.html index f82dbe2c..5780459e 100644 --- a/core/module/config/view/locale/locale.help.html +++ b/core/module/config/view/locale/locale2.help.html @@ -1,8 +1,4 @@

Aide

-

LANGUES ETRANGERES

-

L'activation des langues étrangères active une nouvelle option dans la barre d'administration. Plus d'aide y sont disponible concernant ce mode.

-

Identité du site

-

Lorsque votre site est traduite manuellement dans plusieurs langues cette page doit être renseignée dans la langue de traduction. La langue courante est celle indiquée par le drapeau.

PAGES SPECIALES

>Les pages spéciales sont affectées à des fonctions particulières. Elles sont également accessibles dans le pied de page. L'étiquette dans ce pied de page peut également être traduit.

Pour faire apparaître un lien 'Mentions légales' dans le pied de page, vous sélectionnez la page puis diff --git a/core/module/config/view/setup/setup.help.html b/core/module/config/view/setup/setup0.help.html similarity index 100% rename from core/module/config/view/setup/setup.help.html rename to core/module/config/view/setup/setup0.help.html diff --git a/core/module/config/view/setup/setup_update.help.html b/core/module/config/view/setup/setup1.help.html similarity index 100% rename from core/module/config/view/setup/setup_update.help.html rename to core/module/config/view/setup/setup1.help.html diff --git a/core/module/config/view/setup/setup_maintenance.help.html b/core/module/config/view/setup/setup2.help.html similarity index 100% rename from core/module/config/view/setup/setup_maintenance.help.html rename to core/module/config/view/setup/setup2.help.html From 2c49919d9a8e471a462d836a7eb4c7af38f4d4f2 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 12:48:51 +0100 Subject: [PATCH 022/277] annuler les aides --- core/module/config/view/index/index.css | 5 +++-- core/module/config/view/index/index.js.php | 25 +++++++++++----------- core/module/config/view/index/index.php | 23 ++++++++++---------- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/core/module/config/view/index/index.css b/core/module/config/view/index/index.css index 9920a351..4648a078 100755 --- a/core/module/config/view/index/index.css +++ b/core/module/config/view/index/index.css @@ -25,7 +25,7 @@ filter : brightness(125%); } -/** Div d'aide */ +/** Div d'aide .helpDisplayContainer { position: sticky; @@ -39,8 +39,9 @@ z-index: 30; } -/** Bouton d'aide et croix de fermeture */ +/** Bouton d'aide et croix de fermeture .zwiico-cancel, .helpDisplayButton { cursor: pointer; } +*/ \ No newline at end of file diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index d13507ac..7bf7ffb8 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -175,41 +175,40 @@ $( document).ready(function() { /** * Boutons d'aide * Page des paramètres - */ + $("#setupHelpButton").on("click", function() { - $("#setupHelpContainer").slideDown(); + }); $("#updateHelpButton").on("click", function() { - $("#updateHelpContainer").slideDown(); + }); $("#maintenanceHelpButton").on("click", function() { - $("#maintenanceHelpContainer").slideDown(); - }); + + }); */ /** * Boutons d'aide * Page des locales - */ + $("#localeHelpButton").on("click", function() { - $("#localeHelpContainer").slideDown(); + }); $("#labelHelpButton").on("click", function() { - console.log("e"); - $("#labelHelpContainer").slideDown(); + }); $("#specialeHelpButton").on("click", function() { console.log("f"); - $("#specialeHelpContainer").slideDown(); - }); + + }); */ - /** Bouton de fermeture */ + /** Bouton de fermeture $(".zwiico-cancel").click(function() { $(".helpDisplayContainer").slideUp(); }); - + */ }); $( document).ready(function() { diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 96a5ed7e..e77262dd 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -8,7 +8,14 @@ 'value' => 'Accueil' ]); ?>

-
+
+ 'buttonHelp', + 'ico' => 'help', + 'value' => 'Aide' + ]); ?> +
+
@@ -44,46 +51,40 @@
- + - + From 27a1cc73fb216e1144edec7ce6f73d8105cd55bf Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 12:52:19 +0100 Subject: [PATCH 023/277] Aide en ligne --- core/module/config/view/index/index.php | 38 ++----------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index e77262dd..0703fea2 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -11,6 +11,8 @@
'buttonHelp', + 'href' => 'https://doc.zwiicms.fr/menu-configurer', + 'target' => '_blank', 'ico' => 'help', 'value' => 'Aide' ]); ?> @@ -51,43 +53,9 @@
- + - - - - From 548c55b6582a436185cb0e1dbb9a4c43a517ff60 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 12:53:55 +0100 Subject: [PATCH 024/277] Bug copy site --- core/module/translate/translate.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/module/translate/translate.php b/core/module/translate/translate.php index 3c11a393..9a5a4a00 100644 --- a/core/module/translate/translate.php +++ b/core/module/translate/translate.php @@ -46,6 +46,7 @@ class translate extends common { // Création du dossier if (is_dir(self::DATA_DIR . $toCreate) === false ) { // Si le dossier est déjà créé $success = mkdir (self::DATA_DIR . $toCreate, 0755); + $success = mkdir (self::DATA_DIR . $toCreate.'/content', 0755); } else { $success = true; } @@ -53,6 +54,7 @@ class translate extends common { $success = (copy (self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false; $success = (copy (self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false; $success = (copy (self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false; + $success = ($this->copyDir (self::DATA_DIR . $copyFrom . '/content', self::DATA_DIR . $toCreate . '/content') === true && $success === true) ? true : false; // Enregistrer la langue if ($success) { $this->setData(['config', 'i18n', $toCreate, 'site' ]); From c03fa4b4a5e020c291c7cbb97cedc6fff05d7728 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 16:43:24 +0100 Subject: [PATCH 025/277] typo --- core/module/config/view/setup/setup.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 03352aa7..b5119f7d 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -89,7 +89,7 @@
-

Maintenances +

Maintenance From 66449900eb7ca6b05a8461868ef8ed88c14d33a3 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 17:25:39 +0100 Subject: [PATCH 026/277] =?UTF-8?q?D=C3=A9placement=20de=20blocs=20et=20ai?= =?UTF-8?q?de=20supprim=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/view/locale/locale.php | 70 +++++++++---------- .../config/view/locale/locale0.help.html | 3 - .../config/view/locale/locale1.help.html | 3 - .../config/view/locale/locale2.help.html | 12 ---- 4 files changed, 35 insertions(+), 53 deletions(-) delete mode 100644 core/module/config/view/locale/locale0.help.html delete mode 100644 core/module/config/view/locale/locale1.help.html delete mode 100644 core/module/config/view/locale/locale2.help.html diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index a983c333..1be54f3e 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -17,7 +17,7 @@
-

Identité du site ( ) +

Identité du site @@ -50,40 +50,6 @@

-
-
-
-

Etiquettes des pages spéciales - - - -

-
-
- 'Mentions légales', - 'placeholder' => 'Mentions légales', - 'value' => $this->getData(['locale', 'legalPageLabel']) - ]); ?> -
-
- 'Rechercher', - 'placeholder' => 'Rechercher', - 'value' => $this->getData(['locale', 'searchPageLabel']) - ]); ?> -
-
- 'Plan du site', - 'placeholder' => 'Plan du site', - 'value' => $this->getData(['locale', 'sitemapPageLabel']), - ]); ?> -
-
-
-
-
@@ -142,4 +108,38 @@
+
+
+
+

Etiquettes des pages spéciales + + + +

+
+
+ 'Mentions légales', + 'placeholder' => 'Mentions légales', + 'value' => $this->getData(['locale', 'legalPageLabel']) + ]); ?> +
+
+ 'Rechercher', + 'placeholder' => 'Rechercher', + 'value' => $this->getData(['locale', 'searchPageLabel']) + ]); ?> +
+
+ 'Plan du site', + 'placeholder' => 'Plan du site', + 'value' => $this->getData(['locale', 'sitemapPageLabel']), + ]); ?> +
+
+
+
+

\ No newline at end of file diff --git a/core/module/config/view/locale/locale0.help.html b/core/module/config/view/locale/locale0.help.html deleted file mode 100644 index b5da81b0..00000000 --- a/core/module/config/view/locale/locale0.help.html +++ /dev/null @@ -1,3 +0,0 @@ -

Aide

-

IDENTITE DU SITE

-

Lorsque votre site est traduite manuellement dans plusieurs langues cette page doit être renseignée dans la langue de traduction. La langue courante est celle indiquée par le drapeau.

\ No newline at end of file diff --git a/core/module/config/view/locale/locale1.help.html b/core/module/config/view/locale/locale1.help.html deleted file mode 100644 index 9e550fa2..00000000 --- a/core/module/config/view/locale/locale1.help.html +++ /dev/null @@ -1,3 +0,0 @@ -

Aide

-

ETIQUETTES DES PAGES SPECIALES

-

Lorsque votre site est traduit manuellement dans une aautre langue, vous pouvez traduire l'étiquette affichée dans le pied de page dans la langue courante.

\ No newline at end of file diff --git a/core/module/config/view/locale/locale2.help.html b/core/module/config/view/locale/locale2.help.html deleted file mode 100644 index 5780459e..00000000 --- a/core/module/config/view/locale/locale2.help.html +++ /dev/null @@ -1,12 +0,0 @@ -

Aide

-

PAGES SPECIALES

-

>Les pages spéciales sont affectées à des fonctions particulières. Elles sont également accessibles dans le pied de page. L'étiquette dans ce pied de page peut également être traduit.

-

Pour faire apparaître un lien 'Mentions légales' dans le pied de page, vous sélectionnez la page puis -dans la barre d'administration vous sélectionnez 'Personnaliser les thèmes', vous cliquez sur le pied de page et vous cochez la case 'Mentions légales'.
-Vous pouvez personnaliser la page 'Mentions légales', accessible en choisissant cette page dans la barre d'administration, ou créer votre propre page.
-Ce site officiel vous indique les mentions obligatoires à y faire figurer

-

RECHERCHE

-

Pour faire apparaître un lien 'Recherche' dans le pied de page, vous procédez de manière similaire.

-

ERREURS ET SITE EN MAINTENANCE

-

Les pages par défaut sont 'Erreur403', 'Erreur 404' et 'Site en maintenance'. Vous pouvez les modifier, en les choisissant à partir de la barre -d'administration, ou créer vos propres pages orphelines (en édition de page sélectionnez dans le bloc 'Emplacement dans le menu' : 'Ne pas afficher').

\ No newline at end of file From 8282aaefa811800304ffdbd591ed3bd27c7a570d Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 17:57:07 +0100 Subject: [PATCH 027/277] sauvegardes auto bouton --- core/module/config/view/setup/setup.php | 3 +- .../module/config/view/setup/setup0.help.html | 23 --------------- .../module/config/view/setup/setup1.help.html | 18 ------------ .../module/config/view/setup/setup2.help.html | 29 ------------------- 4 files changed, 2 insertions(+), 71 deletions(-) delete mode 100644 core/module/config/view/setup/setup0.help.html delete mode 100644 core/module/config/view/setup/setup1.help.html delete mode 100644 core/module/config/view/setup/setup2.help.html diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index b5119f7d..e04565df 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -125,7 +125,8 @@
helper::baseUrl() . 'config/copyBackups', - 'value' => 'Backups Auto ➜ FileManager' + 'value' => 'Sauvegardes automatiques', + 'ico' => 'download-cloud' ]); ?>
diff --git a/core/module/config/view/setup/setup0.help.html b/core/module/config/view/setup/setup0.help.html deleted file mode 100644 index 50ed1789..00000000 --- a/core/module/config/view/setup/setup0.help.html +++ /dev/null @@ -1,23 +0,0 @@ -

Aide

-

PARAMETRES

-

À ce niveau plusieurs paramètres importants peuvent être configurés.

-

Favicon

-

Il s'agit ici de choisir le fichier de l'icône qui s'affiche dans la barre de titre, l'onglet, du navigateur devant le "Titre du site" que vous avez indiqué dans "Configurer le site" à la rubrique "Identité".
-Par défaut c'est l'îcone de ZwiiCMS qui est paramétrée.
-Pour la modifier il suffit de cliquer dans le champ pour faire apparaître le gestionnaire de fichier.
-Là il faut télécharger le fichier à utiliser pour qu'il soit dans la liste des fichiers afin d'être sélectionné : ce fichier doit obligatoirement avoir l'extension .ico.
-Ensuite il suffit de cliquez sur le fichier désiré pour le sélectionner.
-Après enregistrement c'est désormais l'icône précédemment sélectionnée qui doit s'afficher dans l'onglet du site : dans le cas contraire il est nécessaire de vider le cache du navigateur pour que le changement soit bien visible.

-

Favicon thème sombre

-

C'est exactement la même chose que le paramètre précédent mais comme son nom l'indique il s'agit ici d'indiquer une icône adaptée à un thème sombre.

-

Fuseau horaire

-

Dans ce champ est tout simplement indiqué le fuseau horaire sur lequel le site fonctionne en le choisissant dans le panneau déroulant.

-

Consentement aux cookies

-

En cochant cette case une fenêtre surgissante apparaîtra obligatoirement aux visiteurs, lors de leur première visite, pour leur demander leur consentement sur l'utilisation des cookies
-Le texte suivant apparaîtra :
-Ce site utilise des cookies pour assurer l'authentification, améliorer l'expérience utilisateur.
-En cliquant sur ”Accepter”, vous acceptez l’utilisation de ces cookies.
-Tant que le visiteur n'aura pas indiqué son choix en cliquant sur le bouton "Accepter" ou "Refuser" la fenêtre restera affichée.
-Demander le consentement des visiteurs sur l'usage de cookies est une obligation légale en Europe.
-Seuls les cookies indispensables au bon fonctionnement du site ne nécessitent pas ce consentement.
-ZwiiCMS n'utilse ainsi pas de cookies nécessitant le consentement des visiteurs : cette case ne doit être cochée qu'à partir du moment ou des fonctionnalités tierces, comme google analytics par exemple, sont ajoutées au site. Outre ce consentement il faudra alors détailler les cookies ajoutés dans les Mentions légales, "Configurer le site" rubrique "Pages spéciales", en adaptant la page par défaut ou en en créant une spécifique.

\ No newline at end of file diff --git a/core/module/config/view/setup/setup1.help.html b/core/module/config/view/setup/setup1.help.html deleted file mode 100644 index 557a8d95..00000000 --- a/core/module/config/view/setup/setup1.help.html +++ /dev/null @@ -1,18 +0,0 @@ -

Aide

-

MISE A JOUR AUTOMATISEE

-

Rechercher une mise à jour en ligne

-

L'activation de ce paramètre entraîne la vérification quotidienne de l'existence d'une mise à jour.
-Quand il y a effectivement une mise à jour une icône supplémentaire s'affiche alors dans la barre d'administration et permet de la lancer d'un seul clic.
-Il est important de maintenir le site à jour afin de corriger d'éventuels dysfonctionnements, de bénéficier des nouvelles fonctionnalités et de le protéger de potentielles failles de sécurité.
-Il est donc conseillé d'activer ce paramètre.
-Cependant si généralement tout fonctionne bien, certains hébergeurs, rares, ne permettent pas toujours son usage complet : la vérification peut par exemple fonctionner mais la mise à jour non. Ou alors rien ne fonctionne.
-Si cela se produit, et suivant le niveau de blocage de l'hébergeur, il faut alors déterminerer si il est judicieux ou pas d'activer ce paramètre : la pluspart du temps la vérification de l'existence d'une mise à jour fonctionne et cela permet ansi d'être simplement averti de sa disponiblité.
-

-

Mise à jour manuelle

-

Ce large bouton rouge permet de lancer d'un simple clic la mise à jour vers la dernière version en ligne.
-Une mise à jour existe mais pour une raison inconnue, alors qu'habituellement la "Mise à jour en ligne" fonctionne, là l'icône pour réaliser la mise à jour n'apparaît pas : en cliquant sur ce bouton la mise à jour est forcée.
-Même si le site est déjà dans la dernière version la "mise à jour" sera réalisée.
-L'usage de ce bouton ne permet pas de passer outre un éventuel blocage de l'hébergeur : les mécanismes de mise à jour sont les mêmes qu'avec la "Mise à jour en ligne"...
-Si ce type de blocage de blocage du fait de l'hébergeur se produit le changement d'hébergeur est à envisager : les hébergeurs concernés sont tout de même très rares.
-La seule possibilité pour alors réaliser une mise à jour est alors via FTP.
-

\ No newline at end of file diff --git a/core/module/config/view/setup/setup2.help.html b/core/module/config/view/setup/setup2.help.html deleted file mode 100644 index c6c7fc33..00000000 --- a/core/module/config/view/setup/setup2.help.html +++ /dev/null @@ -1,29 +0,0 @@ -

Aide

-

MAINTENANCE

-

Pour passer un site en maintenance il faut cocher la case "Site en maintenance".
-Tant que cette case sera cochée, la seule page accessible du site sera la page définie pour cette fonction dans les "Pages spéciales" de "Configurer le site".
-Ici il est possible de "Sauvegarder" et "Restaurer" le site.

-

Sauvegarder

-

En plus du dossier/site/data/, la sauvegarde intègre par défaut les données du gestionnaire de fichiers, le dossier /site/file/, contrairement à la sauvegarde quotidienne qui peut être activée dans les "Pages spéciales" de "Configurer le site" qui ne comprend que /site/data/. C'est donc une sauvegarde complète des données du site qui peut être réalisée ici.
-Si le site a un volume très important de fichiers il est peut-être préférable de décocher la case "Inclure le contenu du gestionnaire de fichiers" pour sauvegarder cette partie par FTP. Avec un gros volume de fichiers le temps pour générer le fichier de sauvegarde sera important et les hébergeurs limites les processus qui sollicitent trop le serveur : si le volume des fichiers est trop important par rapport au curseur de votre hébergeur la sauvegarde plantera, sinon il ne s'agit que d'une question de patience pour attendre la fin de la sauvegarde.
-Pour lancer la sauvegarde en cliquer simplement sur le bouton "Sauvegarder" : à la fin de la sauvegarde une fenêtre surgissante doit indiquer "La sauvegarde a été générée avec succès", dans le cas contraire... le fichier de sauvegarde n'a pas pu être créé et il faudra investiguer pour trouver ce qui a empêché sa création.
-À la fin de l'opération un fichier de sauvegarde sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" a été créé dans le dossier "backup" du gestionnaire de fichiers.
-Le dossier "backup" n'existe pas tant qu'une première sauvegarde n'a pas été réalisée.
-Ce dossier n'est pas le même que celui des sauvegardes quotidiennes qui ne sont pas elles-mêmes sauvegardées puisque dans le dossier /site/backup/.

-

Restaurer

-
Paramètres
-

Choisir le fichier de sauvegarde en cliquant sur "Choisissez un fichier" : le fichier doit obligatoirement se trouver dans /site/file/source/backup/
-Par défaut la case "Préserver les comptes des utilisateurs déjà installés" est cochée : dans le cas contraire les comptes utilisateurs déjà éventuellement créés sur le site seront supprimés lors de la restauration.

-
Conversion des URL
-

Cette opération est à réaliser AVANT de lancer la restauration !
-Cette partie est particulièrement intéressante et importante quand il s'agit de restaurer un site sur une nouvelle installation, dans un dossier différent de celui du site sauvegardé. Sans cette conversion automatique cela serait particulièrement long et fastidieux de réaliser cette opération.
-Il suffit de compléter les champs "Dossier de l'archive" et "Dossier du site actuel" avec les noms du dossier d'origine du site sauvegardé et du dossier de base du site de destination de la restauration.
-Ensuite il y a juste à cliquer sur le bouton "convertir".
-Une fois la conversion terminée, lancer la restauration en cliquant sur le bouton "Restaurer" : une fenêtre surgissante affichera le succès de l'opération quand elle sera terminée... patience. -

-

Sauvegarde quotidienne

-

Il est prudent d'activer ce paramètre.
-Il permet d'enregistrer automatiquement chaque jour une sauvegarde du dossier /site/data/ : c'est le coeur du site. Chaque page créée, modifiée est ainsi sauvegardée.
-Par contre, tous les fichiers éventuellement utilisés, chargés via "Gérer les fichiers" ou FTP, ne sont ici pas sauvegardés : pour sauvegarder ces fichiers, et donc l'intégralité des données du site, il faut de temps en temps faire une sauvegarde comme décrit ci-dessus au paragraphe "Maintenance". -Cette sauvegarde quotidienne est enregistrée dans le dossier /site/backup/ sous la forme "dossier_du_site-backup-AAAA-JJ-MM-hh-mm-ss.zip" et conservée 30 jours.
-

\ No newline at end of file From d0838994d34d677643027c2bc20cad6c339d6e20 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 18:05:05 +0100 Subject: [PATCH 028/277] nom de blocs --- core/module/config/view/setup/setup.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index e04565df..43b4fab6 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -2,7 +2,7 @@
-

Paramètres +

Configuration @@ -52,7 +52,7 @@
-

Mises à jour automatisées +

Mise à jour automatisée From 8a9aa3e33c98b89c3c666e17908ce13ba4be0ccd Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 18:29:32 +0100 Subject: [PATCH 029/277] Liens dans les ? --- core/module/config/view/index/index.js.php | 8 ++++---- core/module/config/view/index/index.php | 2 +- core/module/config/view/locale/locale.php | 13 ++++++++++++- core/module/config/view/setup/setup.php | 8 +++++++- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 7bf7ffb8..472f645a 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -175,7 +175,7 @@ $( document).ready(function() { /** * Boutons d'aide * Page des paramètres - + $("#setupHelpButton").on("click", function() { @@ -185,12 +185,12 @@ $( document).ready(function() { }); $("#maintenanceHelpButton").on("click", function() { - }); */ + }); */ /** * Boutons d'aide * Page des locales - + $("#localeHelpButton").on("click", function() { @@ -201,7 +201,7 @@ $( document).ready(function() { $("#specialeHelpButton").on("click", function() { console.log("f"); - }); */ + });*/ /** Bouton de fermeture diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 0703fea2..95f7e05a 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -11,7 +11,7 @@
'buttonHelp', - 'href' => 'https://doc.zwiicms.fr/menu-configurer', + 'href' => 'https://doc.zwiicms.fr/configuration-du-site', 'target' => '_blank', 'ico' => 'help', 'value' => 'Aide' diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 1be54f3e..6f20f7de 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -2,7 +2,13 @@
-

Langues étrangères

+

Langues étrangères + + + + + +

Identité du site + +

@@ -54,6 +62,7 @@

Assignation des pages spéciales + @@ -113,7 +122,9 @@

Etiquettes des pages spéciales + +

diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 43b4fab6..713ef49b 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -4,7 +4,9 @@

Configuration + +

@@ -54,7 +56,9 @@

Mise à jour automatisée - + + +

@@ -91,7 +95,9 @@

Maintenance + +

From 773a922af61056e7d8452332cbd8368778b7af1d Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 2 Nov 2021 18:47:52 +0100 Subject: [PATCH 030/277] Backup wait pointer --- core/module/config/view/backup/backup.css | 42 -------------------- core/module/config/view/backup/backup.js.php | 11 ++--- 2 files changed, 4 insertions(+), 49 deletions(-) diff --git a/core/module/config/view/backup/backup.css b/core/module/config/view/backup/backup.css index 8796d11b..af65af6d 100755 --- a/core/module/config/view/backup/backup.css +++ b/core/module/config/view/backup/backup.css @@ -16,45 +16,3 @@ * admin.css */ - -/** -* Effet d'animation -*/ -/* Start by setting display:none to make this hidden. - Then we position it in relation to the viewport window - with position:fixed. Width, height, top and left speak - for themselves. Background we set to 80% white with - our animation centered, and no-repeating */ -.modal { - display: none; - position: fixed; - z-index: 1000; - top: 0; - left: 0; - height: 100%; - width: 100%; - background: rgba( 0, 0, 0, .9 ) - url('core/module/config/ressource/ajax-loader.png') - 50% 45% - no-repeat; - } - -.alertMessage { - color: lightgrey; - display: none; - display: flex; - align-items: center; - justify-content: center; -} - - /* When the body has the loading class, we turn - the scrollbar off with overflow:hidden */ - body.loading .modal .alertMessage { - overflow: hidden; - } - - /* Anytime the body has the loading class, our - modal element will be visible */ - body.loading .modal .alertMessage { - display: block; - } diff --git a/core/module/config/view/backup/backup.js.php b/core/module/config/view/backup/backup.js.php index 7e564b07..cfa4a152 100644 --- a/core/module/config/view/backup/backup.js.php +++ b/core/module/config/view/backup/backup.js.php @@ -15,8 +15,7 @@ $( document).ready(function() { $("#configBackupSubmit").addClass("disabled").prop("disabled", true); e.preventDefault(); if ($("input[name=configBackupOption]").is(':checked')) { - $("body").addClass("loading"); - $(".modal").addClass("alertMessage"); + $('body').css('cursor', 'wait'); } var url = "getUrl(0); ?>/backup"; $.ajax({ @@ -24,17 +23,15 @@ $( document).ready(function() { url: url, data: $("form").serialize(), success: function(data){ - $("body").removeClass("loading"); + $('body').css('cursor', 'default'); core.alert("La sauvegarde a été générée avec succès."); }, error: function(data){ - $("body").removeClass("loading"); + + $('body').css('cursor', 'default'); core.alert("Une erreur s'est produite, la sauvegarde n'a pas été générée !"); }, complete: function(){ - if ($("input[name=configBackupOption]").is(':checked')) { - $(".modal").removeClass("alertMessage"); - } $("#configBackupSubmit").removeClass("disabled").prop("disabled", false); } }); From 6f029282b39c09840f8166700f62dc31d42ae65e Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 3 Nov 2021 09:25:54 +0100 Subject: [PATCH 031/277] Une page d'aide un seul bloc --- core/module/config/view/setup/setup.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 713ef49b..37c06e41 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -4,7 +4,7 @@

Configuration - + @@ -56,7 +56,7 @@

Mise à jour automatisée - + @@ -95,7 +95,7 @@

Maintenance - + From f025632394b66b0b018f7c6e133fe7c639c71b40 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 3 Nov 2021 09:36:14 +0100 Subject: [PATCH 032/277] Locale : un bloc une page --- core/module/config/view/locale/locale.php | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 6f20f7de..400fe832 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -2,13 +2,7 @@
-

Langues étrangères - - - - - -

+

Langues étrangères

Identité du site - + @@ -62,7 +56,7 @@

Assignation des pages spéciales - + @@ -122,7 +116,7 @@

Etiquettes des pages spéciales - + From 618c0aa8375fc07738ddeeb2ece6cfc9bc3f3d14 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 3 Nov 2021 12:28:53 +0100 Subject: [PATCH 033/277] =?UTF-8?q?libell=C3=A9=20de=20boites=20configurat?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/view/index/index.php | 2 +- core/module/config/view/setup/setup.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index 95f7e05a..ad58ad25 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -26,7 +26,7 @@
'Paramètres' + 'value' => 'Configuration' ]); ?>
diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 37c06e41..56bb267d 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -2,7 +2,7 @@
-

Configuration +

Paramètres From 7e324da4a3ebc48c47f2db4b9a0021181ccc0949 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 3 Nov 2021 13:31:18 +0100 Subject: [PATCH 034/277] =?UTF-8?q?libell=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/config/view/locale/locale.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 400fe832..8e891360 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -19,7 +19,7 @@

Identité du site - + From 615e04482b613faca240298b0bd780e5d815b77c Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 3 Nov 2021 16:33:07 +0100 Subject: [PATCH 035/277] changes --- CHANGES.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 7e5d3414..ebb7a8c5 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,7 +2,14 @@ ## Version 11.2.00 - Modifications : - - Disposition des options du menu de configuration du site. + - Disposition des options de configuration du site. + - Les écrans d'aide renvoient vers le site doc.zwiicms.fr + +## Version 11.1.01 +- Corrections : + - Langues : bug de l'utilitaire de copie de site. + - Fichier robots.txt non copié si absent. +- Modifications : - Dispositions des écrans du thème : site, menu, pied de page, menu et bannière. ## Version 11.1.00 From 9ddab7a03a0a2901d66ebab7bf15824edf60f2a6 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 3 Nov 2021 16:49:35 +0100 Subject: [PATCH 036/277] social help ok --- core/module/config/view/social/social.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index 9f46a5d1..7130b7ff 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -2,7 +2,12 @@

-

Date: Wed, 3 Nov 2021 17:19:01 +0100 Subject: [PATCH 039/277] Cleaning help files --- .../config/view/connect/connect.help.html | 24 ------------ .../config/view/network/network.help.html | 13 ------- .../config/view/social/social.help.html | 38 ------------------- 3 files changed, 75 deletions(-) delete mode 100644 core/module/config/view/connect/connect.help.html delete mode 100644 core/module/config/view/network/network.help.html delete mode 100644 core/module/config/view/social/social.help.html diff --git a/core/module/config/view/connect/connect.help.html b/core/module/config/view/connect/connect.help.html deleted file mode 100644 index 8903a51f..00000000 --- a/core/module/config/view/connect/connect.help.html +++ /dev/null @@ -1,24 +0,0 @@ -

Aide

-

SECURITE DE LA CONNEXION

-

Cette rubrique regroupe un certain nombre d'éléments importants pour sécuriser la connexion au site : les visiteurs du site sans compte ne sont pas concernés par ces paramètres.

-
Connexions successives
-

Ce panneau déroulant réglé par défaut sur 3 tentatives permet de sélectionner le nombre d'échecs de connexion au bout duquel le blocage de la connexion est mis en place.

-
Blocage après échecs
-

C'est dans ce panneau déroulant réglé par défaut sur 10 minutes qu'est sélectionné le temps de blocage avant de pouvoir tenter à nouveau de se reconnecter après le nombre d'échecs paramétré à la rubrique ci-dessus.

-
Comptes inexistants
-

Les tentatives infructueuses de connexions sont enregistrées dans un fichier avec la date, l'heure, l'identifiant et l'adresse Ip utilisés.
-En fonction des paramètres définis précédemment, nombre de tentatives et temps de blocage, l'adresse IP et l'identifiant sont éventuellement bloqués en conséquences.
-Une tentative est inscrite quand l'identifiant, le mot de passe ou la captcha est faut : un seul élément erroné implique l'enregistrment d'une tentative.
-En cliquant sur le bouton bleu "Télécharger liste noire" un fichier site_tmp_blacklist.log est téléchargé et permet ainsi de prendre connaissance de toutes les tentatives.
-Cela permet d'identifier des adresses ip malveillantes et de pouvoir les bloquer définitivement via l'inteface d'administration de l'hébergeur : le blocage de ZwiiCMS n'est au maximum que de 15mn.
-Un clic sur le bouton rouge "Réinitialiser liste" efface toutes les tentative de connexion infructueuses.

-
Captcha à la connexion
-

Cette case cochée par défaut active la captcha sur le site : c'est un élément important de sécurité, surtout si vous constatez dans le fichier "liste noire" de nombreuses tentatives de connexion. Dans ce cas il est alors judicieux d'activer la Captcha renforcée dans la rubrique "Réglages".
-ATTENTION : si la "Captcha à la connexion" est décochée, même si la Captcha renforcée est cochée à la rubrique "Réglages", c'est ce choix qui prime et aucune captcha ne s'appliquera !
-

-

JOURNALISATION

-

Activer ce paramètre permet d'enregistrer tout ce qui se passe sur le site : c'est un élément à ne pas négliger si il est constaté des anomalies sur le site.
-Un clic sur le bouton bleu "Télécharger journal" télécharge un fichier site_data_journal.log et permet ainsi d'examiner toute l'activité du site.
-Un clic sur le bouton rouge "Réinitialiser journal" efface tous les enregistrements du journal.
-

-

Attention, la réglementation française impose le masquage de niveau 2 des adresses IP.

\ No newline at end of file diff --git a/core/module/config/view/network/network.help.html b/core/module/config/view/network/network.help.html deleted file mode 100644 index f599f255..00000000 --- a/core/module/config/view/network/network.help.html +++ /dev/null @@ -1,13 +0,0 @@ -

Aide

-

RESEAU

-

Ces paramètres ne sont généralement pas nécessaires quand ZwiiCMS est installé chez un hébergeur ou à domicile.
-Par contre dans les milieux professionnels l'usage d'un proxy est la norme.
-Afin de permettre un usage normal de ZwiiCMS dans ce cas de figure il peut être nécessaire de renseigner le proxy de l'entreprise : ces paramètres, type, adresse et port, sont à demander à l'administrateur réseaux de l'entreprise.
-Ces paramètres sont également généralement accessibles dans la configuration réseau d'un navigateur web fonctionnel.
-

-

SMTP

-

Activer le SMTP n'est généralement pas nécessaire : il s'agit de la fonctionnalité d'envoi de courriel et généralement tous les hébergeurs la propose sans qu'il y ait besoin de la paramétrer.
-Toutefois il est possible que se ne soit pas le cas, dans le cas d'un auto-hébergement de ZwiiCMS et en milieux professionnels il peut également être nécessaire d'activer cette fonctionnalité et d'en renseigner les paramètres.
-Ces paramètres, adresse et port, sont à récupérer auprès de l'hébergeur ou de l'administrateur réseaux de l'entreprise. Une authentification peut également être nécessaire et là encore l'hébergeur et le l'administrateur réseaux sont les bons interlocuteurs : outre le Nom d'utilisateur et le Mot de passe que chacun connait généralement c'est le type de sécurité qui est important.
-Ces paramètres sont également généralement accessibles dans la configuration d'un logiciel de messagerie fonctionnel.
-

diff --git a/core/module/config/view/social/social.help.html b/core/module/config/view/social/social.help.html deleted file mode 100644 index b5578474..00000000 --- a/core/module/config/view/social/social.help.html +++ /dev/null @@ -1,38 +0,0 @@ -

Aide

-

PARAMETRES DU REFERENCEMENT

-

Le référencement consiste à mettre en oeuvre des pratiques pour faire apparaître un site dans les moteurs de recherche et pour lui faire gagner des positions, apparaître dans les premiers résultats sinon le premier.
-Un site pour un usage strictement personnel, familial, n'a pas besoin d'être référencé, au contraire.
-Par contre si un site doit avoir la fréquentation la plus importante possible son référencement est primordial.
-Afin d'aider dans cet objectif mais de ne pas tout permettre ZwiiCMS met à la disposition de ses utilisateurs deux outils.

-

Capture Open Graph

-

Le premier est la génération automatique d'une capture OpenGraph de la page d'accueil du site.
-C'est cette capture qui sera utilisée lors de tous les partages sur les différents réseaux sociaux.
-Les moteurs de recherches ne peuvent ignorer les réseaux sociaux et son utilisation est donc importante.
-Il suffit de cliquer sur le bouton bleu Capture Open Graph pour qu'elle soit réalisée et qu'elle apparaissent juste à droite.
-Si un message sur fond rouge "Service inaccessible ou erreur d'écriture de l'image" apparaît il faudra donner les droits d'écriture nécessaires, attendre un peu pour réessayer et vérifier si le service Open Graph est vraiment inaccessible et, sinon, voir avec l'hébergeur pourquoi ce service est inacessible ou sous quelles conditions il est accessible.

-

Sitemap.xml / Robots.txt

-

Le deuxième est la génération/mise à jour des fichiers sitemap.xml et robots.txt.

-
Sitemap.xml
-

Le fichier sitemap XML (sitemap.xml) est un fichier texte au format XML (langage de balisage extensible) contenant une liste de toutes les sous-pages du site Web sous forme de lien. Les robots des moteurs de recherches analysent ce fichier et il est donc très important.
-Le fichier robots.txt quant à lui sert à indiquer aux moteurs de recherches ce qui leur est interdit/autorisé : ATTENTION, ce n'est pas avec ce fichier que l'on interdit l'indexation d'une page particulière, en tout cas pas seulement, et il faudra employer d'autres mécanismes si ce but est recherché.

-
Robots.txt
-

Le fichier robots.txt généré par ZwiiCMS interdit l'accès aux dossiers critiques du CMS : /core/, /module/, /site/data, /site/tmp, /site/backup. -Par contre il autorise : /site/file/ et le fichier sitemap.xml.gz. -Il suffit de cliquer sur le bouton bleu Sitemap.xml /Robots.txt pour que les fichiers soient mis à jour (ils sont automatiquement créés au moment de l'installation).
-Si au lieu d'un message de succès sur fond vert apparaît le message sur fond rouge "Échec d'écriture, le sitemap n'a pas été mis à jour" il faudra investiguer pour déterminer et résoudre le problème. -

-

RESEAUX SOCIAUX

-

Il suffit ici de compléter l'ID d'un réseau social pour que l'icône correspondante s'affiche dans le pied de page.
-Cela implique évidemment d'avoir paramétré via "Personnaliser les thèmes" puis "Personnalisation du pied de page" l'affichage en question.
-Par défaut cet affichage est déjà paramétré et l'icône Facebook affichée. Elle se contente au clic de renvoyer alors sur la page d'accueil de Facebook, aucun ID n'étant indiqué.
-Pour supprimer l'affichage de cette icône il suffit d'effacer le contenu du champ "Facebbok" et d'enregistrer. -

-

SCRIPTS

-

Pour enrichir les fonctionnalités de ZwiiCMS il est possible d'utiliser de nombreux scripts à disposition sur internet : le plus souvent ces scripts impliquent de modifier le "head" ou/et le "body" du site et c'est donc ici que cela se passe.

-

Google Analytics

-

Ce script a un traitement particulier compte-tenu son usage intense : il suffit ici d'indiquer l'ID de suivi fournie par Google et d'enregistrer pour qu'il fonctionne.
-À noter qu'en configurant ce script il est alors nécessaire de mettre en place un système de consentement aux cookies différent de celui intégré à ZwiiCMS qui ne permet pas de gérer les cookies externes.
-De même il est nécessaire de paramétrer les "Mentions légales" dans "Configurer le site" rubrique "Pages spéciales".

-

Scripts dans head / Scripts dans body

-

En fonction du script à paramétrer il suffit de cliquer sur le bouton correspondant pour insérer les lignes nécessaires à son bon fonctionnement au bon endroit : chaque script a ses propres paramétrages et ne nécessite pas obligatoirement d'intervenir à la fois au niveau du "head" et du "body".
-

From f1fb22d2ebdd6609fd42b03609f15fb44c8c2461 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 3 Nov 2021 17:25:26 +0100 Subject: [PATCH 040/277] Fix robots.txt --- CHANGES.md | 2 +- core/core.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index ebb7a8c5..205247e1 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,7 +8,7 @@ ## Version 11.1.01 - Corrections : - Langues : bug de l'utilitaire de copie de site. - - Fichier robots.txt non copié si absent. + - Fichier robots.txt non fourni lors les bots ne sont pas autorisés. - Modifications : - Dispositions des écrans du thème : site, menu, pied de page, menu et bannière. diff --git a/core/core.php b/core/core.php index 062f28f6..f83e3248 100644 --- a/core/core.php +++ b/core/core.php @@ -950,6 +950,8 @@ class common { if ($this->getData(['config','seo', 'robots']) === true) { unlink('robots.txt'); $sitemap->updateRobots(); + } else { + file_put_contents('robots.txt','User-agent: *' . PHP_EOL . 'Disallow: /'); } // Submit your sitemaps to Google, Yahoo, Bing and Ask.com From f4131848e38633b68afb354dd199b032d772b339 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 3 Nov 2021 18:53:12 +0100 Subject: [PATCH 041/277] =?UTF-8?q?Mise=20en=20=C3=A9vidence=20des=20pages?= =?UTF-8?q?=20inactives=20et=20orphelines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 12 ++++++++---- core/layout/common.css | 9 +++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/core.php b/core/core.php index f83e3248..56ba8b8a 100644 --- a/core/core.php +++ b/core/core.php @@ -1898,8 +1898,10 @@ class common { helper::baseUrl() . $parentPageId . '"' . ($parentPageId === $currentPageId ? ' selected' : false) . - ($this->getData(['page', $parentPageId, 'disable']) === true ? ' class="inactive"' : '') . - '>' . + 'class="' . + ($this->getData(['page', $parentPageId, 'disable']) === true ? 'pageInactive' : '') . + ($this->getData(['page', $parentPageId, 'position']) === 0 ? ' pageHidden' : '') . + '">' . $this->getData(['page', $parentPageId, 'title']) . ''; foreach($childrenPageIds as $childKey) { @@ -1907,8 +1909,10 @@ class common { helper::baseUrl() . $childKey . '"' . ($childKey === $currentPageId ? ' selected' : false) . - ($this->getData(['page', $childKey, 'disable']) === true ? ' class="inactive"' : '') . - '>    ' . + 'class="' . + ($this->getData(['page', $childKey, 'disable']) === true ? 'pageInactive' : '') . + ($this->getData(['page', $childKey, 'position']) === 0 ? ' pageHidden' : '') . + '">    ' . $this->getData(['page', $childKey, 'title']) . ''; } diff --git a/core/layout/common.css b/core/layout/common.css index 375ebad9..d2fd0d52 100755 --- a/core/layout/common.css +++ b/core/layout/common.css @@ -135,8 +135,13 @@ li ul { margin: 0; } -option.inactive { - color: darkorange; +option.pageInactive { + color: orange; + font-weight: bold; +} +option.pageHidden { + color: red; + font-style: italic; } /* Séparateur */ From 6028cd4d0ad98d63a06c7b749c8f9a4da57215d0 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 12:44:57 +0100 Subject: [PATCH 042/277] bug anchor not closed --- core/module/config/view/social/social.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index c0258302..bad00d59 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -124,9 +124,10 @@

Scripts externes - - - + + + +

From 0779284c5f8516e673086e9e50e28116e989973f Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 13:55:23 +0100 Subject: [PATCH 043/277] Titres courts --- CHANGES.md | 2 + core/core.php | 59 +++++++++---------- core/include/update.inc.php | 11 ++++ core/module/install/ressource/defaultdata.php | 27 +++++++-- core/module/page/page.php | 4 ++ core/module/page/view/edit/edit.php | 18 +++--- 6 files changed, 79 insertions(+), 42 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 205247e1..b5bab638 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,7 +3,9 @@ ## Version 11.2.00 - Modifications : - Disposition des options de configuration du site. + - Pages : il est désormais possible de donner un nom de page court qui sera utilisé dans le menu du site, dans les abrres latérales et dans les sélecteurs de page (éditeur / lien). En revanche le nom de la page affiché en haut de celle-ci est inchangé. Dans la plupart des cas le titre court sera identique au titre. - Les écrans d'aide renvoient vers le site doc.zwiicms.fr + - Mise en évidence du statut des pages dans la liste de la barre d'administration. Rouge italique : page orpheline ; Orange gras page inactive. ## Version 11.1.01 - Corrections : diff --git a/core/core.php b/core/core.php index 56ba8b8a..08805477 100644 --- a/core/core.php +++ b/core/core.php @@ -800,23 +800,23 @@ class common { if ($this->getData(['page', $parentId, 'block']) !== 'bar' ) { // Boucler sur les enfants et récupérer le tableau children avec la liste des enfants foreach($childIds as $childId) { - $children [] = [ 'title' => ' » '. html_entity_decode($this->getData(['page', $childId, 'title']), ENT_QUOTES) , + $children [] = [ 'title' => ' » '. html_entity_decode($this->getData(['page', $childId, 'shortTitle']), ENT_QUOTES) , 'value'=> $rewrite.$childId ]; } // Traitement if (empty($childIds)) { // Pas d'enfant, uniquement l'entrée du parent - $parents [] = ['title' => html_entity_decode($this->getData(['page', $parentId, 'title']), ENT_QUOTES) , + $parents [] = ['title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES) , 'value'=> $rewrite.$parentId ]; } else { // Des enfants, on ajoute la page parent en premier - array_unshift ($children , ['title' => html_entity_decode($this->getData(['page', $parentId, 'title']), ENT_QUOTES) , + array_unshift ($children , ['title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES) , 'value'=> $rewrite.$parentId ]); // puis on ajoute les enfants au parent - $parents [] = ['title' => html_entity_decode($this->getData(['page', $parentId, 'title']), ENT_QUOTES) , + $parents [] = ['title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES) , 'value'=> $rewrite.$parentId , 'menu' => $children ]; @@ -1584,24 +1584,24 @@ class common { switch ($this->getData(['page', $parentPageId, 'typeMenu'])) { case '' : - $itemsLeft .= $this->getData(['page', $parentPageId, 'title']); + $itemsLeft .= $this->getData(['page', $parentPageId, 'shortTitle']); break; case 'text' : - $itemsLeft .= $this->getData(['page', $parentPageId, 'title']); + $itemsLeft .= $this->getData(['page', $parentPageId, 'shortTitle']); break; case 'icon' : if ($this->getData(['page', $parentPageId, 'iconUrl']) != "") { - $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'title']).''; + $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'shortTitle']).''; } else { - $itemsLeft .= $this->getData(['page', $parentPageId, 'title']); + $itemsLeft .= $this->getData(['page', $parentPageId, 'shortTitle']); } break; case 'icontitle' : if ($this->getData(['page', $parentPageId, 'iconUrl']) != "") { - $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'title']).''; + $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'titlshortTitlee']).''; } else { - $itemsLeft .= $this->getData(['page', $parentPageId, 'title']); + $itemsLeft .= $this->getData(['page', $parentPageId, 'shortTitle']); } break; } @@ -1644,32 +1644,32 @@ class common { switch ($this->getData(['page', $childKey, 'typeMenu'])) { case '' : - $itemsLeft .= $this->getData(['page', $childKey, 'title']); + $itemsLeft .= $this->getData(['page', $childKey, 'shortTitle']); break; case 'text' : - $itemsLeft .= $this->getData(['page', $childKey, 'title']); + $itemsLeft .= $this->getData(['page', $childKey, 'shortTitle']); break; case 'icon' : if ($this->getData(['page', $childKey, 'iconUrl']) != "") { - $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'title']).''; + $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'shortTitle']).''; } else { - $itemsLeft .= $this->getData(['page', $parentPageId, 'title']); + $itemsLeft .= $this->getData(['page', $parentPageId, 'shortTitle']); } break; case 'icontitle' : if ($this->getData(['page', $childKey, 'iconUrl']) != "") { - $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'title']).''; + $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'shortTitle']).''; } else { - $itemsLeft .= $this->getData(['page', $childKey, 'title']); + $itemsLeft .= $this->getData(['page', $childKey, 'shortTitle']); } break; case 'icontext' : if ($this->getData(['page', $childKey, 'iconUrl']) != "") { - $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'title']).''; - $itemsLeft .= $this->getData(['page', $childKey, 'title']); + $itemsLeft .= ''.$this->getData(['page', $parentPageId, 'shortTitle']).''; + $itemsLeft .= $this->getData(['page', $childKey, 'shortTitle']); } else { - $itemsLeft .= $this->getData(['page', $childKey, 'title']); + $itemsLeft .= $this->getData(['page', $childKey, 'shortTitle']); } break; } @@ -1757,7 +1757,7 @@ class common { } else { $items .= ''; } - $items .= $this->getData(['page', $parentPageId, 'title']); + $items .= $this->getData(['page', $parentPageId, 'shortTitle']); $items .= ''; } $itemsChildren = ''; @@ -1780,7 +1780,7 @@ class common { $itemsChildren .= ''; } - $itemsChildren .= $this->getData(['page', $childKey, 'title']); + $itemsChildren .= $this->getData(['page', $childKey, 'shortTitle']); $itemsChildren .= ''; } // Concatène les items enfants @@ -1844,7 +1844,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'; } @@ -1898,22 +1897,22 @@ class common { helper::baseUrl() . $parentPageId . '"' . ($parentPageId === $currentPageId ? ' selected' : false) . - 'class="' . + ' class="' . ($this->getData(['page', $parentPageId, 'disable']) === true ? 'pageInactive' : '') . ($this->getData(['page', $parentPageId, 'position']) === 0 ? ' pageHidden' : '') . '">' . - $this->getData(['page', $parentPageId, 'title']) . + $this->getData(['page', $parentPageId, 'shortTitle']) . ''; foreach($childrenPageIds as $childKey) { $leftItems .= ''; } } @@ -1922,9 +1921,9 @@ class common { // Afficher les barres $leftItems .= ''; foreach($this->getHierarchy(null, false,true) as $parentPageId => $childrenPageIds) { - $leftItems .= ''; + $leftItems .= ''; foreach($childrenPageIds as $childKey) { - $leftItems .= ''; + $leftItems .= ''; } } $leftItems .= ''; diff --git a/core/include/update.inc.php b/core/include/update.inc.php index dd14a012..de14e258 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -681,6 +681,17 @@ if ($this->getData(['core', 'dataVersion']) < 11200) { $this->setData(['config', 'connect', 'autoDisconnect', $this->getData(['config', 'autoDisconnect'])]); $this->deleteData(['config', 'autoDisconnect']); + // Ajout de la variable shortTitle basée sur Title + foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) { + $pageList [] = $parentKey; + foreach ($parentValue as $childKey) { + $pageList [] = $childKey; + } + } + foreach ($pageList as $parentKey => $parent) { + $this->setData(['page', $parent, 'shortTitle', $this->getData(['page', $parent, 'title']) ]); + } + // Mise à jour $this->setData(['core', 'dataVersion', 11200]); } diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index 3bad20ea..6bba5c74 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -92,6 +92,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Accueil', + 'shortTitle' => 'Accueil', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -245,6 +246,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Accueil', + 'shortTitle' => 'Accueil', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -267,7 +269,8 @@ class init extends common { 'position' => 1, 'group' => self::GROUP_VISITOR, 'targetBlank' => false, - 'title' => 'Enfant', + 'title' => 'Page Enfant', + 'shortTitle' => 'Enfant', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -290,7 +293,8 @@ class init extends common { 'position' => 2, 'group' => self::GROUP_MEMBER, 'targetBlank' => false, - 'title' => 'Privée', + 'title' => 'Page privée', + 'shortTitle' => 'Privée', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -314,6 +318,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Mise en page', + 'shortTitle' => 'Mise en page', 'block' => '4-8', 'barLeft' => 'barre', 'barRight' => '', @@ -336,7 +341,8 @@ class init extends common { 'position' => 3, 'group' => self::GROUP_VISITOR, 'targetBlank' => false, - 'title' => 'Menu latéral', + 'title' => 'Barre latérale avec menu', + 'shortTitle' => 'Menu latéral', 'block' => '9-3', 'barLeft' => '', 'barRight' => 'barrelateraleavecmenu', @@ -360,6 +366,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Blog', + 'shortTitle' => 'Blog', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -382,7 +389,8 @@ class init extends common { 'position' => 4, 'group' => self::GROUP_VISITOR, 'targetBlank' => false, - 'title' => 'Galeries', + 'title' => 'Galeries d\'images', + 'shortTitle' => 'Galeries', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -407,6 +415,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => true, 'title' => 'Site de Zwii', + 'shortTitle' => 'Site de Zwii', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -430,6 +439,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Contact', + 'shortTitle' => 'Contact', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -453,6 +463,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Barre latérale', + 'shortTitle' => 'Barre latérale', 'block' => 'bar', 'barLeft' => '', 'barRight' => '', @@ -476,6 +487,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Barre latérale avec menu', + 'shortTitle' => 'Barre latérale avec menu', 'block' => 'bar', 'barLeft' => '', 'barRight' => '', @@ -499,6 +511,7 @@ class init extends common { 'group' => 0, 'targetBlank' => false, 'title' => 'Mentions légales', + 'shortTitle' => 'Mentions légales', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -523,6 +536,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Maintenance en cours', + 'shortTitle' => 'Maintenance en cours', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -547,6 +561,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Erreur 403', + 'shortTitle' => 'Erreur 403', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -570,6 +585,7 @@ class init extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => 'Erreur 404', + 'shortTitle' => 'Erreur 404', 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -592,7 +608,8 @@ class init extends common { 'position' => 7, 'group' => self::GROUP_VISITOR, 'targetBlank' => false, - 'title' => 'Recherche', + 'title' => 'Recherche dans le site', + 'shortTitle' => 'Rechercher', 'block' => '12', 'barLeft' => '', 'barRight' => '', diff --git a/core/module/page/page.php b/core/module/page/page.php index 3ba16329..86011daa 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -142,6 +142,7 @@ class page extends common { 'group' => self::GROUP_VISITOR, 'targetBlank' => false, 'title' => $pageTitle, + 'shortTitle' => $pageTitle, 'block' => '12', 'barLeft' => '', 'barRight' => '', @@ -426,6 +427,7 @@ class page extends common { 'group' => $this->getinput('pageEditBlock') !== 'bar' ? $this->getInput('pageEditGroup', helper::FILTER_INT) : 0, 'targetBlank' => $this->getInput('pageEditTargetBlank', helper::FILTER_BOOLEAN), 'title' => $this->getInput('pageEditTitle', helper::FILTER_STRING_SHORT), + 'shortTitle' => $this->getInput('pageEditShortTitle', helper::FILTER_STRING_SHORT, true), 'block' => $this->getinput('pageEditBlock'), 'barLeft' => $barLeft, 'barRight' => $barRight, @@ -495,6 +497,8 @@ class page extends common { self::$pagesBarId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']); } } + // Mise à jour de la liste des pages pour TinyMCE + $this->pages2Json(); // Valeurs en sortie $this->addOutput([ 'title' => $this->getData(['page', $this->getUrl(2), 'title']), diff --git a/core/module/page/view/edit/edit.php b/core/module/page/view/edit/edit.php index d3e855f5..b30039a1 100644 --- a/core/module/page/view/edit/edit.php +++ b/core/module/page/view/edit/edit.php @@ -1,9 +1,6 @@ -pages2Json(); ?> +
-
+
getUrl(2); ?> getData(['page', $this->getUrl(2), 'moduleId']) === 'redirection' || 'code')$href = helper::baseUrl(); ?>
-
+
+ '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.' + ]); ?> +
+
'Aspect du lien', 'selected' => $this->getData(['page', $this->getUrl(2), 'typeMenu']) ]); ?>
-
+
'Sélectionnez une image ou une icône de petite dimension', 'label' => 'Icône', From 7faac3cdfaf9191d36c27579f11ab3e37450d6ae Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 14:13:35 +0100 Subject: [PATCH 044/277] Titre court emplacement du champ --- core/module/page/view/edit/edit.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/module/page/view/edit/edit.php b/core/module/page/view/edit/edit.php index b30039a1..9c30fbc7 100644 --- a/core/module/page/view/edit/edit.php +++ b/core/module/page/view/edit/edit.php @@ -34,12 +34,19 @@

Informations générales

-
+
'Titre', 'value' => $this->getData(['page', $this->getUrl(2), 'title']) ]); ?>
+
+ '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.' + ]); ?> +
@@ -65,20 +72,13 @@
-
- '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.' - ]); ?> -
-
+
'Aspect du lien', 'selected' => $this->getData(['page', $this->getUrl(2), 'typeMenu']) ]); ?>
-
+
'Sélectionnez une image ou une icône de petite dimension', 'label' => 'Icône', From 36c12707339639863ca1aed92c37b006a09d54b9 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 18:44:10 +0100 Subject: [PATCH 045/277] bug anchor --- core/module/config/view/locale/locale.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 8e891360..0fe47594 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -56,9 +56,10 @@

Assignation des pages spéciales - - + + +

@@ -116,8 +117,8 @@

Etiquettes des pages spéciales - - + +

From b04560a049eb471a9abdc58d82f3573202dda9f7 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 18:49:15 +0100 Subject: [PATCH 046/277] bug anchor --- core/module/config/view/connect/connect.php | 13 ++++++----- core/module/config/view/locale/locale.php | 17 +++++++------- core/module/config/view/network/network.php | 12 ++++++---- core/module/config/view/setup/setup.php | 12 +++++----- core/module/config/view/social/social.php | 26 +++++++++++---------- 5 files changed, 43 insertions(+), 37 deletions(-) diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index bc51a1e5..487bf13f 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -2,13 +2,13 @@
-

Sécurité de la connexion - +

Sécurité de la connexion - + + +

-

Journalisation - - + + +

diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 8e891360..3dce33d8 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -19,9 +19,9 @@

Identité du site - - - + + +

@@ -56,9 +56,10 @@

Assignation des pages spéciales - - + + +

@@ -114,10 +115,10 @@
-

Etiquettes des pages spéciales +

Etiquettes des pages spéciales - - + +

diff --git a/core/module/config/view/network/network.php b/core/module/config/view/network/network.php index 17091df6..4596838b 100644 --- a/core/module/config/view/network/network.php +++ b/core/module/config/view/network/network.php @@ -3,9 +3,10 @@

Paramètres - - + + +

@@ -36,10 +37,11 @@
-

SMTP - +

SMTP - + + +

diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 56bb267d..5338f005 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -4,9 +4,9 @@

Paramètres - - - + + +

@@ -95,9 +95,9 @@

Maintenance - - - + + +

diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index bad00d59..1c528252 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -2,10 +2,11 @@
-

Paramètres - +

Paramètres - + + +

@@ -50,10 +51,11 @@
-

Réseaux sociaux - +

Réseaux sociaux - + + +

@@ -122,12 +124,12 @@
-

Scripts externes - - - - - +

Scripts externes + + + + +

From 1ed203925dd4a57c7741d7ccf7fbb20a9ced4913 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 18:59:53 +0100 Subject: [PATCH 047/277] i18n help --- .../translate/view/index/index.help.html | 27 ------------------- core/module/translate/view/index/index.php | 10 +++---- 2 files changed, 4 insertions(+), 33 deletions(-) delete mode 100644 core/module/translate/view/index/index.help.html diff --git a/core/module/translate/view/index/index.help.html b/core/module/translate/view/index/index.help.html deleted file mode 100644 index 4a8c2473..00000000 --- a/core/module/translate/view/index/index.help.html +++ /dev/null @@ -1,27 +0,0 @@ -

TRADUCTION AUTOMATIQUE

-

Vous avez le choix entre une traduction automatique, réalisée avec le script Google Traduction, ou une traduction rédigée (voir MODE DE TRADUCTION).
-La traduction automatique est réalisée à partir du site en version française, elle offre deux possibilités :
- * la détection automatique de la langue du navigateur même si celle-ci n'est pas matérialisée par un drapeau,
- * la traduction automatique des pages suite à un clic sur un drapeau. -
-Ces 2 modes peuvent coexister, la langue detectée par le navigateur sera la langue par défaut pour l'affichage du site et si le visiteur clique sur un drapeau, par exemple italien, le site s'affichera en italien quelque soit les préférences du navigateur. -

-L'option 'Afficher les crédits du script Google' est recommandée pour respecter les droits d'auteur. -

-L'option 'Traduction en mode connecté' permet de traduire les pages d'administration du site. -

- -
-

MODE DE TRADUCTION ET AFFICHAGE DES DRAPEAUX

-

Vous avez 4 options :
- => Drapeau masqué : la traduction automatique ne sera possible que si vous avez choisi l'option 'Détection automatique de la langue du navigateur',
- => Traduction automatique : le drapeau de la langue sélectionnée s'affiche dans le menu,
- => Traduction rédigée : un nouveau site est généré, seule la page d'accueil est créée, il faut alors rédiger les pages dans la langue sélectionnée ou avant cela utiliser l'utilitaire de copie,
- => Supprimer la traduction : la traduction rédigée va être supprimée, pensez à sauvegarder avant ( en configuration avancée ) ! -

-Il est pratique d'afficher le drapeau français pour revenir à la langue originale, sinon cliquez sur le drapeau actif (icône large). -

-
-

UTILITAIRE DE COPIE

-

Quand une traduction rédigée est sélectionnée, il est possible de copier les pages et les modules d'une langue vers une autre à l'aide de l'utilitaire de copie. Il ne vous restera plus qu'à traduire ces pages. -

diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php index 54eeb9ba..06c03453 100644 --- a/core/module/translate/view/index/index.php +++ b/core/module/translate/view/index/index.php @@ -10,9 +10,11 @@
'buttonHelp', + 'href' => 'https://doc.zwiicms.fr/prise-en-charge-des-langues-etrangeres', + 'target' => '_blank', 'ico' => 'help', - 'value' => 'Aide' + 'value' => 'Aide', + 'class' => 'buttonHelp' ]); ?>
@@ -27,10 +29,6 @@
- -
- -
From c9be9bd24c023b6b06ce9e49e61ad3d5ac7c6885 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 19:05:12 +0100 Subject: [PATCH 048/277] user help button --- core/module/user/view/index/index.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/module/user/view/index/index.php b/core/module/user/view/index/index.php index 483ad22c..ea6ce399 100644 --- a/core/module/user/view/index/index.php +++ b/core/module/user/view/index/index.php @@ -7,7 +7,16 @@ 'value' => 'Accueil' ]); ?>
-
+
+ 'https://doc.zwiicms.fr/gestion-des-utilisateurs', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
helper::baseUrl() . 'user/import', 'ico' => 'plus', From b9ec4399f74c5e65553586262106e51060e500e8 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 4 Nov 2021 19:12:27 +0100 Subject: [PATCH 049/277] Buttons names --- core/module/addon/view/index/index.php | 8 +++++--- core/module/config/view/index/index.php | 2 +- core/module/translate/view/index/index.php | 2 +- core/module/user/view/index/index.php | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/module/addon/view/index/index.php b/core/module/addon/view/index/index.php index 55854804..5a9c4310 100644 --- a/core/module/addon/view/index/index.php +++ b/core/module/addon/view/index/index.php @@ -8,10 +8,12 @@ ]); ?>
- 'buttonHelp', + 'https://doc.zwiicms.fr/les-modules', + 'target' => '_blank', 'ico' => 'help', - 'value' => 'Aide' + 'value' => 'Aide', + 'class' => 'buttonHelp' ]); ?>
diff --git a/core/module/config/view/index/index.php b/core/module/config/view/index/index.php index ad58ad25..55deeaa1 100644 --- a/core/module/config/view/index/index.php +++ b/core/module/config/view/index/index.php @@ -9,7 +9,7 @@ ]); ?>
- 'buttonHelp', 'href' => 'https://doc.zwiicms.fr/configuration-du-site', 'target' => '_blank', diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php index 06c03453..01ba5368 100644 --- a/core/module/translate/view/index/index.php +++ b/core/module/translate/view/index/index.php @@ -9,7 +9,7 @@ ]); ?>
- 'https://doc.zwiicms.fr/prise-en-charge-des-langues-etrangeres', 'target' => '_blank', 'ico' => 'help', diff --git a/core/module/user/view/index/index.php b/core/module/user/view/index/index.php index ea6ce399..98fc2388 100644 --- a/core/module/user/view/index/index.php +++ b/core/module/user/view/index/index.php @@ -8,7 +8,7 @@ ]); ?>
- 'https://doc.zwiicms.fr/gestion-des-utilisateurs', 'target' => '_blank', 'ico' => 'help', From e3a0f4b86533ad551566cbadb907992a59309002 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 10:21:39 +0100 Subject: [PATCH 050/277] supprimer le texte de l'animation --- core/module/config/view/backup/backup.php | 1 - 1 file changed, 1 deletion(-) diff --git a/core/module/config/view/backup/backup.php b/core/module/config/view/backup/backup.php index 0ba3a31c..0258bd26 100644 --- a/core/module/config/view/backup/backup.php +++ b/core/module/config/view/backup/backup.php @@ -13,7 +13,6 @@ 'value' => 'Sauvegarder' ]); ?>
-
From 2d8f1324373d447f3cd1770e1268c4875b57a175 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 14:05:01 +0100 Subject: [PATCH 051/277] =?UTF-8?q?edit=20pages=20=C3=A0=20compl=C3=A9ter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/page/view/edit/edit.php | 39 +++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/core/module/page/view/edit/edit.php b/core/module/page/view/edit/edit.php index 9c30fbc7..001a3d41 100644 --- a/core/module/page/view/edit/edit.php +++ b/core/module/page/view/edit/edit.php @@ -10,7 +10,16 @@ 'value' => 'Retour' ]); ?>
-
+
+ 'https://doc.zwiicms.fr/les-pages-simples', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
helper::baseUrl() . 'page/duplicate/' . $this->getUrl(2) . '&csrf=' . $_SESSION['csrf'], 'value' => 'Dupliquer', @@ -32,7 +41,13 @@
-

Informations générales

+

Informations générales + + + + + +

Mise en page + + + + +

Emplacement dans le menu + + + + +

Options d'emplacement avancées + + + + +

Permission et référencement + + + + +
Date: Fri, 5 Nov 2021 14:18:16 +0100 Subject: [PATCH 052/277] url-maintenance --- core/module/config/view/setup/setup.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 5338f005..145bea66 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -95,7 +95,7 @@

Maintenance - + From d2b4e702fe17ab94c9d47a05ca2728398cdcd49c Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 14:43:14 +0100 Subject: [PATCH 053/277] =?UTF-8?q?Bug=20page=20parent=20renomm=C3=A9e=20a?= =?UTF-8?q?vec=20des=20pages=20enfants=20absentes=20non=20affich=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/page/page.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/module/page/page.php b/core/module/page/page.php index 86011daa..edf184e3 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -259,7 +259,7 @@ class page extends common { ]); } // Impossible de supprimer une page contenant des enfants - elseif($this->getHierarchy($url[0])) { + elseif($this->getHierarchy($url[0],null)) { // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], @@ -327,7 +327,7 @@ class page extends common { $pageId = helper::increment($pageId, self::$coreModuleIds); $pageId = helper::increment($pageId, self::$moduleIds); // Met à jour les enfants - foreach($this->getHierarchy($this->getUrl(2)) as $childrenPageId) { + foreach($this->getHierarchy($this->getUrl(2),null) as $childrenPageId) { $this->setData(['page', $childrenPageId, 'parentPageId', $pageId]); } // Change l'id de page dans les données des modules @@ -378,7 +378,7 @@ class page extends common { } // Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents $lastPosition = 1; - $hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy()); + $hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId'),null) : array_keys($this->getHierarchy()); $position = $this->getInput('pageEditPosition', helper::FILTER_INT); foreach($hierarchy as $hierarchyPageId) { // Ignore la page en cours de modification From 354c9d5d7ea0d988ff61877a26b4436570bd73f9 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 14:47:12 +0100 Subject: [PATCH 054/277] changes --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index b5bab638..17afe2f1 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ - Corrections : - Langues : bug de l'utilitaire de copie de site. - Fichier robots.txt non fourni lors les bots ne sont pas autorisés. + - Page parente ayant des pages enfants non affichées : lors du renommage de la page, les pages enfants n'étaient pas actualisées. - Modifications : - Dispositions des écrans du thème : site, menu, pied de page, menu et bannière. From bd2fd89c4fd8d9229d02447bbfea4812209a0283 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 15:13:16 +0100 Subject: [PATCH 055/277] ne pas actualiser les positions des pages orphelines --- core/module/page/page.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/page/page.php b/core/module/page/page.php index edf184e3..ae3924a2 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -378,7 +378,7 @@ class page extends common { } // Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents $lastPosition = 1; - $hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId'),null) : array_keys($this->getHierarchy()); + $hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy()); $position = $this->getInput('pageEditPosition', helper::FILTER_INT); foreach($hierarchy as $hierarchyPageId) { // Ignore la page en cours de modification From 6d5af817803d708413bcb59b8d003dcaf1577c16 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 16:08:36 +0100 Subject: [PATCH 056/277] bug url intelligentes --- core/module/config/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/config/config.php b/core/module/config/config.php index 9b529921..fc5b4ba2 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -514,7 +514,7 @@ class config extends common { // Notice if(self::$inputNotices === []) { // Active la réécriture d'URL - $rewrite = $this->getInput('rewrite', helper::FILTER_BOOLEAN); + $rewrite = $this->getInput('configRewrite', helper::FILTER_BOOLEAN); if( $rewrite AND helper::checkRewrite() === false From 6384e753935f15d5fb46e6cbf4277e50d91e854c Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Fri, 5 Nov 2021 16:14:17 +0100 Subject: [PATCH 057/277] urls pages ok --- core/module/page/view/edit/edit.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/module/page/view/edit/edit.php b/core/module/page/view/edit/edit.php index 001a3d41..d9029e8d 100644 --- a/core/module/page/view/edit/edit.php +++ b/core/module/page/view/edit/edit.php @@ -43,7 +43,7 @@

Informations générales - + @@ -125,7 +125,7 @@

Mise en page - + @@ -187,7 +187,7 @@

Emplacement dans le menu - + @@ -255,7 +255,7 @@

Options d'emplacement avancées - + @@ -289,7 +289,7 @@

Permission et référencement - + From 932caa814d90a3b3ac09b57f85b3097a5024eb71 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sun, 7 Nov 2021 15:50:24 +0100 Subject: [PATCH 058/277] =?UTF-8?q?Banni=C3=A8re=20personnalis=C3=A9e=20Ma?= =?UTF-8?q?nque=20JS=20=20+=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 26 +++-- core/layout/main.php | 54 +++++---- core/module/install/ressource/defaultdata.php | 4 +- core/module/theme/theme.php | 17 ++- core/module/theme/view/header/header.php | 110 +++++++++--------- core/module/theme/view/menu/menu.php | 14 ++- 6 files changed, 129 insertions(+), 96 deletions(-) diff --git a/core/core.php b/core/core.php index 08805477..1fbe9adb 100644 --- a/core/core.php +++ b/core/core.php @@ -2233,7 +2233,6 @@ class core extends common { $css .= '.block {border: 1px solid ' . $this->getdata(['theme','block','borderColor']) . ';}.block h4 {background-color:'. $colors['normal'] . ';color:' . $colors['text'] .';}'; $css .= '.mce-tinymce {border: 1px solid ' . $this->getdata(['theme','block','borderColor']) .' !important;}'; // Bannière - $colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor'])); if($this->getData(['theme', 'header', 'margin'])) { if($this->getData(['theme', 'menu', 'position']) === 'site-first') { $css .= 'header{margin:0 20px}'; @@ -2242,18 +2241,21 @@ class core extends common { $css .= 'header{margin:20px 20px 0 20px}'; } } - $css .= 'header{background-size:' . $this->getData(['theme','header','imageContainer']).'}'; - $css .= 'header{background-color:' . $colors['normal']; - - // Valeur de hauteur traditionnelle - $css .= ';height:' . $this->getData(['theme', 'header', 'height']) . ';line-height:' . $this->getData(['theme', 'header', 'height']) ; - - $css .= ';text-align:' . $this->getData(['theme', 'header', 'textAlign']) . '}'; - if($themeHeaderImage = $this->getData(['theme', 'header', 'image'])) { - $css .= 'header{background-image:url("../file/source/' . $themeHeaderImage . '");background-position:' . $this->getData(['theme', 'header', 'imagePosition']) . ';background-repeat:' . $this->getData(['theme', 'header', 'imageRepeat']) . '}'; + if ($this->getData(['theme','header','feature']) === 'wallpaper' ) { + $colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor'])); + $css .= 'header{background-size:' . $this->getData(['theme','header','imageContainer']).'}'; + $css .= 'header{background-color:' . $colors['normal']; + + // Valeur de hauteur traditionnelle + $css .= ';height:' . $this->getData(['theme', 'header', 'height']) . ';line-height:' . $this->getData(['theme', 'header', 'height']) ; + + $css .= ';text-align:' . $this->getData(['theme', 'header', 'textAlign']) . '}'; + if($themeHeaderImage = $this->getData(['theme', 'header', 'image'])) { + $css .= 'header{background-image:url("../file/source/' . $themeHeaderImage . '");background-position:' . $this->getData(['theme', 'header', 'imagePosition']) . ';background-repeat:' . $this->getData(['theme', 'header', 'imageRepeat']) . '}'; + } + $colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor'])); + $css .= 'header span{color:' . $colors['normal'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'header', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}'; } - $colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor'])); - $css .= 'header span{color:' . $colors['normal'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'header', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}'; // Menu $colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColor'])); $css .= 'nav,nav.navMain a{background-color:' . $colors['normal'] . '}'; diff --git a/core/layout/main.php b/core/layout/main.php index 423fcd7c..519f20b1 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -61,20 +61,24 @@ getData(['theme', 'header', 'position']) === 'body'): ?>
getData(['theme', 'header', 'tinyHidden']) === true): ?>class="bannerDisplay"> - getData(['theme','header','linkHomePage']) ? '' : ''; ?> + getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?>
- getData(['theme', 'header', 'textHide']) === false - // Affiche toujours le titre de la bannière pour l'édition du thème - OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') - ): ?> - getData(['locale', 'title']); ?> - -   + getData(['theme','header','feature']) === 'wallpaper' ): ?> + getData(['theme', 'header', 'textHide']) === false + // Affiche toujours le titre de la bannière pour l'édition du thème + OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') + ): ?> + getData(['locale', 'title']); ?> + +   + + + getData(['theme','header','content']);?> -
- getData(['theme','header','linkHomePage']) ? '
' : ''; ?> +

+ getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> @@ -110,24 +114,26 @@ ) ): ?> - getData(['theme','header','linkHomePage']) ? '' : ''; ?> -
+ getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> +
- getData(['theme', 'header', 'textHide']) === false - // Affiche toujours le titre de la bannière pour l'édition du thème - OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') - ): ?> - getData(['locale', 'title']); ?> + getData(['theme','header','feature']) === 'wallpaper' ): ?> + getData(['theme', 'header', 'textHide']) === false + // Affiche toujours le titre de la bannière pour l'édition du thème + OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') + ): ?> + getData(['locale', 'title']); ?> + +   + -   + getData(['theme','header','content']);?>
- getData(['theme','header','linkHomePage']) ? '
' : ''; ?> + getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> getData(['theme', 'menu', 'position']) === 'site-second' || diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index 6bba5c74..289cff3d 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -157,7 +157,9 @@ class init extends common { 'textTransform' => 'none', 'linkHomePage' => true, 'imageContainer' => 'auto', - 'tinyHidden' => true + 'tinyHidden' => true, + 'feature' => 'wallpaper', + 'featureContent' => '

Bannière vide

' ], 'menu' => [ 'backgroundColor' => 'rgba(32, 59, 82, 1)', diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 639e9ad4..bc199963 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -69,6 +69,10 @@ class theme extends common { 'Ubuntu' => 'Ubuntu', 'Vollkorn' => 'Vollkorn' ]; + public static $containers = [ + 'container' => 'Largeur du site', + 'container-large' => 'Largeur de la page' + ]; public static $footerblocks = [ 1 => [ 'hide' => 'Masqué', @@ -133,6 +137,10 @@ class theme extends common { 'site' => 'Dans le site', 'hide' => 'Cachée' ]; + public static $headerFeatures = [ + 'wallpaper' => 'Couleur unie ou papier-peint', + 'content' => 'Contenu personnalisé' + ]; public static $imagePositions = [ 'top left' => 'En haut à gauche', 'top center' => 'En haut au centre', @@ -435,6 +443,7 @@ class theme extends common { 'fontSize' => $this->getInput('themeHeaderFontSize'), 'fontWeight' => $this->getInput('themeHeaderFontWeight'), 'height' => $this->getInput('themeHeaderHeight'), + 'container' => $this->getInput('themeHeaderContainer'), 'image' => $this->getInput('themeHeaderImage'), 'imagePosition' => $this->getInput('themeHeaderImagePosition'), 'imageRepeat' => $this->getInput('themeHeaderImageRepeat'), @@ -446,7 +455,9 @@ class theme extends common { 'textTransform' => $this->getInput('themeHeaderTextTransform'), 'linkHomePage' => $this->getInput('themeHeaderlinkHomePage',helper::FILTER_BOOLEAN), 'imageContainer' => $this->getInput('themeHeaderImageContainer'), - 'tinyHidden' => $this->getInput('themeHeaderTinyHidden', helper::FILTER_BOOLEAN) + 'tinyHidden' => $this->getInput('themeHeaderTinyHidden', helper::FILTER_BOOLEAN), + 'feature' => $this->getInput('themeHeaderFeature'), + 'featureContent' => $this->getInput('themeHeaderContent', null) ]]); // Modification de la position du menu selon la position de la bannière if ( $this->getData(['theme','header','position']) == 'site' ) @@ -474,7 +485,8 @@ class theme extends common { $this->addOutput([ 'title' => 'Personnalisation de la bannière', 'vendor' => [ - 'tinycolorpicker' + 'tinycolorpicker', + 'tinymce' ], 'view' => 'header' ]); @@ -504,6 +516,7 @@ class theme extends common { 'fontSize' => $this->getInput('themeMenuFontSize'), 'fontWeight' => $this->getInput('themeMenuFontWeight'), 'height' => $this->getInput('themeMenuHeight'), + 'container' => $this->getInput('themeMenuContainer'), 'loginLink' => $this->getInput('themeMenuLoginLink', helper::FILTER_BOOLEAN), 'margin' => $this->getInput('themeMenuMargin', helper::FILTER_BOOLEAN), 'position' => $this->getInput('themeMenuPosition'), diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index 87e2a974..896b0d2a 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -17,51 +17,40 @@

Paramètres

-
+
+ 'Nature de contenu', + 'selected' => $this->getData(['theme', 'header', 'feature']) + ]); ?> +
+
'Position', 'selected' => $this->getData(['theme', 'header', 'position']) ]); ?>
-
- 'Adaptation', - 'selected' => $this->getData(['theme', 'header', 'imageContainer']), - 'help' => 'Les modes responsives permettent de conserver des dimensions proportionnelles.
- Cover pour une image plus grande que la bannière, Contain pour une image plus petite. - Les modes Auto et Etiré ne provoquent pas de modification de la hauteur de la bannière.' - ]); ?> -
-
- 'Hauteur maximale', - 'selected' => $this->getData(['theme', 'header', 'height']), - 'help' => 'La hauteur maximale est de 600 pixels, même si les dimensions de l\'image sélectionnée sont supérieures.
Lorsque l\'adaptation est positionnée sur Responsive, la hauteur diminue proportionnellement à la largeur.' - ]); ?> -
-
- 'Alignement du contenu', - 'selected' => $this->getData(['theme', 'header', 'textAlign']) - ]); ?> -
-
-
+
$this->getData(['theme', 'header', 'tinyHidden']) ]); ?>
-
+
$this->getData(['theme', 'header', 'margin']) ]); ?>
+
+ 'Largeur', + 'selected' => $this->getData(['theme', 'header', 'container']) + ]); ?> +
@@ -94,7 +83,42 @@
-

Image

+

Mise en forme du titre

+
+
+ 'Police', + 'selected' => $this->getData(['theme', 'header', 'font']), + 'fonts' => true + ]); ?> +
+
+ 'Taille', + 'help' => 'Proportionnelle à celle définie dans le site.', + 'selected' => $this->getData(['theme', 'header', 'fontSize']) + ]); ?> +
+
+ 'Style', + 'selected' => $this->getData(['theme', 'header', 'fontWeight']) + ]); ?> +
+
+ 'Casse', + 'selected' => $this->getData(['theme', 'header', 'textTransform']) + ]); ?> +
+
+
+
+
+
+
+
+

Papier peint

-

Mise en forme du texte

+

Contenu personnalisé

-
- 'Police', - 'selected' => $this->getData(['theme', 'header', 'font']), - 'fonts' => true - ]); ?> -
-
- 'Taille', - 'help' => 'Proportionnelle à celle définie dans le site.', - 'selected' => $this->getData(['theme', 'header', 'fontSize']) - ]); ?> -
-
- 'Style', - 'selected' => $this->getData(['theme', 'header', 'fontWeight']) - ]); ?> -
-
- 'Casse', - 'selected' => $this->getData(['theme', 'header', 'textTransform']) - ]); ?> +
+ 'editorWysiwyg', + 'value' => $this->getData(['theme', 'header', 'featureContent']) + ]); ?>
diff --git a/core/module/theme/view/menu/menu.php b/core/module/theme/view/menu/menu.php index 87746bb6..4346739b 100644 --- a/core/module/theme/view/menu/menu.php +++ b/core/module/theme/view/menu/menu.php @@ -32,21 +32,27 @@ ?>
+ 'Largeur', + 'selected' => $this->getData(['theme', 'menu', 'container']) + ]); ?> +
+
+
+
'Bords arrondis', 'selected' => $this->getData(['theme', 'menu', 'radius']), 'help' => 'Autour de la page sélectionnée' ]); ?>
-
-
-
+
'Hauteur', 'selected' => $this->getData(['theme', 'menu', 'height']) ]); ?>
-
+
'Alignement du contenu', 'selected' => $this->getData(['theme', 'menu', 'textAlign']) From 91579cf0bc04b9db9668c873195b53b400a933bf Mon Sep 17 00:00:00 2001 From: SylvainLelievre Date: Mon, 8 Nov 2021 17:59:33 +0100 Subject: [PATCH 059/277] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20lien=20vers?= =?UTF-8?q?=20la=20documentation=20dans=20user/view/import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/user/view/import/import.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/module/user/view/import/import.php b/core/module/user/view/import/import.php index a563c66c..a193d2cd 100644 --- a/core/module/user/view/import/import.php +++ b/core/module/user/view/import/import.php @@ -8,13 +8,15 @@ 'value' => 'Retour' ]); ?>
-
- 'buttonHelp', - 'ico' => 'help', - 'value' => 'Aide' - ]); ?> -
+
+ 'https://doc.zwiicms.fr/importation-d-une-liste-d-utilisateurs', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
'Importer' From 9d785957cb7ae0d44d698331ad2aef9f466f55c0 Mon Sep 17 00:00:00 2001 From: SylvainLelievre Date: Mon, 8 Nov 2021 18:09:22 +0100 Subject: [PATCH 060/277] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20lien=20vers?= =?UTF-8?q?=20la=20documentation=20dans=20user/view/import=20suite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/user/view/import/import.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/module/user/view/import/import.php b/core/module/user/view/import/import.php index a193d2cd..81e6a929 100644 --- a/core/module/user/view/import/import.php +++ b/core/module/user/view/import/import.php @@ -23,10 +23,6 @@ ]); ?>
- -
- -
From fea3ff40756db9284ef65a5c81770db4885cf76b Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 9 Nov 2021 13:29:53 +0100 Subject: [PATCH 061/277] site theme option bug margin --- core/module/theme/view/site/site.js.php | 37 ++++++++----------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/core/module/theme/view/site/site.js.php b/core/module/theme/view/site/site.js.php index fb5e4b77..8eaeaef1 100644 --- a/core/module/theme/view/site/site.js.php +++ b/core/module/theme/view/site/site.js.php @@ -11,35 +11,23 @@ * @link http://zwiicms.fr/ */ - /* - * Chargement de l'aperçu - */ -$(document).ready(function() { - - /** - * Option de marge si la taille n'est pas fluide - */ - if ($('#themeSiteWidth').val() === '100%') { - $("#themeSiteMargin").prop("checked", true); - $("#themeSiteMargin").addClass("disabled"); - } else { - $("#themeSiteMargin").addClass("enabled"); - } - - // Charger l'aperçu initial - previewDOM(); - -}); /** * Aperçu en direct */ -$("input, select").on("change",function() { - previewDOM(); -}); + $("input, select").on("change",function() { -function previewDOM() { + /** + * Option de marge si la taille n'est pas fluide + */ + if ($('#themeSiteWidth').val() === '100%') { + console.log ("pop"); + $("#themeSiteMarginWrapper").prop("checked", true); + $("#themeSiteMarginWrapper").hide(); + } else { + $("#themeSiteMarginWrapper").show(); + } /** * Aperçu dans la boîte @@ -96,7 +84,6 @@ function previewDOM() { // Couleur ou image de fond var backgroundImage = getData(['theme','body','image'])); ?>; - console.log(backgroundImage); var backgroundcolor = getdata(['theme','body','backgroundColor'])); ?>; if(backgroundImage) { css += "div.bodybackground{background-image:url(" + backgroundImage + ");background-repeat:" + $("#themeBodyImageRepeat").val() + ";background-position:" + $("#themeBodyImagePosition").val() + ";background-attachment:" + $("#themeBodyImageAttachment").val() + ";background-size:" + $("#themeBodyImageSize").val() + "}"; @@ -125,4 +112,4 @@ function previewDOM() { .text(css) .appendTo("head"); -}; +}).trigger("change"); \ No newline at end of file From bd233245019849484e66be032c6bba1ccc9005bb Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 9 Nov 2021 18:38:37 +0100 Subject: [PATCH 062/277] feautre Banner css + show and hide options --- core/core.php | 3 ++ core/layout/main.php | 7 ++--- core/module/theme/theme.php | 2 +- core/module/theme/view/header/header.js.php | 14 ++++++++++ core/module/theme/view/header/header.php | 31 +++++++++++++-------- 5 files changed, 40 insertions(+), 17 deletions(-) diff --git a/core/core.php b/core/core.php index 1fbe9adb..33e76636 100644 --- a/core/core.php +++ b/core/core.php @@ -2256,6 +2256,9 @@ class core extends common { $colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor'])); $css .= 'header span{color:' . $colors['normal'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'header', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}'; } + if ($this->getData(['theme','header','feature']) === 'feature' ) { + $css .= 'header{height:' . $this->getData(['theme', 'header', 'height']) . ';}'; ; + } // Menu $colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColor'])); $css .= 'nav,nav.navMain a{background-color:' . $colors['normal'] . '}'; diff --git a/core/layout/main.php b/core/layout/main.php index 519f20b1..4c6207af 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -74,7 +74,7 @@   - getData(['theme','header','content']);?> + getData(['theme','header','featureContent']);?>
@@ -115,8 +115,7 @@ ): ?> getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> -
+
getData(['theme','header','feature']) === 'wallpaper' ): ?>   - getData(['theme','header','content']);?> + getData(['theme','header','featureContent']);?>
diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index bc199963..c92a5aab 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -139,7 +139,7 @@ class theme extends common { ]; public static $headerFeatures = [ 'wallpaper' => 'Couleur unie ou papier-peint', - 'content' => 'Contenu personnalisé' + 'feature' => 'Contenu personnalisé' ]; public static $imagePositions = [ 'top left' => 'En haut à gauche', diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 9dbcd2cc..c8f5991f 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -103,6 +103,7 @@ $("input, select").on("change", function() { else { css += 'header{margin:0}'; } + // Position de la bannière var positionNav = getData(['theme', 'menu', 'position'])); ?>; var positionHeader = $("#themeHeaderPosition").val(); @@ -222,3 +223,16 @@ $("#themeHeaderPosition").on("change", function() { $("#themeHeaderSmallDisplay").slideDown(); } }).trigger("change"); + +// Affiche les blocs selon le type bannière +$("#themeHeaderFeature").on("change", function() { + if($(this).val() === 'wallpaper') { + $(".wallpaperContainer").show(); + $(".featureContainer").hide(); + } + if($(this).val() === 'feature') { + $(".featureContainer").show(); + $(".wallpaperContainer").hide(); + + } +}).trigger("change"); diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index 896b0d2a..c2e584ab 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -17,20 +17,33 @@

Paramètres

-
+
'Nature de contenu', 'selected' => $this->getData(['theme', 'header', 'feature']) ]); ?>
-
+
'Position', 'selected' => $this->getData(['theme', 'header', 'position']) ]); ?>
+
+ 'Hauteur maximale', + 'selected' => $this->getData(['theme', 'header', 'height']), + 'help' => 'La hauteur maximale est de 600 pixels, même si les dimensions de l\'image sélectionnée sont supérieures.
Lorsque l\'adaptation est positionnée sur Responsive, la hauteur diminue proportionnellement à la largeur.' + ]); ?> +
+
+ 'Largeur', + 'selected' => $this->getData(['theme', 'header', 'container']) + ]); ?> +
-
- 'Largeur', - 'selected' => $this->getData(['theme', 'header', 'container']) - ]); ?> -
-
+

Couleurs

@@ -80,7 +87,7 @@
-
+

Mise en forme du titre

@@ -115,7 +122,7 @@
-
+

Papier peint

@@ -170,7 +177,7 @@
-
+

Contenu personnalisé

From bc60e9b857f4e354aa7d1c4231156e5e4fbb8e53 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 9 Nov 2021 18:46:38 +0100 Subject: [PATCH 063/277] header.js en cours --- core/module/theme/view/header/header.js.php | 28 +++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index c8f5991f..d64405db 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -65,20 +65,22 @@ $("input, select").on("change", function() { var css = "@import url('https://fonts.googleapis.com/css?family=" + headerFont + "');"; // Couleurs, image, alignement et hauteur de la bannière - css += "header{background-color:" + $("#themeHeaderBackgroundColor").val() + ";text-align:" + $("#themeHeaderTextAlign").val() + ";"; - - if ($("#themeHeaderImage").val()) { - // Une image est sélectionnée - css += "background-image:url('site/file/source/" + $("#themeHeaderImage").val() + "');background-repeat:" + $("#themeHeaderImageRepeat").val() + ";background-position:" + $("#themeHeaderImagePosition").val() + ";"; - css += "background-size:" + $("#themeHeaderImageContainer").val() + ";"; - // Pas d'image sélectionnée - } else { - // Désactiver l'option responsive - css += "background-image:none;"; + if ($("#themeHeaderFeature") === "wallpaper") { + css += "header{background-color:" + $("#themeHeaderBackgroundColor").val() + ";text-align:" + $("#themeHeaderTextAlign").val() + ";"; + if ($("#themeHeaderImage").val()) { + // Une image est sélectionnée + css += "background-image:url('site/file/source/" + $("#themeHeaderImage").val() + "');background-repeat:" + $("#themeHeaderImageRepeat").val() + ";background-position:" + $("#themeHeaderImagePosition").val() + ";"; + css += "background-size:" + $("#themeHeaderImageContainer").val() + ";"; + // Pas d'image sélectionnée + } else { + // Désactiver l'option responsive + css += "background-image:none;"; + } + css += "line-height:" + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "}"; + } + if ($("#themeHeaderFeature") === "feature") { + css += "header{height:" + $("#themeHeaderHeight").val() + ";}"; } - - css += "line-height:" + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "}"; - // Taille, couleur, épaisseur et capitalisation du titre de la bannière css += "header span{color:" + $("#themeHeaderTextColor").val() + ";font-family:'" + headerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + "}"; From 8fdac9753e4742c9005bb19418095907c42486eb Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 9 Nov 2021 18:58:19 +0100 Subject: [PATCH 064/277] adaptation manquante + jquery en cours --- core/module/theme/view/header/header.js.php | 129 ++++++++++---------- core/module/theme/view/header/header.php | 13 +- 2 files changed, 76 insertions(+), 66 deletions(-) diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index d64405db..831c46a2 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -22,10 +22,70 @@ */ $("input, select").on("change", function() { + // Affiche / Cache les options de l'image du fond + $("#themeHeaderImage").on("change", function() { + if($(this).val()) { + $("#themeHeaderImageOptions").slideDown(); + } + else { + $("#themeHeaderImageOptions").slideUp(function() { + $("#themeHeaderTextHide").prop("checked", false).trigger("change"); + }); + } + }).trigger("change"); + + // Affiche / Cache les options de la position + $("#themeHeaderPosition").on("change", function() { + if($(this).val() === 'site') { + $("#themeHeaderPositionOptions").slideDown(); + } + else { + $("#themeHeaderPositionOptions").slideUp(function() { + $("#themeHeaderMargin").prop("checked", false).trigger("change"); + }); + } + }).trigger("change"); + + // Affiche / Cache les options de la bannière cliquable si pas masquée + $("#themeHeaderPosition").on("change", function() { + if($(this).val() === 'hide') { + $("#themeHeaderShow").slideUp(function() { + $("#themeHeaderlinkHome").prop("checked", false).trigger("change"); + }); + } + else { + $("#themeHeaderShow").slideDown(); + } + }).trigger("change"); + + // Affiche / Cache l'option bannière masquée en écran réduit + $("#themeHeaderPosition").on("change", function() { + if($(this).val() === 'hide') { + $("#themeHeaderSmallDisplay").slideUp(); + } + else { + $("#themeHeaderSmallDisplay").slideDown(); + } + }).trigger("change"); + + // Affiche les blocs selon le type bannière + $("#themeHeaderFeature").on("change", function() { + if($(this).val() === 'wallpaper') { + $(".wallpaperContainer").show(); + $(".featureContainer").hide(); + } + if($(this).val() === 'feature') { + $(".featureContainer").show(); + $(".wallpaperContainer").hide(); + + } + }).trigger("change"); + + + + // Récupérer la taille de l'image - var tmpImg = new Image(); - tmpImg.onload = function() { // Informations affichées $("#themeHeaderImageHeight").html(tmpImg.height + "px"); @@ -65,7 +125,8 @@ $("input, select").on("change", function() { var css = "@import url('https://fonts.googleapis.com/css?family=" + headerFont + "');"; // Couleurs, image, alignement et hauteur de la bannière - if ($("#themeHeaderFeature") === "wallpaper") { + console.log ($("#themeHeaderFeature").val()); + if ($("#themeHeaderFeature").val() == "wallpaper") { css += "header{background-color:" + $("#themeHeaderBackgroundColor").val() + ";text-align:" + $("#themeHeaderTextAlign").val() + ";"; if ($("#themeHeaderImage").val()) { // Une image est sélectionnée @@ -78,7 +139,7 @@ $("input, select").on("change", function() { } css += "line-height:" + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "}"; } - if ($("#themeHeaderFeature") === "feature") { + if ($("#themeHeaderFeature").val() == "feature") { css += "header{height:" + $("#themeHeaderHeight").val() + ";}"; } @@ -178,63 +239,3 @@ $("input, select").on("change", function() { .appendTo("head"); }).trigger("change"); - - -// Affiche / Cache les options de l'image du fond -$("#themeHeaderImage").on("change", function() { - if($(this).val()) { - $("#themeHeaderImageOptions").slideDown(); - } - else { - $("#themeHeaderImageOptions").slideUp(function() { - $("#themeHeaderTextHide").prop("checked", false).trigger("change"); - }); - } -}).trigger("change"); - -// Affiche / Cache les options de la position -$("#themeHeaderPosition").on("change", function() { - if($(this).val() === 'site') { - $("#themeHeaderPositionOptions").slideDown(); - } - else { - $("#themeHeaderPositionOptions").slideUp(function() { - $("#themeHeaderMargin").prop("checked", false).trigger("change"); - }); - } -}).trigger("change"); - -// Affiche / Cache les options de la bannière cliquable si pas masquée -$("#themeHeaderPosition").on("change", function() { - if($(this).val() === 'hide') { - $("#themeHeaderShow").slideUp(function() { - $("#themeHeaderlinkHome").prop("checked", false).trigger("change"); - }); - } - else { - $("#themeHeaderShow").slideDown(); - } -}).trigger("change"); - -// Affiche / Cache l'option bannière masquée en écran réduit -$("#themeHeaderPosition").on("change", function() { - if($(this).val() === 'hide') { - $("#themeHeaderSmallDisplay").slideUp(); - } - else { - $("#themeHeaderSmallDisplay").slideDown(); - } -}).trigger("change"); - -// Affiche les blocs selon le type bannière -$("#themeHeaderFeature").on("change", function() { - if($(this).val() === 'wallpaper') { - $(".wallpaperContainer").show(); - $(".featureContainer").hide(); - } - if($(this).val() === 'feature') { - $(".featureContainer").show(); - $(".wallpaperContainer").hide(); - - } -}).trigger("change"); diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index c2e584ab..82f238b4 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -141,13 +141,22 @@
-
+
'Répétition', 'selected' => $this->getData(['theme', 'header', 'imageRepeat']) ]); ?>
-
+
+ 'Adaptation', + 'selected' => $this->getData(['theme', 'header', 'imageContainer']), + 'help' => 'Les modes responsives permettent de conserver des dimensions proportionnelles.
+ Cover pour une image plus grande que la bannière, Contain pour une image plus petite. + Les modes Auto et Etiré ne provoquent pas de modification de la hauteur de la bannière.' + ]); ?> +
+
'Position', 'selected' => $this->getData(['theme', 'header', 'imagePosition']) From f5ea37e3b54fad3689fed3e74856c1a591a646f1 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 9 Nov 2021 22:31:31 +0100 Subject: [PATCH 065/277] =?UTF-8?q?Aper=C3=A7u=20=C3=A0=20finir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/layout/main.php | 6 +- core/module/theme/view/header/header.js.php | 275 ++++++++++---------- core/module/theme/view/header/header.php | 3 + 3 files changed, 148 insertions(+), 136 deletions(-) diff --git a/core/layout/main.php b/core/layout/main.php index 4c6207af..00598c84 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -74,7 +74,9 @@   - getData(['theme','header','featureContent']);?> +
+ getData(['theme','header','featureContent']);?> +
@@ -128,7 +130,9 @@   +
getData(['theme','header','featureContent']);?> +

diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 831c46a2..06a50068 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -22,149 +22,97 @@ */ $("input, select").on("change", function() { - // Affiche / Cache les options de l'image du fond - $("#themeHeaderImage").on("change", function() { - if($(this).val()) { - $("#themeHeaderImageOptions").slideDown(); - } - else { - $("#themeHeaderImageOptions").slideUp(function() { - $("#themeHeaderTextHide").prop("checked", false).trigger("change"); - }); - } - }).trigger("change"); - - // Affiche / Cache les options de la position - $("#themeHeaderPosition").on("change", function() { - if($(this).val() === 'site') { - $("#themeHeaderPositionOptions").slideDown(); - } - else { - $("#themeHeaderPositionOptions").slideUp(function() { - $("#themeHeaderMargin").prop("checked", false).trigger("change"); - }); - } - }).trigger("change"); - - // Affiche / Cache les options de la bannière cliquable si pas masquée - $("#themeHeaderPosition").on("change", function() { - if($(this).val() === 'hide') { - $("#themeHeaderShow").slideUp(function() { - $("#themeHeaderlinkHome").prop("checked", false).trigger("change"); - }); - } - else { - $("#themeHeaderShow").slideDown(); - } - }).trigger("change"); - - // Affiche / Cache l'option bannière masquée en écran réduit - $("#themeHeaderPosition").on("change", function() { - if($(this).val() === 'hide') { - $("#themeHeaderSmallDisplay").slideUp(); - } - else { - $("#themeHeaderSmallDisplay").slideDown(); - } - }).trigger("change"); - - // Affiche les blocs selon le type bannière - $("#themeHeaderFeature").on("change", function() { - if($(this).val() === 'wallpaper') { - $(".wallpaperContainer").show(); - $(".featureContainer").hide(); - } - if($(this).val() === 'feature') { - $(".featureContainer").show(); - $(".wallpaperContainer").hide(); - - } - }).trigger("change"); - - - - - // Récupérer la taille de l'image - var tmpImg = new Image(); - tmpImg.onload = function() { - // Informations affichées - $("#themeHeaderImageHeight").html(tmpImg.height + "px"); - $("#themeHeaderImageWidth").html(tmpImg.width + "px"); - $("#themeHeaderImageRatio").html(tmpImg.width / tmpImg.height); - - // Limiter la hauteur à 600 px - if (tmpImg.height > 600) { - tmpImgHeight = 600; - } else { - tmpImgHeight = tmpImg.height; - } - - //Modifier la dropdown liste si une image n'est pas sélectionnée - if ($("#themeHeaderImage").val() !== "" ) { - // Une image est ajoutée ou changée - if ($("#themeHeaderHeight option").length === 5) { - // Pas d'image précédemment on ajoute l'option - $("#themeHeaderHeight ").prepend(''); - } - // Modifier la valeur - $("#themeHeaderHeight option:eq(0)").val(tmpImgHeight + "px"); - // Modifier l'option - $("#themeHeaderHeight option:eq(0)").html("Hauteur de l\'image sélectionnée (" + tmpImgHeight + "px)"); - } - }; - - if ($("#themeHeaderImage").val() === "" && - $("#themeHeaderHeight option").length === 6 ) { - $("#themeHeaderHeight option:eq(0)").remove(); - } - - tmpImg.src= "" + "site/file/source/" + $("#themeHeaderImage").val(); - - // Import des polices de caractères - var headerFont = $("#themeHeaderFont").val(); - var css = "@import url('https://fonts.googleapis.com/css?family=" + headerFont + "');"; - - // Couleurs, image, alignement et hauteur de la bannière - console.log ($("#themeHeaderFeature").val()); - if ($("#themeHeaderFeature").val() == "wallpaper") { - css += "header{background-color:" + $("#themeHeaderBackgroundColor").val() + ";text-align:" + $("#themeHeaderTextAlign").val() + ";"; - if ($("#themeHeaderImage").val()) { - // Une image est sélectionnée - css += "background-image:url('site/file/source/" + $("#themeHeaderImage").val() + "');background-repeat:" + $("#themeHeaderImageRepeat").val() + ";background-position:" + $("#themeHeaderImagePosition").val() + ";"; - css += "background-size:" + $("#themeHeaderImageContainer").val() + ";"; - // Pas d'image sélectionnée - } else { - // Désactiver l'option responsive - css += "background-image:none;"; - } - css += "line-height:" + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "}"; - } + // Contenu perso if ($("#themeHeaderFeature").val() == "feature") { css += "header{height:" + $("#themeHeaderHeight").val() + ";}"; + $("#featureContent").appendTo("#headerContainer").show(); + $("#themeHeaderTitle").hide(); + $("header").css("background-color", ""); + $("header").css("background-image", "none"); + $("header").css("height", ""); + $("header").css("line-height", "1.5"); + $("header").css("text-align", ""); + + } - // Taille, couleur, épaisseur et capitalisation du titre de la bannière - css += "header span{color:" + $("#themeHeaderTextColor").val() + ";font-family:'" + headerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + "}"; - // Cache le titre de la bannière + // Couleurs, image, alignement et hauteur de la bannière + if ($("#themeHeaderFeature").val() == "wallpaper") { - if($("#themeHeaderTextHide").is(":checked")) { - $("header #themeHeaderTitle").hide(); - } - else { - $("header #themeHeaderTitle").show(); - } + // Récupérer la taille de l'image + var tmpImg = new Image(); + tmpImg.onload = function() { + // Informations affichées + $("#themeHeaderImageHeight").html(tmpImg.height + "px"); + $("#themeHeaderImageWidth").html(tmpImg.width + "px"); + $("#themeHeaderImageRatio").html(tmpImg.width / tmpImg.height); - // Marge - if($("#themeHeaderMargin").is(":checked")) { - if(getData(['theme', 'menu', 'position']) === 'site-first'); ?>) { - css += 'header{margin:0 20px}'; + // Limiter la hauteur à 600 px + if (tmpImg.height > 600) { + tmpImgHeight = 600; + } else { + tmpImgHeight = tmpImg.height; + } + + //Modifier la dropdown liste si une image n'est pas sélectionnée + if ($("#themeHeaderImage").val() !== "" ) { + // Une image est ajoutée ou changée + if ($("#themeHeaderHeight option").length === 5) { + // Pas d'image précédemment on ajoute l'option + $("#themeHeaderHeight ").prepend(''); + } + // Modifier la valeur + $("#themeHeaderHeight option:eq(0)").val(tmpImgHeight + "px"); + // Modifier l'option + $("#themeHeaderHeight option:eq(0)").html("Hauteur de l\'image sélectionnée (" + tmpImgHeight + "px)"); + } + }; + + if ($("#themeHeaderImage").val() === "" && + $("#themeHeaderHeight option").length === 6 ) { + $("#themeHeaderHeight option:eq(0)").remove(); + } + + tmpImg.src= "" + "site/file/source/" + $("#themeHeaderImage").val(); + + // Import des polices de caractères + var headerFont = $("#themeHeaderFont").val(); + var css = "@import url('https://fonts.googleapis.com/css?family=" + headerFont + "');"; + + css += "header{background-color:" + $("#themeHeaderBackgroundColor").val() + ";text-align:" + $("#themeHeaderTextAlign").val() + ";"; + if ($("#themeHeaderImage").val()) { + // Une image est sélectionnée + css += "background-image:url('site/file/source/" + $("#themeHeaderImage").val() + "');background-repeat:" + $("#themeHeaderImageRepeat").val() + ";background-position:" + $("#themeHeaderImagePosition").val() + ";"; + css += "background-size:" + $("#themeHeaderImageContainer").val() + ";"; + // Pas d'image sélectionnée + } else { + // Désactiver l'option responsive + 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{color:" + $("#themeHeaderTextColor").val() + ";font-family:'" + headerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + "}"; + // Cache le titre de la bannière + + if($("#themeHeaderTextHide").is(":checked")) { + $("header #themeHeaderTitle").hide(); } else { - css += 'header{margin:20px 20px 0 20px}'; + $("header #themeHeaderTitle").show(); + } + + // Marge + if($("#themeHeaderMargin").is(":checked")) { + if(getData(['theme', 'menu', 'position']) === 'site-first'); ?>) { + css += 'header{margin:0 20px}'; + } else { + css += 'header{margin:20px 20px 0 20px}'; + } + } else { + css += 'header{margin:0}'; } - } - else { - css += 'header{margin:0}'; } // Position de la bannière @@ -228,7 +176,7 @@ $("input, select").on("change", function() { positionNav === "site-second" )) { $("nav").show().prependTo("#site"); - } + } // Ajout du css au DOM $("#themePreview").remove(); @@ -239,3 +187,60 @@ $("input, select").on("change", function() { .appendTo("head"); }).trigger("change"); +// Affiche / Cache les options de l'image du fond +$("#themeHeaderImage").on("change", function() { + if($(this).val()) { + $("#themeHeaderImageOptions").slideDown(); + } + else { + $("#themeHeaderImageOptions").slideUp(function() { + $("#themeHeaderTextHide").prop("checked", false).trigger("change"); + }); + } +}).trigger("change"); + +// Affiche / Cache les options de la position +$("#themeHeaderPosition").on("change", function() { + if($(this).val() === 'site') { + $("#themeHeaderPositionOptions").slideDown(); + } + else { + $("#themeHeaderPositionOptions").slideUp(function() { + $("#themeHeaderMargin").prop("checked", false).trigger("change"); + }); + } +}).trigger("change"); + +// Affiche / Cache les options de la bannière cliquable si pas masquée +$("#themeHeaderPosition").on("change", function() { + if($(this).val() === 'hide') { + $("#themeHeaderShow").slideUp(function() { + $("#themeHeaderlinkHome").prop("checked", false).trigger("change"); + }); + } + else { + $("#themeHeaderShow").slideDown(); + } +}).trigger("change"); + +// Affiche / Cache l'option bannière masquée en écran réduit +$("#themeHeaderPosition").on("change", function() { + if($(this).val() === 'hide') { + $("#themeHeaderSmallDisplay").slideUp(); + } + else { + $("#themeHeaderSmallDisplay").slideDown(); + } +}).trigger("change"); + +// Affiche les blocs selon le type bannière +$("#themeHeaderFeature").on("change", function() { + if($(this).val() === 'wallpaper') { + $(".wallpaperContainer").show(); + $(".featureContainer").hide(); + } + if($(this).val() === 'feature') { + $(".featureContainer").show(); + $(".wallpaperContainer").hide(); + } +}).trigger("change"); \ No newline at end of file diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index 82f238b4..f62dcfdc 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -201,4 +201,7 @@

+
+ getData(['theme','header','featureContent']);?> +
From 51fdad314a9af6e1e60122accca68e243e0e2c27 Mon Sep 17 00:00:00 2001 From: SylvainLelievre Date: Wed, 10 Nov 2021 08:03:31 +0100 Subject: [PATCH 066/277] =?UTF-8?q?Boutons=20d'aide=20pour=20le=20th=C3=A8?= =?UTF-8?q?me?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/view/body/body.php | 13 +++++++++++-- core/module/theme/view/footer/footer.php | 11 ++++++++++- core/module/theme/view/header/header.php | 13 +++++++++++-- core/module/theme/view/index/index.php | 24 +++++++++++++++++++++++- core/module/theme/view/menu/menu.php | 11 ++++++++++- core/module/theme/view/site/site.php | 13 +++++++++++-- 6 files changed, 76 insertions(+), 9 deletions(-) diff --git a/core/module/theme/view/body/body.php b/core/module/theme/view/body/body.php index aa717fa1..172d8981 100644 --- a/core/module/theme/view/body/body.php +++ b/core/module/theme/view/body/body.php @@ -8,7 +8,16 @@ 'value' => 'Retour' ]); ?>

-
+
+ 'https://doc.zwiicms.fr/arriere-plan', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
@@ -96,4 +105,4 @@

- \ 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 ff97d425..5c7e2bf2 100644 --- a/core/module/theme/view/footer/footer.php +++ b/core/module/theme/view/footer/footer.php @@ -8,7 +8,16 @@ 'value' => 'Retour' ]); ?>

-
+
+ 'https://doc.zwiicms.fr/pied-de-page', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index 87e2a974..d95f2d97 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -8,7 +8,16 @@ 'value' => 'Retour' ]); ?>
-
+
+ 'https://doc.zwiicms.fr/banniere', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
@@ -53,7 +62,7 @@ $this->getData(['theme', 'header', 'tinyHidden']) ]); ?> -

+

diff --git a/core/module/theme/view/index/index.php b/core/module/theme/view/index/index.php index 60be6151..03ae5274 100644 --- a/core/module/theme/view/index/index.php +++ b/core/module/theme/view/index/index.php @@ -45,6 +45,17 @@ ]); ?>
+
+
+ 'https://doc.zwiicms.fr/theme-2', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
@@ -80,4 +91,15 @@ ]); ?>
- \ No newline at end of file +
+
+ 'https://doc.zwiicms.fr/theme-2', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
+ diff --git a/core/module/theme/view/menu/menu.php b/core/module/theme/view/menu/menu.php index 87746bb6..3a765f2b 100644 --- a/core/module/theme/view/menu/menu.php +++ b/core/module/theme/view/menu/menu.php @@ -8,7 +8,16 @@ 'value' => 'Retour' ]); ?>
-
+
+ 'https://doc.zwiicms.fr/menu', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
diff --git a/core/module/theme/view/site/site.php b/core/module/theme/view/site/site.php index 94ef50b3..636668b5 100644 --- a/core/module/theme/view/site/site.php +++ b/core/module/theme/view/site/site.php @@ -8,7 +8,16 @@ 'value' => 'Retour' ]); ?>
-
+
+ 'https://doc.zwiicms.fr/site61863d315ffe0', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' + ]); ?> +
+
@@ -194,4 +203,4 @@
- \ No newline at end of file + From af0f00744a2cb316ac4c6e3003cee5efc8353927 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 10 Nov 2021 09:58:11 +0100 Subject: [PATCH 067/277] =?UTF-8?q?Index=20du=20th=C3=A8me?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/view/index/index.css | 3 +- core/module/theme/view/index/index.php | 116 ++++++++++++------------- 2 files changed, 58 insertions(+), 61 deletions(-) diff --git a/core/module/theme/view/index/index.css b/core/module/theme/view/index/index.css index c24d1e12..e7cbdb9e 100755 --- a/core/module/theme/view/index/index.css +++ b/core/module/theme/view/index/index.css @@ -36,7 +36,8 @@ nav li ul { } #themeShowAll, -#themeBack, +#themeHelp, +#themeBack, #themeManage, #themeAdmin, #themeAdvanced { diff --git a/core/module/theme/view/index/index.php b/core/module/theme/view/index/index.php index 03ae5274..85f0a16f 100644 --- a/core/module/theme/view/index/index.php +++ b/core/module/theme/view/index/index.php @@ -5,7 +5,7 @@ ): ?>
-
+
'buttonGrey', 'href' => helper::baseUrl(false), @@ -13,32 +13,16 @@ 'value' => 'Accueil' ]); ?>
-
- 'brush', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/admin', - 'value' => 'Administration' +
+ 'https://doc.zwiicms.fr/theme-2', + 'target' => '_blank', + 'ico' => 'help', + 'value' => 'Aide', + 'class' => 'buttonHelp' ]); ?>
-
-
-
- 'cogs', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', - 'value' => 'Gestion' - ]); ?> -
-
- 'code', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced', - 'value' => 'Éditeur CSS' - ]); ?> -
-
-
-
+
'eye', 'value' => 'Zones cachées' @@ -46,20 +30,33 @@
-
- 'https://doc.zwiicms.fr/theme-2', - 'target' => '_blank', - 'ico' => 'help', - 'value' => 'Aide', - 'class' => 'buttonHelp' +
+ 'cogs', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', + 'value' => 'Gestion' + ]); ?> +
+
+ 'brush', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/admin', + 'value' => 'Administration' + ]); ?> + +
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced', + 'value' => 'Éditeur CSS' ]); ?>
-
+
'buttonGrey', 'href' => helper::baseUrl(false), @@ -67,33 +64,8 @@ 'value' => 'Accueil' ]); ?>
-
- 'brush', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/admin', - 'value' => 'Administration' - ]); ?> -
-
-
-
- helper::baseUrl() . $this->getUrl(0) . '/manage', - 'ico' => 'cogs', - 'value' => 'Gestion' - ]); ?> -
-
- helper::baseUrl() . $this->getUrl(0) . '/advanced', - 'value' => 'Éditeur CSS', - 'ico' => 'code' - ]); ?> -
-
-
-
- + 'https://doc.zwiicms.fr/theme-2', 'target' => '_blank', 'ico' => 'help', @@ -102,4 +74,28 @@ ]); ?>
+
+
+ 'cogs', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/manage', + 'value' => 'Gestion' + ]); ?> +
+
+ 'brush', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/admin', + 'value' => 'Administration' + ]); ?> + +
+
+ 'code', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced', + 'value' => 'Éditeur CSS' + ]); ?> +
+
From ac3f74581e1e101422fd2ee41d54019517e5497b Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 10 Nov 2021 14:59:34 +0100 Subject: [PATCH 068/277] Supprimer attribut style --- core/module/theme/view/header/header.js.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 06a50068..098af0cd 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -27,11 +27,11 @@ $("input, select").on("change", function() { css += "header{height:" + $("#themeHeaderHeight").val() + ";}"; $("#featureContent").appendTo("#headerContainer").show(); $("#themeHeaderTitle").hide(); - $("header").css("background-color", ""); - $("header").css("background-image", "none"); - $("header").css("height", ""); - $("header").css("line-height", "1.5"); - $("header").css("text-align", ""); + //$("header").css("background-color", ""); + //$("header").css("background-image", "none"); + $("header").removeAttr("style"); + //$("header").css("line-height", "1.5"); + //$("header").css("text-align", ""); } From 4150fa72f1c2e74430e7e12687c23f467e9334f9 Mon Sep 17 00:00:00 2001 From: SylvainLelievre Date: Wed, 10 Nov 2021 17:12:34 +0100 Subject: [PATCH 069/277] id theme menu body footer header --- core/module/theme/view/body/body.php | 2 +- core/module/theme/view/footer/footer.php | 2 +- core/module/theme/view/header/header.php | 2 +- core/module/theme/view/menu/menu.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/module/theme/view/body/body.php b/core/module/theme/view/body/body.php index 172d8981..5a16aef9 100644 --- a/core/module/theme/view/body/body.php +++ b/core/module/theme/view/body/body.php @@ -9,7 +9,7 @@ ]); ?>
- 'https://doc.zwiicms.fr/arriere-plan', 'target' => '_blank', 'ico' => 'help', diff --git a/core/module/theme/view/footer/footer.php b/core/module/theme/view/footer/footer.php index 5c7e2bf2..874f37e3 100644 --- a/core/module/theme/view/footer/footer.php +++ b/core/module/theme/view/footer/footer.php @@ -9,7 +9,7 @@ ]); ?>
- 'https://doc.zwiicms.fr/pied-de-page', 'target' => '_blank', 'ico' => 'help', diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index d95f2d97..247fe646 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -9,7 +9,7 @@ ]); ?>
- 'https://doc.zwiicms.fr/banniere', 'target' => '_blank', 'ico' => 'help', diff --git a/core/module/theme/view/menu/menu.php b/core/module/theme/view/menu/menu.php index 3a765f2b..2ea672e4 100644 --- a/core/module/theme/view/menu/menu.php +++ b/core/module/theme/view/menu/menu.php @@ -9,7 +9,7 @@ ]); ?>
- 'https://doc.zwiicms.fr/menu', 'target' => '_blank', 'ico' => 'help', From 4572612051a9dc1ec23e5bf17a1f7d8aee1d3cde Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 11 Nov 2021 15:54:57 +0100 Subject: [PATCH 070/277] textAlign Manquant + jquery en cours --- core/layout/main.php | 70 ++++++++++----------- core/module/theme/view/header/header.js.php | 15 ++--- core/module/theme/view/header/header.php | 39 +++++++----- 3 files changed, 65 insertions(+), 59 deletions(-) diff --git a/core/layout/main.php b/core/layout/main.php index 00598c84..be95c35d 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -58,27 +58,29 @@ - getData(['theme', 'header', 'position']) === 'body'): ?> -
getData(['theme', 'header', 'tinyHidden']) === true): ?>class="bannerDisplay"> - - getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> - +   + + +
+ getData(['theme','header','featureContent']);?> +
+
getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> @@ -118,23 +120,21 @@ getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?>
-
- getData(['theme','header','feature']) === 'wallpaper' ): ?> - getData(['theme', 'header', 'textHide']) === false - // Affiche toujours le titre de la bannière pour l'édition du thème - OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') - ): ?> - getData(['locale', 'title']); ?> - -   - + getData(['theme','header','feature']) === 'wallpaper' ): ?> + getData(['theme', 'header', 'textHide']) === false + // Affiche toujours le titre de la bannière pour l'édition du thème + OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') + ): ?> + getData(['locale', 'title']); ?> -
- getData(['theme','header','featureContent']);?> -
+   -
+ +
+ getData(['theme','header','featureContent']);?> +
+
getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '
' : ''; ?> diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 098af0cd..92a9f88a 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -21,19 +21,16 @@ * Aperçu en direct */ $("input, select").on("change", function() { + + var css = ""; // Contenu perso if ($("#themeHeaderFeature").val() == "feature") { - css += "header{height:" + $("#themeHeaderHeight").val() + ";}"; - $("#featureContent").appendTo("#headerContainer").show(); + css = "header{height:" + $("#themeHeaderHeight").val() + ";line-height:1.3;background-color:'';background-image:'none'!important;}"; + $("#featureContent").append("header").show(); $("#themeHeaderTitle").hide(); - //$("header").css("background-color", ""); - //$("header").css("background-image", "none"); - $("header").removeAttr("style"); - //$("header").css("line-height", "1.5"); - //$("header").css("text-align", ""); - - + $("header").css("background-image", "none"); + $("header").css("background-color", ""); } // Couleurs, image, alignement et hauteur de la bannière diff --git a/core/module/theme/view/header/header.php b/core/module/theme/view/header/header.php index 26264f59..a5f67d51 100644 --- a/core/module/theme/view/header/header.php +++ b/core/module/theme/view/header/header.php @@ -32,12 +32,7 @@ 'selected' => $this->getData(['theme', 'header', 'feature']) ]); ?>
-
- 'Position', - 'selected' => $this->getData(['theme', 'header', 'position']) - ]); ?> -
+
'Hauteur maximale', @@ -45,14 +40,14 @@ 'help' => 'La hauteur maximale est de 600 pixels, même si les dimensions de l\'image sélectionnée sont supérieures.
Lorsque l\'adaptation est positionnée sur Responsive, la hauteur diminue proportionnellement à la largeur.' ]); ?>
-
-
- 'Largeur', - 'selected' => $this->getData(['theme', 'header', 'container']) + 'Position', + 'selected' => $this->getData(['theme', 'header', 'position']) ]); ?>
+
+
+
+ 'Largeur', + 'selected' => $this->getData(['theme', 'header', 'container']) + ]); ?> +
@@ -101,32 +102,40 @@

Mise en forme du titre

-
+
'Police', 'selected' => $this->getData(['theme', 'header', 'font']), 'fonts' => true ]); ?>
-
+
'Taille', 'help' => 'Proportionnelle à celle définie dans le site.', 'selected' => $this->getData(['theme', 'header', 'fontSize']) ]); ?>
-
+
'Style', 'selected' => $this->getData(['theme', 'header', 'fontWeight']) ]); ?>
-
+
+
+
'Casse', 'selected' => $this->getData(['theme', 'header', 'textTransform']) ]); ?>
+
+ 'Alignement du contenu', + 'selected' => $this->getData(['theme', 'header', 'textAlign']) + ]); ?> +
From 7db65c45b18e805e8bd3a3a0365059b6cfb74692 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 11 Nov 2021 16:25:43 +0100 Subject: [PATCH 071/277] =?UTF-8?q?largeur=20de=20la=20banni=C3=A8re=20hor?= =?UTF-8?q?s=20le=20site?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/view/header/header.js.php | 27 +++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 92a9f88a..0691dc8d 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -26,16 +26,17 @@ $("input, select").on("change", function() { // Contenu perso if ($("#themeHeaderFeature").val() == "feature") { - css = "header{height:" + $("#themeHeaderHeight").val() + ";line-height:1.3;background-color:'';background-image:'none'!important;}"; - $("#featureContent").append("header").show(); + css = "header{height:" + $("#themeHeaderHeight").val() + ";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(); - $("header").css("background-image", "none"); - $("header").css("background-color", ""); + } // Couleurs, image, alignement et hauteur de la bannière if ($("#themeHeaderFeature").val() == "wallpaper") { + // Masque le contenu perso + $("#featureContent").hide(); // Récupérer la taille de l'image var tmpImg = new Image(); tmpImg.onload = function() { @@ -91,13 +92,13 @@ $("input, select").on("change", function() { // Taille, couleur, épaisseur et capitalisation du titre de la bannière css += "header span{color:" + $("#themeHeaderTextColor").val() + ";font-family:'" + headerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + "}"; + // Cache le titre de la bannière - if($("#themeHeaderTextHide").is(":checked")) { - $("header #themeHeaderTitle").hide(); + $("#themeHeaderTitle").hide(); } else { - $("header #themeHeaderTitle").show(); + $("#themeHeaderTitle").show(); } // Marge @@ -165,6 +166,18 @@ $("input, select").on("change", function() { } } + // Largeur du header + switch ($("#themeHeaderContainer").val()) { + case "container": + $("header").removeClass("container-large"); + $("header").addClass("container"); + break; + case "container-large": + $("header").removeClass("container"); + $("header").addClass("container-large"); + break; + } + // La bannière est cachée, déplacer le menu dans le site if (positionHeader === "hide" && (positionNav === "body-first" || From 92e5f06d46aca8b31ec49fec673eb2d64d36a5f3 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 11 Nov 2021 16:29:20 +0100 Subject: [PATCH 072/277] options animation largeur --- core/module/theme/view/header/header.js.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 0691dc8d..156435b3 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -212,9 +212,13 @@ $("#themeHeaderImage").on("change", function() { // Affiche / Cache les options de la position $("#themeHeaderPosition").on("change", function() { if($(this).val() === 'site') { + $("#themeHeaderContainerWrapper").slideUp(); $("#themeHeaderPositionOptions").slideDown(); } else { + if($(this).val() === 'hide') { + $("#themeHeaderContainerWrapper").slideUp(); + } $("#themeHeaderPositionOptions").slideUp(function() { $("#themeHeaderMargin").prop("checked", false).trigger("change"); }); From 0984abc2058200097011b2780386bbad5704ace6 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 11 Nov 2021 16:31:54 +0100 Subject: [PATCH 073/277] =?UTF-8?q?Libell=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index c92a5aab..abe71a0e 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -70,8 +70,8 @@ class theme extends common { 'Vollkorn' => 'Vollkorn' ]; public static $containers = [ - 'container' => 'Largeur du site', - 'container-large' => 'Largeur de la page' + 'container' => 'Du site', + 'container-large' => 'De la page' ]; public static $footerblocks = [ 1 => [ From 0c1c3a742395c7c44756c0d84af8bc5780b45720 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 12 Nov 2021 09:54:10 +0100 Subject: [PATCH 074/277] =?UTF-8?q?alignement=20=C3=A0=20droite=20en=20cou?= =?UTF-8?q?rs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 abe71a0e..16f727f8 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -71,7 +71,7 @@ class theme extends common { ]; public static $containers = [ 'container' => 'Du site', - 'container-large' => 'De la page' + '' => 'De la page' ]; public static $footerblocks = [ 1 => [ From a1e274537eb5fef8200ac115c572ebd1c4d5a889 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 12 Nov 2021 10:59:09 +0100 Subject: [PATCH 075/277] =?UTF-8?q?Largeur=20de=20la=20page=20sans=20la=20?= =?UTF-8?q?marge=20=C3=A0=20droite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/layout/main.php | 2 +- core/module/theme/theme.php | 2 +- core/module/theme/view/header/header.js.php | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/layout/main.php b/core/layout/main.php index be95c35d..67d8664a 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -62,7 +62,7 @@ getData(['theme', 'header', 'position']) === 'hide' ? 'displayNone' : ' '; $headerClass .= $this->getData(['theme', 'header', 'tinyHidden']) ? ' bannerDisplay ' : ' '; - $headerClass .= $this->getData(['theme', 'header', 'container']); + $headerClass .= $this->getData(['theme', 'header', 'container']) === 'none' ? '' : 'container'; ?>
getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 16f727f8..3c0af9f3 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -71,7 +71,7 @@ class theme extends common { ]; public static $containers = [ 'container' => 'Du site', - '' => 'De la page' + 'none' => 'De la page' ]; public static $footerblocks = [ 1 => [ diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index 156435b3..a71c463f 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -169,12 +169,10 @@ $("input, select").on("change", function() { // Largeur du header switch ($("#themeHeaderContainer").val()) { case "container": - $("header").removeClass("container-large"); $("header").addClass("container"); break; - case "container-large": + case "none": $("header").removeClass("container"); - $("header").addClass("container-large"); break; } From 6fe1ecb294d356be265828ff1df4b361fc711124 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 12 Nov 2021 11:44:40 +0100 Subject: [PATCH 076/277] =?UTF-8?q?=20banni=C3=A8re=20=20:=20hauteur=20dyn?= =?UTF-8?q?amique=20selon=20contenu=20perso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 6 ++++-- core/core.php | 6 +++++- core/layout/main.php | 6 +++--- core/module/theme/theme.php | 8 ++++---- core/module/theme/view/header/header.js.php | 10 +++++++++- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 05363257..cf402123 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,8 +1,10 @@ # Changelog ## Version 11.2.00 -- Modifications : - - Disposition des options de configuration du site. +- Modifications : + Thème : + - Disposition des options de configuration du site. + - Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page. - Pages : il est désormais possible de donner un nom de page court qui sera utilisé dans le menu du site, dans les abrres latérales et dans les sélecteurs de page (éditeur / lien). En revanche le nom de la page affiché en haut de celle-ci est inchangé. Dans la plupart des cas le titre court sera identique au titre. - Les écrans d'aide renvoient vers le site doc.zwiicms.fr - Mise en évidence du statut des pages dans la liste de la barre d'administration. Rouge italique : page orpheline ; Orange gras page inactive. diff --git a/core/core.php b/core/core.php index 3da8feba..ea373aa3 100644 --- a/core/core.php +++ b/core/core.php @@ -2256,7 +2256,11 @@ class core extends common { $css .= 'header span{color:' . $colors['normal'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'header', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}'; } if ($this->getData(['theme','header','feature']) === 'feature' ) { - $css .= 'header{height:' . $this->getData(['theme', 'header', 'height']) . ';}'; ; + // Hauteur de la taille du contenu perso + if ($this->getData(['theme', 'header', 'height']) !== 'none') { + $css .= 'header{height:' . $this->getData(['theme', 'header', 'height']) . ';}'; + } + } // Menu $colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColor'])); diff --git a/core/layout/main.php b/core/layout/main.php index 67d8664a..c1a81f32 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -60,11 +60,11 @@ getData(['theme', 'header', 'position']) === 'body'): ?> getData(['theme', 'header', 'position']) === 'hide' ? 'displayNone' : ' '; - $headerClass .= $this->getData(['theme', 'header', 'tinyHidden']) ? ' bannerDisplay ' : ' '; + $headerClass = $this->getData(['theme', 'header', 'position']) === 'hide' ? 'displayNone' : ''; + $headerClass .= $this->getData(['theme', 'header', 'tinyHidden']) ? ' bannerDisplay ' : ''; $headerClass .= $this->getData(['theme', 'header', 'container']) === 'none' ? '' : 'container'; ?> -
+
> getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '' : ''; ?> getData(['theme','header','feature']) === 'wallpaper' ): ?> 'Vollkorn' ]; public static $containers = [ - 'container' => 'Du site', - 'none' => 'De la page' + 'container' => 'Limitée au site', + 'none' => 'Etendue sur la page' ]; public static $footerblocks = [ 1 => [ @@ -125,12 +125,12 @@ class theme extends common { '2.4vmax' => 'Très grande (240%)' ]; public static $headerHeights = [ - 'none' => 'Hauteur de l\'image sélectionnée', + 'none' => 'Libre', // texte dynamique cf header.js.php '100px' => 'Très petite (100px) ', '150px' => 'Petite (150px)', '200px' => 'Moyenne (200px)', '300px' => 'Grande (300px)', - '400px' => 'Très grande (400px)' + '400px' => 'Très grande (400px)', ]; public static $headerPositions = [ 'body' => 'Au dessus du site', diff --git a/core/module/theme/view/header/header.js.php b/core/module/theme/view/header/header.js.php index a71c463f..806b9202 100644 --- a/core/module/theme/view/header/header.js.php +++ b/core/module/theme/view/header/header.js.php @@ -26,10 +26,18 @@ $("input, select").on("change", function() { // Contenu perso if ($("#themeHeaderFeature").val() == "feature") { - css = "header{height:" + $("#themeHeaderHeight").val() + ";background-position:top; background-repeat: no-repeat;;line-height:1.15;background-color:unset;;background-image:unset;text-align:unset}"; + var headerHeight = $("#themeHeaderHeight").val(); + if (headerHeight === 'none') { + css = "header{height:unset; background-position:top; background-repeat: no-repeat;;line-height:1.15;background-color:unset;;background-image:unset;text-align:unset}"; + } else { + css = "header{height:" + $("#themeHeaderHeight").val() + ";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(); + // Modifier le texte du sélecteur de hauteur + $("#themeHeaderHeight option:eq(0)").text("Hauteur du contenu personnalisé"); } // Couleurs, image, alignement et hauteur de la bannière From c9679ec4c5e551f636e38ab89b9c041c331a8cc6 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 12 Nov 2021 12:59:58 +0100 Subject: [PATCH 077/277] =?UTF-8?q?Aper=C3=A7u=20du=20menu=20=20+=20marges?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/layout/common.css | 5 +++++ core/layout/main.php | 28 ++++++++++++++++++++++--- core/module/theme/view/menu/menu.js.php | 9 +++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/core/layout/common.css b/core/layout/common.css index 03b3dd02..51ac7327 100755 --- a/core/layout/common.css +++ b/core/layout/common.css @@ -498,6 +498,11 @@ header .container { height: 100%; } +/* Marges au cotneu de la bannière personnalisée */ +header:not(.container) #featureContent { + margin: 0 10px; +} + /* Element du header #themeHeaderImage { diff --git a/core/layout/main.php b/core/layout/main.php index c1a81f32..cad2d20d 100644 --- a/core/layout/main.php +++ b/core/layout/main.php @@ -51,7 +51,15 @@ getData(['theme','menu','burgerContent']) === 'title' ? '
' . $this->getData(['locale', 'title']) . '
' : '' ;?> getData(['theme','menu','burgerContent']) === 'logo' ? '' : '' ;?>
-