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' + ]); ?> +
+
+
+
+
+
+ +