Browse Source

Merge branch '10501' into 11000

master
Fred Tempez 4 months ago
parent
commit
1bd5e0b17c
  1. 7
      CHANGES.md
  2. 2
      core/class/helper.class.php
  3. 10
      core/core.php
  4. 10
      core/layout/common.css
  5. 2
      core/layout/main.php
  6. 10
      core/module/addon/view/index/index.php
  7. 4
      core/module/maintenance/maintenance.php
  8. 27
      core/module/theme/theme.php
  9. 10
      core/module/theme/view/header/header.js.php
  10. 19
      core/module/theme/view/menu/menu.js.php
  11. 3
      module/news/news.php
  12. 6
      module/news/view/index/index.php

7
CHANGES.md

@ -9,6 +9,13 @@
- Traduction selon la langue navigateur
- Configuration du site :
- 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
**A partir de cette version, les versions de php inférieures à 7.2 ne sont plus supportées.**

2
core/class/helper.class.php

@ -108,7 +108,7 @@ class helper {
// Creation du ZIP
$baseName = str_replace('/','',helper::baseUrl(false,false));
$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->open($folder . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$directory = 'site/';

10
core/core.php

@ -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']) . ';}';
// Couleur fixée dans admin.css
//$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';
// Marge supplémentaire lorsque le pied de page est fixe
if ( $this->getData(['theme', 'footer', 'fixed']) === true &&
@ -2527,7 +2527,7 @@ class layout extends common {
$items .= '<span id="footerDisplayLegal"';
$items .= $this->getData(['theme','footer','displayLegal']) === false ? ' class="displayNone" >' : '>';
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>';
// Affichage du lien de connexion
@ -3116,7 +3116,11 @@ class layout extends common {
foreach($vendorFiles as $vendorFile) {
switch(pathinfo($vendorFile, PATHINFO_EXTENSION)) {
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;
case 'js':
echo '<script src="' . helper::baseUrl(false) . $vendorPath . $vendorFile . '"></script>';

10
core/layout/common.css

@ -1693,16 +1693,18 @@ th.col12 {
/* Système d'aide */
.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;
box-shadow: 5px 5px 11px 0px #222222;
border-radius: 5px;
padding: 2px 10px;
background-color:#333;
color: white;
position: fixed;
z-index: 30;
bottom: 5px;
}
.helpDisplayButton {

2
core/layout/main.php

@ -11,7 +11,7 @@
<?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?>
<?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; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
<!-- Détection RSS -->

10
core/module/addon/view/index/index.php

@ -19,9 +19,9 @@
<?php else: ?>
<?php echo template::speech('Aucun module installé.'); ?>
<?php endif; ?>
<div class="col10 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.
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>
<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>
<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>
</div>

4
core/module/maintenance/maintenance.php

@ -33,7 +33,9 @@ class maintenance extends common {
AND $this->getData(['page',$this->getData(['locale','page302'])]) ) {
$this->addOutput([
'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']),
'view' => 'index'
]);

27
core/module/theme/theme.php

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

10
core/module/theme/view/header/header.js.php

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

19
core/module/theme/view/menu/menu.js.php

@ -79,15 +79,7 @@ $("input, select").on("change", function() {
) {
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
switch($("#themeMenuPosition").val()) {
case 'hide':
@ -129,6 +121,15 @@ $("input, select").on("change", function() {
$("nav").show().prependTo("#site");
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)

3
module/news/news.php

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

6
module/news/view/index/index.php

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

Loading…
Cancel
Save