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/*
# Fichiers de données
site/data/*
site/data/*.json
site/data/*.css
site/data/fr/*.json

View File

@ -1,5 +1,13 @@
# 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
Cette version apporte aux modules une autonomie complète par rapport au noyau.
- 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.

View File

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

View File

@ -288,6 +288,10 @@ core.start = function() {
$(".inputFileDelete").on("click", function() {
$(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
$("#barUpdate").on("click", function() {
return core.confirm("Effectuer la mise à jour ?", function() {

View File

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

View File

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

View File

@ -15,7 +15,7 @@
class news extends common {
const VERSION = '3.1';
const VERSION = '3.2';
const REALNAME = 'Actualités';
const DELETE = true;
const UPDATE = '0.0';
@ -68,10 +68,10 @@ class news extends common {
];
public static $itemsBlur = [
'100%' => 'Aucun',
'90%' => 'Faible',
'75%' => 'Modéré',
'60%' => 'Important',
'0%' => 'Aucun',
'15%' => 'Faible',
'30%' => 'Modéré',
'45%' => 'Important',
];
// Signature de l'article
@ -136,10 +136,12 @@ class news extends common {
if($this->isPost()) {
// Crée la news
$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, [
'content' => $this->getInput('newsAddContent', null),
'publishedOn' => $this->getInput('newsAddPublishedOn', helper::FILTER_DATETIME, true),
'publishedOff' => $this->getInput('newsAddPublishedOff', helper::FILTER_DATETIME),
'publishedOn' => $publishedOn,
'publishedOff' => $publishedOff,
'state' => $this->getInput('newsAddState', helper::FILTER_BOOLEAN),
'title' => $this->getInput('newsAddTitle', helper::FILTER_STRING_SHORT, true),
'userId' => $this->getInput('newsAddUserId', helper::FILTER_ID, true)
@ -185,8 +187,11 @@ class news extends common {
// Générer la feuille de CSS
$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) );';
$style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}';
if ($this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) !== '100%') {
$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
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)]);
}
$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, [
'content' => $this->getInput('newsEditContent', null),
'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', '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')) {
// Générer la feuille de CSS
$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) );';
$style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}';
// Pas d'effet flou à l'initialisation
//$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
file_put_contents(self::DATADIRECTORY . 'pages/' . $this->getUrl(0) . '/theme.css' , $style );
// Stocker le nom de la feuille de style

View File

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

View File

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

View File

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

View File

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

View File

@ -4,7 +4,7 @@
<div class="row">
<div class="col9 verticalAlignMiddle">
<?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
]); ?>
</div>