Merge branch '10501' into 11000

This commit is contained in:
Fred Tempez 2021-03-23 08:43:56 +01:00
commit 1bd5e0b17c
12 changed files with 65 additions and 45 deletions

View File

@ -9,6 +9,13 @@
- Traduction selon la langue navigateur - Traduction selon la langue navigateur
- Configuration du site : - Configuration du site :
- Activation et désactivation de la déconnexion automatique empêchant plusieurs sessions avec le même compte. - Activation et désactivation de la déconnexion automatique empêchant plusieurs sessions avec le même compte.
## version 10.5.01
- Modifications :
- Rechargement du fichier de style common.css et du jeu d'icônes du système après une mise à jour.
- News 2.3 : ajout de la signature du rédacteur dans le module news (actualités, idem module blog)
Corrections :
- Mode maintenance, titre non masqué d'une page personnalisée.
## version 10.5.00 ## version 10.5.00
**A partir de cette version, les versions de php inférieures à 7.2 ne sont plus supportées.** **A partir de cette version, les versions de php inférieures à 7.2 ne sont plus supportées.**

View File

@ -108,7 +108,7 @@ class helper {
// Creation du ZIP // Creation du ZIP
$baseName = str_replace('/','',helper::baseUrl(false,false)); $baseName = str_replace('/','',helper::baseUrl(false,false));
$baseName = empty($baseName) ? 'ZwiiCMS' : $baseName; $baseName = empty($baseName) ? 'ZwiiCMS' : $baseName;
$fileName = $baseName . '-backup-' . date('Y-m-d-h-i-s', time()) . '.zip'; $fileName = $baseName . '-backup-' . date('Y-m-d-H-i-s', time()) . '.zip';
$zip = new ZipArchive(); $zip = new ZipArchive();
$zip->open($folder . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE); $zip->open($folder . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$directory = 'site/'; $directory = 'site/';

View File

@ -1750,7 +1750,7 @@ class core extends common {
$css .= '.blogDate {color:' . $this->getData(['theme', 'text', 'textColor']) . ';}.blogPicture img{border:1px solid ' . $this->getData(['theme', 'text', 'textColor']) . '; box-shadow: 1px 1px 5px ' . $this->getData(['theme', 'text', 'textColor']) . ';}'; $css .= '.blogDate {color:' . $this->getData(['theme', 'text', 'textColor']) . ';}.blogPicture img{border:1px solid ' . $this->getData(['theme', 'text', 'textColor']) . '; box-shadow: 1px 1px 5px ' . $this->getData(['theme', 'text', 'textColor']) . ';}';
// Couleur fixée dans admin.css // Couleur fixée dans admin.css
//$css .= '.button.buttonGrey,.button.buttonGrey:hover{color:' . $this->getData(['theme', 'text', 'textColor']) . '}'; //$css .= '.button.buttonGrey,.button.buttonGrey:hover{color:' . $this->getData(['theme', 'text', 'textColor']) . '}';
$css .= '.container{max-width:' . $this->getData(['theme', 'site', 'width']) . '}'; $css .= '.container, .helpDisplayContent{max-width:' . $this->getData(['theme', 'site', 'width']) . '}';
$margin = $this->getData(['theme', 'site', 'margin']) ? '0' : '20px'; $margin = $this->getData(['theme', 'site', 'margin']) ? '0' : '20px';
// Marge supplémentaire lorsque le pied de page est fixe // Marge supplémentaire lorsque le pied de page est fixe
if ( $this->getData(['theme', 'footer', 'fixed']) === true && if ( $this->getData(['theme', 'footer', 'fixed']) === true &&
@ -2527,7 +2527,7 @@ class layout extends common {
$items .= '<span id="footerDisplayLegal"'; $items .= '<span id="footerDisplayLegal"';
$items .= $this->getData(['theme','footer','displayLegal']) === false ? ' class="displayNone" >' : '>'; $items .= $this->getData(['theme','footer','displayLegal']) === false ? ' class="displayNone" >' : '>';
if ($this->getData(['locale','legalPageId']) !== 'none') { if ($this->getData(['locale','legalPageId']) !== 'none') {
$items .= '<wbr>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . $this->getData(['locale','legalPageId']) . '" data-tippy-content="Mentions Légales">Mentions légales</a>'; $items .= '<wbr>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . $this->getData(['locale','legalPageId']) . '" data-tippy-content="Mentions légales">Mentions légales</a>';
} }
$items .= '</span>'; $items .= '</span>';
// Affichage du lien de connexion // Affichage du lien de connexion
@ -3116,7 +3116,11 @@ class layout extends common {
foreach($vendorFiles as $vendorFile) { foreach($vendorFiles as $vendorFile) {
switch(pathinfo($vendorFile, PATHINFO_EXTENSION)) { switch(pathinfo($vendorFile, PATHINFO_EXTENSION)) {
case 'css': case 'css':
echo '<link rel="stylesheet" href="' . helper::baseUrl(false) . $vendorPath . $vendorFile . '">'; // Force le rechargement lors d'une mise à jour du jeu d'icônes
$reload = $vendorPath === 'core/vendor/zwiico/'
? '?' . md5_file('core/vendor/zwiico/css/zwiico-codes.css')
: '';
echo '<link rel="stylesheet" href="' . helper::baseUrl(false) . $vendorPath . $vendorFile . $reload . '">';
break; break;
case 'js': case 'js':
echo '<script src="' . helper::baseUrl(false) . $vendorPath . $vendorFile . '"></script>'; echo '<script src="' . helper::baseUrl(false) . $vendorPath . $vendorFile . '"></script>';

View File

@ -1693,16 +1693,18 @@ th.col12 {
/* Système d'aide */ /* Système d'aide */
.helpDisplayContent { .helpDisplayContent {
display: none; display: none;
position: fixed;
width: 100%;
bottom: 15px;
padding: 2px 10px;
margin-left: -20px;
-webkit-box-shadow: 5px 5px 11px 0px #222222; -webkit-box-shadow: 5px 5px 11px 0px #222222;
box-shadow: 5px 5px 11px 0px #222222; box-shadow: 5px 5px 11px 0px #222222;
border-radius: 5px; border-radius: 5px;
padding: 2px 10px;
background-color:#333; background-color:#333;
color: white; color: white;
position: fixed;
z-index: 30; z-index: 30;
bottom: 5px;
} }
.helpDisplayButton { .helpDisplayButton {

View File

@ -11,7 +11,7 @@
<?php $layout->showFavicon(); ?> <?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?> <?php $layout->showVendor(); ?>
<?php $layout->showAnalytics(); ?> <?php $layout->showAnalytics(); ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css?<?php echo md5_file('core/layout/common.css');?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
<!-- Détection RSS --> <!-- Détection RSS -->

View File

@ -19,9 +19,9 @@
<?php else: ?> <?php else: ?>
<?php echo template::speech('Aucun module installé.'); ?> <?php echo template::speech('Aucun module installé.'); ?>
<?php endif; ?> <?php endif; ?>
<div class="col10 helpDisplayContent"> <div class="helpDisplayContent">
<p>Exporter produit une archive au nom du module contenant les pages concernées ainsi que les données et ressources utilisées par le module dans ces pages. <p>Exporter produit une archive au nom du module contenant les pages concernées ainsi que les données et ressources utilisées par le module dans ces pages.</p>
Vous pouvez vous en servir comme d'une sauvegarde partielle ou pour transférer les pages et les données du module vers un autre site.</p> <p>Vous pouvez vous en servir comme d'une sauvegarde partielle ou pour transférer les pages et les données du module vers un autre site.</p>
<p>Une fois le module installé l'import permet de restaurer les pages et les données sauvegardées. Si une page de même nom existe sur votre site vous serez invité à modifier son nom.</p> <p>Une fois le module installé l'import permet de restaurer les pages et les données sauvegardées.
Si une page de même nom existe sur votre site vous serez invité à modifier son nom.</p>
</div> </div>

View File

@ -33,7 +33,9 @@ class maintenance extends common {
AND $this->getData(['page',$this->getData(['locale','page302'])]) ) { AND $this->getData(['page',$this->getData(['locale','page302'])]) ) {
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT, 'display' => self::DISPLAY_LAYOUT_LIGHT,
'title' => $this->getData(['page',$this->getData(['locale','page302']),'title']), 'title' => $this->getData(['page',$this->getData(['locale','page302']),'hideTitle'])
? ''
: $this->getData(['page',$this->getData(['locale','page302']),'title']),
'content' => $this->getdata(['page',$this->getData(['locale','page302']),'content']), 'content' => $this->getdata(['page',$this->getData(['locale','page302']),'content']),
'view' => 'index' 'view' => 'index'
]); ]);

View File

@ -424,17 +424,20 @@ class theme extends common {
'imageContainer' => $this->getInput('themeHeaderImageContainer') 'imageContainer' => $this->getInput('themeHeaderImageContainer')
]]); ]]);
// Modification de la position du menu selon la position de la bannière // Modification de la position du menu selon la position de la bannière
switch ($this->getInput('themeHeaderPosition') && if ( $this->getInput('themeHeaderPosition') &&
$this->getData(['theme','menu','position']) !== 'site' && ( $this->getData(['theme','menu','position']) !== 'site' ||
$this->getData(['theme','menu','position']) !== 'top' ) { $this->getData(['theme','menu','position']) !== 'top') )
case 'site' : {
$position = str_replace ('body','site',$this->getData(['theme','menu','position'])); switch ($this->getInput('themeHeaderPosition')) {
break; case 'site' :
case 'body' : $position = str_replace ('body','site',$this->getData(['theme','menu','position']));
$position = str_replace ('site','body',$this->getData(['theme','menu','position'])); break;
break; case 'body' :
default: $position = str_replace ('site','body',$this->getData(['theme','menu','position']));
$position = $this->getData(['theme','menu','position']); break;
default:
$position = $this->getData(['theme','menu','position']);
}
} }
$this->setData(['theme', 'menu', [ $this->setData(['theme', 'menu', [
@ -774,7 +777,7 @@ class theme extends common {
*/ */
private function zipTheme($modele) { private function zipTheme($modele) {
// Creation du dossier // Creation du dossier
$zipFilename = $modele . ' ' .date('d m Y').' '.date('H i s ').'.zip'; $zipFilename = $modele . date('Y-m-d-H-i-s', time()) . '.zip';
$zip = new ZipArchive(); $zip = new ZipArchive();
if ($zip->open(self::TEMP_DIR . $zipFilename, ZipArchive::CREATE | ZipArchive::OVERWRITE ) === TRUE) { if ($zip->open(self::TEMP_DIR . $zipFilename, ZipArchive::CREATE | ZipArchive::OVERWRITE ) === TRUE) {
switch ($modele) { switch ($modele) {

View File

@ -12,7 +12,7 @@
* @link http://zwiicms.fr/ * @link http://zwiicms.fr/
*/ */
$(document).ready(function(){ $(document).ready(function(){
$("header").css("line-height", ""); $("header").css("line-height", "");
$("header").css("height", ""); $("header").css("height", "");
}); });
@ -45,7 +45,7 @@ $("input, select").on("change", function() {
if ($("#themeHeaderHeight option").length === 5) { if ($("#themeHeaderHeight option").length === 5) {
// Pas d'image précédemment on ajoute l'option // Pas d'image précédemment on ajoute l'option
$("#themeHeaderHeight ").prepend('<option selected="selected" value="0"> Hauteur de l\'image sélectionnée </option>'); $("#themeHeaderHeight ").prepend('<option selected="selected" value="0"> Hauteur de l\'image sélectionnée </option>');
} }
// Modifier la valeur // Modifier la valeur
$("#themeHeaderHeight option:eq(0)").val(tmpImgHeight + "px"); $("#themeHeaderHeight option:eq(0)").val(tmpImgHeight + "px");
// Modifier l'option // Modifier l'option
@ -83,14 +83,14 @@ $("input, select").on("change", function() {
// Taille, couleur, épaisseur et capitalisation du titre de la bannière // Taille, couleur, épaisseur et capitalisation du titre de la bannière
css += "header span{color:" + $("#themeHeaderTextColor").val() + ";font-family:'" + headerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + "}"; css += "header span{color:" + $("#themeHeaderTextColor").val() + ";font-family:'" + headerFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeHeaderFontWeight").val() + ";font-size:" + $("#themeHeaderFontSize").val() + ";text-transform:" + $("#themeHeaderTextTransform").val() + "}";
// Cache le titre de la bannière // Cache le titre de la bannière
if($("#themeHeaderTextHide").is(":checked")) { if($("#themeHeaderTextHide").is(":checked")) {
$("header #themeHeaderTitle").hide(); $("header #themeHeaderTitle").hide();
} }
else { else {
$("header #themeHeaderTitle").show(); $("header #themeHeaderTitle").show();
} }
// Marge // Marge
if($("#themeHeaderMargin").is(":checked")) { if($("#themeHeaderMargin").is(":checked")) {
if(<?php echo json_encode($this->getData(['theme', 'menu', 'position']) === 'site-first'); ?>) { if(<?php echo json_encode($this->getData(['theme', 'menu', 'position']) === 'site-first'); ?>) {
@ -173,7 +173,7 @@ $("#themeHeaderPosition").on("change", function() {
if($(this).val() === 'hide') { if($(this).val() === 'hide') {
$("#themeHeaderShow").slideUp(function() { $("#themeHeaderShow").slideUp(function() {
$("#themeHeaderlinkHome").prop("checked", false).trigger("change"); $("#themeHeaderlinkHome").prop("checked", false).trigger("change");
}); });
} }
else { else {
$("#themeHeaderShow").slideDown(); $("#themeHeaderShow").slideDown();

View File

@ -79,15 +79,7 @@ $("input, select").on("change", function() {
) { ) {
css += 'nav{padding:0 10px;}'; css += 'nav{padding:0 10px;}';
} }
// Ajout du css au DOM
$("#themePreview").remove();
$("<style>")
.attr("type", "text/css")
.attr("id", "themePreview")
.text(css)
.appendTo("head");
// Position du menu // Position du menu
switch($("#themeMenuPosition").val()) { switch($("#themeMenuPosition").val()) {
case 'hide': case 'hide':
@ -129,6 +121,15 @@ $("input, select").on("change", function() {
$("nav").show().prependTo("#site"); $("nav").show().prependTo("#site");
break; break;
} }
// Ajout du css au DOM
$("#themePreview").remove();
$("<style>")
.attr("type", "text/css")
.attr("id", "themePreview")
.text(css)
.appendTo("head");
}); });
// //
// Lien de connexion (addClass() et removeClass() au lieu de hide() et show() car ils ne conservent pas le display-inline: block; de #themeMenuLoginLink) // Lien de connexion (addClass() et removeClass() au lieu de hide() et show() car ils ne conservent pas le display-inline: block; de #themeMenuLoginLink)

View File

@ -15,7 +15,7 @@
class news extends common { class news extends common {
const VERSION = '2.2'; const VERSION = '2.3';
const REALNAME = 'Actualités'; const REALNAME = 'Actualités';
const DELETE = true; const DELETE = true;
const UPDATE = '0.0'; const UPDATE = '0.0';
@ -304,6 +304,7 @@ class news extends common {
// News en fonction de la pagination // News en fonction de la pagination
for($i = $pagination['first']; $i < $pagination['last']; $i++) { for($i = $pagination['first']; $i < $pagination['last']; $i++) {
self::$news[$newsIds[$i]] = $this->getData(['module', $this->getUrl(0),'posts', $newsIds[$i]]); self::$news[$newsIds[$i]] = $this->getData(['module', $this->getUrl(0),'posts', $newsIds[$i]]);
self::$news[$newsIds[$i]]['userId'] = $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $newsIds[$i], 'userId']));
} }
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([

View File

@ -15,10 +15,10 @@
<?php echo mb_detect_encoding(strftime('%d %B %Y', $news['publishedOn']), 'UTF-8', true) <?php echo mb_detect_encoding(strftime('%d %B %Y', $news['publishedOn']), 'UTF-8', true)
? strftime('%d %B %Y', $news['publishedOn']) ? strftime('%d %B %Y', $news['publishedOn'])
: utf8_encode(strftime('%d %B %Y', $news['publishedOn'])); ?> : utf8_encode(strftime('%d %B %Y', $news['publishedOn'])); ?>
- <?php echo $this->getData(['user', $news['userId'], 'firstname']) . ' ' . $this->getData(['user', $news['userId'], 'lastname']); ?> - <?php echo $news['userId']; ?>
<!-- Bloc edition --> <!-- Bloc edition -->
<?php if ( <?php if (
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
AND AND
( // Propriétaire ( // Propriétaire
@ -40,7 +40,7 @@
<div id="rssFeed"> <div id="rssFeed">
<a type="application/rss+xml" href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?> "> <a type="application/rss+xml" href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?> ">
<img src='module/news/ressource/feed-icon-16.gif' /> <img src='module/news/ressource/feed-icon-16.gif' />
<?php <?php
echo '<p>' . $this->getData(['module',$this->getUrl(0), 'config', 'feedsLabel']) . '</p>' ; echo '<p>' . $this->getData(['module',$this->getUrl(0), 'config', 'feedsLabel']) . '</p>' ;
?> ?>
</a> </a>