Compare commits

...

10 Commits

13 changed files with 75 additions and 33 deletions

1
.gitignore vendored
View File

@ -7,6 +7,7 @@ site/tmp/*.png
site/backup/* site/backup/*
# Fichiers de données # Fichiers de données
site/data/*
site/data/*.json site/data/*.json
site/data/*.css site/data/*.css
site/data/fr/*.json site/data/fr/*.json

View File

@ -1,5 +1,13 @@
# Changelog # Changelog
## version 10.6.01
Corrections :
- Champs de formulaire, uniformisation de la hauteur (select, input, etc) identique à celle des boutons à 9px.
- Module search : texte d'aide dans la zone de saisie non pris en compte.
Modifications :
- News 3.2 : ajout au sélecteur de date d'un bouton d'effacement identique à celui du sélecteur de fichiers.
- News 3.2 : décoloration du texte, modification de l'effet blur.
## version 10.6.00 ## version 10.6.00
Cette version apporte aux modules une autonomie complète par rapport au noyau. Cette version apporte aux modules une autonomie complète par rapport au noyau.
- mise à jour interne (fonction update) - mise à jour interne (fonction update)

View File

@ -1,5 +1,5 @@
# ZwiiCMS 10.6.00 # ZwiiCMS 10.6.01
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation. Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.

View File

@ -247,12 +247,18 @@ class template {
} }
$html .= self::notice($attributes['id'], $notice); $html .= self::notice($attributes['id'], $notice);
// Date visible // Date visible
$html .= '<div class="inputDateManagerWrapper">';
$html .= sprintf( $html .= sprintf(
'<input type="text" class="datepicker %s" value="%s" %s>', '<input type="text" class="datepicker %s" value="%s" %s>',
$attributes['class'], $attributes['class'],
$attributes['value'], $attributes['value'],
helper::sprintAttributes($attributes, ['class', 'value']) helper::sprintAttributes($attributes, ['class', 'value'])
); );
$html .= self::button($attributes['id'] . 'Delete', [
'class' => 'inputDateDelete',
'value' => self::ico('cancel')
]);
$html .= '</div>';
// Fin du wrapper // Fin du wrapper
$html .= '</div>'; $html .= '</div>';
// Retourne le html // Retourne le html

View File

@ -288,6 +288,10 @@ core.start = function() {
$(".inputFileDelete").on("click", function() { $(".inputFileDelete").on("click", function() {
$(this).parents(".inputWrapper").find(".inputFileHidden").val("").trigger("change"); $(this).parents(".inputWrapper").find(".inputFileHidden").val("").trigger("change");
}); });
// Suppression de la date contenu dans le champ
$(".inputDateDelete").on("click", function() {
$(this).parents(".inputWrapper").find(".datepicker").val("").trigger("change");
});
// Confirmation de mise à jour // Confirmation de mise à jour
$("#barUpdate").on("click", function() { $("#barUpdate").on("click", function() {
return core.confirm("Effectuer la mise à jour ?", function() { return core.confirm("Effectuer la mise à jour ?", function() {

View File

@ -44,7 +44,7 @@ class common {
const ACCESS_TIMER = 1800; const ACCESS_TIMER = 1800;
// Numéro de version // Numéro de version
const ZWII_VERSION = '10.6.00'; const ZWII_VERSION = '10.6.01';
const ZWII_UPDATE_CHANNEL = "v10"; const ZWII_UPDATE_CHANNEL = "v10";
public static $actions = []; public static $actions = [];

View File

@ -1066,7 +1066,7 @@ input[type='password'],
.inputFile, .inputFile,
select, select,
textarea { textarea {
padding: 10px; padding: 9px;
/* -1px à cause des bordures */ /* -1px à cause des bordures */
/*background: #FFF;*/ /*background: #FFF;*/
border: 1px solid #D8DFE3; border: 1px solid #D8DFE3;
@ -1077,7 +1077,7 @@ textarea {
} }
select { select {
padding: 7px; padding: 9px;
} }
input[type='email']:hover, input[type='email']:hover,
@ -1188,13 +1188,13 @@ label {
} }
/* Upload de fichiers */ /* Upload de fichiers */
.inputFile { .inputFile, .datepicker {
margin: 0; margin: 0;
display: inline-block; display: inline-block;
width: 88%; width: 88% !important;
} }
.inputFileDelete { .inputFileDelete, .inputDateDelete {
display: block; display: block;
width: 10%; width: 10%;
padding: 10px 0; padding: 10px 0;
@ -1209,11 +1209,11 @@ label {
} }
/* Empêche le débordement et les sauts de ligne */ /* Empêche le débordement et les sauts de ligne */
.inputFileManagerWrapper { .inputFileManagerWrapper, .inputDateManagerWrapper {
display: inline; display: inline;
} }
.inputFileManagerWrapper>.inputFile { .inputFileManagerWrapper>.inputFile, .inputDateManagerWrapper>.inputFile {
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;

View File

@ -15,7 +15,7 @@
class news extends common { class news extends common {
const VERSION = '3.1'; const VERSION = '3.2';
const REALNAME = 'Actualités'; const REALNAME = 'Actualités';
const DELETE = true; const DELETE = true;
const UPDATE = '0.0'; const UPDATE = '0.0';
@ -68,10 +68,10 @@ class news extends common {
]; ];
public static $itemsBlur = [ public static $itemsBlur = [
'100%' => 'Aucun', '0%' => 'Aucun',
'90%' => 'Faible', '15%' => 'Faible',
'75%' => 'Modéré', '30%' => 'Modéré',
'60%' => 'Important', '45%' => 'Important',
]; ];
// Signature de l'article // Signature de l'article
@ -136,10 +136,12 @@ class news extends common {
if($this->isPost()) { if($this->isPost()) {
// Crée la news // Crée la news
$newsId = helper::increment($this->getInput('newsAddTitle', helper::FILTER_ID), (array) $this->getData(['module', $this->getUrl(0)])); $newsId = helper::increment($this->getInput('newsAddTitle', helper::FILTER_ID), (array) $this->getData(['module', $this->getUrl(0)]));
$publishedOn = $this->getInput('newsAddPublishedOn', helper::FILTER_DATETIME, true);
$publishedOff = $this->getInput('newsAddPublishedOff' ) ? $this->getInput('newsEditPublishedOff', helper::FILTER_DATETIME) : '';
$this->setData(['module', $this->getUrl(0),'posts', $newsId, [ $this->setData(['module', $this->getUrl(0),'posts', $newsId, [
'content' => $this->getInput('newsAddContent', null), 'content' => $this->getInput('newsAddContent', null),
'publishedOn' => $this->getInput('newsAddPublishedOn', helper::FILTER_DATETIME, true), 'publishedOn' => $publishedOn,
'publishedOff' => $this->getInput('newsAddPublishedOff', helper::FILTER_DATETIME), 'publishedOff' => $publishedOff,
'state' => $this->getInput('newsAddState', helper::FILTER_BOOLEAN), 'state' => $this->getInput('newsAddState', helper::FILTER_BOOLEAN),
'title' => $this->getInput('newsAddTitle', helper::FILTER_STRING_SHORT, true), 'title' => $this->getInput('newsAddTitle', helper::FILTER_STRING_SHORT, true),
'userId' => $this->getInput('newsAddUserId', helper::FILTER_ID, true) 'userId' => $this->getInput('newsAddUserId', helper::FILTER_ID, true)
@ -185,8 +187,11 @@ class news extends common {
// Générer la feuille de CSS // Générer la feuille de CSS
$style = '.newsContent {height:' . $this->getInput('newsConfigItemsHeight',helper::FILTER_STRING_SHORT) . ';}'; $style = '.newsContent {height:' . $this->getInput('newsConfigItemsHeight',helper::FILTER_STRING_SHORT) . ';}';
$style .= '.newsBlur {background: linear-gradient(' . $this->getData(['theme', 'text', 'textColor']) . ' ' . $this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) . ',rgba(255,255,255,0) );'; if ($this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) !== '100%') {
$style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}'; $style .= '.newsBlur {height: ' . $this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) . ';}';
//$style .= '.newsBlur {background: linear-gradient(' . $this->getData(['theme', 'text', 'textColor']) . ' ' . $this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) . ',rgba(255,255,255,0) );';
//$style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}';
}
// Dossier de l'instance // Dossier de l'instance
if (!is_dir(self::DATADIRECTORY . 'pages/' . $this->getUrl(0))) { if (!is_dir(self::DATADIRECTORY . 'pages/' . $this->getUrl(0))) {
@ -331,7 +336,7 @@ class news extends common {
$this->deleteData(['module', $this->getUrl(0),'posts', $this->getUrl(2)]); $this->deleteData(['module', $this->getUrl(0),'posts', $this->getUrl(2)]);
} }
$publishedOn = $this->getInput('newsEditPublishedOn', helper::FILTER_DATETIME, true); $publishedOn = $this->getInput('newsEditPublishedOn', helper::FILTER_DATETIME, true);
$publishedOff = $this->getInput('newsEditPublishedOff', helper::FILTER_DATETIME); $publishedOff = $this->getInput('newsEditPublishedOff' ) ? $this->getInput('newsEditPublishedOff', helper::FILTER_DATETIME) : '';
$this->setData(['module', $this->getUrl(0),'posts', $newsId, [ $this->setData(['module', $this->getUrl(0),'posts', $newsId, [
'content' => $this->getInput('newsEditContent', null), 'content' => $this->getInput('newsEditContent', null),
'publishedOn' => $publishedOn, 'publishedOn' => $publishedOn,
@ -480,6 +485,15 @@ class news extends common {
$this->setData(['module', $this->getUrl(0), 'theme', init::$defaultTheme]); $this->setData(['module', $this->getUrl(0), 'theme', init::$defaultTheme]);
$this->setData(['module', $this->getUrl(0), 'theme', 'style', self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' ]); $this->setData(['module', $this->getUrl(0), 'theme', 'style', self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' ]);
} }
$versionData = $this->getData(['module',$this->getUrl(0),'config', 'versionData' ]);
// Mise à jour 3.2
if (version_compare($versionData, '3.1', '<') ) {
$this->setData(['module',$this->getUrl(0),'theme', 'itemsBlur', '0%' ]);
// Mettre à jour la verison
$this->setData(['module',$this->getUrl(0),'config', 'versionData', '3.2' ]);
}
} }
/** /**
@ -508,8 +522,9 @@ class news extends common {
if ( !file_exists(self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css')) { if ( !file_exists(self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css')) {
// Générer la feuille de CSS // Générer la feuille de CSS
$style = '.newsContent {height: ' . $this->getData([ 'module', $this->getUrl(0), 'theme', 'itemsHeight' ]) .';}'; $style = '.newsContent {height: ' . $this->getData([ 'module', $this->getUrl(0), 'theme', 'itemsHeight' ]) .';}';
$style .= '.newsBlur {background: linear-gradient(' . $this->getData(['theme', 'text', 'textColor']) . ' ' . $this->getData([ 'module', $this->getUrl(0), 'theme', 'itemsBlur' ]) . ',rgba(255,255,255,0) );'; // Pas d'effet flou à l'initialisation
$style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}'; //$style .= '.newsBlur {background: linear-gradient(' . $this->getData(['theme', 'text', 'textColor']) . ' ' . $this->getData([ 'module', $this->getUrl(0), 'theme', 'itemsBlur' ]) . ',rgba(255,255,255,0) );';
//$style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}';
// Sauver la feuille de style // Sauver la feuille de style
file_put_contents(self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' , $style ); file_put_contents(self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' , $style );
// Stocker le nom de la feuille de style // Stocker le nom de la feuille de style

View File

@ -5,10 +5,10 @@ class init extends search {
'feedsLabel' => '', 'feedsLabel' => '',
'itemsperPage' => 8, 'itemsperPage' => 8,
'itemsperCol' => 12, 'itemsperCol' => 12,
'versionData' => '3.0' 'versionData' => '3.2'
]; ];
public static $defaultTheme = [ public static $defaultTheme = [
'itemsHeight' => 'auto', 'itemsHeight' => 'auto',
'itemsBlur' => '100%' 'itemsBlur' => '0%'
]; ];
} }

View File

@ -28,13 +28,16 @@
margin-left: 10px; margin-left: 10px;
margin-bottom: 30px; margin-bottom: 30px;
} }
/*
.newsBlur { .newsBlur {
background: linear-gradient(#333 90%,#FFF ); width: 100%;
background-clip: text; height: 50%;
-webkit-background-clip: text; position: absolute;
-webkit-text-fill-color: transparent; bottom: 0;
}*/ left: -20px;
z-index: 10;
backdrop-filter: blur(1px);
}
.newsSignature { .newsSignature {

View File

@ -5,8 +5,10 @@
<h2 class="newsTitle" id="<?php echo $newsId;?>"> <h2 class="newsTitle" id="<?php echo $newsId;?>">
<?php echo '<a href="'. helper::baseUrl(true) . $this->getUrl(0) . '/' . $newsId . '">' . $news['title'] . '</a>'; ?> <?php echo '<a href="'. helper::baseUrl(true) . $this->getUrl(0) . '/' . $newsId . '">' . $news['title'] . '</a>'; ?>
</h2> </h2>
<div class="newsContent newsBlur"> <div class="newsContent">
<?php echo $news['content']; ?> <?php echo $news['content']; ?>
<div class="newsBlur">
</div>
</div> </div>
<div class="newsSignature"> <div class="newsSignature">
<i class="far fa-calendar-alt"></i> <i class="far fa-calendar-alt"></i>
@ -36,7 +38,7 @@
<div id="rssFeed"> <div id="rssFeed">
<a type="application/rss+xml" href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?>" target="_blank"> <a type="application/rss+xml" href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?>" target="_blank">
<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>

View File

@ -19,7 +19,7 @@
class search extends common { class search extends common {
const VERSION = '2.0'; const VERSION = '2.1';
const REALNAME = 'Recherche'; const REALNAME = 'Recherche';
const DELETE = true; const DELETE = true;
const UPDATE = '0.0'; const UPDATE = '0.0';
@ -104,6 +104,8 @@ class search extends common {
// Données de thème // Données de thème
$this->setData(['module', $this->getUrl(0), 'theme',init::$defaultTheme ]); $this->setData(['module', $this->getUrl(0), 'theme',init::$defaultTheme ]);
$this->setData(['module', $this->getUrl(0), 'theme', 'style', self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' ]); $this->setData(['module', $this->getUrl(0), 'theme', 'style', self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' ]);
// Recharger la page pour éviter une config vide
header("Refresh:0");
} }
// Dossier de l'instance // Dossier de l'instance
@ -120,6 +122,7 @@ class search extends common {
// Stocker le nom de la feuille de style // Stocker le nom de la feuille de style
$this->setData(['module', $this->getUrl(0) , 'theme', 'style', $fileCSS]); $this->setData(['module', $this->getUrl(0) , 'theme', 'style', $fileCSS]);
} }
} }

View File

@ -4,7 +4,7 @@
<div class="row"> <div class="row">
<div class="col9 verticalAlignMiddle"> <div class="col9 verticalAlignMiddle">
<?php echo template::text('searchMotphraseclef', [ <?php echo template::text('searchMotphraseclef', [
'placeholder' => isset($_COOKIE['ZWII_I18N_SITE'] ) ? $this->getData(['module', $this->getUrl(0), 'config', 'placeHolder']):'Un ou plusieurs mots clef séparés par un espace', 'placeholder' => $this->getData(['module', $this->getUrl(0), 'config', 'placeHolder']) ? $this->getData(['module', $this->getUrl(0), 'config', 'placeHolder']):'Un ou plusieurs mots clef séparés par un espace',
'value' => $module::$motclef 'value' => $module::$motclef
]); ?> ]); ?>
</div> </div>