Compare commits
10 Commits
50d46e8a0e
...
fa8ec8534e
Author | SHA1 | Date |
---|---|---|
Fred Tempez | fa8ec8534e | |
Fred Tempez | fb3ca86d81 | |
Fred Tempez | 8ec673b549 | |
Fred Tempez | 4486ce6513 | |
Fred Tempez | 430befa3c4 | |
Fred Tempez | d8ec88cb46 | |
Fred Tempez | 6c12a2e772 | |
Fred Tempez | 27c91356fb | |
Fred Tempez | ffe62bbbf9 | |
Fred Tempez | 3caa1eb6a1 |
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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 = [];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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%'
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -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 {
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue