Merge branch '12300' into 12400
This commit is contained in:
commit
29d4d2d7ac
@ -42,6 +42,15 @@ class helper
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
// La traduction existe déjà dans le core
|
||||
/*
|
||||
if (array_key_exists($text, core::$dialog) === false && !empty($text)) {
|
||||
$dialogues = json_decode(file_get_contents('core/module/install/ressource/i18n/fr_FR.json' ), true);
|
||||
$data = array_merge($dialogues,[$text => '']);
|
||||
file_put_contents ('core/module/install/ressource/i18n/fr_FR.json', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT), LOCK_EX);
|
||||
}
|
||||
*/
|
||||
return (array_key_exists($text, core::$dialog) && !empty(core::$dialog[$text]) ? core::$dialog[$text] : $text);
|
||||
}
|
||||
|
||||
|
@ -52,7 +52,8 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
public function set($key, $value = null, $save = true)
|
||||
{
|
||||
parent::set($key, $value);
|
||||
if ($save) $this->save();
|
||||
if ($save)
|
||||
$this->save();
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -68,7 +69,8 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
public function add($key, $value = null, $pop = false, $save = true)
|
||||
{
|
||||
parent::add($key, $value, $pop);
|
||||
if ($save) $this->save();
|
||||
if ($save)
|
||||
$this->save();
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -82,7 +84,8 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
public function delete($key, $save = true)
|
||||
{
|
||||
parent::delete($key);
|
||||
if ($save) $this->save();
|
||||
if ($save)
|
||||
$this->save();
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -98,7 +101,8 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
public function clear($key = null, $format = false, $save = true)
|
||||
{
|
||||
parent::clear($key, $format);
|
||||
if ($save) $this->save();
|
||||
if ($save)
|
||||
$this->save();
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -108,19 +112,20 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
* @param bool $reload Reboot data?
|
||||
* @return array|mixed|null
|
||||
*/
|
||||
protected function loadData($reload = false) {
|
||||
protected function loadData($reload = false)
|
||||
{
|
||||
if ($this->data === null || $reload) {
|
||||
$this->db = $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'];
|
||||
if (!file_exists($this->db)) {
|
||||
return null; // Rebuild database manage by CMS
|
||||
} else {
|
||||
if ($this->config['backup']) {
|
||||
try {
|
||||
//todo make backup of database
|
||||
copy ($this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'], $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'] . '.backup');
|
||||
} catch (\Exception $e) {
|
||||
try {
|
||||
//todo make backup of database
|
||||
copy($this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'], $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'] . '.backup');
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->data = json_decode(file_get_contents($this->db), true);
|
||||
@ -135,11 +140,12 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
/**
|
||||
* Save database
|
||||
*/
|
||||
public function save() {
|
||||
public function save()
|
||||
{
|
||||
$lenght = strlen(json_encode($this->data));
|
||||
$try = 0;
|
||||
while ($try < 5) {
|
||||
$written = file_put_contents($this->db, json_encode($this->data), JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX); // Multi user get a locker
|
||||
$written = file_put_contents($this->db, json_encode($this->data), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | LOCK_EX); // Multi user get a locker
|
||||
if ($written == $lenght) {
|
||||
break;
|
||||
}
|
||||
@ -153,4 +159,4 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -331,15 +331,16 @@ class common
|
||||
]);
|
||||
}
|
||||
|
||||
// Installation fraîche, initialisation des modules manquants
|
||||
foreach ($this->dataFiles as $stageId => $item) {
|
||||
$folder = $this->dataPath($stageId, self::$i18nContent);
|
||||
if (
|
||||
file_exists($folder . $stageId . '.json') === false ||
|
||||
$this->getData([$stageId]) === NULL
|
||||
) {
|
||||
$this->initData($stageId, self::$i18nContent);
|
||||
common::$coreNotices[] = $stageId;
|
||||
// Installation fraîche, initialisation des modules
|
||||
if ($this->user === []) {
|
||||
foreach ($this->dataFiles as $stageId => $item) {
|
||||
$folder = $this->dataPath($stageId, self::$i18nContent);
|
||||
if (
|
||||
file_exists($folder . $stageId . '.json') === false
|
||||
) {
|
||||
$this->initData($stageId, self::$i18nContent);
|
||||
common::$coreNotices[] = $stageId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2668,7 +2669,7 @@ class core extends common
|
||||
$css .= 'header span{color:' . $colors['normal'] . ';font-family:' . $fonts[$this->getData(['theme', 'header', 'font'])] . ';font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}';
|
||||
}
|
||||
|
||||
// Bannière au contenu personnalisé
|
||||
// Bannière au Contenu HTML
|
||||
if ($this->getData(['theme', 'header', 'feature']) === 'feature') {
|
||||
// Hauteur de la taille du contenu perso
|
||||
$css .= 'header {height:' . $this->getData(['theme', 'header', 'height']) . '; min-height:' . $this->getData(['theme', 'header', 'height']) . ';overflow: hidden;}';
|
||||
|
@ -7,6 +7,7 @@
|
||||
if (file_exists('site/data/core.json')) {
|
||||
$version = json_decode(file_get_contents('site/data/core.json'), true);
|
||||
|
||||
// Avant version 12.0.00
|
||||
if ($version['core']['dataVersion'] < 12000) {
|
||||
// Correspondance pour les dossiers de langue à convertir
|
||||
$languages = [
|
||||
@ -23,15 +24,24 @@ if (file_exists('site/data/core.json')) {
|
||||
$end = rename('site/data/' . $key, 'site/data/' . $value);
|
||||
}
|
||||
}
|
||||
sleep(2);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
// Avant version 12.3.00
|
||||
if ($version['core']['dataVersion'] < 12300) {
|
||||
// Nettoyage du dossier de langue de TinyMCE
|
||||
unlink('core/vendor/tinymce/langs/*.js');
|
||||
unlink('core/vendor/tinymce/langs/langs.zip');
|
||||
unlink('core/vendor/tinymce/langs/README.md');
|
||||
}
|
||||
|
||||
if ($version['core']['dataVersion'] < 12400) {
|
||||
if (file_exists('core/module/install/ressource/i18n/languages.json'))
|
||||
rename('core/module/install/ressource/i18n/languages.json', 'core/module/install/ressource/i18n/language.json');
|
||||
if (file_exists('site/data/languages.json'))
|
||||
rename('site/data/languages.json', 'site/data/language.json');
|
||||
if (file_exists('site/data/fonts.json'))
|
||||
rename('site/data/fonts.json', 'site/data/font.json');
|
||||
if (file_exists('site/data/fonts.json'))
|
||||
rename('site/data/fonts.json', 'site/data/font.json');
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -2,15 +2,15 @@
|
||||
"languages": {
|
||||
"fr_FR": {
|
||||
"version": 12300,
|
||||
"date": 1676363607
|
||||
"date": 1677838293
|
||||
},
|
||||
"es": {
|
||||
"version": 12300,
|
||||
"date": 1676888793
|
||||
"date": 1677838293
|
||||
},
|
||||
"en_EN": {
|
||||
"version": 12300,
|
||||
"date": 1676888793
|
||||
"date": 1677838293
|
||||
}
|
||||
}
|
||||
}
|
@ -119,7 +119,7 @@ class theme extends common
|
||||
];
|
||||
public static $headerFeatures = [
|
||||
'wallpaper' => 'Couleur unie ou papier-peint',
|
||||
'feature' => 'Contenu personnalisé'
|
||||
'feature' => 'Contenu HTML'
|
||||
];
|
||||
public static $imagePositions = [
|
||||
'top left' => 'En haut à gauche',
|
||||
|
@ -9,11 +9,11 @@
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php /* echo template::button('themeFooterHelp', [
|
||||
'href' => 'https://doc.zwiicms.fr/pied-de-page',
|
||||
'target' => '_blank',
|
||||
'value' => template::ico('help'),
|
||||
'class' => 'buttonHelp'
|
||||
]); */ ?>
|
||||
'href' => 'https://doc.zwiicms.fr/pied-de-page',
|
||||
'target' => '_blank',
|
||||
'value' => template::ico('help'),
|
||||
'class' => 'buttonHelp'
|
||||
]); */?>
|
||||
</div>
|
||||
<div class="col2 offset8">
|
||||
<?php echo template::submit('themeFooterSubmit'); ?>
|
||||
@ -22,7 +22,9 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4><?php echo helper::translate('Paramètres'); ?></h4>
|
||||
<h4>
|
||||
<?php echo helper::translate('Paramètres'); ?>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<?php echo template::select('themeFooterPosition', $module::$footerPositions, [
|
||||
@ -59,7 +61,9 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4><?php echo helper::translate('Couleurs'); ?></h4>
|
||||
<h4>
|
||||
<?php echo helper::translate('Couleurs'); ?>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<?php echo template::text('themeFooterTextColor', [
|
||||
@ -73,7 +77,7 @@
|
||||
'class' => 'colorPicker',
|
||||
'label' => 'Arrière plan',
|
||||
'value' => $this->getData(['theme', 'footer', 'backgroundColor']),
|
||||
'help' => 'Quand le pied de page est dans le site, l\'arrière plan transparent montre le fond de la page. Quand le pied de page est hors du site, l\'arrière plan transparent montre le fond du site.'
|
||||
'help' => 'Quand le pied de page est dans le site, l\'arrière plan transparent montre le fond de la page. Quand le pied de page est hors du site, l\'arrière plan transparent montre le fond du site.'
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
@ -83,7 +87,9 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<?php echo helper::translate('Contenu'); ?></h4>
|
||||
<h4>
|
||||
<?php echo helper::translate('Éléments'); ?>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col3">
|
||||
<?php echo template::checkbox('themefooterDisplayCopyright', true, 'Motorisé par', [
|
||||
@ -118,8 +124,8 @@
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col3">
|
||||
<?php echo template::checkbox('themeFooterMemberBar', true, 'Barre du membre', [
|
||||
'checked' => $this->getData(['theme', 'footer', 'memberBar']),
|
||||
<?php echo template::checkbox('themeFooterMemberBar', true, 'Barre de membre', [
|
||||
'checked' => $this->getData(['theme', 'footer', 'memberBar']),
|
||||
'help' => 'Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés, ne s\'applique pas aux éditeurs et administrateurs.'
|
||||
]); ?>
|
||||
</div>
|
||||
@ -134,13 +140,13 @@
|
||||
</div>
|
||||
<div class="col3">
|
||||
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
|
||||
'label' => 'Page "Mentions légales" ' . template::flag('selected', '20px'),
|
||||
'label' => helper::translate('Mentions légales') . ' ' . template::flag('selected', '20px'),
|
||||
'selected' => $this->getData(['locale', 'legalPageId'])
|
||||
]); ?>
|
||||
</div>
|
||||
|
||||
<div class="col3">
|
||||
<?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher', [
|
||||
<?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher dans le site', [
|
||||
'checked' => $this->getData(['locale', 'searchPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displaySearch']),
|
||||
'disabled' => $this->getData(['locale', 'searchPageId']) === 'none' ? true : false,
|
||||
'help' => 'Option active si une page a été sélectionnée.'
|
||||
@ -148,7 +154,7 @@
|
||||
</div>
|
||||
<div class="col3">
|
||||
<?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
|
||||
'label' => 'Page "Rechercher" ' . template::flag('selected', '20px'),
|
||||
'label' => helper::translate('Rechercher dans le site') . ' ' . template::flag('selected', '20px'),
|
||||
'selected' => $this->getData(['locale', 'searchPageId'])
|
||||
]); ?>
|
||||
</div>
|
||||
@ -159,7 +165,7 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<?php echo template::textarea('themeFooterText', [
|
||||
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu personnalisé') . '</div>',
|
||||
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu HTML') . '</div>',
|
||||
'value' => $this->getData(['theme', 'footer', 'text']),
|
||||
'class' => 'editorWysiwyg'
|
||||
]); ?>
|
||||
@ -168,7 +174,8 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4><?php echo helper::translate('Mise en forme du texte'); ?>
|
||||
<h4>
|
||||
<?php echo helper::translate('Mise en forme du texte'); ?>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col3">
|
||||
@ -204,11 +211,12 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4><?php echo helper::translate('Disposition'); ?>
|
||||
<h4>
|
||||
<?php echo helper::translate('Disposition'); ?>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col4">
|
||||
<?php $footerBlockPosition = is_null($this->getData(['theme', 'footer', 'template'])) ? $module::$footerblocks[3] : $module::$footerblocks[$this->getData(['theme', 'footer', 'template'])]; ?>
|
||||
<?php $footerBlockPosition = is_null($this->getData(['theme', 'footer', 'template'])) ? $module::$footerblocks[3] : $module::$footerblocks[$this->getData(['theme', 'footer', 'template'])]; ?>
|
||||
<?php echo template::select('themeFooterTemplate', $module::$footerTemplate, [
|
||||
'label' => 'Répartition',
|
||||
'selected' => is_null($this->getData(['theme', 'footer', 'template'])) ? 4 : $this->getData(['theme', 'footer', 'template'])
|
||||
@ -219,7 +227,7 @@
|
||||
<div class="col4">
|
||||
<p>
|
||||
<strong>
|
||||
<?php echo helper::translate('Contenu personnalisé'); ?>
|
||||
<?php echo helper::translate('Contenu HTML'); ?>
|
||||
</strong>
|
||||
</p>
|
||||
<div class="row">
|
||||
|
@ -33,7 +33,7 @@
|
||||
</div>
|
||||
<div class="col4">
|
||||
<?php echo template::select('themeHeaderFeature', $module::$headerFeatures, [
|
||||
'label' => 'Nature de contenu',
|
||||
'label' => 'Contenu',
|
||||
'selected' => $this->getData(['theme', 'header', 'feature'])
|
||||
]); ?>
|
||||
</div>
|
||||
@ -104,7 +104,7 @@
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col4">
|
||||
<?php echo template::checkbox('themeHeaderTextHide', true, 'Masquer le Titre', [
|
||||
<?php echo template::checkbox('themeHeaderTextHide', true, 'Titre masqué', [
|
||||
'checked' => $this->getData(['theme', 'header', 'textHide'])
|
||||
]); ?>
|
||||
</div>
|
||||
@ -209,7 +209,7 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<?php echo template::textarea('themeHeaderText', [
|
||||
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu personnalisé') . '</div>',
|
||||
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu HTML') . '</div>',
|
||||
'class' => 'editorWysiwyg',
|
||||
'value' => $this->getData(['theme', 'header', 'featureContent'])
|
||||
]); ?>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4><?php echo helper::translate(' Paramètres'); ?>
|
||||
<h4><?php echo helper::translate('Paramètres'); ?>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
@ -158,7 +158,7 @@
|
||||
<?php echo template::text('themeMenuActiveTextColor', [
|
||||
'class' => 'colorPicker',
|
||||
'help' => 'Le curseur horizontal règle le niveau de transparence.',
|
||||
'label' => 'Texte page active',
|
||||
'label' => 'Couleur texte page active',
|
||||
'value' => $this->getData(['theme', 'menu', 'activeTextColor'])
|
||||
]); ?>
|
||||
</div>
|
||||
|
@ -68,7 +68,7 @@ $("input, select").on("change",function() {
|
||||
} else {
|
||||
css += ".button, button{font-size:1em;}";
|
||||
}
|
||||
// Largeur du site
|
||||
// Largeur de site
|
||||
var margin = $("#themeSiteMargin").is(":checked") ? 0 : '20px' ;
|
||||
css += ".container{max-width:" + $("#themeSiteWidth").val() + "}";
|
||||
if ($("#themeSiteWidth").val() === "100%") {
|
||||
|
@ -27,7 +27,7 @@
|
||||
<div class="row">
|
||||
<div class="col4">
|
||||
<?php echo template::select('themeSiteWidth', $module::$siteWidths, [
|
||||
'label' => 'Largeur du site',
|
||||
'label' => 'Largeur de site',
|
||||
'selected' => $this->getData(['theme', 'site', 'width'])
|
||||
]); ?>
|
||||
</div>
|
||||
@ -39,14 +39,14 @@
|
||||
</div>
|
||||
<div class="col4">
|
||||
<?php echo template::select('themeSiteShadow', $module::$shadows, [
|
||||
'label' => 'Ombre sur les bords du site',
|
||||
'label' => 'Ombre',
|
||||
'selected' => $this->getData(['theme', 'site', 'shadow'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<?php echo template::checkbox('themeSiteMargin', true, 'Pas de marge au-dessus et en-dessous du site', [
|
||||
<?php echo template::checkbox('themeSiteMargin', true, 'Pas de marge au-dessus et en dessous du site', [
|
||||
'checked' => $this->getData(['theme', 'site', 'margin'])
|
||||
]); ?>
|
||||
</div>
|
||||
|
@ -374,7 +374,7 @@ class user extends common
|
||||
self::$users[] = [
|
||||
$userId,
|
||||
$userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']),
|
||||
self::$groups[$this->getData(['user', $userId, 'group'])],
|
||||
helper::translate(self::$groups[$this->getData(['user', $userId, 'group'])]),
|
||||
template::button('userEdit' . $userId, [
|
||||
'href' => helper::baseUrl() . 'user/edit/' . $userId . '/' . $_SESSION['csrf'],
|
||||
'value' => template::ico('pencil'),
|
||||
|
Loading…
Reference in New Issue
Block a user