Merge branch 'master_dev'

This commit is contained in:
fredtempez 2019-03-23 07:38:22 +01:00
commit 0bd3f02026
36 changed files with 762 additions and 648 deletions

4
.gitignore vendored
View File

@ -22,5 +22,5 @@ site/file/thumb/*
.idea/
# Trucs
.htaccess
.gitignore
.gitignore
core/vendor/tinymce/link_list.json

View File

@ -1,10 +1,27 @@
# ChangeLog
## Version 9.0.08
- Modifications :
- Core : les données par défaut ne sont chargées qu'à installation afin d'alléger l'empreinte mémoire du noyau
- Prise en compte de la taille des petits écrans, suppression des marges
- Backup theme.json avant une mise à jour automatique
- Réorganisation des écrans de paramètrage du thème, ordre de saisie, bulles d'aide et nouveaux libellés
- SimpleLightBox : miniatures cliquables permettant de parcourir toutes les images d'une page (comme dans la galerie)
- Barre d'administration : pages inactives en orange.
- Ajouts :
- Thèmes : pied de page choix de police et de styles
- Corrections :
- Faille XSS : liens de connexion encadrés par STRIP_TAGS
- TinyMCE : désactivation du thème mobile ne fonctionnait pas sur ipad et iphone
- Blog 1.3 : image en tête d'article correctement affichée avec effet responsive.
- TinyMCE : taille des miniatures générées par défaut 480 x 320 en vue d'un affichage correct dans le module blog
- Pied de page : correction d'un problème d'affichage sur des écrans inférieurs à 992px
## Version 9.0.07
- Correction :
- Disparition du menu quand la bannière est masquée
- Modifications :
- Barre d'administration, pages organisées
- Barre d'administration : pages organisées
## Version 9.0.06
- Correction :

View File

@ -329,7 +329,16 @@ core.start = function() {
}).trigger("resize");
// Ajouter l'attribut data-lity afin de faire la liaison avec lity
$("a[rel='data-lity']").attr("data-lity","");
//$("a[rel='data-lity']").attr("data-lity","");
// Ajouter la classe Gallery afin de faire la liaison avec simplelightbox
$("a[rel='gallery']").addClass("gallery","");
/**
* Démarrer simplelightbox
**/
$('.gallery').simpleLightbox();
};
core.start();

View File

@ -26,12 +26,9 @@ class common {
const GROUP_MEMBER = 1;
const GROUP_MODERATOR = 2;
const GROUP_ADMIN = 3;
// Numéro de version de développement :
// Désactive l'update auto
// const ZWII_VERSION = '9.0.05.dev.d';
// Numéro de version stable
const ZWII_VERSION = '9.0.07';
// Numéro de version stable
const ZWII_VERSION = '9.0.08';
public static $actions = [];
public static $coreModuleIds = [
@ -44,417 +41,6 @@ class common {
'user'
];
private $data = [];
private $defaultData = [
'config' => [
'analyticsId' => '',
'autoBackup' => true,
'cookieConsent' => true,
'favicon' => 'favicon.ico',
'homePageId' => 'accueil',
'maintenance' => false,
'metaDescription' => 'Zwii est un CMS sans base de données qui permet à ses utilisateurs de créer et gérer facilement un site web sans aucune connaissance en programmation.',
'social' => [
'facebookId' => 'ZwiiCMS',
'instagramId' => '',
'pinterestId' => '',
'twitterId' => '',
'youtubeId' => ''
],
'timezone' => 'Europe/Paris',
'title' => 'Zwii, votre site en quelques clics !',
'itemsperPage' => 10
],
'core' => [
'dataVersion' => 0,
'lastBackup' => 0,
'lastClearTmp' => 0
],
'page' => [
'accueil' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<h3>Bienvenue sur votre nouveau site Zwii !</h3>
<p><strong>Un email contenant le récapitulatif de votre installation vient de vous être envoyé.</strong></p>
<p>Connectez-vous dès maintenant à votre espace membre afin de créer un site à votre image ! Vous allez pouvoir personnaliser le thème, créer des pages, ajouter des utilisateurs et bien plus encore !</p>
<p>Si vous avez besoin d\'aide ou si vous cherchez des informations sur Zwii, n\'hésitez pas à jeter un œil à notre <a title="Forum" href="http://forum.zwiicms.com/">forum</a>.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 1,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Accueil',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'enfant' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Vous pouvez assigner des parents à vos pages afin de mieux organiser votre menu !</p>
<div class="row">
<div class="col4"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
<div class="col4"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
<div class="col4"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
</div>',
'hideTitle' => false,
'breadCrumb' => true,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'modulePosition' => 'bottom',
'parentPageId' => 'accueil',
'position' => 1,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Enfant',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'privee' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page n\'est visible que par les membres de votre site !</p>
<div class="row">
<div class="col6"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
<div class="col6"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
</div>',
'hideTitle' => false,
'breadCrumb' => true,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'parentPageId' => '',
'modulePosition' => 'bottom',
'position' => 2,
'group' => self::GROUP_MEMBER,
'targetBlank' => false,
'title' => 'Privée',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'mise-en-page' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Vous pouvez ajouter une ou deux barres latérales aux pages de votre site. Cette mise en page se définit dans les paramètres de page et peut s\'appliquer à l\'ensemble du site ou à certaines pages en particulier, au gré de vos désirs.</p>
<p>Pour créer une barre latérale à partir d\'une "Nouvelle page" ou transformer une page existante en barre latérale, sélectionnez l\'option dans la liste des gabarits. On peut bien sûr définir autant de barres latérales qu\'on le souhaite.</p>
<p>Cette nouvelle fonctionnalité autorise toutes sortes d\'utilisations : texte, encadrés, images, vidéos... ou simple marge blanche. Seule restriction : on ne peut pas installer un module dans une barre latérale.</p>
<p>La liste des barres disponibles et leur emplacement s\'affichent en fonction du gabarit que vous aurez choisi.',
'hideTitle' => false,
'breadCrumb' => true,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'parentPageId' => 'accueil',
'modulePosition' => 'bottom',
'position' => 3,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Mise en page',
'block' => '8-4',
'barLeft' => '',
'barRight' => 'barre'
],
'blog' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page contient une instance du module de blog. Cliquez sur un article afin de le lire et de poster des commentaires.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'blog',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 4,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Blog',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'galeries' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page contient une instance du module de galeries photos. Cliquez sur la galerie ci-dessous afin de voir les photos qu\'elle contient.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'gallery',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 5,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Galeries',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'site-de-zwii' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => "",
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'redirection',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 6,
'group' => self::GROUP_VISITOR,
'targetBlank' => true,
'title' => 'Site de Zwii',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'contact' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page contient un exemple de formulaire conçu à partir du module de génération de formulaires. Il est configuré pour envoyer les données saisies par mail aux administrateurs du site.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'form',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 7,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Contact',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'barre' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<div class="block"><h4>ZwiiCMS</h4><h3>Le CMS sans base de données à l\'installation simple et rapide</p></h3></div>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 0 ,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Barre latérale',
'block' => 'bar',
'barLeft' => '',
'barRight' => ''
],
],
'module' => [
'blog' => [
'mon-premier-article' => [
'closeComment' => false,
'comment' => [
'58e11d09e5aff' => [
'author' => 'Rémi',
'content' => 'Article bien rédigé et très pertinent, bravo !',
'createdOn' => 1421748000,
'userId' => ''
]
],
'content' => '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In a placerat metus. Morbi luctus laoreet dolor et euismod. Phasellus eget eros ac eros pretium tincidunt. Sed maximus magna lectus, non vestibulum sapien pretium maximus. Donec convallis leo tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras convallis lacus eu risus gravida varius. Etiam mattis massa vitae eros placerat bibendum.</p>\r\n<p>Vivamus tempus magna augue, in bibendum quam blandit at. Morbi felis tortor, suscipit ut ipsum ut, volutpat consectetur orci. Nulla tincidunt quis ligula non viverra. Sed pretium dictum blandit. Donec fringilla, nunc at dictum pretium, arcu massa viverra leo, et porta turpis ipsum eget risus. Quisque quis maximus purus, in elementum arcu. Donec nisi orci, aliquam non luctus non, congue volutpat massa. Curabitur sed risus congue, porta arcu vel, tincidunt nisi. Duis tincidunt quam ut velit maximus ornare. Nullam sagittis, ante quis pharetra hendrerit, lorem massa dapibus mi, a hendrerit dolor odio nec augue. Nunc sem nisl, tincidunt vitae nunc et, viverra tristique diam. In eget dignissim lectus. Nullam volutpat lacus id ex dapibus viverra. Pellentesque ultricies lorem ut nunc elementum volutpat. Cras id ultrices justo.</p>\r\n<p>Phasellus nec erat leo. Praesent at sem nunc. Vestibulum quis condimentum turpis. Cras semper diam vitae enim fringilla, ut fringilla mauris efficitur. In nec porttitor urna. Nam eros leo, vehicula eget lobortis sed, gravida id mauris. Nulla bibendum nunc tortor, non bibendum justo consectetur vel. Phasellus nec risus diam. In commodo tellus nec nulla fringilla, nec feugiat nunc consectetur. Etiam non eros sodales, sodales lacus vel, finibus leo. Quisque hendrerit tristique congue. Phasellus nec augue vitae libero elementum facilisis. Mauris pretium ornare nisi, non scelerisque velit consectetur sit amet.</p>',
'picture' => 'galerie/landscape/meadow.jpg',
'hidePicture' => false,
'publishedOn' => 1548790902,
'state' => true,
'title' => 'Mon premier article',
'userId' => '' // Géré au moment de l'installation
],
'mon-deuxieme-article' => [
'closeComment' => false,
'comment' => [],
'content' => '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam lobortis eros pharetra metus rutrum pretium et sagittis mauris. Donec commodo venenatis sem nec suscipit. In tempor sollicitudin scelerisque. Etiam quis nibh eleifend, congue nisl quis, ultricies ipsum. Integer at est a eros vulputate pellentesque eu vitae tellus. Nullam suscipit quam nisl. Vivamus dui odio, luctus ac fringilla ultrices, eleifend vel sapien. Integer sem ex, lobortis eu mattis eu, condimentum non libero. Aliquam non porttitor elit, eu hendrerit neque. Praesent tortor urna, tincidunt sed dictum id, rutrum tempus sapien.</p>\r\n<p>Donec accumsan ante ac odio laoreet porttitor. Pellentesque et leo a leo scelerisque mattis id vel elit. Quisque egestas congue enim nec semper. Morbi mollis nibh sapien. Nunc quis fringilla lorem. Donec vel venenatis nunc. Donec lectus velit, tempor sit amet dui sed, consequat commodo enim. Nam porttitor neque semper, dapibus nunc bibendum, lobortis urna. Morbi ullamcorper molestie lectus a elementum. Curabitur eu cursus orci, sed tristique justo. In massa lacus, imperdiet eu elit quis, consectetur maximus magna. Integer suscipit varius ante vitae egestas. Morbi scelerisque fermentum ipsum, euismod faucibus mi tincidunt id. Sed at consectetur velit. Ut fermentum nunc nibh, at commodo felis lacinia nec.</p>\r\n<p>Nullam a justo quis lectus facilisis semper eget quis sem. Morbi suscipit erat sem, non fermentum nunc luctus vel. Proin venenatis quam ut arcu luctus efficitur. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam sollicitudin tristique nunc nec convallis. Maecenas id tortor semper, tempus nisl laoreet, cursus lacus. Aliquam sagittis est in leo congue, a pharetra felis aliquet. Nulla gravida lobortis sapien, quis viverra enim ullamcorper sed. Donec ultrices sem eu volutpat dapibus. Nam euismod, tellus eu congue mollis, massa nisi finibus odio, vitae porta arcu urna ac lorem. Sed faucibus dignissim pretium. Pellentesque eget ante tellus. Pellentesque a elementum odio, sit amet vulputate diam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hendrerit consequat dolor, malesuada pellentesque tellus molestie non. Aenean quis purus a lectus pellentesque laoreet.</p>',
'picture' => 'galerie/landscape/desert.jpg',
'hidePicture' => false,
'publishedOn' => 1550432502,
'state' => true,
'title' => 'Mon deuxième article',
'userId' => '' // Géré au moment de l'installation
],
'mon-troisieme-article' => [
'closeComment' => true,
'comment' => [],
'content' => '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ut tempus nibh. Cras eget iaculis justo, ac laoreet lacus. Nunc tellus nulla, auctor id hendrerit eu, pellentesque in sapien. In hac habitasse platea dictumst. Aliquam leo urna, hendrerit id nunc eget, finibus maximus dolor. Sed rutrum sapien consectetur, tincidunt nulla at, blandit quam. Duis ex enim, vehicula vel nisi vitae, lobortis volutpat nisl. Vivamus enim libero, euismod nec risus vel, interdum placerat elit. In cursus sapien condimentum dui imperdiet, sed lobortis ante consectetur. Maecenas hendrerit eget felis non consequat.</p>\r\n<p>Nullam nec risus non velit efficitur tempus eget tincidunt mauris. Etiam venenatis leo id justo sagittis, commodo dignissim sapien tristique. Vivamus finibus augue malesuada sapien gravida rutrum. Integer mattis lectus ac pulvinar scelerisque. Integer suscipit feugiat metus, ac molestie odio suscipit eget. Fusce at elit in tellus venenatis finibus id sit amet magna. Integer sodales luctus neque blandit posuere. Cras pellentesque dictum lorem eget vestibulum. Quisque vitae metus non nisi efficitur rhoncus ut vitae ipsum. Donec accumsan massa at est faucibus lacinia. Quisque imperdiet luctus neque eu vestibulum. Phasellus pellentesque felis ligula, id imperdiet elit ultrices eu.</p>',
'picture' => 'galerie/landscape/iceberg.jpg',
'hidePicture' => false,
'publishedOn' => 1550864502,
'state' => true,
'title' => 'Mon troisième article',
'userId' => '' // Géré au moment de l'installation
]
],
'galeries' => [
'beaux-paysages' => [
'config' => [
'name' => 'Beaux paysages',
'directory' => 'site/file/source/galerie/landscape'
],
'legend' => [
'desert.jpg' => 'Un désert',
'iceberg.jpg' => 'Un iceberg',
'meadow.jpg' => 'Une prairie'
]
],
'espace' => [
'config' => [
'name' => 'Espace',
'directory' => 'site/file/source/galerie/space'
],
'legend' => [
'earth.jpg' => 'La Terre et la Lune',
'cosmos.jpg' => 'Le cosmos',
'nebula.jpg' => 'Une nébuleuse'
]
]
],
'site-de-zwii' => [
'url' => 'http://zwiicms.com/',
'count' => 0
],
'contact' => [
'config' => [
'button' => '',
'capcha' => true,
'group' => self::GROUP_ADMIN,
'pageId' => '',
'subject' => ''
],
'data' => [],
'input' => [
[
'name' => 'Adresse mail',
'position' => 1,
'required' => true,
'type' => 'mail',
'values' => ''
],
[
'name' => 'Sujet',
'position' => 2,
'required' => true,
'type' => 'text',
'values' => ''
],
[
'name' => 'Message',
'position' => 3,
'required' => true,
'type' => 'textarea',
'values' => ''
]
]
]
],
'user' => [],
'theme' => [
'body' => [
'backgroundColor' => 'rgba(236, 239, 241, 1)',
'image' => '',
'imageAttachment' => 'scroll',
'imageRepeat' => 'no-repeat',
'imagePosition' => 'top center',
'imageSize' => 'auto'
],
'button' => [
'backgroundColor' => 'rgba(74, 105, 189, 1)'
],
'footer' => [
'backgroundColor' => 'rgba(255, 255, 255, 1)',
'height' => '10px',
'loginLink' => true,
'margin' => false,
'position' => 'site',
'textColor' => 'rgba(33, 34, 35, 1)',
'copyrightPosition' => 'center',
'copyrightAlign' => 'center',
'text' => 'Pied de page personnalisé',
'textPosition' => 'left',
'textAlign' => 'left',
'socialsPosition' => 'right',
'socialsAlign' => 'right'
],
'header' => [
'backgroundColor' => 'rgba(255, 255, 255, 1)',
'font' => 'Oswald',
'fontSize' => '2em',
'fontWeight' => 'normal',
'height' => '150px',
'image' => '',
'imagePosition' => 'center center',
'imageRepeat' => 'no-repeat',
'margin' => false,
'position' => 'site',
'textAlign' => 'center',
'textColor' => 'rgba(33, 34, 35, 1)',
'textHide' => false,
'textTransform' => 'none',
'linkHome' => 'false',
'imageContainer' => 'auto'
],
'link' => [
'textColor' => 'rgba(74, 105, 189, 1)'
],
'menu' => [
'backgroundColor' => 'rgba(74, 105, 189, 1)',
'font' => 'Open+Sans',
'fontSize' => '1em',
'fontWeight' => 'normal',
'height' => '15px 10px',
'loginLink' => true,
'margin' => false,
'position' => 'site-second',
'textAlign' => 'left',
'textColor' => 'rgba(255, 255, 255, 1)',
'textTransform' => 'none',
'fixed' => false
],
'site' => [
'backgroundColor' => 'rgba(255, 255, 255, 1)',
'radius' => '0',
'shadow' => '0',
'width' => '960px'
],
'text' => [
'font' => 'Open+Sans',
'fontSize' => '14px',
'textColor' => 'rgba(33, 34, 35, 1)'
],
'title' => [
'font' => 'Oswald',
'fontWeight' => 'normal',
'textColor' => 'rgba(74, 105, 189, 1)',
'textTransform' => 'none'
],
'version' => 0,
]
];
private $hierarchy = [
'all' => [],
'visible' => [],
@ -492,7 +78,8 @@ class common {
// 'codemirror', // Désactivé par défaut
'tippy',
'zwiico',
'imagemap'
'imagemap',
'simplelightbox'
],
'view' => ''
];
@ -542,7 +129,8 @@ class common {
// Génère le fichier de données lorque les deux fichiers sont absents ou seulement le thème est - installation fraîche par défaut
if(file_exists('site/data/core.json') === false OR
file_exists('site/data/theme.json') === false) {
$this->setData([$this->defaultData]);
include_once('core/module/install/ressource/defaultdata.php');
$this->setData([install::$defaultData]);
$this->saveData();
chmod('site/data/core.json', 0755);
chmod('site/data/theme.json', 0755);
@ -555,8 +143,8 @@ class common {
// Mise à jour des données core
// Fonction désactivée en dev
if (stripos(common::ZWII_VERSION, 'dev') === 0 )
$this->update();
// if (stripos(common::ZWII_VERSION, 'dev') === 0 )
$this->update();
// Utilisateur connecté
if($this->user === []) {
@ -1133,8 +721,7 @@ class common {
}
// Version 8.4.6
if($this->getData(['core', 'dataVersion']) < 846) {
echo $this->getData(['core', 'dataVersion']);
echo '<br>';
$this->getData(['core', 'dataVersion']);
$this->setData(['config','itemsperPage',10]);
$this->setData(['core', 'dataVersion', 846]);
$this->SaveData();
@ -1147,8 +734,7 @@ class common {
}
// Version 8.5.1
if($this->getData(['core', 'dataVersion']) < 851) {
echo $this->getData(['core', 'dataVersion']);
echo '<br>';
$this->getData(['core', 'dataVersion']);
$this->setData(['config','itemsperPage',10]);
$this->deleteData(['config','ItemsperPage']);
$this->setData(['core', 'dataVersion', 851]);
@ -1169,8 +755,16 @@ class common {
$this->deleteData(['config', 'social', 'googleplusId']);
$this->setData(['core', 'dataVersion', 9001]);
$this->SaveData();
}
}
// Version 9.0.08
if($this->getData(['core', 'dataVersion']) < 9008) {
$this->setData(['theme', 'footer', 'textTransform','none']);
$this->setData(['theme', 'footer', 'fontWeight','normal']);
$this->setData(['theme', 'footer', 'fontSize','0.8em']);
$this->setData(['theme', 'footer', 'font','Open+Sans']);
$this->setData(['core', 'dataVersion', 9008]);
$this->SaveData();
}
}
}
@ -1279,12 +873,7 @@ class core extends common {
}
}
$css .= 'header{background-size:' . $this->getData(['theme','header','imageContainer']).'}';
$css .= 'header{background-color:' . $colors['normal'] . ';height:' . $this->getData(['theme', 'header', 'height']) . ';line-height:' . $this->getData(['theme', 'header', 'height']) . ';text-align:' . $this->getData(['theme', 'header', 'textAlign']) . '}';
$css .= '@media (max-width: 767px) {header{height:' .
str_replace("px","",$this->getData(['theme', 'header', 'height']))/2 .
'px;line-height:' .
str_replace("px","",$this->getData(['theme', 'header', 'height']))/2 .
'px;}}';
$css .= 'header{background-color:' . $colors['normal'] . ';height:' . $this->getData(['theme', 'header', 'height']) . ';line-height:' . $this->getData(['theme', 'header', 'height']) . ';text-align:' . $this->getData(['theme', 'header', 'textAlign']) . '}';
if($themeHeaderImage = $this->getData(['theme', 'header', 'image'])) {
$css .= 'header{background-image:url("../file/source/' . $themeHeaderImage . '");background-position:' . $this->getData(['theme', 'header', 'imagePosition']) . ';background-repeat:' . $this->getData(['theme', 'header', 'imageRepeat']) . '}';
}
@ -1314,6 +903,7 @@ class core extends common {
if($this->getData(['theme', 'footer', 'margin'])) {
$css .= 'footer{margin:0 20px 20px}';
}
$css .= 'footer span{color:' . $this->getData(['theme', 'footer', 'textColor']) . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'footer', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'footer', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'footer', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'footer', 'textTransform']) . '}';
$css .= 'footer{background-color:' . $colors['normal'] . ';color:' . $this->getData(['theme', 'footer', 'textColor']) . '}';
$css .= 'footer a{color:' . $this->getData(['theme', 'footer', 'textColor']) . '}';
$css .= 'footer .container > div{margin:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
@ -1325,7 +915,6 @@ class core extends common {
file_put_contents('site/data/theme.css', $css);
}
}
/**
* Auto-chargement des classes
* @param string $className Nom de la classe à charger
@ -1837,11 +1426,11 @@ class helper {
break;
case self::FILTER_ID:
$text = mb_strtolower($text, 'UTF-8');
$text = str_replace(
$text = strip_tags(str_replace(
explode(',', 'á,à,â,ä,ã,å,ç,é,è,ê,ë,í,ì,î,ï,ñ,ó,ò,ô,ö,õ,ú,ù,û,ü,ý,ÿ,\',", '),
explode(',', 'a,a,a,a,a,a,c,e,e,e,e,i,i,i,i,n,o,o,o,o,o,u,u,u,u,y,y,-,-,-'),
$text
);
));
$text = preg_replace('/([^a-z0-9-])/', '', $text);
// Un ID ne peut pas être un entier, pour éviter les conflits avec le système de pagination
if(intval($text) !== 0) {
@ -2111,8 +1700,8 @@ class layout extends common {
*/
public function showCopyright() {
$items = '<div id="footerCopyright">';
$items .= 'Motorisé&nbsp;par&nbsp;<a href="http://zwiicms.com/" onclick="window.open(this.href);return false" data-tippy-content="Zwii CMS sans base de données, très léger et performant">Zwii</a>';
$items .= '&nbsp;|&nbsp;<a href="' . helper::baseUrl() . 'sitemap" data-tippy-content="Plan du site" >Plan&nbsp;du&nbsp;site</a>';
$items .= '<span id="footerFont">Motorisé&nbsp;par&nbsp;<a href="http://zwiicms.com/" onclick="window.open(this.href);return false" data-tippy-content="Zwii CMS sans base de données, très léger et performant">Zwii</a>';
$items .= '&nbsp;|&nbsp;<a href="' . helper::baseUrl() . 'sitemap" data-tippy-content="Plan du site" >Plan&nbsp;du&nbsp;site</a></span>';
if(
(
$this->getData(['theme', 'footer', 'loginLink'])
@ -2120,7 +1709,11 @@ class layout extends common {
)
OR $this->getUrl(0) === 'theme'
) {
$items .= '<span id="footerLoginLink" ' . ($this->getUrl(0) === 'theme' ? 'class="displayNone"' : '') . '>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . 'user/login/' . str_replace('/', '_', $this->getUrl()) . '" data-tippy-content="Connexion à l\'administration" >Connexion</a></span>';
$items .= '<span id="footerLoginLink" ' .
($this->getUrl(0) === 'theme' ? 'class="displayNone"' : '') .
'>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . 'user/login/' .
strip_tags(str_replace('/', '_', $this->getUrl())) .
'" data-tippy-content="Connexion à l\'administration" >Connexion</a></span>';
}
$items .= '</div>';
echo $items;
@ -2140,7 +1733,7 @@ class layout extends common {
*/
public function showFooterText() {
if($footerText = $this->getData(['theme', 'footer', 'text']) OR $this->getUrl(0) === 'theme') {
echo '<div id="footerText">' . nl2br($footerText) . '</div>';
echo '<div id="footerText"><span id="footerFont">' . nl2br($footerText) . '</span></div>';
}
}
@ -2261,7 +1854,11 @@ class layout extends common {
)
OR $this->getUrl(0) === 'theme'
) {
$items .= '<li id="menuLoginLink" ' . ($this->getUrl(0) === 'theme' ? 'class="displayNone"' : '') . '><a href="' . helper::baseUrl() . 'user/login/' . str_replace('/', '_', $this->getUrl()) . '">Connexion</a></li>';
$items .= '<li id="menuLoginLink" ' .
($this->getUrl(0) === 'theme' ? 'class="displayNone"' : '') .
'><a href="' . helper::baseUrl() . 'user/login/' .
strip_tags(str_replace('/', '_', $this->getUrl())) .
'">Connexion</a></li>';
}
// Retourne les items du menu
echo '<ul>' . $items . '</ul>';
@ -2352,12 +1949,19 @@ class layout extends common {
helper::baseUrl() .
$parentPageId . '"' .
($parentPageId === $currentPageId ? ' selected' : false) .
($this->getData(['page', $parentPageId, 'disable']) === true ? ' class="inactive"' : false) .
($this->getData(['page', $parentPageId, 'disable']) === true ? ' class="inactive"' : '') .
'>' .
$this->getData(['page', $parentPageId, 'title']) .
'</option>';
foreach($childrenPageIds as $childKey) {
$leftItems .= '<option value="' . helper::baseUrl() . $childKey . '"' . ($childKey === $currentPageId ? ' selected' : false) . '>&nbsp;&nbsp;&nbsp;&nbsp;' . $this->getData(['page', $childKey, 'title']) . '</option>';
$leftItems .= '<option value="' .
helper::baseUrl() .
$childKey . '"' .
($childKey === $currentPageId ? ' selected' : false) .
($this->getData(['page', $childKey, 'disable']) === true ? ' class="inactive"' : '') .
'>&nbsp;&nbsp;&nbsp;&nbsp;' .
$this->getData(['page', $childKey, 'title']) .
'</option>';
}
}
}
@ -2393,8 +1997,7 @@ class layout extends common {
$rightItems .= '<li><a href="' . helper::baseUrl() . 'theme" data-tippy-content="Personnaliser le thème">' . template::ico('brush') . '</a></li>';
$rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('gear') . '</a></li>';
// Mise à jour automatique
// Désactivée en dev
if(helper::checkNewVersion() && stripos(common::ZWII_VERSION, 'dev') === FALSE ) {
if(helper::checkNewVersion() ) {
$rightItems .= '<li><a id="barUpdate" href="' . helper::baseUrl() . 'install/update" data-tippy-content="Mettre à jour Zwii '. common::ZWII_VERSION .' vers '. helper::getOnlineVersion() .'">' . template::ico('update colorRed') . '</a></li>';
}
// Mise à jour automatique

View File

@ -25,10 +25,24 @@ body {
min-height: 100%;
}
body {
margin: 0px 10px;
/**
* Petits écrans inférieurs à 768px de largeur, on supprime les marges
*/
@media (max-width: 768px) {
body {
margin:0px 0px !important;
}
#site {
margin:0px auto !important;
}
}
body {
margin:0px 10px;
}
/**
* Éléments spécifiques
*/
@ -64,7 +78,7 @@ li ul {
}
option.inactive {
color: darkred;
color: darkorange;
}
/* Séparateur */
@ -406,7 +420,7 @@ nav a:hover {
width: auto;
}
nav a {
padding: 15px !important;
padding: 10px !important;
}
nav li ul a {
padding-left: 40px !important;
@ -427,7 +441,10 @@ nav a:hover {
position: sticky;
}
/* Taille du menu hamburger */
nav .zwiico-menu {
font-size:1.5em !important;
}
/* Corps */
@ -456,25 +473,18 @@ body > footer {
}
footer {
text-align: center;
font-size: .8em;
padding: 10px 20px;
vertical-align:middle;
/*padding: 10px 20px; deleted 9.0.08 */
vertical-align:middle;
}
footer .col4 {
vertical-align: middle;
}
footer #footerSocials {
font-size: 1.0em;
}
footer #footerSocials {
font-size: 1.0em;
}
footer #footerCopyright, #footerText {
font-size: 0.8em;
/* Conserve le pied de page sur une ligne */
@media (max-width: 992px) {
footer .col4 {
width:33%;
}
}
footer #footerSocials span {

View File

@ -97,7 +97,8 @@ class install extends common {
case 1:
$success = true;
// Copie du fichier de données
copy('site/data/core.json', 'site/backup/' . date('Y-m-d', time()) . '-update.json');
copy('site/data/core.json', 'site/backup/' . date('Y-m-d', time()) . '-core-update.json');
copy('site/data/theme.json', 'site/backup/' . date('Y-m-d', time()) . '-theme-update.json');
// Nettoyage des fichiers temporaires
if(file_exists('site/tmp/update.tar.gz')) {
$success = unlink('site/tmp/update.tar.gz');

View File

@ -0,0 +1,419 @@
<?php
class install extends common {
public static $defaultData = [
'config' => [
'analyticsId' => '',
'autoBackup' => true,
'cookieConsent' => true,
'favicon' => 'favicon.ico',
'homePageId' => 'accueil',
'maintenance' => false,
'metaDescription' => 'Zwii est un CMS sans base de données qui permet à ses utilisateurs de créer et gérer facilement un site web sans aucune connaissance en programmation.',
'social' => [
'facebookId' => 'ZwiiCMS',
'instagramId' => '',
'pinterestId' => '',
'twitterId' => '',
'youtubeId' => ''
],
'timezone' => 'Europe/Paris',
'title' => 'Zwii, votre site en quelques clics !',
'itemsperPage' => 10
],
'core' => [
'dataVersion' => 0,
'lastBackup' => 0,
'lastClearTmp' => 0
],
'page' => [
'accueil' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<h3>Bienvenue sur votre nouveau site Zwii !</h3>
<p><strong>Un email contenant le récapitulatif de votre installation vient de vous être envoyé.</strong></p>
<p>Connectez-vous dès maintenant à votre espace membre afin de créer un site à votre image ! Vous allez pouvoir personnaliser le thème, créer des pages, ajouter des utilisateurs et bien plus encore !</p>
<p>Si vous avez besoin d\'aide ou si vous cherchez des informations sur Zwii, n\'hésitez pas à jeter un œil à notre <a title="Forum" href="http://forum.zwiicms.com/">forum</a>.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 1,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Accueil',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'enfant' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Vous pouvez assigner des parents à vos pages afin de mieux organiser votre menu !</p>
<div class="row">
<div class="col4"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
<div class="col4"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
<div class="col4"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
</div>',
'hideTitle' => false,
'breadCrumb' => true,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'modulePosition' => 'bottom',
'parentPageId' => 'accueil',
'position' => 1,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Enfant',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'privee' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page n\'est visible que par les membres de votre site !</p>
<div class="row">
<div class="col6"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
<div class="col6"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam interdum, neque non vulputate hendrerit, arcu turpis dapibus nisl, id scelerisque metus lectus vitae nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec feugiat dolor et turpis finibus condimentum. Cras sit amet ligula sagittis justo.</p></div>
</div>',
'hideTitle' => false,
'breadCrumb' => true,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'parentPageId' => '',
'modulePosition' => 'bottom',
'position' => 2,
'group' => self::GROUP_MEMBER,
'targetBlank' => false,
'title' => 'Privée',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'mise-en-page' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Vous pouvez ajouter une ou deux barres latérales aux pages de votre site. Cette mise en page se définit dans les paramètres de page et peut s\'appliquer à l\'ensemble du site ou à certaines pages en particulier, au gré de vos désirs.</p>
<p>Pour créer une barre latérale à partir d\'une "Nouvelle page" ou transformer une page existante en barre latérale, sélectionnez l\'option dans la liste des gabarits. On peut bien sûr définir autant de barres latérales qu\'on le souhaite.</p>
<p>Cette nouvelle fonctionnalité autorise toutes sortes d\'utilisations : texte, encadrés, images, vidéos... ou simple marge blanche. Seule restriction : on ne peut pas installer un module dans une barre latérale.</p>
<p>La liste des barres disponibles et leur emplacement s\'affichent en fonction du gabarit que vous aurez choisi.',
'hideTitle' => false,
'breadCrumb' => true,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'parentPageId' => 'accueil',
'modulePosition' => 'bottom',
'position' => 3,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Mise en page',
'block' => '8-4',
'barLeft' => '',
'barRight' => 'barre'
],
'blog' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page contient une instance du module de blog. Cliquez sur un article afin de le lire et de poster des commentaires.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'blog',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 4,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Blog',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'galeries' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page contient une instance du module de galeries photos. Cliquez sur la galerie ci-dessous afin de voir les photos qu\'elle contient.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'gallery',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 5,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Galeries',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'site-de-zwii' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => "",
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'redirection',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 6,
'group' => self::GROUP_VISITOR,
'targetBlank' => true,
'title' => 'Site de Zwii',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'contact' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<p>Cette page contient un exemple de formulaire conçu à partir du module de génération de formulaires. Il est configuré pour envoyer les données saisies par mail aux administrateurs du site.</p>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => 'form',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 7,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Contact',
'block' => '12',
'barLeft' => '',
'barRight' => ''
],
'barre' => [
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => '<div class="block"><h4>ZwiiCMS</h4><h3>Le CMS sans base de données à l\'installation simple et rapide</p></h3></div>',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
'metaTitle' => '',
'moduleId' => '',
'modulePosition' => 'bottom',
'parentPageId' => '',
'position' => 0 ,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'Barre latérale',
'block' => 'bar',
'barLeft' => '',
'barRight' => ''
],
],
'module' => [
'blog' => [
'mon-premier-article' => [
'closeComment' => false,
'comment' => [
'58e11d09e5aff' => [
'author' => 'Rémi',
'content' => 'Article bien rédigé et très pertinent, bravo !',
'createdOn' => 1421748000,
'userId' => ''
]
],
'content' => '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In a placerat metus. Morbi luctus laoreet dolor et euismod. Phasellus eget eros ac eros pretium tincidunt. Sed maximus magna lectus, non vestibulum sapien pretium maximus. Donec convallis leo tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras convallis lacus eu risus gravida varius. Etiam mattis massa vitae eros placerat bibendum.</p><p>Vivamus tempus magna augue, in bibendum quam blandit at. Morbi felis tortor, suscipit ut ipsum ut, volutpat consectetur orci. Nulla tincidunt quis ligula non viverra. Sed pretium dictum blandit. Donec fringilla, nunc at dictum pretium, arcu massa viverra leo, et porta turpis ipsum eget risus. Quisque quis maximus purus, in elementum arcu. Donec nisi orci, aliquam non luctus non, congue volutpat massa. Curabitur sed risus congue, porta arcu vel, tincidunt nisi. Duis tincidunt quam ut velit maximus ornare. Nullam sagittis, ante quis pharetra hendrerit, lorem massa dapibus mi, a hendrerit dolor odio nec augue. Nunc sem nisl, tincidunt vitae nunc et, viverra tristique diam. In eget dignissim lectus. Nullam volutpat lacus id ex dapibus viverra. Pellentesque ultricies lorem ut nunc elementum volutpat. Cras id ultrices justo.</p><p>Phasellus nec erat leo. Praesent at sem nunc. Vestibulum quis condimentum turpis. Cras semper diam vitae enim fringilla, ut fringilla mauris efficitur. In nec porttitor urna. Nam eros leo, vehicula eget lobortis sed, gravida id mauris. Nulla bibendum nunc tortor, non bibendum justo consectetur vel. Phasellus nec risus diam. In commodo tellus nec nulla fringilla, nec feugiat nunc consectetur. Etiam non eros sodales, sodales lacus vel, finibus leo. Quisque hendrerit tristique congue. Phasellus nec augue vitae libero elementum facilisis. Mauris pretium ornare nisi, non scelerisque velit consectetur sit amet.</p>',
'picture' => 'galerie/landscape/meadow.jpg',
'hidePicture' => false,
'publishedOn' => 1548790902,
'state' => true,
'title' => 'Mon premier article',
'userId' => '' // Géré au moment de l'installation
],
'mon-deuxieme-article' => [
'closeComment' => false,
'comment' => [],
'content' => '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam lobortis eros pharetra metus rutrum pretium et sagittis mauris. Donec commodo venenatis sem nec suscipit. In tempor sollicitudin scelerisque. Etiam quis nibh eleifend, congue nisl quis, ultricies ipsum. Integer at est a eros vulputate pellentesque eu vitae tellus. Nullam suscipit quam nisl. Vivamus dui odio, luctus ac fringilla ultrices, eleifend vel sapien. Integer sem ex, lobortis eu mattis eu, condimentum non libero. Aliquam non porttitor elit, eu hendrerit neque. Praesent tortor urna, tincidunt sed dictum id, rutrum tempus sapien.</p><p>Donec accumsan ante ac odio laoreet porttitor. Pellentesque et leo a leo scelerisque mattis id vel elit. Quisque egestas congue enim nec semper. Morbi mollis nibh sapien. Nunc quis fringilla lorem. Donec vel venenatis nunc. Donec lectus velit, tempor sit amet dui sed, consequat commodo enim. Nam porttitor neque semper, dapibus nunc bibendum, lobortis urna. Morbi ullamcorper molestie lectus a elementum. Curabitur eu cursus orci, sed tristique justo. In massa lacus, imperdiet eu elit quis, consectetur maximus magna. Integer suscipit varius ante vitae egestas. Morbi scelerisque fermentum ipsum, euismod faucibus mi tincidunt id. Sed at consectetur velit. Ut fermentum nunc nibh, at commodo felis lacinia nec.</p><p>Nullam a justo quis lectus facilisis semper eget quis sem. Morbi suscipit erat sem, non fermentum nunc luctus vel. Proin venenatis quam ut arcu luctus efficitur. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam sollicitudin tristique nunc nec convallis. Maecenas id tortor semper, tempus nisl laoreet, cursus lacus. Aliquam sagittis est in leo congue, a pharetra felis aliquet. Nulla gravida lobortis sapien, quis viverra enim ullamcorper sed. Donec ultrices sem eu volutpat dapibus. Nam euismod, tellus eu congue mollis, massa nisi finibus odio, vitae porta arcu urna ac lorem. Sed faucibus dignissim pretium. Pellentesque eget ante tellus. Pellentesque a elementum odio, sit amet vulputate diam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hendrerit consequat dolor, malesuada pellentesque tellus molestie non. Aenean quis purus a lectus pellentesque laoreet.</p>',
'picture' => 'galerie/landscape/desert.jpg',
'hidePicture' => false,
'publishedOn' => 1550432502,
'state' => true,
'title' => 'Mon deuxième article',
'userId' => '' // Géré au moment de l'installation
],
'mon-troisieme-article' => [
'closeComment' => true,
'comment' => [],
'content' => '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ut tempus nibh. Cras eget iaculis justo, ac laoreet lacus. Nunc tellus nulla, auctor id hendrerit eu, pellentesque in sapien. In hac habitasse platea dictumst. Aliquam leo urna, hendrerit id nunc eget, finibus maximus dolor. Sed rutrum sapien consectetur, tincidunt nulla at, blandit quam. Duis ex enim, vehicula vel nisi vitae, lobortis volutpat nisl. Vivamus enim libero, euismod nec risus vel, interdum placerat elit. In cursus sapien condimentum dui imperdiet, sed lobortis ante consectetur. Maecenas hendrerit eget felis non consequat.</p><p>Nullam nec risus non velit efficitur tempus eget tincidunt mauris. Etiam venenatis leo id justo sagittis, commodo dignissim sapien tristique. Vivamus finibus augue malesuada sapien gravida rutrum. Integer mattis lectus ac pulvinar scelerisque. Integer suscipit feugiat metus, ac molestie odio suscipit eget. Fusce at elit in tellus venenatis finibus id sit amet magna. Integer sodales luctus neque blandit posuere. Cras pellentesque dictum lorem eget vestibulum. Quisque vitae metus non nisi efficitur rhoncus ut vitae ipsum. Donec accumsan massa at est faucibus lacinia. Quisque imperdiet luctus neque eu vestibulum. Phasellus pellentesque felis ligula, id imperdiet elit ultrices eu.</p>',
'picture' => 'galerie/landscape/iceberg.jpg',
'hidePicture' => false,
'publishedOn' => 1550864502,
'state' => true,
'title' => 'Mon troisième article',
'userId' => '' // Géré au moment de l'installation
]
],
'galeries' => [
'beaux-paysages' => [
'config' => [
'name' => 'Beaux paysages',
'directory' => 'site/file/source/galerie/landscape'
],
'legend' => [
'desert.jpg' => 'Un désert',
'iceberg.jpg' => 'Un iceberg',
'meadow.jpg' => 'Une prairie'
]
],
'espace' => [
'config' => [
'name' => 'Espace',
'directory' => 'site/file/source/galerie/space'
],
'legend' => [
'earth.jpg' => 'La Terre et la Lune',
'cosmos.jpg' => 'Le cosmos',
'nebula.jpg' => 'Une nébuleuse'
]
]
],
'site-de-zwii' => [
'url' => 'http://zwiicms.com/',
'count' => 0
],
'contact' => [
'config' => [
'button' => '',
'capcha' => true,
'group' => self::GROUP_ADMIN,
'pageId' => '',
'subject' => ''
],
'data' => [],
'input' => [
[
'name' => 'Adresse mail',
'position' => 1,
'required' => true,
'type' => 'mail',
'values' => ''
],
[
'name' => 'Sujet',
'position' => 2,
'required' => true,
'type' => 'text',
'values' => ''
],
[
'name' => 'Message',
'position' => 3,
'required' => true,
'type' => 'textarea',
'values' => ''
]
]
]
],
'user' => [],
'theme' => [
'body' => [
'backgroundColor' => 'rgba(236, 239, 241, 1)',
'image' => '',
'imageAttachment' => 'scroll',
'imageRepeat' => 'no-repeat',
'imagePosition' => 'top center',
'imageSize' => 'auto'
],
'button' => [
'backgroundColor' => 'rgba(74, 105, 189, 1)'
],
'footer' => [
'backgroundColor' => 'rgba(255, 255, 255, 1)',
'font' => 'Open+Sans',
'fontSize' => '0.8em',
'fontWeight' => 'normal',
'height' => '10px',
'loginLink' => true,
'margin' => false,
'position' => 'site',
'textColor' => 'rgba(33, 34, 35, 1)',
'copyrightPosition' => 'right',
'copyrightAlign' => 'right',
'text' => 'Pied de page personnalisé',
'textPosition' => 'left',
'textAlign' => 'left',
'textTransform' => 'none',
'socialsPosition' => 'center',
'socialsAlign' => 'center'
],
'header' => [
'backgroundColor' => 'rgba(255, 255, 255, 1)',
'font' => 'Oswald',
'fontSize' => '2em',
'fontWeight' => 'normal',
'height' => '150px',
'image' => '',
'imagePosition' => 'center center',
'imageRepeat' => 'no-repeat',
'margin' => false,
'position' => 'site',
'textAlign' => 'center',
'textColor' => 'rgba(33, 34, 35, 1)',
'textHide' => false,
'textTransform' => 'none',
'linkHome' => 'false',
'imageContainer' => 'auto'
],
'link' => [
'textColor' => 'rgba(74, 105, 189, 1)'
],
'menu' => [
'backgroundColor' => 'rgba(74, 105, 189, 1)',
'font' => 'Open+Sans',
'fontSize' => '1em',
'fontWeight' => 'normal',
'height' => '15px 10px',
'loginLink' => true,
'margin' => false,
'position' => 'site-second',
'textAlign' => 'left',
'textColor' => 'rgba(255, 255, 255, 1)',
'textTransform' => 'none',
'fixed' => false
],
'site' => [
'backgroundColor' => 'rgba(255, 255, 255, 1)',
'radius' => '0',
'shadow' => '0',
'width' => '960px'
],
'text' => [
'font' => 'Open+Sans',
'fontSize' => '14px',
'textColor' => 'rgba(33, 34, 35, 1)'
],
'title' => [
'font' => 'Oswald',
'fontWeight' => 'normal',
'textColor' => 'rgba(74, 105, 189, 1)',
'textTransform' => 'none'
],
'version' => 0,
]
];
}

View File

@ -8,7 +8,10 @@
*/
/* Grille du site */
/*
* Grille du site
* Barres et page
*/
#contentleft {
}
#contentright {
@ -63,13 +66,6 @@ footer #footersiteCenter, #footerbodyCenter {
footer #footersiteRight, #footerbodyRight {
}
/* footer bloc de chaque élément */
#footerText {
}
#footerSocials {
}
#footerCopyright {
}
/**

View File

@ -35,7 +35,7 @@ class theme extends common {
'right' => 'À droite'
];
public static $attachments = [
'scroll' => 'Normale',
'scroll' => 'Standard',
'fixed' => 'Fixe'
];
public static $fonts = [
@ -74,27 +74,35 @@ class theme extends common {
'right' => 'Bloc Droite'
];
public static $fontWeights = [
'normal' => 'Normal',
'normal' => 'Maigre',
'bold' => 'Gras'
];
public static $footerHeights = [
'0px' => 'Très petite',
'10px' => 'Petite',
'20px' => 'Moyenne',
'35px' => 'Grande',
'40px' => 'Très grande'
'5px' => 'Très petite (5 pixels)',
'10px' => 'Petite (10 pixels)',
'20px' => 'Moyenne (20 pixels)',
'35px' => 'Grande (35 pixels)',
'40px' => 'Très grande (40 pixels)'
];
public static $footerPositions = [
'hide' => 'Cachée',
'site' => 'Dans le site',
'body' => 'En dessous du site'
];
public static $footerFontSizes = [
'.5em' => 'Microscopique (50%)',
'.6em' => 'Minuscule (60%)',
'.7em' => 'Infime (70%)',
'.8em' => 'Très petite (80%)',
'.9em' => 'Petite (90%)',
'1em' => 'Standard (100%)',
];
public static $headerFontSizes = [
'1.6em' => 'Très petite',
'1.8em' => 'Petite',
'2em' => 'Moyenne',
'2.2em' => 'Grande',
'2.4vmax' => 'Très grande'
'1.6em' => 'Très petite (160%)',
'1.8em' => 'Petite (180%)',
'2em' => 'Moyenne (200%)',
'2.2em' => 'Grande (220%)',
'2.4vmax' => 'Très grande (240%)'
];
public static $headerHeights = [
'100px' => 'Très petite (100 pixels)',
@ -120,19 +128,19 @@ class theme extends common {
'bottom right' => 'En bas à droite'
];
public static $menuFontSizes = [
'.8em' => 'Très petite',
'.9em' => 'Petite',
'1em' => 'Normale',
'1.1em' => 'Moyenne',
'1.2em' => 'Grande',
'1.3em' => 'Très grande'
'.8em' => 'Très petite (80%)',
'.9em' => 'Petite (90%)',
'1em' => 'Standard (100%)',
'1.1em' => 'Moyenne (110%)',
'1.2em' => 'Grande (120%)',
'1.3em' => 'Très grande (130%)'
];
public static $menuHeights = [
'5px 10px' => 'Très petite',
'10px' => 'Petite',
'15px 10px' => 'Moyenne',
'20px 15px' => 'Grande',
'25px 15px' => 'Très grande'
'5px 10px' => 'Très petite (5 pixels)',
'10px' => 'Petite (10 pixels)',
'15px 10px' => 'Moyenne (15 pixels)',
'20px 15px' => 'Grande (20 pixels)',
'25px 15px' => 'Très grande (25 pixels)'
];
public static $menuPositionsSite = [
'top' => 'En-dehors du site',
@ -170,19 +178,22 @@ class theme extends common {
'1px 1px 50px' => 'Très importante'
];
public static $siteFontSizes = [
'12px' => '12',
'13px' => '13',
'14px' => '14',
'15px' => '15',
'16px' => '16'
'12px' => '12 pixels',
'13px' => '13 pixels',
'14px' => '14 pixels',
'15px' => '15 pixels',
'16px' => '16 pixels'
];
public static $sizes = [
'auto' => 'Automatique',
'cover' => 'Largeur adaptée au fond'
'cover' => 'Responsive',
'100% 100%' => 'Image étirée'
];
public static $textTransforms = [
'none' => 'Normaux',
'uppercase' => 'Majuscules'
'none' => 'Standard',
'lowercase' => 'Minuscules',
'uppercase' => 'Majuscules',
'capitalize' => 'Majuscule à chaque mot'
];
public static $widths = [
'750px' => 'Petite (750 pixels)',
@ -190,11 +201,11 @@ class theme extends common {
'1170px' => 'Grande (1170 pixels)',
'100%' => 'Fluide (100%)'
];
public static $headerWide = [
'auto' => 'Automatique',
'contain' => 'Image entière',
'cover' => 'Largeur adaptée au fond',
'100% 100%' => 'Taille adaptée au fond'
public static $headerWide = [
'auto auto' => 'Automatique',
//'contain' => 'Responsive (contain)',
'cover' => 'Responsive',
'100% 100%' => 'Image étirée',
];
@ -273,7 +284,11 @@ class theme extends common {
'textColor' => $this->getInput('themeFooterTextColor'),
'copyrightPosition' => $this->getInput('themeFooterCopyrightPosition'),
'textPosition' => $this->getInput('themeFooterTextPosition'),
'socialsPosition' => $this->getInput('themeFooterSocialsPosition')
'socialsPosition' => $this->getInput('themeFooterSocialsPosition'),
'textTransform' => $this->getInput('themeFooterTextTransform'),
'font' => $this->getInput('themeFooterFont'),
'fontSize' => $this->getInput('themeFooterFontSize'),
'fontWeight' => $this->getInput('themeFooterFontWeight')
]]);
// Valeurs en sortie
$this->addOutput([
@ -301,6 +316,7 @@ class theme extends common {
// Si une image est positionnée, l'arrière en transparent.
$this->setData(['theme', 'header', [
'backgroundColor' => $this->getInput('themeHeaderBackgroundColor'),
'textTransform' => $this->getInput('themeHeaderTextTransform'),
'font' => $this->getInput('themeHeaderFont'),
'fontSize' => $this->getInput('themeHeaderFontSize'),
'fontWeight' => $this->getInput('themeHeaderFontWeight'),
@ -312,8 +328,7 @@ class theme extends common {
'position' => $this->getInput('themeHeaderPosition'),
'textAlign' => $this->getInput('themeHeaderTextAlign'),
'textColor' => $this->getInput('themeHeaderTextColor'),
'textHide' => $this->getInput('themeHeaderTextHide', helper::FILTER_BOOLEAN),
'textTransform' => $this->getInput('themeHeaderTextTransform'),
'textHide' => $this->getInput('themeHeaderTextHide', helper::FILTER_BOOLEAN),
'linkHome' => $this->getInput('themeHeaderlinkHome',helper::FILTER_BOOLEAN),
'imageContainer' => $this->getInput('themeHeaderImageContainer')
]]);

View File

@ -19,7 +19,7 @@ $("input, select").on("change", function() {
// Image du fond
var themeBodyImage = $("#themeBodyImage").val();
if(themeBodyImage) {
css += "body{background-image:url('<?php echo helper::baseUrl(false); ?>site/file/source/" + themeBodyImage + "');background-repeat:" + $("#themeBodyImageRepeat").val() + ";background-position:" + $("#themeBodyImagePosition").val() + ";background-attachment:" + $("#themeBodyImageAttachment").val() + ";background-size:" + $("#themeBodyImageSize").val() + "]";
css += "body{background-image:url('<?php echo helper::baseUrl(false); ?>site/file/source/" + themeBodyImage + "');background-repeat:" + $("#themeBodyImageRepeat").val() + ";background-position:" + $("#themeBodyImagePosition").val() + ";background-attachment:" + $("#themeBodyImageAttachment").val() + ";background-size:" + $("#themeBodyImageSize").val() + "}";
}
else {
css += "body{background-image:none}";

View File

@ -18,6 +18,7 @@
<h4>Couleur</h4>
<?php echo template::text('themeBodyBackgroundColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Fond',
'value' => $this->getData(['theme', 'body', 'backgroundColor'])
]); ?>
@ -51,7 +52,7 @@
<div class="row">
<div class="col6">
<?php echo template::select('themeBodyImageAttachment', $module::$attachments, [
'label' => 'Fixation',
'label' => 'Défilement',
'selected' => $this->getData(['theme', 'body', 'imageAttachment'])
]); ?>
</div>

View File

@ -15,6 +15,9 @@
* Aperçu en direct
*/
$("input, select").on("change", function() {
// Import des polices de caractères
var footerFont = $("#themeFooterFont").val();
var css = "@import url('https://fonts.googleapis.com/css?family=" + footerFont + "');";
// Couleurs du pied de page
var colors = core.colorVariants($("#themeFooterBackgroundColor").val());
var textColor = $("#themeFooterTextColor").val();
@ -29,6 +32,8 @@ $("input, select").on("change", function() {
css += "#footerSocials{text-align:" + $("#themeFooterSocialsAlign").val() + "}";
css += "#footerText{text-align:" + $("#themeFooterTextAlign").val() + "}";
css += "#footerCopyright{text-align:" + $("#themeFooterCopyrightAlign").val() + "}";
// Taille, couleur, épaisseur et capitalisation du titre de la bannière
css += "footer span{color:" + $("#themeFooterTextColor").val() + ";font-family:'" + footerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeFooterFontWeight").val() + ";font-size:" + $("#themeFooterFontSize").val() + ";text-transform:" + $("#themeFooterTextTransform").val() + "}";
// Marge
if($("#themeFooterMargin").is(":checked")) {
css += 'footer{margin:0 20px 20px}';
@ -42,7 +47,7 @@ $("input, select").on("change", function() {
.attr("type", "text/css")
.attr("id", "themePreview")
.text(css)
.appendTo("head");
.appendTo("footer");
// Position du pied de page
switch($("#themeFooterPosition").val()) {
case 'hide':
@ -90,7 +95,6 @@ $("#themeFooterForm").on("change",function() {
$("#footerSocials").show().appendTo("#footersiteCenter");
break;
case 'right':
console.log("right");
$("#footerSocials").show().appendTo("#footerbodyRight");
$("#footerSocials").show().appendTo("#footersiteRight");
break;

View File

@ -59,7 +59,40 @@
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Mise en forme du texte</h4>
<div class="row">
<div class="col3">
<?php echo template::select('themeFooterFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'footer', 'font'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('themeFooterFontSize', $module::$footerFontSizes, [
'label' => 'Taille',
'help' => 'Proportionnelle à celle définie dans le site',
'selected' => $this->getData(['theme', 'footer', 'fontSize'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('themeFooterFontWeight', $module::$fontWeights, [
'label' => 'Style',
'selected' => $this->getData(['theme', 'footer', 'fontWeight'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('themeFooterTextTransform', $module::$textTransforms, [
'label' => 'Casse',
'selected' => $this->getData(['theme', 'footer', 'textTransform'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
@ -75,7 +108,6 @@
</div>
</div>
</div>
<div class="row">
<div class="col4">
<div class="block">

View File

@ -16,7 +16,6 @@
$("input, select").on("change", function() {
// Import des polices de caractères
var headerFont = $("#themeHeaderFont").val();
var css = "@import url('https://fonts.googleapis.com/css?family=" + headerFont + "');";
// Adaptation aux média
css += "@media (max-width: 767px) {header{height:" + $("#themeHeaderHeight").val() + "/2;line-height:" + $("#themeHeaderHeight").val() + "/2;}}";

View File

@ -20,6 +20,7 @@
<div class="col6">
<?php echo template::text('themeHeaderBackgroundColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Fond',
'value' => $this->getData(['theme', 'header', 'backgroundColor'])
]); ?>
@ -27,6 +28,7 @@
<div class="col6">
<?php echo template::text('themeHeaderTextColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Texte',
'value' => $this->getData(['theme', 'header', 'textColor'])
]); ?>
@ -67,7 +69,7 @@
</div>
<div class="col6">
<?php echo template::select('themeHeaderImageContainer', $module::$headerWide, [
'label' => 'Taille',
'label' => 'Adaptation',
'selected' => $this->getData(['theme', 'header', 'imageContainer'])
]); ?>
</div>
@ -81,10 +83,17 @@
<div class="block">
<h4>Mise en forme du texte</h4>
<div class="row">
<div class="col3">
<?php echo template::select('themeHeaderFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'header', 'font'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('themeHeaderTextTransform', $module::$textTransforms, [
'label' => 'Caractères',
'selected' => $this->getData(['theme', 'header', 'textTransform'])
<?php echo template::select('themeHeaderFontSize', $module::$headerFontSizes, [
'label' => 'Taille',
'help' => 'Proportionnelle à celle définie dans le site',
'selected' => $this->getData(['theme', 'header', 'fontSize'])
]); ?>
</div>
<div class="col3">
@ -92,20 +101,13 @@
'label' => 'Style',
'selected' => $this->getData(['theme', 'header', 'fontWeight'])
]); ?>
</div>
</div>
<div class="col3">
<?php echo template::select('themeHeaderFontSize', $module::$headerFontSizes, [
'label' => 'Taille',
'selected' => $this->getData(['theme', 'header', 'fontSize'])
<?php echo template::select('themeHeaderTextTransform', $module::$textTransforms, [
'label' => 'Casse',
'selected' => $this->getData(['theme', 'header', 'textTransform'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('themeHeaderFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'header', 'font'])
]); ?>
</div>
</div>
</div>
</div>

View File

@ -20,6 +20,7 @@
<div class="col6">
<?php echo template::text('themeMenuBackgroundColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Fond',
'value' => $this->getData(['theme', 'menu', 'backgroundColor'])
]); ?>
@ -27,6 +28,7 @@
<div class="col6">
<?php echo template::text('themeMenuTextColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Texte',
'value' => $this->getData(['theme', 'menu', 'textColor'])
]); ?>
@ -35,37 +37,46 @@
</div>
</div>
<div class="col6">
<div class="block">
<h4>Contenu</h4>
<?php echo template::checkbox('themeMenuLoginLink', true, 'Lien de connexion', [
'checked' => $this->getData(['theme', 'menu', 'loginLink']),
'help' => 'Visible seulement sur cette page et lorsque vous n\'êtes pas connecté (non recommandé).'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Mise en forme du texte</h4>
<div class="row">
<div class="col6">
<?php echo template::select('themeMenuTextTransform', $module::$textTransforms, [
'label' => 'Caractères',
'selected' => $this->getData(['theme', 'menu', 'textTransform'])
]); ?>
<div class="col3">
<?php echo template::select('themeMenuFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'menu', 'font'])
]); ?>
</div>
<div class="col6">
<div class="col3">
<?php echo template::select('themeMenuFontSize', $module::$menuFontSizes, [
'label' => 'Taille',
'help' => 'Proportionnelle à celle définie dans le site',
'selected' => $this->getData(['theme', 'menu', 'fontSize'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('themeMenuFontWeight', $module::$fontWeights, [
'label' => 'Style',
'selected' => $this->getData(['theme', 'menu', 'fontWeight'])
]); ?>
</div>
</div>
<div class="col3">
<?php echo template::select('themeMenuTextTransform', $module::$textTransforms, [
'label' => 'Casse',
'selected' => $this->getData(['theme', 'menu', 'textTransform'])
]); ?>
</div>
</div>
<div class='row'>
<div class="col6">
<?php echo template::select('themeMenuFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'menu', 'font'])
]); ?>
</div>
<div class="col6">
<?php echo template::select('themeMenuFontSize', $module::$menuFontSizes, [
'label' => 'Taille',
'selected' => $this->getData(['theme', 'menu', 'fontSize'])
]); ?>
</div>
</div>
</div>
<div>
</div>
</div>
<div class="row">
@ -114,15 +125,4 @@
</div>
</div>
</div>
<div class="row">
<div class="col6">
<div class="block">
<h4>Contenu</h4>
<?php echo template::checkbox('themeMenuLoginLink', true, 'Lien de connexion', [
'checked' => $this->getData(['theme', 'menu', 'loginLink']),
'help' => 'Visible seulement sur cette page et lorsque vous n\'êtes pas connecté.'
]); ?>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -20,6 +20,7 @@
<div class="col4">
<?php echo template::text('themeSiteBackgroundColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Fond',
'value' => $this->getData(['theme', 'site', 'backgroundColor'])
]); ?>
@ -27,6 +28,7 @@
<div class="col4">
<?php echo template::text('themeTextTextColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Texte',
'value' => $this->getData(['theme', 'text', 'textColor'])
]); ?>
@ -34,6 +36,7 @@
<div class="col4">
<?php echo template::text('themeTitleTextColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Titres',
'value' => $this->getData(['theme', 'title', 'textColor'])
]); ?>
@ -43,6 +46,7 @@
<div class="col4 offset2">
<?php echo template::text('themeButtonBackgroundColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Boutons',
'value' => $this->getData(['theme', 'button', 'backgroundColor'])
]); ?>
@ -50,6 +54,7 @@
<div class="col4">
<?php echo template::text('themeLinkTextColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence',
'label' => 'Liens',
'value' => $this->getData(['theme', 'link', 'textColor'])
]); ?>
@ -58,6 +63,53 @@
</div>
</div>
</div>
<div class="row">
<div class="col6">
<div class="block">
<h4>Mise en forme du texte</h4>
<div class="row">
<div class="col6">
<?php echo template::select('themeTextFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'text', 'font'])
]); ?>
</div>
<div class="col6">
<?php echo template::select('themeTextFontSize', $module::$siteFontSizes, [
'label' => 'Taille',
'help' => 'Taille de référence pour le site. Les tailles des polices de la bannière, de menu et de pied de page sont proportionnelles à cette taille.',
'selected' => $this->getData(['theme', 'text', 'fontSize'])
]); ?>
</div>
</div>
</div>
</div>
<div class="col6">
<div class="block">
<h4>Mise en forme des titres</h4>
<div class="row">
<div class="col4">
<?php echo template::select('themeTitleFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'title', 'font'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('themeTitleFontWeight', $module::$fontWeights, [
'label' => 'Style',
'selected' => $this->getData(['theme', 'title', 'fontWeight'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('themeTitleTextTransform', $module::$textTransforms, [
'label' => 'Casse',
'selected' => $this->getData(['theme', 'title', 'textTransform'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
@ -85,50 +137,4 @@
</div>
</div>
</div>
<div class="row">
<div class="col6">
<div class="block">
<h4>Mise en forme du texte</h4>
<div class="row">
<div class="col6">
<?php echo template::select('themeTextFontSize', $module::$siteFontSizes, [
'label' => 'Taille',
'selected' => $this->getData(['theme', 'text', 'fontSize'])
]); ?>
</div>
<div class="col6">
<?php echo template::select('themeTextFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'text', 'font'])
]); ?>
</div>
</div>
</div>
</div>
<div class="col6">
<div class="block">
<h4>Mise en forme des titres</h4>
<div class="row">
<div class="col4">
<?php echo template::select('themeTitleTextTransform', $module::$textTransforms, [
'label' => 'Caractères',
'selected' => $this->getData(['theme', 'title', 'textTransform'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('themeTitleFontWeight', $module::$fontWeights, [
'label' => 'Style',
'selected' => $this->getData(['theme', 'title', 'fontWeight'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('themeTitleFont', $module::$fonts, [
'label' => 'Police',
'selected' => $this->getData(['theme', 'title', 'font'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -1436,8 +1436,7 @@ class UploadHandler
$magicianObj -> saveImage($targetFile);
}
$thumbResult = create_img($targetFile, $targetFileThumb, 266, 200);
$thumbResult = create_img($targetFile, $targetFileThumb, 122, 91);
if ( $thumbResult!==true)
{

View File

@ -425,7 +425,7 @@ $config = array(
'url_upload' => true,
//************************************
//************************************
//Thumbnail for external use creation
//************************************
@ -437,12 +437,12 @@ $config = array(
// path_from_filemanager/test/test1/
// PS if there isn't write permission in your destination folder you must set it
//
'fixed_image_creation' => false, //activate or not the creation of one or more image resized with fixed path from filemanager folder
'fixed_path_from_filemanager' => array( '../test/', '../test1/' ), //fixed path of the image folder from the current position on upload folder
'fixed_image_creation_name_to_prepend' => array( '', 'test_' ), //name to prepend on filename
'fixed_image_creation_to_append' => array( '_test', '' ), //name to appendon filename
'fixed_image_creation_width' => array( 300, 400 ), //width of image (you can leave empty if you set height)
'fixed_image_creation_height' => array( 200, '' ), //height of image (you can leave empty if you set width)
'fixed_image_creation' => true, //activate or not the creation of one or more image resized with fixed path from filemanager folder
'fixed_path_from_filemanager' => array( '../../../site/file/thumb' ), //fixed path of the image folder from the current position on upload folder
'fixed_image_creation_name_to_prepend' => array( '' ), //name to prepend on filename
'fixed_image_creation_to_append' => array( '' ), //name to appendon filename
'fixed_image_creation_width' => array( 480 ), //width of image
'fixed_image_creation_height' => array( 320 ), //height of image
/*
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
@ -450,7 +450,7 @@ $config = array(
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
'fixed_image_creation_option' => array( 'crop', 'auto' ), //set the type of the crop
'fixed_image_creation_option' => array( 'landscape', 'portrait' ), //set the type of the crop
// New image resized creation with relative path inside to upload folder after uploading (thumbnails in relative mode)
@ -462,8 +462,8 @@ $config = array(
'relative_path_from_current_pos' => array( './', './' ), //relative path of the image folder from the current position on upload folder
'relative_image_creation_name_to_prepend' => array( '', '' ), //name to prepend on filename
'relative_image_creation_name_to_append' => array( '_thumb', '_thumb1' ), //name to append on filename
'relative_image_creation_width' => array( 300, 400 ), //width of image (you can leave empty if you set height)
'relative_image_creation_height' => array( 200, '' ), //height of image (you can leave empty if you set width)
'relative_image_creation_width' => array( 300, 400 ), //width of image
'relative_image_creation_height' => array( 200, 300 ), //height of image
/*
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
@ -473,7 +473,6 @@ $config = array(
*/
'relative_image_creation_option' => array( 'crop', 'crop' ), //set the type of the crop
// Remember text filter after close filemanager for future session
'remember_text_filter' => false,

View File

@ -21,7 +21,7 @@ tinymce.init({
},
width: 800, // Default value is 800
height: 500, // Default value is 550
Files: [ // Additional JS files to load
files: [ // Additional JS files to load
baseUrl + 'core/vendor/tinymce/mode/clike/clike.js',
baseUrl + 'core/vendor/tinymce/mode/php/php.js'
]
@ -34,8 +34,11 @@ tinymce.init({
// Target pour lightbox
rel_list: [
{title: 'None', value: ''},
{title: 'Lightbox', value: 'data-lity'}
// {title: 'Lightbox', value: 'data-lity'},
{title: 'SimpleLightbox', value: 'gallery'}
],
// Titre des image
image_title: true,
// Pages internes
link_list: baseUrl + "core/vendor/tinymce/links.php",
// Contenu du menu contextuel
@ -74,9 +77,11 @@ tinymce.init({
"filemanager": baseUrl + "core/vendor/filemanager/plugin.min.js"
},
// Thème mobile
mobile: {
theme: "mobile"
},
// mobile: {
// theme: "mobile",
// plugins: [ 'autosave', 'lists', 'autolink' ],
// toolbar: [ 'undo', 'bold', 'italic', 'styleselect' ]
//},
// Contenu du bouton insérer
insert_button_items: "image link media template codesample inserttable | hr | anchor",
// Contenu du bouton formats

View File

@ -50,7 +50,7 @@ tinymce.addI18n('fr_FR',{
"Blocks": "Blocs",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
"Font Family": "Police",
"Font Sizes": "Taille de police",
"Font Sizes": "Tailles de police",
"Class": "Classe",
"Browse for an image": "Parcourir pour s\u00e9lectionner une image",
"OR": "OU",
@ -112,7 +112,8 @@ tinymce.addI18n('fr_FR',{
"Handy Shortcuts": "Raccourci",
"Horizontal line": "Ligne horizontale",
"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
"Image description": "Description de l'image",
"Image description": "Description",
"Image Title": "Légende",
"Source": "Source",
"Dimensions": "Dimensions",
"Constrain proportions": "Conserver les proportions",
@ -160,7 +161,7 @@ tinymce.addI18n('fr_FR',{
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
"Link list": "Page",
"Rel": "Ouvrir dans",
"Rel": "Ouvrir avec",
"Insert video": "Ins\u00e9rer une vid\u00e9o",
"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
@ -258,4 +259,4 @@ tinymce.addI18n('fr_FR',{
"Tools": "Outils",
"Powered by {0}": "Propuls\u00e9 par {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide."
});
});

View File

@ -1 +1 @@
[{"title":"Nouvelle page","value":"?nouvelle-page"},{"title":"Accueil","value":"?accueil","menu":[{"title":"Enfant","value":"?enfant"},{"title":"Mise en page","value":"?mise-en-page"},{"title":"Blog","value":"?blog"}]},{"title":"Cach\u00e9e","value":"?cachee"},{"title":"Galeries","value":"?galeries"},{"title":"Site de Zwii","value":"?site-de-zwii"},{"title":"Contact","value":"?contact"}]
[{"title":"Accueil","value":"?accueil","menu":[{"title":"Enfant","value":"?enfant"},{"title":"Mise en page","value":"?mise-en-page"}]},{"title":"Priv\u00e9e","value":"?privee"},{"title":"Blog","value":"?blog"},{"title":"Galeries","value":"?galeries"},{"title":"Site de Zwii","value":"?site-de-zwii"},{"title":"Contact","value":"?contact"}]

View File

@ -37,7 +37,7 @@ class blog extends common {
public static $users = [];
const BLOG_VERSION = '1.2';
const BLOG_VERSION = '1.3';
/**
* Édition

View File

@ -1,5 +1,5 @@
#blogArticlePicture {
height: 350px;
height: auto;
width: 100%;
background-size: cover;
background-repeat: no-repeat;
@ -20,7 +20,7 @@
}
@media (max-width: 767px) {
#blogArticlePicture {
height:150px;
height:auto;
max-width: 100%;}
}

View File

@ -5,7 +5,8 @@
</div>
<?php if ($this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'hidePicture']) == false) {
echo '<div id="blogArticlePicture" style="background-image:url(' . helper::baseUrl(false) . 'site/file/source/' . $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'picture']) . ');"></div>';
// echo '<div id="blogArticlePicture" style="background-image:url(' . helper::baseUrl(false) . 'site/file/source/' . $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'picture']) . ');"></div>';
echo '<div id="blogArticlePicture"><img id="blogArticlePicture" src="' . helper::baseUrl(false) . 'site/file/source/' . $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'picture']) . '"></div>';
} ?>
<?php echo $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'content']); ?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,5 +0,0 @@
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>