Compare commits
No commits in common. "master" and "13.3.04" have entirely different histories.
55
CHANGES.md
55
CHANGES.md
@ -1,58 +1,5 @@
|
|||||||
# Notes de mises à jour
|
# Notes de mises à jour
|
||||||
|
|
||||||
## Versions 13.5.00
|
|
||||||
**Améliorations :**
|
|
||||||
- Optimisation du chargement des variables de classe.
|
|
||||||
- Suppression de redondance de déclaration des charset.
|
|
||||||
|
|
||||||
**Corrections : **
|
|
||||||
- Corrige un bug de changement de mot de passe pour les comptes non admins.
|
|
||||||
- Blog 7.12, corrige un bug d'affichage des articles lorsque le thème Moderne est sélectionné.
|
|
||||||
- Corrige un dysfonctionnement de la fonction de tronquage subword qui perturbait l'affichage des articles de blog.
|
|
||||||
|
|
||||||
## Versions 13.4.00
|
|
||||||
** Améliorations :**
|
|
||||||
- Change le mode d'authentification, le hash du mot de passe n'est plus stocké dans un cookie.
|
|
||||||
- Améliore les performances des opérations d'écriture.
|
|
||||||
- Le sélecteur de fichier affiche le chemin d'accès du fichier présent dans le champ dans le gestionnaire de fichier.
|
|
||||||
- Connexion persistante renforcée.
|
|
||||||
- Script Datatables.net filtrage des éléments, nombre d'éléments et position sur l'écran.
|
|
||||||
- Slider 7.2, le dossier sélectionné est affiché par défaut dans la page update.
|
|
||||||
- Augmente la dimension des miniatures après le transfert dans RFM.
|
|
||||||
- Search 3.3 n'effectue qu'une seule lecture du fichier module.json en prévention des bots agressifs.
|
|
||||||
- Modification du contenu de robots.txt afin de n'autoriser que les moteurs de recherche et d'interdire les bots.
|
|
||||||
- Suppression des cookies mémorisant le dernier onglet affiché dans l'édition de la page et dans la configuration du site. Cette information est désormais stockée dans la fiche de l'utilisateur connecté.
|
|
||||||
|
|
||||||
**Corrections :**
|
|
||||||
- Change les paramètres du cookie de consentement.
|
|
||||||
- Isole la session dans l'onglet actif.
|
|
||||||
- Edition de page, delete et duplicate renvoyant vers une mauvaise page.
|
|
||||||
- Supprime un warning à la création d'une page.
|
|
||||||
- Bouton de génération du site inopérant.
|
|
||||||
- Affichage intempestif des boutons de navigation de pages dans les vues des modules.
|
|
||||||
|
|
||||||
|
|
||||||
## Versions 13.3.06
|
|
||||||
** Corrections : **
|
|
||||||
- Corrige un bug de sécurité dans la gestion des profils.
|
|
||||||
- Répare le bouton d'effacement en mode édition d'une page.
|
|
||||||
- Corrige la feuille de style du slider les balises H1, H3 et A.
|
|
||||||
- Corrige l'absence de contenu de page lorsque le module est en position libre et que le mot clé [MODULE] n'a pas été inséré.
|
|
||||||
- Corrige l'option "Rester connecter sur ce navigateur' dont la connexion est désormais réellement persistante.
|
|
||||||
- Supprime un slash à la fin de l'URL du catalogue.
|
|
||||||
- Eviter un warning lors de la création d'une nouvelle page.
|
|
||||||
|
|
||||||
## Versions 13.3.05
|
|
||||||
** Corrections : **
|
|
||||||
- Corrige la génération des miniatures au format avif et webp.
|
|
||||||
- Corrige le filtre FLOAT du helper qui supprimait la virgule flottante.
|
|
||||||
- Corrige des bugs dans le module Slider qui passe en version 7.0, ajout d'une option d'étiquette sous les images.
|
|
||||||
|
|
||||||
** Modifications : **
|
|
||||||
- Mise à jour du module News 5.9, taille d'un bouton.
|
|
||||||
- Mise à jour du module Blog 7.10, bloque la soumission d'un commentaire vide.
|
|
||||||
- Ajoute les filtres DATE et TIME pour l'affichage correct des champs de formulaire.
|
|
||||||
|
|
||||||
## Versions 13.3.04
|
## Versions 13.3.04
|
||||||
|
|
||||||
** Correction : **
|
** Correction : **
|
||||||
@ -848,7 +795,7 @@ TinyMCE, URL absolues, transformation autorisée en URL relative si effectuée m
|
|||||||
- Modifications :
|
- Modifications :
|
||||||
- Gestion des cookies :
|
- Gestion des cookies :
|
||||||
- Options de personnalisation du message d'acceptation des cookies, acceptation ou refus du cookie Google Analytics, affichage de la page des mentions légales.
|
- Options de personnalisation du message d'acceptation des cookies, acceptation ou refus du cookie Google Analytics, affichage de la page des mentions légales.
|
||||||
- Étiquette dans le footer permettant d'afficher la popup des cookies.
|
- Etiquette dans le footer permettant d'afficher la popup des cookies.
|
||||||
- Thème :
|
- Thème :
|
||||||
- Disposition des options de configuration du site.
|
- Disposition des options de configuration du site.
|
||||||
- Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page.
|
- Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# ZwiiCMS 13.5.00
|
# ZwiiCMS 13.3.03
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# ZwiiCMS 13.5.00
|
# ZwiiCMS 13.3.03
|
||||||
|
|
||||||
Zwii is a database-less (flat-file) CMS that allows you to easily create and manage a web site without any programming knowledge.
|
Zwii is a database-less (flat-file) CMS that allows you to easily create and manage a web site without any programming knowledge.
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ class helper
|
|||||||
|
|
||||||
/** Filtres personnalisés */
|
/** Filtres personnalisés */
|
||||||
const FILTER_BOOLEAN = 1;
|
const FILTER_BOOLEAN = 1;
|
||||||
const FILTER_DATETIME = 2; // filtre pour le champ de formulaire A conserver pour la compatibilité
|
const FILTER_DATETIME = 2;
|
||||||
const FILTER_FLOAT = 3;
|
const FILTER_FLOAT = 3;
|
||||||
const FILTER_ID = 4;
|
const FILTER_ID = 4;
|
||||||
const FILTER_INT = 5;
|
const FILTER_INT = 5;
|
||||||
@ -16,14 +16,8 @@ class helper
|
|||||||
const FILTER_PASSWORD = 7;
|
const FILTER_PASSWORD = 7;
|
||||||
const FILTER_STRING_LONG = 8;
|
const FILTER_STRING_LONG = 8;
|
||||||
const FILTER_STRING_SHORT = 9;
|
const FILTER_STRING_SHORT = 9;
|
||||||
const FILTER_TIMESTAMP = 10; // Saisie d'une date en locatime
|
const FILTER_TIMESTAMP = 10;
|
||||||
const FILTER_URL = 11;
|
const FILTER_URL = 11;
|
||||||
const FILTER_DATE = 12; // filtre pour le champ de formulaire
|
|
||||||
const FILTER_TIME = 13; // filtre pour le champ de formulair
|
|
||||||
const FILTER_MONTH = 14; // filtre pour le champ de formulair
|
|
||||||
const FILTER_YEAR = 16; // filtre pour le champ de formulair
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,12 +29,12 @@ class helper
|
|||||||
|
|
||||||
// La traduction existe déjà dans le core
|
// La traduction existe déjà dans le core
|
||||||
/*
|
/*
|
||||||
if (array_key_exists($text, core::$dialog) === false && !empty($text)) {
|
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);
|
$dialogues = json_decode(file_get_contents('core/module/install/ressource/i18n/fr_FR.json' ), true);
|
||||||
$data = array_merge($dialogues,[$text => '']);
|
$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);
|
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);
|
return (array_key_exists($text, core::$dialog) && !empty(core::$dialog[$text]) ? core::$dialog[$text] : $text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -395,10 +389,10 @@ class helper
|
|||||||
'text' => self::relativeLuminanceW3C($rgba) > .22 ? "#222" : "#DDD",
|
'text' => self::relativeLuminanceW3C($rgba) > .22 ? "#222" : "#DDD",
|
||||||
'rgb' => 'rgb(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ')',
|
'rgb' => 'rgb(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ')',
|
||||||
'invert' => 'rgba (' .
|
'invert' => 'rgba (' .
|
||||||
($rgba[0] < 128 ? 255 : 0) . ',' .
|
($rgba[0] < 128 ? 255 : 0) . ',' .
|
||||||
($rgba[1] < 128 ? 255 : 0) . ',' .
|
($rgba[1] < 128 ? 255 : 0) . ',' .
|
||||||
($rgba[1] < 128 ? 255 : 0) . ',' .
|
($rgba[1] < 128 ? 255 : 0) . ',' .
|
||||||
($rgba[0] < 128 ? 255 : 0) . ')'
|
($rgba[0] < 128 ? 255 : 0) . ')'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,8 +402,8 @@ class helper
|
|||||||
*/
|
*/
|
||||||
public static function deleteCookie($cookieKey)
|
public static function deleteCookie($cookieKey)
|
||||||
{
|
{
|
||||||
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
|
|
||||||
unset($_COOKIE[$cookieKey]);
|
unset($_COOKIE[$cookieKey]);
|
||||||
|
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -432,8 +426,7 @@ class helper
|
|||||||
$text = (int) $date->format('U');
|
$text = (int) $date->format('U');
|
||||||
break;
|
break;
|
||||||
case self::FILTER_FLOAT:
|
case self::FILTER_FLOAT:
|
||||||
$text = str_replace(',', '.', $text); // Remplacer les virgules par des points
|
$text = filter_var($text, FILTER_SANITIZE_NUMBER_FLOAT);
|
||||||
$text = filter_var($text, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
|
|
||||||
$text = (float) $text;
|
$text = (float) $text;
|
||||||
break;
|
break;
|
||||||
case self::FILTER_ID:
|
case self::FILTER_ID:
|
||||||
@ -480,11 +473,6 @@ class helper
|
|||||||
case self::FILTER_URL:
|
case self::FILTER_URL:
|
||||||
$text = filter_var($text, FILTER_SANITIZE_URL);
|
$text = filter_var($text, FILTER_SANITIZE_URL);
|
||||||
break;
|
break;
|
||||||
case self::FILTER_DATE:
|
|
||||||
$text = date('Y-m-d', $text);
|
|
||||||
break;
|
|
||||||
case self::FILTER_TIME:
|
|
||||||
$text = date('H:i', $text);
|
|
||||||
}
|
}
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
@ -673,35 +661,13 @@ class helper
|
|||||||
public static function subword($text, $start, $length)
|
public static function subword($text, $start, $length)
|
||||||
{
|
{
|
||||||
$text = trim($text);
|
$text = trim($text);
|
||||||
|
if (strlen($text) > $length) {
|
||||||
// Vérifier si la longueur du texte sans les balises dépasse la longueur souhaitée
|
|
||||||
if (mb_strlen(strip_tags($text)) > $length) {
|
|
||||||
// Utiliser mb_substr pour couper le texte
|
|
||||||
$text = mb_substr($text, $start, $length);
|
$text = mb_substr($text, $start, $length);
|
||||||
|
$text = mb_substr($text, 0, min(mb_strlen($text), mb_strrpos($text, ' ')));
|
||||||
// S'assurer que le texte ne se termine pas au milieu d'un mot
|
|
||||||
$lastSpace = mb_strrpos($text, ' ');
|
|
||||||
if ($lastSpace !== false) {
|
|
||||||
$text = mb_substr($text, 0, $lastSpace);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fermer les balises HTML ouvertes
|
|
||||||
$dom = new DOMDocument();
|
|
||||||
@$dom->loadHTML('<div>' . $text . '</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
|
|
||||||
$text = $dom->saveHTML();
|
|
||||||
|
|
||||||
// Retirer la balise de conteneur ajoutée
|
|
||||||
$text = preg_replace('~^<div>(.*)</div>$~s', '$1', $text);
|
|
||||||
|
|
||||||
// Ajouter des points de suspension si le texte a été coupé
|
|
||||||
$text .= '...';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cryptage
|
* Cryptage
|
||||||
* @param string $key la clé d'encryptage
|
* @param string $key la clé d'encryptage
|
||||||
|
@ -149,8 +149,7 @@ class JsonDb extends \Prowebcraft\Dot
|
|||||||
public function save()
|
public function save()
|
||||||
{
|
{
|
||||||
// Encode les données au format JSON avec les options spécifiées
|
// Encode les données au format JSON avec les options spécifiées
|
||||||
//$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT | JSON_PRETTY_PRINT);
|
$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT | JSON_PRETTY_PRINT);
|
||||||
$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
|
|
||||||
|
|
||||||
// Vérifie la longueur de la chaîne JSON encodée
|
// Vérifie la longueur de la chaîne JSON encodée
|
||||||
$encoded_length = strlen($encoded_data);
|
$encoded_length = strlen($encoded_data);
|
||||||
@ -163,9 +162,6 @@ class JsonDb extends \Prowebcraft\Dot
|
|||||||
// Essaye d'écrire les données encodées dans le fichier de base de données
|
// Essaye d'écrire les données encodées dans le fichier de base de données
|
||||||
$write_result = file_put_contents($this->db, $encoded_data, LOCK_EX); // Les utilisateurs multiples obtiennent un verrou
|
$write_result = file_put_contents($this->db, $encoded_data, LOCK_EX); // Les utilisateurs multiples obtiennent un verrou
|
||||||
|
|
||||||
//$now = \DateTime::createFromFormat('U.u', microtime(true));
|
|
||||||
//file_put_contents("tmplog.txt", '[JsonDb][' . $now->format('H:i:s.u') . ']--' . $this->db . "\r\n", FILE_APPEND);
|
|
||||||
|
|
||||||
// Vérifie si l'écriture a réussi
|
// Vérifie si l'écriture a réussi
|
||||||
if ($write_result === $encoded_length) {
|
if ($write_result === $encoded_length) {
|
||||||
// Sort de la boucle si l'écriture a réussi
|
// Sort de la boucle si l'écriture a réussi
|
||||||
|
@ -82,25 +82,17 @@ class layout extends common
|
|||||||
$content = 'col' . $blocks[1];
|
$content = 'col' . $blocks[1];
|
||||||
$blockright = 'col' . $blocks[2];
|
$blockright = 'col' . $blocks[2];
|
||||||
}
|
}
|
||||||
// Toujours en pleine page pour la configuration des modules et l'édition des pages sauf l'affichage d'un article de blog
|
// Page pleine pour la configuration des modules et l'édition des pages sauf l'affichage d'un article de blog
|
||||||
$pattern = ['config', 'edit', 'add', 'comment', 'data', 'option', 'theme', 'comment', 'article', 'data', 'gallery', 'update', 'users', 'validate'];
|
$pattern = ['config', 'edit', 'add', 'comment', 'data'];
|
||||||
if (
|
if (
|
||||||
(sizeof($blocks) === 1 ||
|
(sizeof($blocks) === 1 ||
|
||||||
in_array($this->getUrl(1), $pattern))
|
in_array($this->getUrl(1), $pattern))
|
||||||
) { // Pleine page en mode configuration
|
) { // Pleine page en mode configuration
|
||||||
if (
|
if ($this->getData(['page', $this->getUrl(0), 'navLeft']) === 'top' || $this->getData(['page', $this->getUrl(0), 'navRight']) === 'top') {
|
||||||
($this->getData(['page', $this->getUrl(0), 'navLeft']) === 'top'
|
|
||||||
|| $this->getData(['page', $this->getUrl(0), 'navRight']) === 'top')
|
|
||||||
&& in_array($this->getUrl(1), $pattern) === false
|
|
||||||
) {
|
|
||||||
$this->showNavButtons('top');
|
$this->showNavButtons('top');
|
||||||
}
|
}
|
||||||
$this->showContent();
|
$this->showContent();
|
||||||
if (
|
if ($this->getData(['page', $this->getUrl(0), 'navLeft']) === 'bottom' || $this->getData(['page', $this->getUrl(0), 'navRight']) === 'bottom') {
|
||||||
($this->getData(['page', $this->getUrl(0), 'navLeft']) === 'bottom'
|
|
||||||
|| $this->getData(['page', $this->getUrl(0), 'navRight']) === 'bottom')
|
|
||||||
&& in_array($this->getUrl(1), $pattern) === false
|
|
||||||
) {
|
|
||||||
$this->showNavButtons('bottom');
|
$this->showNavButtons('bottom');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -338,7 +330,7 @@ class layout extends common
|
|||||||
// Affichage du lien de connexion
|
// Affichage du lien de connexion
|
||||||
if (
|
if (
|
||||||
($this->getData(['theme', 'footer', 'loginLink'])
|
($this->getData(['theme', 'footer', 'loginLink'])
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
)
|
)
|
||||||
or $this->getUrl(0) === 'theme'
|
or $this->getUrl(0) === 'theme'
|
||||||
) {
|
) {
|
||||||
@ -501,7 +493,7 @@ class layout extends common
|
|||||||
// Lien de connexion
|
// Lien de connexion
|
||||||
if (
|
if (
|
||||||
($this->getData(['theme', 'menu', 'loginLink'])
|
($this->getData(['theme', 'menu', 'loginLink'])
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
)
|
)
|
||||||
or $this->getUrl(0) === 'theme'
|
or $this->getUrl(0) === 'theme'
|
||||||
) {
|
) {
|
||||||
@ -588,9 +580,9 @@ class layout extends common
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
($this->getData(['page', $parentPageId, 'disable']) === true
|
($this->getData(['page', $parentPageId, 'disable']) === true
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) or ($this->getData(['page', $parentPageId, 'disable']) === true
|
) or ($this->getData(['page', $parentPageId, 'disable']) === true
|
||||||
and $this->isConnected() === true
|
and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') < self::GROUP_EDITOR
|
and $this->getUser('group') < self::GROUP_EDITOR
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -654,9 +646,9 @@ class layout extends common
|
|||||||
$items .= '<li id=' . $childKey . '>';
|
$items .= '<li id=' . $childKey . '>';
|
||||||
if (
|
if (
|
||||||
($this->getData(['page', $childKey, 'disable']) === true
|
($this->getData(['page', $childKey, 'disable']) === true
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) or ($this->getData(['page', $childKey, 'disable']) === true
|
) or ($this->getData(['page', $childKey, 'disable']) === true
|
||||||
and $this->isConnected() === true
|
and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') < self::GROUP_EDITOR
|
and $this->getUser('group') < self::GROUP_EDITOR
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -750,7 +742,7 @@ class layout extends common
|
|||||||
$items .= '<li class="menuSideChild">';
|
$items .= '<li class="menuSideChild">';
|
||||||
if (
|
if (
|
||||||
$this->getData(['page', $parentPageId, 'disable']) === true
|
$this->getData(['page', $parentPageId, 'disable']) === true
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) {
|
) {
|
||||||
$items .= '<a href="' . $this->getUrl(1) . '">';
|
$items .= '<a href="' . $this->getUrl(1) . '">';
|
||||||
} else {
|
} else {
|
||||||
@ -774,7 +766,7 @@ class layout extends common
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
$this->getData(['page', $childKey, 'disable']) === true
|
$this->getData(['page', $childKey, 'disable']) === true
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) {
|
) {
|
||||||
$itemsChildren .= '<a href="' . $this->getUrl(1) . '">';
|
$itemsChildren .= '<a href="' . $this->getUrl(1) . '">';
|
||||||
} else {
|
} else {
|
||||||
@ -910,7 +902,7 @@ class layout extends common
|
|||||||
*/
|
*/
|
||||||
public function showBar()
|
public function showBar()
|
||||||
{
|
{
|
||||||
if ($this->isConnected() === true) {
|
if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')) {
|
||||||
// Items de gauche
|
// Items de gauche
|
||||||
$leftItems = '';
|
$leftItems = '';
|
||||||
// Sélecteur de langues
|
// Sélecteur de langues
|
||||||
@ -1071,14 +1063,18 @@ class layout extends common
|
|||||||
'help' => 'Thème',
|
'help' => 'Thème',
|
||||||
'href' => helper::baseUrl() . 'theme'
|
'href' => helper::baseUrl() . 'theme'
|
||||||
]) . '</li>';
|
]) . '</li>';
|
||||||
$rightItems .= '<li>' . template::ico('users', [
|
$rightItems .= '<li>' . template::ico('puzzle', [
|
||||||
'help' => 'Utilisateurs',
|
'help' => 'Modules',
|
||||||
'href' => helper::baseUrl() . 'user'
|
'href' => helper::baseUrl() . 'plugin'
|
||||||
]) . '</li>';
|
]) . '</li>';
|
||||||
$rightItems .= '<li>' . template::ico('cog-alt', [
|
$rightItems .= '<li>' . template::ico('cog-alt', [
|
||||||
'help' => 'Configuration',
|
'help' => 'Configuration',
|
||||||
'href' => helper::baseUrl() . 'config'
|
'href' => helper::baseUrl() . 'config'
|
||||||
]) . '</li>';
|
]) . '</li>';
|
||||||
|
$rightItems .= '<li>' . template::ico('users', [
|
||||||
|
'help' => 'Utilisateurs',
|
||||||
|
'href' => helper::baseUrl() . 'user'
|
||||||
|
]) . '</li>';
|
||||||
// Mise à jour automatique
|
// Mise à jour automatique
|
||||||
$today = mktime(0, 0, 0);
|
$today = mktime(0, 0, 0);
|
||||||
$checkUpdate = $this->getData(['core', 'lastAutoUpdate']);
|
$checkUpdate = $this->getData(['core', 'lastAutoUpdate']);
|
||||||
@ -1090,55 +1086,21 @@ class layout extends common
|
|||||||
$today > $checkUpdate + $this->getData(['config', 'autoUpdateDelay', 86400])
|
$today > $checkUpdate + $this->getData(['config', 'autoUpdateDelay', 86400])
|
||||||
) {
|
) {
|
||||||
// Dernier auto controle
|
// Dernier auto controle
|
||||||
$this->setData(['core', 'lastAutoUpdate', $today], false);
|
$this->setData(['core', 'lastAutoUpdate', $today]);
|
||||||
if (
|
if (
|
||||||
helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)
|
helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)
|
||||||
) {
|
) {
|
||||||
$this->setData(['core', 'updateAvailable', true], false);
|
$this->setData(['core', 'updateAvailable', true]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modules installés
|
|
||||||
$infoModules = helper::getModules();
|
|
||||||
// Recherche de mise à jour des modules
|
|
||||||
$store = plugin::getStore();
|
|
||||||
if (is_array($store)) {
|
|
||||||
// Parcourir les données des modules du store
|
|
||||||
foreach ($store as $key => $value) {
|
|
||||||
if (empty($key)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Mise à jour d'un module
|
|
||||||
// Le module est installé et une mise à jour est en ligne
|
|
||||||
if (
|
|
||||||
isset($infoModules[$key])
|
|
||||||
&&
|
|
||||||
version_compare($infoModules[$key]['version'], $value['version'], '<')
|
|
||||||
) {
|
|
||||||
$this->setData(['core', 'updateModuleAvailable', true], false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Sauvegarde la base manuellement
|
|
||||||
$this->saveDB('core');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Afficher le bouton : Mise à jour détectée + activée
|
// Afficher le bouton : Mise à jour détectée + activée
|
||||||
if ($this->getData(['core', 'updateAvailable'])) {
|
if ($this->getData(['core', 'updateAvailable'])) {
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'install/update" data-tippy-content="Mettre à jour Zwii ' . common::ZWII_VERSION . ' vers ' . helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL) . '">' . template::ico('update colorRed') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'install/update" data-tippy-content="Mettre à jour Zwii ' . common::ZWII_VERSION . ' vers ' . helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL) . '">' . template::ico('update colorRed') . '</a></li>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($this->getData(['core', 'updateModuleAvailable'])) {
|
|
||||||
$rightItems .= '<li>' . template::ico('puzzle colorRed', [
|
|
||||||
'help' => 'Modules',
|
|
||||||
'href' => helper::baseUrl() . 'plugin'
|
|
||||||
]) . '</li>';
|
|
||||||
} else {
|
|
||||||
$rightItems .= '<li>' . template::ico('puzzle', [
|
|
||||||
'help' => 'Modules',
|
|
||||||
'href' => helper::baseUrl() . 'plugin'
|
|
||||||
]) . '</li>';
|
|
||||||
}
|
|
||||||
// Boutons depuis le groupe éditeur
|
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') >= self::GROUP_EDITOR
|
$this->getUser('group') >= self::GROUP_EDITOR
|
||||||
&& $this->getUser('permission', 'user', 'edit')
|
&& $this->getUser('permission', 'user', 'edit')
|
||||||
@ -1213,7 +1175,7 @@ class layout extends common
|
|||||||
{
|
{
|
||||||
// Import des fontes liées au thème
|
// Import des fontes liées au thème
|
||||||
if (file_exists(self::DATA_DIR . 'font/font.html')) {
|
if (file_exists(self::DATA_DIR . 'font/font.html')) {
|
||||||
include_once(self::DATA_DIR . 'font/font.html');
|
include_once (self::DATA_DIR . 'font/font.html');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1226,7 +1188,7 @@ class layout extends common
|
|||||||
$vars = 'var baseUrl = ' . json_encode(helper::baseUrl(false)) . ';';
|
$vars = 'var baseUrl = ' . json_encode(helper::baseUrl(false)) . ';';
|
||||||
$vars .= 'var baseUrlQs = ' . json_encode(helper::baseUrl()) . ';';
|
$vars .= 'var baseUrlQs = ' . json_encode(helper::baseUrl()) . ';';
|
||||||
if (
|
if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') >= self::GROUP_EDITOR
|
and $this->getUser('group') >= self::GROUP_EDITOR
|
||||||
) {
|
) {
|
||||||
$vars .= 'var privateKey = ' . json_encode(md5_file(self::DATA_DIR . 'core.json')) . ';';
|
$vars .= 'var privateKey = ' . json_encode(md5_file(self::DATA_DIR . 'core.json')) . ';';
|
||||||
|
@ -11,7 +11,7 @@ class core extends common
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
// Token CSRF
|
// Token CSRF
|
||||||
if (empty($_SESSION['csrf'])) {
|
if (empty($_SESSION['csrf'])) {
|
||||||
$_SESSION['csrf'] = bin2hex(openssl_random_pseudo_bytes(64));
|
$_SESSION['csrf'] = bin2hex(openssl_random_pseudo_bytes(128));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fuseau horaire
|
// Fuseau horaire
|
||||||
@ -32,6 +32,8 @@ class core extends common
|
|||||||
}
|
}
|
||||||
// Date de la dernière suppression
|
// Date de la dernière suppression
|
||||||
$this->setData(['core', 'lastClearTmp', $lastClearTmp]);
|
$this->setData(['core', 'lastClearTmp', $lastClearTmp]);
|
||||||
|
// Enregistre les données
|
||||||
|
//$this->SaveData();
|
||||||
}
|
}
|
||||||
// Backup automatique des données
|
// Backup automatique des données
|
||||||
$lastBackup = mktime(0, 0, 0);
|
$lastBackup = mktime(0, 0, 0);
|
||||||
@ -413,7 +415,7 @@ class core extends common
|
|||||||
|
|
||||||
// Force la déconnexion des membres bannis ou d'une seconde session
|
// Force la déconnexion des membres bannis ou d'une seconde session
|
||||||
if (
|
if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and ($this->getUser('group') === common::GROUP_BANNED
|
and ($this->getUser('group') === common::GROUP_BANNED
|
||||||
or ($_SESSION['csrf'] !== $this->getData(['user', $this->getUser('id'), 'accessCsrf'])
|
or ($_SESSION['csrf'] !== $this->getData(['user', $this->getUser('id'), 'accessCsrf'])
|
||||||
and $this->getData(['config', 'connect', 'autoDisconnect']) === true)
|
and $this->getData(['config', 'connect', 'autoDisconnect']) === true)
|
||||||
@ -427,8 +429,8 @@ class core extends common
|
|||||||
$this->getData(['config', 'maintenance'])
|
$this->getData(['config', 'maintenance'])
|
||||||
and in_array($this->getUrl(0), ['maintenance', 'user']) === false
|
and in_array($this->getUrl(0), ['maintenance', 'user']) === false
|
||||||
and $this->getUrl(1) !== 'login'
|
and $this->getUrl(1) !== 'login'
|
||||||
and ($this->isConnected() === false
|
and ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
or ($this->isConnected() === true
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') < common::GROUP_ADMIN
|
and $this->getUser('group') < common::GROUP_ADMIN
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -447,7 +449,7 @@ class core extends common
|
|||||||
if ($this->getData(['page', $this->getUrl(0)]) !== null) {
|
if ($this->getData(['page', $this->getUrl(0)]) !== null) {
|
||||||
if (
|
if (
|
||||||
$this->getData(['page', $this->getUrl(0), 'group']) === common::GROUP_VISITOR
|
$this->getData(['page', $this->getUrl(0), 'group']) === common::GROUP_VISITOR
|
||||||
or ($this->isConnected() === true
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
// and $this->getUser('group') >= $this->getData(['page', $this->getUrl(0), 'group'])
|
// and $this->getUser('group') >= $this->getData(['page', $this->getUrl(0), 'group'])
|
||||||
// Modification qui tient compte du profil de la page
|
// Modification qui tient compte du profil de la page
|
||||||
and ($this->getUser('group') * 10 + $this->getUser('profil')) >= ($this->getData(['page', $this->getUrl(0), 'group']) * 10 + $this->getData(['page', $this->getUrl(0), 'profil']))
|
and ($this->getUser('group') * 10 + $this->getUser('profil')) >= ($this->getData(['page', $this->getUrl(0), 'group']) * 10 + $this->getData(['page', $this->getUrl(0), 'profil']))
|
||||||
@ -464,9 +466,9 @@ class core extends common
|
|||||||
// Empêcher l'accès aux pages désactivées par URL directe
|
// Empêcher l'accès aux pages désactivées par URL directe
|
||||||
if (
|
if (
|
||||||
($this->getData(['page', $this->getUrl(0), 'disable']) === true
|
($this->getData(['page', $this->getUrl(0), 'disable']) === true
|
||||||
and $this->isConnected() === false
|
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) or ($this->getData(['page', $this->getUrl(0), 'disable']) === true
|
) or ($this->getData(['page', $this->getUrl(0), 'disable']) === true
|
||||||
and $this->isConnected() === true
|
and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') < common::GROUP_EDITOR
|
and $this->getUser('group') < common::GROUP_EDITOR
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -513,11 +515,10 @@ class core extends common
|
|||||||
}
|
}
|
||||||
// Accès concurrent stocke la page visitée
|
// Accès concurrent stocke la page visitée
|
||||||
if (
|
if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
&& $this->getUser('id')
|
&& $this->getUser('id')
|
||||||
&& !$this->isPost()
|
|
||||||
) {
|
) {
|
||||||
$this->setData(['user', $this->getUser('id'), 'accessUrl', $this->getUrl()], false);
|
$this->setData(['user', $this->getUser('id'), 'accessUrl', $this->getUrl()]);
|
||||||
$this->setData(['user', $this->getUser('id'), 'accessTimer', time()]);
|
$this->setData(['user', $this->getUser('id'), 'accessTimer', time()]);
|
||||||
}
|
}
|
||||||
// Breadcrumb
|
// Breadcrumb
|
||||||
@ -634,7 +635,7 @@ class core extends common
|
|||||||
// Check le groupe de l'utilisateur
|
// Check le groupe de l'utilisateur
|
||||||
if (
|
if (
|
||||||
($module::$actions[$action] === common::GROUP_VISITOR
|
($module::$actions[$action] === common::GROUP_VISITOR
|
||||||
or ($this->isConnected() === true
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') >= $module::$actions[$action]
|
and $this->getUser('group') >= $module::$actions[$action]
|
||||||
and $this->getUser('permission', $moduleId, $action)
|
and $this->getUser('permission', $moduleId, $action)
|
||||||
)
|
)
|
||||||
@ -722,7 +723,7 @@ class core extends common
|
|||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'content' => ob_get_clean() . ($output['showPageContent'] ? $pageContent : '')
|
'content' => ob_get_clean() . ($output['showPageContent'] ? $pageContent : '')
|
||||||
]);
|
]);
|
||||||
} elseif ($modpos === 'free' && strstr($pageContent, '[MODULE]')) {
|
} else if ($modpos === 'free') {
|
||||||
if (strstr($pageContent, '[MODULE]', true) === false) {
|
if (strstr($pageContent, '[MODULE]', true) === false) {
|
||||||
$begin = strstr($pageContent, '[]', true);
|
$begin = strstr($pageContent, '[]', true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -128,17 +128,7 @@ class SitemapGenerator
|
|||||||
*/
|
*/
|
||||||
private $sampleRobotsLines = [
|
private $sampleRobotsLines = [
|
||||||
"User-agent: *",
|
"User-agent: *",
|
||||||
"Disallow: /",
|
|
||||||
"User-agent: Googlebot",
|
|
||||||
"Allow: /",
|
"Allow: /",
|
||||||
"User-agent: bingbot",
|
|
||||||
"Allow: /",
|
|
||||||
"User-agent: Slurp",
|
|
||||||
"Allow: /",
|
|
||||||
"User-agent: DuckDuckBot",
|
|
||||||
"Allow: /",
|
|
||||||
"User-agent: Baiduspider",
|
|
||||||
"Allow: /"
|
|
||||||
];
|
];
|
||||||
/**
|
/**
|
||||||
* @var array list of valid changefreq values according to the spec
|
* @var array list of valid changefreq values according to the spec
|
||||||
|
@ -28,7 +28,7 @@ class template
|
|||||||
$attributes['value'] = helper::translate($attributes['value']);
|
$attributes['value'] = helper::translate($attributes['value']);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Retourne le html
|
// Retourne le html
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'<a %s class="button %s %s %s" %s>%s</a>',
|
'<a %s class="button %s %s %s" %s>%s</a>',
|
||||||
helper::sprintAttributes($attributes, ['class', 'disabled', 'ico', 'value']),
|
helper::sprintAttributes($attributes, ['class', 'disabled', 'ico', 'value']),
|
||||||
$attributes['disabled'] ? 'disabled' : '',
|
$attributes['disabled'] ? 'disabled' : '',
|
||||||
@ -65,12 +65,12 @@ class template
|
|||||||
// Limite addition et soustraction selon le type de captcha
|
// Limite addition et soustraction selon le type de captcha
|
||||||
$numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20];
|
$numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20];
|
||||||
$letters = ['u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
|
$letters = ['u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
|
||||||
$limit = $attributes['limit'] ? count($letters) - 1 : 10;
|
$limit = $attributes['limit'] ? count($letters) - 1 : 10;
|
||||||
|
|
||||||
// Tirage de l'opération
|
// Tirage de l'opération
|
||||||
mt_srand();
|
mt_srand();
|
||||||
// Captcha simple limité à l'addition
|
// Captcha simple limité à l'addition
|
||||||
$operator = $attributes['limit'] ? mt_rand(1, 4) : 1;
|
$operator = $attributes['limit'] ? mt_rand(1, 4) : 1;
|
||||||
|
|
||||||
// Limite si multiplication ou division
|
// Limite si multiplication ou division
|
||||||
if ($operator > 2) {
|
if ($operator > 2) {
|
||||||
@ -94,15 +94,15 @@ class template
|
|||||||
switch ($operator) {
|
switch ($operator) {
|
||||||
case 1:
|
case 1:
|
||||||
$operator = template::ico('plus', ['fontSize' => '2em;']);
|
$operator = template::ico('plus', ['fontSize' => '2em;']);
|
||||||
$result = $firstNumber + $secondNumber;
|
$result = $firstNumber + $secondNumber;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
$operator = template::ico('minus', ['fontSize' => '2em;']);
|
$operator = template::ico('minus', ['fontSize' => '2em;']);
|
||||||
$result = $firstNumber - $secondNumber;
|
$result = $firstNumber - $secondNumber;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
$operator = template::ico('cancel', ['fontSize' => '2em;']);
|
$operator = template::ico('cancel', ['fontSize' => '2em;']);
|
||||||
$result = $firstNumber * $secondNumber;
|
$result = $firstNumber * $secondNumber;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
$operator = template::ico('divide', ['fontSize' => '2em;']);
|
$operator = template::ico('divide', ['fontSize' => '2em;']);
|
||||||
@ -112,7 +112,7 @@ class template
|
|||||||
}
|
}
|
||||||
mt_srand();
|
mt_srand();
|
||||||
$secondNumber = mt_rand(1, $limit);
|
$secondNumber = mt_rand(1, $limit);
|
||||||
$firstNumber = $firstNumber * $secondNumber;
|
$firstNumber = $firstNumber * $secondNumber;
|
||||||
$result = $firstNumber / $secondNumber;
|
$result = $firstNumber / $secondNumber;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -125,8 +125,8 @@ class template
|
|||||||
$secondLetter = uniqid();
|
$secondLetter = uniqid();
|
||||||
|
|
||||||
// Masquage image source pour éviter un décodage
|
// Masquage image source pour éviter un décodage
|
||||||
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png');
|
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png');
|
||||||
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png');
|
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png');
|
||||||
|
|
||||||
|
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
@ -134,7 +134,7 @@ class template
|
|||||||
// Label
|
// Label
|
||||||
$html .= self::label(
|
$html .= self::label(
|
||||||
$attributes['id'],
|
$attributes['id'],
|
||||||
'<img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" /> <strong>' . $operator . '</strong> <img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" />' . template::ico('eq', ['fontSize' => '2em;']),
|
'<img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" /> <strong>' . $operator . '</strong> <img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" />' . template::ico('eq', ['fontSize' => '2em;']),
|
||||||
[
|
[
|
||||||
'help' => $attributes['help']
|
'help' => $attributes['help']
|
||||||
]
|
]
|
||||||
@ -224,7 +224,7 @@ class template
|
|||||||
* Crée un champ date
|
* Crée un champ date
|
||||||
* @param string $nameId Nom et id du champ
|
* @param string $nameId Nom et id du champ
|
||||||
* @param array $attributes Attributs ($key => $value)
|
* @param array $attributes Attributs ($key => $value)
|
||||||
* @param string type date seule ; time heure seule ; datetime-local (jour et heure)
|
* @param string type date time datetime-local month week
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function date($nameId, array $attributes = [])
|
public static function date($nameId, array $attributes = [])
|
||||||
@ -244,32 +244,17 @@ class template
|
|||||||
'placeholder' => '',
|
'placeholder' => '',
|
||||||
'readonly' => false,
|
'readonly' => false,
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'date',
|
'type'=> 'date',
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
$attributes['label'] = helper::translate($attributes['label']);
|
$attributes['label'] = helper::translate($attributes['label']);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
|
||||||
// Filtre selon le type
|
|
||||||
switch ($attributes['type']) {
|
|
||||||
case 'datetime-local':
|
|
||||||
$filter = helper::FILTER_TIMESTAMP;
|
|
||||||
break;
|
|
||||||
case 'date':
|
|
||||||
$filter = helper::FILTER_DATE; // Pour générer une valeur uniquement sur la date
|
|
||||||
break;
|
|
||||||
case 'time':
|
|
||||||
$filter = helper::FILTER_TIME; // Pour générer une valeur uniquement sur l'heure
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$filter = null; // pas de filtre pour month and year
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// Sauvegarde des données en cas d'erreur
|
// Sauvegarde des données en cas d'erreur
|
||||||
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
|
||||||
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
$attributes['value'] = common::$inputBefore[$attributes['id']];
|
||||||
} else {
|
} else {
|
||||||
$attributes['value'] = ($attributes['value'] ? helper::filter($attributes['value'], $filter) : '');
|
$attributes['value'] = ($attributes['value'] ? helper::filter($attributes['value'], helper::FILTER_TIMESTAMP) : '');
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
@ -325,7 +310,6 @@ class template
|
|||||||
'name' => $nameId,
|
'name' => $nameId,
|
||||||
'type' => 2,
|
'type' => 2,
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'folder' => '',
|
|
||||||
'language' => 'fr_FR'
|
'language' => 'fr_FR'
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
@ -362,16 +346,14 @@ class template
|
|||||||
$html .= sprintf(
|
$html .= sprintf(
|
||||||
'<a
|
'<a
|
||||||
href="' .
|
href="' .
|
||||||
helper::baseUrl(false) . 'core/vendor/filemanager/dialog.php' .
|
helper::baseUrl(false) . 'core/vendor/filemanager/dialog.php' .
|
||||||
'?relative_url=1' .
|
'?relative_url=1' .
|
||||||
'&lang=' . $attributes['language'] .
|
'&lang=' . $attributes['language'] .
|
||||||
'&field_id=' . $attributes['id'] .
|
'&field_id=' . $attributes['id'] .
|
||||||
'&type=' . $attributes['type'] .
|
'&type=' . $attributes['type'] .
|
||||||
'&akey=' . md5_file(core::DATA_DIR . 'core.json') .
|
'&akey=' . md5_file(core::DATA_DIR . 'core.json') .
|
||||||
// Ajoute le nom du dossier si la variable est passée
|
($attributes['extensions'] ? '&extensions=' . $attributes['extensions'] : '')
|
||||||
(!empty($attributes['folder']) ? '&fldr=' . $attributes['folder'] : '') .
|
. '"
|
||||||
($attributes['extensions'] ? '&extensions=' . $attributes['extensions'] : '')
|
|
||||||
. '"
|
|
||||||
class="inputFile %s %s"
|
class="inputFile %s %s"
|
||||||
%s
|
%s
|
||||||
data-lity
|
data-lity
|
||||||
@ -489,7 +471,7 @@ class template
|
|||||||
// Traduction de l'aide
|
// Traduction de l'aide
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Contenu de l'icône
|
// Contenu de l'icône
|
||||||
$alt = $attributes['help'] ? $attributes['help'] : $ico;
|
$alt = $attributes['help'] ? $attributes['help'] : $ico;
|
||||||
$item = $attributes['href'] ? '<a id="' . $attributes['id'] . '" data-tippy-content="' . $attributes['help'] . '" alt="' . $alt . '" href="' . $attributes['href'] . '" ' . $attributes['attr'] . ' >' : '';
|
$item = $attributes['href'] ? '<a id="' . $attributes['id'] . '" data-tippy-content="' . $attributes['help'] . '" alt="' . $alt . '" href="' . $attributes['href'] . '" ' . $attributes['attr'] . ' >' : '';
|
||||||
$item .= '<span class="zwiico-' . $ico . ($attributes['margin'] ? ' zwiico-margin-' . $attributes['margin'] : '') . ($attributes['animate'] ? ' animate-spin' : '') . '" style="font-size:' . $attributes['fontSize'] . '"><!----></span>';
|
$item .= '<span class="zwiico-' . $ico . ($attributes['margin'] ? ' zwiico-margin-' . $attributes['margin'] : '') . ($attributes['animate'] ? ' animate-spin' : '') . '" style="font-size:' . $attributes['fontSize'] . '"><!----></span>';
|
||||||
$item .= ($attributes['href']) ? '</a>' : '';
|
$item .= ($attributes['href']) ? '</a>' : '';
|
||||||
@ -704,12 +686,12 @@ class template
|
|||||||
'label' => '',
|
'label' => '',
|
||||||
'name' => $nameId,
|
'name' => $nameId,
|
||||||
'selected' => '',
|
'selected' => '',
|
||||||
'font' => [],
|
'font' => [],
|
||||||
'multiple' => ''
|
'multiple' => ''
|
||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
$attributes['label'] = helper::translate($attributes['label']);
|
$attributes['label'] = helper::translate($attributes['label']);
|
||||||
$attributes['help'] = helper::translate($attributes['help']);
|
$attributes['help'] = helper::translate($attributes['help']);
|
||||||
// Stocker les fontes et remettre à zéro le tableau des fontes transmis pour éviter une erreur de sprintAttributes
|
// Stocker les fontes et remettre à zéro le tableau des fontes transmis pour éviter une erreur de sprintAttributes
|
||||||
if (empty($attributes['font']) === false) {
|
if (empty($attributes['font']) === false) {
|
||||||
$fonts = $attributes['font'];
|
$fonts = $attributes['font'];
|
||||||
@ -746,7 +728,7 @@ class template
|
|||||||
);
|
);
|
||||||
foreach ($options as $value => $text) {
|
foreach ($options as $value => $text) {
|
||||||
// Select des liste de fontes
|
// Select des liste de fontes
|
||||||
$html .= isset($fonts) ? sprintf(
|
$html .= isset($fonts) ? sprintf(
|
||||||
'<option value="%s"%s style="font-family: %s;">%s</option>',
|
'<option value="%s"%s style="font-family: %s;">%s</option>',
|
||||||
$value,
|
$value,
|
||||||
$attributes['selected'] == $value ? ' selected' : '', // Double == pour ignorer le type de variable car $_POST change les types en string
|
$attributes['selected'] == $value ? ' selected' : '', // Double == pour ignorer le type de variable car $_POST change les types en string
|
||||||
@ -800,7 +782,7 @@ class template
|
|||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
$attributes['value'] = helper::translate($attributes['value']);
|
$attributes['value'] = helper::translate($attributes['value']);
|
||||||
// Retourne le html
|
// Retourne le html
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'<button type="submit" class="%s%s" %s>%s</button>',
|
'<button type="submit" class="%s%s" %s>%s</button>',
|
||||||
$attributes['class'],
|
$attributes['class'],
|
||||||
$attributes['uniqueSubmission'] ? 'uniqueSubmission' : '',
|
$attributes['uniqueSubmission'] ? 'uniqueSubmission' : '',
|
||||||
@ -828,7 +810,7 @@ class template
|
|||||||
], $attributes);
|
], $attributes);
|
||||||
// Traduction de l'aide et de l'étiquette
|
// Traduction de l'aide et de l'étiquette
|
||||||
foreach ($head as $value) {
|
foreach ($head as $value) {
|
||||||
$head[array_search($value, $head)] = helper::translate($value);
|
$head[array_search($value, $head)] = helper::translate($value);
|
||||||
}
|
}
|
||||||
// Début du wrapper
|
// Début du wrapper
|
||||||
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="tableWrapper ' . $attributes['classWrapper'] . '">';
|
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="tableWrapper ' . $attributes['classWrapper'] . '">';
|
||||||
@ -923,7 +905,7 @@ class template
|
|||||||
$html .= self::notice($attributes['id'], $notice);
|
$html .= self::notice($attributes['id'], $notice);
|
||||||
// Texte
|
// Texte
|
||||||
$html .= sprintf(
|
$html .= sprintf(
|
||||||
'<input type="' . $attributes['type'] . '" %s>',
|
'<input type="' . $attributes['type']. '" %s>',
|
||||||
helper::sprintAttributes($attributes)
|
helper::sprintAttributes($attributes)
|
||||||
);
|
);
|
||||||
// Fin du wrapper
|
// Fin du wrapper
|
||||||
|
@ -216,14 +216,12 @@ core.start = function () {
|
|||||||
// Variables des cookies
|
// Variables des cookies
|
||||||
var getUrl = window.location;
|
var getUrl = window.location;
|
||||||
var domain = "domain=" + getUrl.hostname + ";";
|
var domain = "domain=" + getUrl.hostname + ";";
|
||||||
var basePath = getUrl.pathname.substring(0, getUrl.pathname.lastIndexOf('/') + 1);
|
|
||||||
var path = "path=" + basePath + ";";
|
|
||||||
var e = new Date();
|
var e = new Date();
|
||||||
e.setFullYear(e.getFullYear() + 1);
|
e.setFullYear(e.getFullYear() + 1);
|
||||||
var expires = "expires=" + e.toUTCString() + ";";
|
var expires = "expires=" + e.toUTCString();
|
||||||
|
|
||||||
// Stocke le cookie d'acceptation
|
// Stocke le cookie d'acceptation
|
||||||
document.cookie = "ZWII_COOKIE_CONSENT=true; samesite=lax; " + domain + path + expires;
|
document.cookie = "ZWII_COOKIE_CONSENT=true;samesite=strict;" + domain + expires;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
102
core/core.php
102
core/core.php
@ -51,18 +51,11 @@ class common
|
|||||||
const ACCESS_TIMER = 1800;
|
const ACCESS_TIMER = 1800;
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
const ZWII_VERSION = '13.5.00';
|
const ZWII_VERSION = '13.3.04';
|
||||||
|
|
||||||
// URL autoupdate
|
// URL autoupdate
|
||||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/cms-update/raw/branch/master/';
|
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/cms-update/raw/branch/master/';
|
||||||
|
const ZWII_UPDATE_CHANNEL = 'v13';
|
||||||
/**
|
|
||||||
* Branche de base pour la mise à jour
|
|
||||||
* Pour les versions supérieures à 13.4 et inférieure à 14, la branche reste sur v134
|
|
||||||
* La branche v13 est maintenue afin de télécharger un correctif permettant d'installer
|
|
||||||
* les version supérieures.
|
|
||||||
*/
|
|
||||||
const ZWII_UPDATE_CHANNEL = 'v134';
|
|
||||||
|
|
||||||
// Valeurs possibles multiple de 10, 10 autorise 9 profils, 100 autorise 99 profils
|
// Valeurs possibles multiple de 10, 10 autorise 9 profils, 100 autorise 99 profils
|
||||||
const MAX_PROFILS = 10;
|
const MAX_PROFILS = 10;
|
||||||
@ -338,19 +331,6 @@ class common
|
|||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
// Récupération du cache des propriétés
|
|
||||||
if(isset($GLOBALS['common_cache'])) {
|
|
||||||
$this->input['_POST'] = $GLOBALS['common_cache']['input']['_POST'];
|
|
||||||
$this->input['_COOKIE'] = $GLOBALS['common_cache']['input']['_COOKIE'];
|
|
||||||
self::$siteContent = $GLOBALS['common_cache']['siteContent'];
|
|
||||||
$this->dataFiles = $GLOBALS['common_cache']['dataFiles'];
|
|
||||||
$this->user = $GLOBALS['common_cache']['user'];
|
|
||||||
self::$i18nUI = $GLOBALS['common_cache']['i18nUI'];
|
|
||||||
$this->hierarchy = $GLOBALS['common_cache']['hierarchy'];
|
|
||||||
$this->url = $GLOBALS['common_cache']['url'];
|
|
||||||
self::$dialog = $GLOBALS['common_cache']['dialog'];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extraction des données http
|
// Extraction des données http
|
||||||
if (isset($_POST)) {
|
if (isset($_POST)) {
|
||||||
@ -374,13 +354,12 @@ class common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Localisation
|
|
||||||
\setlocale(LC_ALL, self::$siteContent . '.UTF8');
|
\setlocale(LC_ALL, self::$siteContent . '.UTF8');
|
||||||
|
|
||||||
// Instanciation de la classe des entrées / sorties
|
// Instanciation de la classe des entrées / sorties
|
||||||
$this->jsonDB(self::$siteContent);
|
$this->jsonDB(self::$siteContent);
|
||||||
|
|
||||||
|
|
||||||
// Installation fraîche, initialisation des modules
|
// Installation fraîche, initialisation des modules
|
||||||
if ($this->user === []) {
|
if ($this->user === []) {
|
||||||
foreach ($this->dataFiles as $stageId => $item) {
|
foreach ($this->dataFiles as $stageId => $item) {
|
||||||
@ -453,9 +432,6 @@ class common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache
|
|
||||||
$GLOBALS['common_construct']['dialog'] = self::$dialog;
|
|
||||||
|
|
||||||
// Données de proxy
|
// Données de proxy
|
||||||
$proxy = $this->getData(['config', 'proxyType']) . $this->getData(['config', 'proxyUrl']) . ':' . $this->getData(['config', 'proxyPort']);
|
$proxy = $this->getData(['config', 'proxyType']) . $this->getData(['config', 'proxyUrl']) . ':' . $this->getData(['config', 'proxyPort']);
|
||||||
if (
|
if (
|
||||||
@ -477,21 +453,6 @@ class common
|
|||||||
stream_context_set_default($context);
|
stream_context_set_default($context);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mise en cache des propriétés
|
|
||||||
$GLOBALS['common_cache'] = [
|
|
||||||
'input' => [
|
|
||||||
'_POST' => $this->input['_POST'],
|
|
||||||
'_COOKIE' => $this->input['_COOKIE'],
|
|
||||||
],
|
|
||||||
'siteContent' => self::$siteContent,
|
|
||||||
'dataFiles' => $this->dataFiles,
|
|
||||||
'user' => $this->user,
|
|
||||||
'i18nUI' => self::$i18nUI,
|
|
||||||
'hierarchy' => $this->hierarchy,
|
|
||||||
'url' => $this->url,
|
|
||||||
'dialog' => self::$dialog,
|
|
||||||
];
|
|
||||||
|
|
||||||
// Mise à jour des données core
|
// Mise à jour des données core
|
||||||
include('core/include/update.inc.php');
|
include('core/include/update.inc.php');
|
||||||
|
|
||||||
@ -559,7 +520,7 @@ class common
|
|||||||
* Sauvegarde des données
|
* Sauvegarde des données
|
||||||
* @param array $keys Clé(s) des données
|
* @param array $keys Clé(s) des données
|
||||||
*/
|
*/
|
||||||
public function setData($keys = [], $save = true)
|
public function setData($keys = [])
|
||||||
{
|
{
|
||||||
// Pas d'enregistrement lorsqu'une notice est présente ou tableau transmis vide
|
// Pas d'enregistrement lorsqu'une notice est présente ou tableau transmis vide
|
||||||
if (
|
if (
|
||||||
@ -587,7 +548,7 @@ class common
|
|||||||
$query .= '.' . $keys[$i];
|
$query .= '.' . $keys[$i];
|
||||||
}
|
}
|
||||||
// Appliquer la modification, le dernier élément étant la donnée à sauvegarder
|
// Appliquer la modification, le dernier élément étant la donnée à sauvegarder
|
||||||
$success = is_object($db->set($query, $keys[count($keys) - 1], $save));
|
$success = is_object($db->set($query, $keys[count($keys) - 1], true));
|
||||||
}
|
}
|
||||||
return $success;
|
return $success;
|
||||||
}
|
}
|
||||||
@ -658,35 +619,32 @@ class common
|
|||||||
// Initialise le compteur de tentatives
|
// Initialise le compteur de tentatives
|
||||||
$attempts = 0;
|
$attempts = 0;
|
||||||
|
|
||||||
|
// Convertit les données en chaîne de caractères
|
||||||
|
$serialized_data = serialize($data);
|
||||||
|
|
||||||
// Vérifie la longueur des données
|
// Vérifie la longueur des données
|
||||||
$data_length = strlen($data);
|
$data_length = strlen($serialized_data);
|
||||||
|
|
||||||
// Effectue jusqu'à 5 tentatives d'écriture
|
// Effectue jusqu'à 5 tentatives d'écriture
|
||||||
while ($attempts < 5) {
|
while ($attempts < 5) {
|
||||||
// Essaye d'écrire les données dans le fichier avec verrouillage exclusif
|
// Essaye d'écrire les données dans le fichier avec verrouillage exclusif
|
||||||
$write_result = file_put_contents($filename, $data, LOCK_EX | $flags);
|
$write_result = file_put_contents($filename, $data, LOCK_EX | $flags);
|
||||||
|
|
||||||
//$now = \DateTime::createFromFormat('U.u', microtime(true));
|
|
||||||
//file_put_contents("tmplog.txt", '[SecurePut][' . $now->format('H:i:s.u') . ']--' . $filename . "\r\n", FILE_APPEND);
|
|
||||||
|
|
||||||
// Vérifie si l'écriture a réussi
|
// Vérifie si l'écriture a réussi
|
||||||
if ($write_result !== false && $write_result === $data_length) {
|
if ($write_result !== false && $write_result === $data_length) {
|
||||||
// Sort de la boucle si l'écriture a réussi
|
// Sort de la boucle si l'écriture a réussi
|
||||||
break;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Incrémente le compteur de tentatives
|
// Incrémente le compteur de tentatives
|
||||||
$attempts++;
|
$attempts++;
|
||||||
sleep(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Échec de l'écriture après plusieurs tentatives
|
// Échec de l'écriture après plusieurs tentatives
|
||||||
// Etat de l'écriture
|
return false;
|
||||||
return ($attempts < 5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Effacer les données de la page
|
* Effacer les données de la page
|
||||||
* @param string pageId
|
* @param string pageId
|
||||||
@ -743,11 +701,11 @@ class common
|
|||||||
mkdir(self::DATA_DIR . $lang . '/content', 0755);
|
mkdir(self::DATA_DIR . $lang . '/content', 0755);
|
||||||
}
|
}
|
||||||
// Site en français avec site exemple
|
// Site en français avec site exemple
|
||||||
if ($lang == 'fr_FR' && $sampleSite === true && $module === 'page') {
|
if ($lang == 'fr_FR' && $sampleSite === true) {
|
||||||
$this->setData([$module, init::$siteTemplate[$module]]);
|
$this->setData([$module, init::$siteTemplate[$module]]);
|
||||||
// Création des pages
|
// Création des pages
|
||||||
foreach (init::$siteContent as $key => $value) {
|
foreach (init::$siteContent as $key => $value) {
|
||||||
$this->setPage($key, $value['content'], 'fr_FR');
|
$this->setPage($key, $value, 'fr_FR');
|
||||||
}
|
}
|
||||||
// Version en langue étrangère ou fr_FR sans site de test
|
// Version en langue étrangère ou fr_FR sans site de test
|
||||||
} else {
|
} else {
|
||||||
@ -768,17 +726,6 @@ class common
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Forçage de l'enregistrement
|
|
||||||
* @param mixed $module
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function saveDB($module): void
|
|
||||||
{
|
|
||||||
$db = $this->dataFiles[$module];
|
|
||||||
$db->save();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accède à la liste des pages parents et de leurs enfants
|
* Accède à la liste des pages parents et de leurs enfants
|
||||||
@ -821,7 +768,7 @@ class common
|
|||||||
$this->getData(['page', $pageId, 'parentPageId']) === ""
|
$this->getData(['page', $pageId, 'parentPageId']) === ""
|
||||||
// Ignore les pages dont l'utilisateur n'a pas accès
|
// Ignore les pages dont l'utilisateur n'a pas accès
|
||||||
and ($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR
|
and ($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR
|
||||||
or ($this->isConnected() === true
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
//and $this->getUser('group') >= $this->getData(['page', $pageId, 'group'])
|
//and $this->getUser('group') >= $this->getData(['page', $pageId, 'group'])
|
||||||
// Modification qui tient compte du profil de la page
|
// Modification qui tient compte du profil de la page
|
||||||
and ($this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil']))
|
and ($this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil']))
|
||||||
@ -852,7 +799,7 @@ class common
|
|||||||
$this->getData(['page', $parentId, 'group']) === self::GROUP_VISITOR
|
$this->getData(['page', $parentId, 'group']) === self::GROUP_VISITOR
|
||||||
)
|
)
|
||||||
or (
|
or (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and
|
and
|
||||||
$this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil'])
|
$this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil'])
|
||||||
|
|
||||||
@ -1081,16 +1028,6 @@ class common
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool l'utilisateur est connecté true sinon false
|
|
||||||
*/
|
|
||||||
public function isConnected() {
|
|
||||||
return (
|
|
||||||
!empty($this->getUser('authKey'))
|
|
||||||
&&
|
|
||||||
$this->getUser('authKey') === $this->getInput('ZWII_AUTH_KEY'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check qu'une valeur est transmise par la méthode _POST
|
* Check qu'une valeur est transmise par la méthode _POST
|
||||||
* @return bool
|
* @return bool
|
||||||
@ -1280,10 +1217,11 @@ class common
|
|||||||
$source_image = imagecreatefromwebp($src);
|
$source_image = imagecreatefromwebp($src);
|
||||||
break;
|
break;
|
||||||
case 'avif':
|
case 'avif':
|
||||||
$source_image = imagecreatefromavif($src);
|
$source_image = function_exists('imagecreatefromavif') ? imagecreatefromavif($src) : null;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// Image valide
|
// Image valide
|
||||||
if (is_object($source_image)) {
|
if ($source_image) {
|
||||||
$width = imagesx($source_image);
|
$width = imagesx($source_image);
|
||||||
$height = imagesy($source_image);
|
$height = imagesy($source_image);
|
||||||
/* find the "desired height" of this thumbnail, relative to the desired width */
|
/* find the "desired height" of this thumbnail, relative to the desired width */
|
||||||
@ -1300,9 +1238,9 @@ class common
|
|||||||
return (imagepng($virtual_image, $dest));
|
return (imagepng($virtual_image, $dest));
|
||||||
case 'image/gif':
|
case 'image/gif':
|
||||||
return (imagegif($virtual_image, $dest));
|
return (imagegif($virtual_image, $dest));
|
||||||
case 'image/webp':
|
case 'webp':
|
||||||
return (imagewebp($virtual_image, $dest));
|
return (imagewebp($virtual_image, $dest));
|
||||||
case 'image/avif':
|
case 'avif':
|
||||||
return (imageavif($virtual_image, $dest));
|
return (imageavif($virtual_image, $dest));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
|
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="content-type" content="text/html;">
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<?php $layout->showMetaTitle(); ?>
|
<?php $layout->showMetaTitle(); ?>
|
||||||
<?php $layout->showMetaDescription(); ?>
|
<?php $layout->showMetaDescription(); ?>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
|
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="content-type" content="text/html;">
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<?php $layout->showMetaTitle(); ?>
|
<?php $layout->showMetaTitle(); ?>
|
||||||
<?php $layout->showMetaDescription(); ?>
|
<?php $layout->showMetaDescription(); ?>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo substr(self::$siteContent, 0, 2);?>">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo substr(self::$siteContent, 0, 2);?>">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="content-type" content="text/html;">
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="x-apple-disable-message-reformatting">
|
<meta name="x-apple-disable-message-reformatting">
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="content-type" content="text/html;">
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
<meta meta="description=" content="ZwiiCMS le CMS multilingue sans base de données">
|
<meta meta="description=" content="ZwiiCMS le CMS multilingue sans base de données">
|
||||||
<meta name="generator" content="ZiiCMS https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS">
|
<meta name="generator" content="ZiiCMS https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
@ -54,7 +54,7 @@
|
|||||||
if (
|
if (
|
||||||
$this->getData(['theme', 'menu', 'position']) === 'top'
|
$this->getData(['theme', 'menu', 'position']) === 'top'
|
||||||
and $this->getData(['theme', 'menu', 'fixed']) === true
|
and $this->getData(['theme', 'menu', 'fixed']) === true
|
||||||
and $this->isConnected() === true
|
and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') > self::GROUP_MEMBER
|
and $this->getUser('group') > self::GROUP_MEMBER
|
||||||
) {
|
) {
|
||||||
echo '<nav id="navfixedconnected" >';
|
echo '<nav id="navfixedconnected" >';
|
||||||
|
@ -22,7 +22,7 @@ class config extends common
|
|||||||
'copyBackups' => self::GROUP_ADMIN,
|
'copyBackups' => self::GROUP_ADMIN,
|
||||||
'delBackups' => self::GROUP_ADMIN,
|
'delBackups' => self::GROUP_ADMIN,
|
||||||
'configMetaImage' => self::GROUP_ADMIN,
|
'configMetaImage' => self::GROUP_ADMIN,
|
||||||
'sitemap' => self::GROUP_ADMIN,
|
'siteMap' => self::GROUP_ADMIN,
|
||||||
'index' => self::GROUP_ADMIN,
|
'index' => self::GROUP_ADMIN,
|
||||||
'restore' => self::GROUP_ADMIN,
|
'restore' => self::GROUP_ADMIN,
|
||||||
'updateBaseUrl' => self::GROUP_ADMIN,
|
'updateBaseUrl' => self::GROUP_ADMIN,
|
||||||
@ -30,8 +30,7 @@ class config extends common
|
|||||||
'logReset' => self::GROUP_ADMIN,
|
'logReset' => self::GROUP_ADMIN,
|
||||||
'logDownload' => self::GROUP_ADMIN,
|
'logDownload' => self::GROUP_ADMIN,
|
||||||
'blacklistReset' => self::GROUP_ADMIN,
|
'blacklistReset' => self::GROUP_ADMIN,
|
||||||
'blacklistDownload' => self::GROUP_ADMIN,
|
'blacklistDownload' => self::GROUP_ADMIN
|
||||||
'register' => self::GROUP_ADMIN,
|
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $timezones = [
|
public static $timezones = [
|
||||||
@ -212,7 +211,7 @@ class config extends common
|
|||||||
* Sitemap compressé et non compressé
|
* Sitemap compressé et non compressé
|
||||||
* Robots.txt
|
* Robots.txt
|
||||||
*/
|
*/
|
||||||
public function sitemap()
|
public function siteMap()
|
||||||
{
|
{
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if (
|
if (
|
||||||
@ -908,8 +907,7 @@ class config extends common
|
|||||||
* Fonction pour vérifier la présence du module de réécriture
|
* Fonction pour vérifier la présence du module de réécriture
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isModRewriteEnabled()
|
public function isModRewriteEnabled() {
|
||||||
{
|
|
||||||
// Check if Apache and mod_rewrite is loaded
|
// Check if Apache and mod_rewrite is loaded
|
||||||
if (function_exists('apache_get_modules')) {
|
if (function_exists('apache_get_modules')) {
|
||||||
$modules = apache_get_modules();
|
$modules = apache_get_modules();
|
||||||
@ -919,25 +917,4 @@ class config extends common
|
|||||||
return getenv('HTTP_MOD_REWRITE') == 'On' || getenv('REDIRECT_STATUS') == '200';
|
return getenv('HTTP_MOD_REWRITE') == 'On' || getenv('REDIRECT_STATUS') == '200';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Stocke la variable dans les paramètres de l'utilisateur pour activer la tab à sa prochaine visite
|
|
||||||
* @return never
|
|
||||||
*/
|
|
||||||
public function register(): void
|
|
||||||
{
|
|
||||||
$this->setData([
|
|
||||||
'user',
|
|
||||||
$this->getUser('id'),
|
|
||||||
'view',
|
|
||||||
[
|
|
||||||
'config' => $this->getUrl(2),
|
|
||||||
'page' => $this->getData(['user', $this->getUser('id'), 'view', 'page']),
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl() . 'config/' . $this->getUrl(2),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -66,11 +66,11 @@ $(document).ready(function () {
|
|||||||
$("#connectCaptchaStrong").prop("checked", false);
|
$("#connectCaptchaStrong").prop("checked", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
var configLayout = "<?php echo $this->getData(['user', $this->getUser('id'), 'view', 'config']);?>";
|
var configLayout = getCookie("configLayout");
|
||||||
// Non défini, valeur par défaut
|
if (configLayout == null) {
|
||||||
if (configLayout == "") {
|
|
||||||
configLayout = "setup";
|
configLayout = "setup";
|
||||||
}
|
setCookie("configLayout", "setup");
|
||||||
|
}
|
||||||
|
|
||||||
$("#socialContainer").hide();
|
$("#socialContainer").hide();
|
||||||
$("#connectContainer").hide();
|
$("#connectContainer").hide();
|
||||||
@ -166,6 +166,7 @@ $(document).ready(function () {
|
|||||||
$("#configSocialButton").removeClass("activeButton");
|
$("#configSocialButton").removeClass("activeButton");
|
||||||
$("#configConnectButton").removeClass("activeButton");
|
$("#configConnectButton").removeClass("activeButton");
|
||||||
$("#configNetworkButton").removeClass("activeButton");
|
$("#configNetworkButton").removeClass("activeButton");
|
||||||
|
setCookie("configLayout", "setup");
|
||||||
});
|
});
|
||||||
$("#configSocialButton").on("click", function () {
|
$("#configSocialButton").on("click", function () {
|
||||||
$("#connectContainer").hide();
|
$("#connectContainer").hide();
|
||||||
@ -176,6 +177,7 @@ $(document).ready(function () {
|
|||||||
$("#configSocialButton").addClass("activeButton");
|
$("#configSocialButton").addClass("activeButton");
|
||||||
$("#configConnectButton").removeClass("activeButton");
|
$("#configConnectButton").removeClass("activeButton");
|
||||||
$("#configNetworkButton").removeClass("activeButton");
|
$("#configNetworkButton").removeClass("activeButton");
|
||||||
|
setCookie("configLayout", "social");
|
||||||
});
|
});
|
||||||
$("#configConnectButton").on("click", function () {
|
$("#configConnectButton").on("click", function () {
|
||||||
$("#setupContainer").hide();
|
$("#setupContainer").hide();
|
||||||
@ -186,6 +188,7 @@ $(document).ready(function () {
|
|||||||
$("#configSocialButton").removeClass("activeButton");
|
$("#configSocialButton").removeClass("activeButton");
|
||||||
$("#configConnectButton").addClass("activeButton");
|
$("#configConnectButton").addClass("activeButton");
|
||||||
$("#configNetworkButton").removeClass("activeButton");
|
$("#configNetworkButton").removeClass("activeButton");
|
||||||
|
setCookie("configLayout", "connect");
|
||||||
});
|
});
|
||||||
$("#configNetworkButton").on("click", function () {
|
$("#configNetworkButton").on("click", function () {
|
||||||
$("#setupContainer").hide();
|
$("#setupContainer").hide();
|
||||||
@ -196,6 +199,7 @@ $(document).ready(function () {
|
|||||||
$("#configSocialButton").removeClass("activeButton");
|
$("#configSocialButton").removeClass("activeButton");
|
||||||
$("#configConnectButton").removeClass("activeButton");
|
$("#configConnectButton").removeClass("activeButton");
|
||||||
$("#configNetworkButton").addClass("activeButton");
|
$("#configNetworkButton").addClass("activeButton");
|
||||||
|
setCookie("configLayout", "network");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@ -261,6 +265,7 @@ $(document).ready(function () {
|
|||||||
$('span#screenWeight').each(function(index){
|
$('span#screenWeight').each(function(index){
|
||||||
var weight = parseFloat($(this).text());
|
var weight = parseFloat($(this).text());
|
||||||
var fileType = $('span#screenType').eq(index).text();
|
var fileType = $('span#screenType').eq(index).text();
|
||||||
|
console.log(weight);
|
||||||
if ((fileType === "jpg" || fileType === "jpeg") && weight < 5000000) {
|
if ((fileType === "jpg" || fileType === "jpeg") && weight < 5000000) {
|
||||||
$(this).css("color", "green");
|
$(this).css("color", "green");
|
||||||
} else {
|
} else {
|
||||||
@ -281,6 +286,28 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function setCookie(name, value, days) {
|
||||||
|
var expires = "";
|
||||||
|
if (days) {
|
||||||
|
var date = new Date();
|
||||||
|
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
||||||
|
expires = "; expires=" + date.toUTCString();
|
||||||
|
}
|
||||||
|
document.cookie = name + "=" + (value || "") + expires + "; path=/; samesite=lax";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCookie(name) {
|
||||||
|
var nameEQ = name + "=";
|
||||||
|
var ca = document.cookie.split(';');
|
||||||
|
for (var i = 0; i < ca.length; i++) {
|
||||||
|
var c = ca[i];
|
||||||
|
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
|
||||||
|
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Define function to capitalize the first letter of a string
|
// Define function to capitalize the first letter of a string
|
||||||
function capitalizeFirstLetter(string) {
|
function capitalizeFirstLetter(string) {
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||||
|
@ -7,7 +7,16 @@
|
|||||||
'value' => template::ico('home')
|
'value' => template::ico('home')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset7">
|
<div class="col1">
|
||||||
|
<?php /**echo template::button('configHelp', [
|
||||||
|
'class' => 'buttonHelp',
|
||||||
|
'href' => 'https://doc.zwiicms.fr/configuration-du-site',
|
||||||
|
'target' => '_blank',
|
||||||
|
'value' => template::ico('help'),
|
||||||
|
'help' => 'Consulter l\'aide en ligne'
|
||||||
|
]); */?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset6">
|
||||||
<?php echo template::button('configLocaleButton', [
|
<?php echo template::button('configLocaleButton', [
|
||||||
'value' => 'Identité',
|
'value' => 'Identité',
|
||||||
'href' => helper::baseUrl() . 'language/site'
|
'href' => helper::baseUrl() . 'language/site'
|
||||||
@ -21,24 +30,20 @@
|
|||||||
<div class="tab">
|
<div class="tab">
|
||||||
<?php echo template::button('configSetupButton', [
|
<?php echo template::button('configSetupButton', [
|
||||||
'value' => 'Configuration',
|
'value' => 'Configuration',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
//'href' => helper::baseUrl() . 'config/register/setup'
|
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::button('configSocialButton', [
|
<?php echo template::button('configSocialButton', [
|
||||||
'value' => 'Référencement',
|
'value' => 'Référencement',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
//'href' => helper::baseUrl() . 'config/register/social'
|
|
||||||
]); ?>
|
]); ?>
|
||||||
|
|
||||||
<?php echo template::button('configConnectButton', [
|
<?php echo template::button('configConnectButton', [
|
||||||
'value' => 'Connexion',
|
'value' => 'Connexion',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
//'href' => helper::baseUrl() . 'config/register/connect'
|
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::button('configNetworkButton', [
|
<?php echo template::button('configNetworkButton', [
|
||||||
'value' => 'Réseau',
|
'value' => 'Réseau',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
//'href' => helper::baseUrl() . 'config/register/network'
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -3,6 +3,12 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Paramètres'); ?>
|
<h4><?php echo helper::translate('Paramètres'); ?>
|
||||||
|
<!--<span id="setupHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/parametres" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']);
|
||||||
|
?>
|
||||||
|
</a>-->
|
||||||
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
@ -11,8 +17,7 @@
|
|||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
|
'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
|
||||||
'label' => 'Favicon',
|
'label' => 'Favicon',
|
||||||
'value' => $this->getData(['config', 'favicon']),
|
'value' => $this->getData(['config', 'favicon'])
|
||||||
'folder' => $this->getData(['config', 'favicon']) ? dirname($this->getData(['config', 'favicon'])) : ''
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
@ -21,8 +26,7 @@
|
|||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'help' => 'Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
|
'help' => 'Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
|
||||||
'label' => 'Favicon thème sombre',
|
'label' => 'Favicon thème sombre',
|
||||||
'value' => $this->getData(['config', 'faviconDark']),
|
'value' => $this->getData(['config', 'faviconDark'])
|
||||||
'folder' => $this->getData(['config', 'faviconDark']) ? dirname($this->getData(['config', 'faviconDark'])) : ''
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
@ -43,8 +47,8 @@
|
|||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('configRewrite', true, 'Apache URL intelligentes', [
|
<?php echo template::checkbox('configRewrite', true, 'Apache URL intelligentes', [
|
||||||
'checked' => helper::checkRewrite(),
|
'checked' => helper::checkRewrite(),
|
||||||
'help' => 'Supprime le point d\'interrogation dans les URL, l\'option est indisponible avec les autres serveurs Web',
|
'help' => 'Supprime le point d\'interrogation dans les URL, l\'option est indisponible avec les autres serveurs Web',
|
||||||
'disabled' => stripos($_SERVER["SERVER_SOFTWARE"], 'Apache') === false and $module->isModRewriteEnabled()
|
'disabled' => stripos($_SERVER["SERVER_SOFTWARE"], 'Apache') === false and $module->isModRewriteEnabled()
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -55,6 +59,12 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Mise à jour automatisée'); ?>
|
<h4><?php echo helper::translate('Mise à jour automatisée'); ?>
|
||||||
|
<!--<span id="updateHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/mise-a-jour" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']);
|
||||||
|
?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
@ -80,8 +90,8 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3 offset1 verticalAlignBottom">
|
<div class="col3 offset1 verticalAlignBottom">
|
||||||
<pre>Version installée : <strong><?php echo common::ZWII_VERSION; ?></strong></pre>
|
<pre>Version installée : <strong><?php echo common::ZWII_VERSION ; ?></strong></pre>
|
||||||
<pre>Version en ligne : <strong><?php echo helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL); ?></strong></pre>
|
<pre>Version en ligne : <strong><?php echo helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL) ; ?></strong></pre>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3 offset2 verticalAlignBottom">
|
<div class="col3 offset2 verticalAlignBottom">
|
||||||
<?php echo template::button('configUpdateForced', [
|
<?php echo template::button('configUpdateForced', [
|
||||||
@ -99,6 +109,12 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Maintenance'); ?>
|
<h4><?php echo helper::translate('Maintenance'); ?>
|
||||||
|
<!--<span id="maintenanceHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/mode-maintenance" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']);
|
||||||
|
?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
@ -153,6 +169,12 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Scripts externes'); ?>
|
<h4><?php echo helper::translate('Scripts externes'); ?>
|
||||||
|
<!--<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/scripts-externes" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']);
|
||||||
|
?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4 offset1 verticalAlignBottom">
|
<div class="col4 offset1 verticalAlignBottom">
|
||||||
@ -176,21 +198,13 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>ZwiiCMS <a href="https://zwiicms.fr" target="_blank">Site Web</a> - <a
|
<h4>ZwiiCMS <a href="https://zwiicms.fr" target="_blank">Site Web</a> - <a href="https://forum.zwiicms.fr" target="_blank">Forum</a>
|
||||||
href="https://forum.zwiicms.fr" target="_blank">Forum</a>
|
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row textAlignCenter">
|
<div class="row textAlignCenter">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img
|
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a>
|
||||||
alt="Licence Creative Commons" style="border-width:0"
|
<p>Cette œuvre est mise à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.</a></p>
|
||||||
src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a>
|
<p>Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-nd/4.0/ ou écrivez à Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</p>
|
||||||
<p>Cette œuvre est mise à disposition selon les termes de la <a rel="license"
|
|
||||||
href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Licence Creative Commons
|
|
||||||
Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0
|
|
||||||
International.</a></p>
|
|
||||||
<p>Pour voir une copie de cette licence, visitez
|
|
||||||
http://creativecommons.org/licenses/by-nc-nd/4.0/ ou écrivez à Creative Commons, PO Box
|
|
||||||
1866, Mountain View, CA 94042, USA.</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Capture d\'écran Open Graph'); ?>
|
<?php echo helper::translate('Capture d\'écran Open Graph'); ?>
|
||||||
|
<!--<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/referencement" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
@ -13,30 +18,29 @@
|
|||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'label' => 'Image Open Graph',
|
'label' => 'Image Open Graph',
|
||||||
'value' => $this->getData(['config', 'seo', 'openGraphImage']),
|
'value' => $this->getData(['config', 'seo', 'openGraphImage']),
|
||||||
'folder' => $this->getData(['config', 'seo', 'openGraphImage']) ? dirname($this->getData(['config', 'seo', 'openGraphImage'])) : '',
|
|
||||||
'type' => 1,
|
'type' => 1,
|
||||||
'help' => sprintf('%s : JPG - PNG<br />', helper::translate('Format')) .
|
'help' => sprintf('%s : JPG - PNG<br />', helper::translate('Format')) .
|
||||||
sprintf('%s : 1200 x 630 pixels<br />', helper::translate('Dimensions minimales')) .
|
sprintf('%s : 1200 x 630 pixels<br />', helper::translate('Dimensions minimales')) .
|
||||||
sprintf('%s : 1.91:1<br />', helper::translate('Ratio')) .
|
sprintf('%s : 1.91:1<br />', helper::translate('Ratio')) .
|
||||||
sprintf('%s : %s, %s<br />', helper::translate('Taille maximale du fichier'), helper::translate('5 Mo pour les images JPEG'), helper::translate('1 Mo pour les images PNG'))
|
sprintf('%s : %s, %s<br />', helper::translate('Taille maximale du fichier'), helper::translate('5 Mo pour les images JPEG'), helper::translate('1 Mo pour les images PNG'))
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col10 textAlignCenter">
|
<div class="col10 textAlignCenter">
|
||||||
<?php if( !empty($module::$imageOpenGraph['type']) ): ?>
|
<?php if( !empty($module::$imageOpenGraph['type']) ): ?>
|
||||||
<p>
|
<p>
|
||||||
<?php echo sprintf('%s : <span id="screenType">%s</span>', helper::translate('Format'), $module::$imageOpenGraph['type']); ?>
|
<?php echo sprintf('%s : <span id="screenType">%s</span>', helper::translate('Format'), $module::$imageOpenGraph['type']); ?>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<?php echo sprintf('%s : <span id="screenWide">%s</span> x <span id="screenHeight">%s</span> pixels', helper::translate('Dimensions minimales'), $module::$imageOpenGraph['wide'], $module::$imageOpenGraph['height'] ); ?>
|
<?php echo sprintf('%s : <span id="screenWide">%s</span> x <span id="screenHeight">%s</span> pixels', helper::translate('Dimensions minimales'), $module::$imageOpenGraph['wide'], $module::$imageOpenGraph['height'] ); ?>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<?php echo sprintf('%s : <span id="screenRatio">%s</span><span id="screenFract">:1</span>' , helper::translate('Ratio'), round($module::$imageOpenGraph['ratio'], 2)); ?>
|
<?php echo sprintf('%s : <span id="screenRatio">%s</span><span id="screenFract">:1</span>' , helper::translate('Ratio'), round($module::$imageOpenGraph['ratio'], 2)); ?>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<?php echo sprintf('%s : <span id="screenWeight">%s</span>', helper::translate('Poids'), $module::$imageOpenGraph['size']); ?>
|
<?php echo sprintf('%s : <span id="screenWeight">%s</span>', helper::translate('Poids'), $module::$imageOpenGraph['size']); ?>
|
||||||
</p>
|
</p>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -80,6 +84,12 @@
|
|||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
|
<?php echo helper::translate('Réseaux sociaux'); ?>
|
||||||
|
<!--<span id="specialeHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/reseaux-sociaux" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
|
@ -179,9 +179,9 @@ class install extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Sauvegarder la configuration du Proxy
|
// Sauvegarder la configuration du Proxy
|
||||||
$this->setData(['config', 'proxyType', $this->getInput('installProxyType')], false);
|
$this->setData(['config', 'proxyType', $this->getInput('installProxyType')]);
|
||||||
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl')], false);
|
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl')]);
|
||||||
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)], false);
|
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)]);
|
||||||
|
|
||||||
// Images exemples livrées dans tous les cas
|
// Images exemples livrées dans tous les cas
|
||||||
try {
|
try {
|
||||||
@ -219,7 +219,7 @@ class install extends common
|
|||||||
$this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR);
|
$this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR);
|
||||||
|
|
||||||
// Fixe l'adresse from pour les envois d'email
|
// Fixe l'adresse from pour les envois d'email
|
||||||
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])], false);
|
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])]);
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -228,8 +228,6 @@ class install extends common
|
|||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('config');
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -286,7 +284,7 @@ class install extends common
|
|||||||
'display' => self::DISPLAY_JSON,
|
'display' => self::DISPLAY_JSON,
|
||||||
'content' => [
|
'content' => [
|
||||||
'success' => $success,
|
'success' => $success,
|
||||||
'data' => $message
|
'data' => $success ? null : json_encode($message, JSON_UNESCAPED_UNICODE)
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
@ -319,7 +317,7 @@ class install extends common
|
|||||||
'display' => self::DISPLAY_JSON,
|
'display' => self::DISPLAY_JSON,
|
||||||
'content' => [
|
'content' => [
|
||||||
'success' => $success,
|
'success' => $success,
|
||||||
'data' => $message
|
'data' => json_encode($message, JSON_UNESCAPED_UNICODE)
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
@ -362,7 +360,7 @@ class install extends common
|
|||||||
'display' => self::DISPLAY_JSON,
|
'display' => self::DISPLAY_JSON,
|
||||||
'content' => [
|
'content' => [
|
||||||
'success' => $success,
|
'success' => $success,
|
||||||
'data' => $message,
|
'data' => json_encode($message, JSON_UNESCAPED_UNICODE)
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
@ -434,13 +432,12 @@ class install extends common
|
|||||||
if (!empty($message)) {
|
if (!empty($message)) {
|
||||||
$this->saveLog($message);
|
$this->saveLog($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'display' => self::DISPLAY_JSON,
|
'display' => self::DISPLAY_JSON,
|
||||||
'content' => [
|
'content' => [
|
||||||
'success' => $success,
|
'success' => $success,
|
||||||
'data' => $message
|
'data' => json_encode($message, JSON_UNESCAPED_UNICODE)
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
function step(i, data) {
|
function step(i, data) {
|
||||||
var errors = [
|
var errors = ["<?php echo helper::translate('Préparation de la mise à jour'); ?>", "<?php echo helper::translate('Téléchargement et validation de l\'archive'); ?>", "<?php echo helper::translate('Installation'); ?>", "<?php echo helper::translate('Configuration'); ?>"];
|
||||||
"<?php echo helper::translate('Préparation de la mise à jour'); ?>",
|
$(".installUpdateProgressText").hide(), $(".installUpdateProgressText[data-id=" + i + "]").show();
|
||||||
"<?php echo helper::translate('Téléchargement et validation de l\'archive'); ?>",
|
|
||||||
"<?php echo helper::translate('Installation'); ?>",
|
|
||||||
"<?php echo helper::translate('Configuration'); ?>"
|
|
||||||
];
|
|
||||||
$(".installUpdateProgressText").hide();
|
|
||||||
$(".installUpdateProgressText[data-id=" + i + "]").show();
|
|
||||||
|
|
||||||
$("body").css("cursor", "wait");
|
$("body").css("cursor", "wait");
|
||||||
|
|
||||||
@ -18,7 +12,7 @@ function step(i, data) {
|
|||||||
data: data
|
data: data
|
||||||
},
|
},
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
setTimeout(function () {
|
setTimeout((function () {
|
||||||
if (4 === i) {
|
if (4 === i) {
|
||||||
$("#installUpdateSuccess").show();
|
$("#installUpdateSuccess").show();
|
||||||
$("body").css("cursor", "default");
|
$("body").css("cursor", "default");
|
||||||
@ -27,21 +21,15 @@ function step(i, data) {
|
|||||||
} else {
|
} else {
|
||||||
step(i + 1, result.data);
|
step(i + 1, result.data);
|
||||||
}
|
}
|
||||||
}, 2000);
|
}), 2e3)
|
||||||
},
|
},
|
||||||
error: function (xhr) {
|
error: function (xhr) {
|
||||||
|
// Balance tout dans la console
|
||||||
console.log(i);
|
console.log(i);
|
||||||
console.log(xhr.responseText);
|
console.log(xhr.responseText);
|
||||||
console.log(errors);
|
console.log(errors);
|
||||||
|
// Appel de la fonction de gestion d'erreur
|
||||||
// Vérification du code d'erreur HTTP pour gérer la déconnexion
|
showError(i, xhr.responseText, errors);
|
||||||
if (xhr.status === 401 || xhr.status === 403) {
|
|
||||||
alert("Votre session a expiré. Veuillez vous reconnecter.");
|
|
||||||
window.location.href = "?user/login"; // Redirige vers la page de connexion
|
|
||||||
} else {
|
|
||||||
// Appel de la fonction de gestion d'erreur
|
|
||||||
showError(i, xhr.responseText, errors);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -59,33 +47,23 @@ function showError(step, message, errors) {
|
|||||||
// Trouver la position du premier "{" pour repérer le début du tableau
|
// Trouver la position du premier "{" pour repérer le début du tableau
|
||||||
const startOfArray = message.indexOf('{');
|
const startOfArray = message.indexOf('{');
|
||||||
|
|
||||||
if (startOfArray !== -1 && startOfArray > 0) {
|
// Extraire le message du warning jusqu'au début du tableau
|
||||||
// Extraire le message du warning jusqu'au début du tableau
|
const warningMessage = message.substring(0, startOfArray).trim();
|
||||||
const warningMessage = message.substring(0, startOfArray).trim();
|
|
||||||
|
|
||||||
// Extraire le tableau JSON entre les accolades
|
// Extraire le tableau JSON entre les accolades
|
||||||
const jsonString = message.substring(startOfArray);
|
const jsonString = message.substring(startOfArray);
|
||||||
|
const jsonData = JSON.parse(jsonString);
|
||||||
|
|
||||||
try {
|
// Afficher les résultats
|
||||||
const jsonData = JSON.parse(jsonString);
|
if (jsonData) {
|
||||||
|
$("#installUpdateErrorMessage").html("<strong>Détails de l'erreur :</strong><br> " +
|
||||||
// Afficher les résultats si le parsing JSON est réussi
|
jsonData.data.replace(/^"(.*)"$/, '$1') +
|
||||||
if (jsonData) {
|
"<br>" +
|
||||||
$("#installUpdateErrorMessage").html("<strong>Détails de l'erreur :</strong><br> " +
|
warningMessage.replace(/<[^p].*?>/g, ""));
|
||||||
jsonData.data.replace(/^"(.*)"$/, '$1') +
|
|
||||||
"<br>" +
|
|
||||||
warningMessage.replace(/<[^p].*?>/g, ""));
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
// Afficher un message générique en cas d'erreur de parsing
|
|
||||||
console.error("Erreur de parsing JSON : ", e);
|
|
||||||
$("#installUpdateErrorMessage").html("Une erreur inattendue est survenue lors du traitement des détails de l'erreur.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Si pas de JSON détecté, afficher le message brut
|
|
||||||
$("#installUpdateErrorMessage").html("Message d'erreur : " + message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
// Vous pouvez également faire quelque chose d'autre ici, par exemple, afficher un message à l'utilisateur, etc.
|
||||||
$("#installUpdateErrorMessage").html(message);
|
$("#installUpdateErrorMessage").html(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Étiquettes des pages spéciales'); ?>
|
<h4><?php echo helper::translate('Étiquettes des pages spéciales'); ?>
|
||||||
<!--<span id="labelHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
<!--<span id="labelHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
|
||||||
<a href="https://doc.zwiicms.fr/Étiquettes-des-pages-speciales" target="_blank">
|
<a href="https://doc.zwiicms.fr/etiquettes-des-pages-speciales" target="_blank">
|
||||||
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
</a>
|
</a>
|
||||||
</span>-->
|
</span>-->
|
||||||
|
@ -23,8 +23,7 @@ class page extends common
|
|||||||
'edit' => self::GROUP_EDITOR,
|
'edit' => self::GROUP_EDITOR,
|
||||||
'duplicate' => self::GROUP_EDITOR,
|
'duplicate' => self::GROUP_EDITOR,
|
||||||
'jsEditor' => self::GROUP_EDITOR,
|
'jsEditor' => self::GROUP_EDITOR,
|
||||||
'cssEditor' => self::GROUP_EDITOR,
|
'cssEditor' => self::GROUP_EDITOR
|
||||||
'register' => self::GROUP_EDITOR,
|
|
||||||
];
|
];
|
||||||
public static $pagesNoParentId = [
|
public static $pagesNoParentId = [
|
||||||
'' => 'Aucune'
|
'' => 'Aucune'
|
||||||
@ -119,16 +118,14 @@ class page extends common
|
|||||||
$page
|
$page
|
||||||
]);
|
]);
|
||||||
// Ecriture
|
// Ecriture
|
||||||
$this->setData(['page', $pageId, $data], false);
|
$this->setData(['page', $pageId, $data]);
|
||||||
$notification = helper::translate('Page dupliquée');
|
$notification = helper::translate('Page dupliquée');
|
||||||
// Duplication du module présent
|
// Duplication du module présent
|
||||||
if ($this->getData(['page', $page, 'moduleId'])) {
|
if ($this->getData(['page', $page, 'moduleId'])) {
|
||||||
$data = $this->getData(['module', $page]);
|
$data = $this->getData(['module', $page]);
|
||||||
$this->setData(['module', $pageId, $data], false);
|
$this->setData(['module', $pageId, $data]);
|
||||||
$notification = helper::translate('Page et module dupliqués');
|
$notification = helper::translate('Page et module dupliqués');
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('page');
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -204,8 +201,8 @@ class page extends common
|
|||||||
//$this->secure_file_put_contents(self::DATA_DIR . self::$siteContent . '/content/' . $pageId . '.html', '<p>Contenu de votre nouvelle page.</p>');
|
//$this->secure_file_put_contents(self::DATA_DIR . self::$siteContent . '/content/' . $pageId . '.html', '<p>Contenu de votre nouvelle page.</p>');
|
||||||
$this->setPage($pageId, '<p>Contenu de votre nouvelle page.</p>', self::$siteContent);
|
$this->setPage($pageId, '<p>Contenu de votre nouvelle page.</p>', self::$siteContent);
|
||||||
|
|
||||||
// Ne met à jour le sitemap pour éviter un warning, de toute manière la nouvelle page doit être éditée.
|
// Met à jour le sitemap
|
||||||
// $this->updateSitemap();
|
$this->updateSitemap();
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -384,13 +381,11 @@ class page extends common
|
|||||||
$pageId = helper::increment($pageId, self::$moduleIds);
|
$pageId = helper::increment($pageId, self::$moduleIds);
|
||||||
// Met à jour les enfants
|
// Met à jour les enfants
|
||||||
foreach ($this->getHierarchy($this->getUrl(2), null) as $childrenPageId) {
|
foreach ($this->getHierarchy($this->getUrl(2), null) as $childrenPageId) {
|
||||||
$this->setData(['page', $childrenPageId, 'parentPageId', $pageId], false);
|
$this->setData(['page', $childrenPageId, 'parentPageId', $pageId]);
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('page');
|
|
||||||
// Change l'id de page dans les données des modules
|
// Change l'id de page dans les données des modules
|
||||||
if ($this->getData(['module', $this->getUrl(2)]) !== null) {
|
if ($this->getData(['module', $this->getUrl(2)]) !== null) {
|
||||||
$this->setData(['module', $pageId, $this->getData(['module', $this->getUrl(2)])], false);
|
$this->setData(['module', $pageId, $this->getData(['module', $this->getUrl(2)])]);
|
||||||
$this->deleteData(['module', $this->getUrl(2)]);
|
$this->deleteData(['module', $this->getUrl(2)]);
|
||||||
// Renommer le dossier du module
|
// Renommer le dossier du module
|
||||||
$moduleId = $this->getData(['page', $this->getUrl(2), 'moduleId']);
|
$moduleId = $this->getData(['page', $this->getUrl(2), 'moduleId']);
|
||||||
@ -401,10 +396,8 @@ class page extends common
|
|||||||
copy($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2), $modulesData[$moduleId]['dataDirectory'] . $pageId);
|
copy($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2), $modulesData[$moduleId]['dataDirectory'] . $pageId);
|
||||||
$this->deleteDir($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2));
|
$this->deleteDir($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2));
|
||||||
// Mettre à jour le nom de la feuille de style
|
// Mettre à jour le nom de la feuille de style
|
||||||
$this->setData(['module', $pageId, 'theme', 'style', $modulesData[$moduleId]['dataDirectory'] . $pageId], false);
|
$this->setData(['module', $pageId, 'theme', 'style', $modulesData[$moduleId]['dataDirectory'] . $pageId]);
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('module');
|
|
||||||
}
|
}
|
||||||
// Si la page correspond à la page d'accueil, change l'id dans la configuration du site
|
// Si la page correspond à la page d'accueil, change l'id dans la configuration du site
|
||||||
if ($this->getData(['locale', 'homePageId']) === $this->getUrl(2)) {
|
if ($this->getData(['locale', 'homePageId']) === $this->getUrl(2)) {
|
||||||
@ -424,22 +417,20 @@ class page extends common
|
|||||||
}
|
}
|
||||||
// Traitement des pages spéciales affectées dans la config :
|
// Traitement des pages spéciales affectées dans la config :
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'legalPageId'])) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'legalPageId'])) {
|
||||||
$this->setData(['locale', 'legalPageId', $pageId], false);
|
$this->setData(['locale', 'legalPageId', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'searchPageId'])) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'searchPageId'])) {
|
||||||
$this->setData(['locale', 'searchPageId', $pageId], false);
|
$this->setData(['locale', 'searchPageId', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'page404'])) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'page404'])) {
|
||||||
$this->setData(['locale', 'page404', $pageId], false);
|
$this->setData(['locale', 'page404', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'page403'])) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'page403'])) {
|
||||||
$this->setData(['locale', 'page403', $pageId], false);
|
$this->setData(['locale', 'page403', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getUrl(2) === $this->getData(['locale', 'page302'])) {
|
if ($this->getUrl(2) === $this->getData(['locale', 'page302'])) {
|
||||||
$this->setData(['locale', 'page302', $pageId], false);
|
$this->setData(['locale', 'page302', $pageId]);
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('locale');
|
|
||||||
// Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents
|
// Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents
|
||||||
$lastPosition = 1;
|
$lastPosition = 1;
|
||||||
$hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy());
|
$hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy());
|
||||||
@ -458,7 +449,7 @@ class page extends common
|
|||||||
$lastPosition++;
|
$lastPosition++;
|
||||||
}
|
}
|
||||||
// Change la position
|
// Change la position
|
||||||
$this->setData(['page', $hierarchyPageId, 'position', $lastPosition], false);
|
$this->setData(['page', $hierarchyPageId, 'position', $lastPosition]);
|
||||||
// Incrémente pour la prochaine position
|
// Incrémente pour la prochaine position
|
||||||
$lastPosition++;
|
$lastPosition++;
|
||||||
}
|
}
|
||||||
@ -483,28 +474,26 @@ class page extends common
|
|||||||
) {
|
) {
|
||||||
foreach ($this->getHierarchy($pageId) as $parentId => $childId) {
|
foreach ($this->getHierarchy($pageId) as $parentId => $childId) {
|
||||||
if ($this->getData(['page', $childId, 'parentPageId']) === $pageId) {
|
if ($this->getData(['page', $childId, 'parentPageId']) === $pageId) {
|
||||||
$this->setData(['page', $childId, 'position', 0], false);
|
$this->setData(['page', $childId, 'position', 0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('page');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// La page est une barre latérale qui a été renommée : changer le nom de la barre dans les pages qui l'utilisent
|
// La page est une barre latérale qui a été renommée : changer le nom de la barre dans les pages qui l'utilisent
|
||||||
if ($this->getinput('pageEditBlock') === 'bar') {
|
if ($this->getinput('pageEditBlock') === 'bar') {
|
||||||
foreach ($this->getHierarchy() as $eachPageId => $parentId) {
|
foreach ($this->getHierarchy() as $eachPageId => $parentId) {
|
||||||
if ($this->getData(['page', $eachPageId, 'barRight']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $eachPageId, 'barRight']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page', $eachPageId, 'barRight', $pageId], false);
|
$this->setData(['page', $eachPageId, 'barRight', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getData(['page', $eachPageId, 'barLeft']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $eachPageId, 'barLeft']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page', $eachPageId, 'barLeft', $pageId], false);
|
$this->setData(['page', $eachPageId, 'barLeft', $pageId]);
|
||||||
}
|
}
|
||||||
foreach ($parentId as $childId) {
|
foreach ($parentId as $childId) {
|
||||||
if ($this->getData(['page', $childId, 'barRight']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $childId, 'barRight']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page', $childId, 'barRight', $pageId], false);
|
$this->setData(['page', $childId, 'barRight', $pageId]);
|
||||||
}
|
}
|
||||||
if ($this->getData(['page', $childId, 'barLeft']) === $this->getUrl(2)) {
|
if ($this->getData(['page', $childId, 'barLeft']) === $this->getUrl(2)) {
|
||||||
$this->setData(['page', $childId, 'barLeft', $pageId], false);
|
$this->setData(['page', $childId, 'barLeft', $pageId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -720,30 +709,9 @@ class page extends common
|
|||||||
{
|
{
|
||||||
$p = $this->getData(['page']);
|
$p = $this->getData(['page']);
|
||||||
$d = array_map(function ($d) {
|
$d = array_map(function ($d) {
|
||||||
unset($d["css"], $d["js"]);
|
unset ($d["css"], $d["js"]);
|
||||||
return $d;
|
return $d;
|
||||||
}, $p);
|
}, $p);
|
||||||
return json_encode($d);
|
return json_encode($d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Stocke la variable dans les paramètres de l'utilisateur pour activer la tab à sa prochaine visite
|
|
||||||
* @return never
|
|
||||||
*/
|
|
||||||
public function register(): void
|
|
||||||
{
|
|
||||||
$this->setData([
|
|
||||||
'user',
|
|
||||||
$this->getUser('id'),
|
|
||||||
'view',
|
|
||||||
[
|
|
||||||
'page' => $this->getUrl(2),
|
|
||||||
'config' => $this->getData(['user', $this->getUser('id'), 'view', 'config']),
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(3) . '/' . self::$siteContent,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -15,7 +15,7 @@
|
|||||||
/**
|
/**
|
||||||
* Confirmation de suppression
|
* Confirmation de suppression
|
||||||
*/
|
*/
|
||||||
$("#pageEditDelete").on("click", function() {
|
$("#pageEditDelete").on("click", function() {
|
||||||
var _this = $(this);
|
var _this = $(this);
|
||||||
var message_delete = "<?php echo helper::translate('Confirmer la suppression de la page'); ?>";
|
var message_delete = "<?php echo helper::translate('Confirmer la suppression de la page'); ?>";
|
||||||
return core.confirm(message_delete, function() {
|
return core.confirm(message_delete, function() {
|
||||||
@ -67,19 +67,16 @@ $( document ).ready(function() {
|
|||||||
/**
|
/**
|
||||||
* Sélection des onglets
|
* Sélection des onglets
|
||||||
*/
|
*/
|
||||||
var pageLayout = "<?php echo $this->getData(['user', $this->getUser('id'), 'view', 'page']);?>";
|
var pageLayout = getCookie("pageLayout");
|
||||||
|
if (pageLayout == null) {
|
||||||
// Non défini, valeur par défaut
|
|
||||||
if (pageLayout == "") {
|
|
||||||
pageLayout = "content";
|
pageLayout = "content";
|
||||||
|
setCookie("pageLayout", "content");
|
||||||
}
|
}
|
||||||
// Tout cacher
|
|
||||||
$("#pageEditContentContainer").hide();
|
$("#pageEditContentContainer").hide();
|
||||||
$("#pageEditExtensionContainer").hide();
|
$("#pageEditExtensionContainer").hide();
|
||||||
$("#pageEditPositionContainer").hide();
|
$("#pageEditPositionContainer").hide();
|
||||||
$("#pageEditLayoutContainer").hide();
|
$("#pageEditLayoutContainer").hide();
|
||||||
$("#pageEditPermissionContainer").hide();
|
$("#pageEditPermissionContainer").hide();
|
||||||
// Afficher la bonne tab
|
|
||||||
$("#pageEdit" + capitalizeFirstLetter(pageLayout) + "Container").show();
|
$("#pageEdit" + capitalizeFirstLetter(pageLayout) + "Container").show();
|
||||||
$("#pageEdit" + capitalizeFirstLetter(pageLayout) + "Button").addClass("activeButton");
|
$("#pageEdit" + capitalizeFirstLetter(pageLayout) + "Button").addClass("activeButton");
|
||||||
|
|
||||||
@ -298,6 +295,7 @@ $( document ).ready(function() {
|
|||||||
$("#PageEditPositionButton").removeClass("activeButton");
|
$("#PageEditPositionButton").removeClass("activeButton");
|
||||||
$("#pageEditLayoutButton").removeClass("activeButton");
|
$("#pageEditLayoutButton").removeClass("activeButton");
|
||||||
$("#pageEditPermissionButton").removeClass("activeButton");
|
$("#pageEditPermissionButton").removeClass("activeButton");
|
||||||
|
setCookie("pageLayout", "content");
|
||||||
});
|
});
|
||||||
$("#pageEditExtensionButton").on("click", function () {
|
$("#pageEditExtensionButton").on("click", function () {
|
||||||
$("#pageEditContentContainer").hide();
|
$("#pageEditContentContainer").hide();
|
||||||
@ -310,6 +308,7 @@ $( document ).ready(function() {
|
|||||||
$("#PageEditPositionButton").removeClass("activeButton");
|
$("#PageEditPositionButton").removeClass("activeButton");
|
||||||
$("#pageEditLayoutButton").removeClass("activeButton");
|
$("#pageEditLayoutButton").removeClass("activeButton");
|
||||||
$("#pageEditPermissionButton").removeClass("activeButton");
|
$("#pageEditPermissionButton").removeClass("activeButton");
|
||||||
|
setCookie("pageLayout", "extension");
|
||||||
});
|
});
|
||||||
$("#PageEditPositionButton").on("click", function () {
|
$("#PageEditPositionButton").on("click", function () {
|
||||||
$("#pageEditContentContainer").hide();
|
$("#pageEditContentContainer").hide();
|
||||||
@ -322,6 +321,7 @@ $( document ).ready(function() {
|
|||||||
$("#PageEditPositionButton").addClass("activeButton");
|
$("#PageEditPositionButton").addClass("activeButton");
|
||||||
$("#pageEditLayoutButton").removeClass("activeButton");
|
$("#pageEditLayoutButton").removeClass("activeButton");
|
||||||
$("#pageEditPermissionButton").removeClass("activeButton");
|
$("#pageEditPermissionButton").removeClass("activeButton");
|
||||||
|
setCookie("pageLayout", "position");
|
||||||
});
|
});
|
||||||
$("#pageEditLayoutButton").on("click", function () {
|
$("#pageEditLayoutButton").on("click", function () {
|
||||||
$("#pageEditContentContainer").hide();
|
$("#pageEditContentContainer").hide();
|
||||||
@ -334,6 +334,7 @@ $( document ).ready(function() {
|
|||||||
$("#PageEditPositionButton").removeClass("activeButton");
|
$("#PageEditPositionButton").removeClass("activeButton");
|
||||||
$("#pageEditLayoutButton").addClass("activeButton");
|
$("#pageEditLayoutButton").addClass("activeButton");
|
||||||
$("#pageEditPermissionButton").removeClass("activeButton");
|
$("#pageEditPermissionButton").removeClass("activeButton");
|
||||||
|
setCookie("pageLayout", "layout");
|
||||||
});
|
});
|
||||||
$("#pageEditPermissionButton").on("click", function () {
|
$("#pageEditPermissionButton").on("click", function () {
|
||||||
$("#pageEditContentContainer").hide();
|
$("#pageEditContentContainer").hide();
|
||||||
@ -346,6 +347,7 @@ $( document ).ready(function() {
|
|||||||
$("#pageEditPositionButton").removeClass("activeButton");
|
$("#pageEditPositionButton").removeClass("activeButton");
|
||||||
$("#pageEditLayoutButton").removeClass("activeButton");
|
$("#pageEditLayoutButton").removeClass("activeButton");
|
||||||
$("#pageEditPermissionButton").addClass("activeButton");
|
$("#pageEditPermissionButton").addClass("activeButton");
|
||||||
|
setCookie("pageLayout", "permission");
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -720,6 +722,30 @@ function buildPagesList(extraPosition) {
|
|||||||
positionDOM.val(positionSelected);
|
positionDOM.val(positionSelected);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cookies
|
||||||
|
*/
|
||||||
|
function setCookie(name, value, days) {
|
||||||
|
var expires = "";
|
||||||
|
if (days) {
|
||||||
|
var date = new Date();
|
||||||
|
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
||||||
|
expires = "; expires=" + date.toUTCString();
|
||||||
|
}
|
||||||
|
document.cookie = name + "=" + (value || "") + expires + "; path=/; samesite=lax";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCookie(name) {
|
||||||
|
var nameEQ = name + "=";
|
||||||
|
var ca = document.cookie.split(';');
|
||||||
|
for (var i = 0; i < ca.length; i++) {
|
||||||
|
var c = ca[i];
|
||||||
|
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
|
||||||
|
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Define function to capitalize the first letter of a string
|
// Define function to capitalize the first letter of a string
|
||||||
function capitalizeFirstLetter(string) {
|
function capitalizeFirstLetter(string) {
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||||
|
@ -7,17 +7,26 @@
|
|||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1 offset7">
|
<div class="col1">
|
||||||
|
<?php /**echo template::button('pageEditHelp', [
|
||||||
|
'href' => 'https://doc.zwiicms.fr/edition-des-pages',
|
||||||
|
'target' => '_blank',
|
||||||
|
'value' => template::ico('help'),
|
||||||
|
'class' => 'buttonHelp',
|
||||||
|
'help' => 'Consulter l\'aide en ligne'
|
||||||
|
]); */?>
|
||||||
|
</div>
|
||||||
|
<div class="col1 offset6">
|
||||||
<?php echo template::button('pageEditDelete', [
|
<?php echo template::button('pageEditDelete', [
|
||||||
'class' => 'buttonRed',
|
'class' => 'buttonRed',
|
||||||
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
|
||||||
'value' => template::ico('trash'),
|
'value' => template::ico('trash'),
|
||||||
'help' => 'Effacer la page'
|
'help' => 'Effacer la page'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('pageEditDuplicate', [
|
<?php echo template::button('pageEditDuplicate', [
|
||||||
'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(2) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
|
||||||
'value' => template::ico('clone'),
|
'value' => template::ico('clone'),
|
||||||
'help' => 'Dupliquer la page'
|
'help' => 'Dupliquer la page'
|
||||||
]); ?>
|
]); ?>
|
||||||
@ -28,31 +37,27 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab">
|
<div class="tab">
|
||||||
<?php echo template::button('pageEditContentButton', [
|
<?php echo template::button('pageEditContentButton', [
|
||||||
'value' => 'Contenu',
|
'value' => 'Contenu',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
'href' => helper::baseUrl() . 'page/register/content/' . $this->geturl(2)
|
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::button('pageEditPositionButton', [
|
<?php echo template::button('PageEditPositionButton', [
|
||||||
'value' => 'Menu',
|
'value' => 'Menu',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
'href' => helper::baseUrl() . 'page/register/position/' . $this->geturl(2)
|
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::button('pageEditExtensionButton', [
|
<?php echo template::button('pageEditExtensionButton', [
|
||||||
'value' => 'Extension',
|
'value' => 'Extension',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
'href' => helper::baseUrl() . 'page/register/extension/' . $this->geturl(2)
|
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::button('pageEditLayoutButton', [
|
<?php echo template::button('pageEditLayoutButton', [
|
||||||
'value' => 'Mise en page',
|
'value' => 'Mise en page',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
'href' => helper::baseUrl() . 'page/register/layout/' . $this->geturl(2)
|
|
||||||
]); ?>
|
]); ?>
|
||||||
<?php echo template::button('pageEditPermissionButton', [
|
<?php echo template::button('pageEditPermissionButton', [
|
||||||
'value' => 'Permission',
|
'value' => 'Permission',
|
||||||
'class' => 'buttonTab',
|
'class' => 'buttonTab'
|
||||||
'href' => helper::baseUrl() . 'page/register/permission/' . $this->geturl(2)
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -62,6 +67,11 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Titres'); ?>
|
<?php echo helper::translate('Titres'); ?>
|
||||||
|
<!--<span id="infoHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/informations-generales" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col8">
|
<div class="col8">
|
||||||
@ -110,6 +120,11 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Emplacement dans le menu'); ?>
|
<?php echo helper::translate('Emplacement dans le menu'); ?>
|
||||||
|
<!--<span id="positionHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/emplacement-dans-le-menu" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="blockContainer">
|
<div class="blockContainer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -161,6 +176,11 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Options avancées'); ?>
|
<?php echo helper::translate('Options avancées'); ?>
|
||||||
|
<!--<span id="advancedHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/options-d-emplacement-avancee" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="blockContainer">
|
<div class="blockContainer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -175,8 +195,7 @@
|
|||||||
'help' => 'Sélectionnez une image ou une icône de petite dimension',
|
'help' => 'Sélectionnez une image ou une icône de petite dimension',
|
||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'label' => 'Icône',
|
'label' => 'Icône',
|
||||||
'value' => $this->getData(['page', $this->getUrl(2), 'iconUrl']),
|
'value' => $this->getData(['page', $this->getUrl(2), 'iconUrl'])
|
||||||
'folder' => $this->getData(['page', $this->getUrl(2), 'iconUrl']) ? dirname($this->getData(['page', $this->getUrl(2), 'iconUrl'])) : '',
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -273,6 +292,11 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Mise en page'); ?>
|
<?php echo helper::translate('Mise en page'); ?>
|
||||||
|
<!--<span id="layoutHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/mise-en-page-2" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="blockContainer">
|
<div class="blockContainer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -348,6 +372,11 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Permission et référencement'); ?>
|
<?php echo helper::translate('Permission et référencement'); ?>
|
||||||
|
<!--<span id="seoHelpButton" class="helpDisplayButton">
|
||||||
|
<a href="https://doc.zwiicms.fr/permission-et-referencement" target="_blank" title="Cliquer pour consulter l'aide en ligne">
|
||||||
|
<?php //echo template::ico('help', ['margin' => 'left']); ?>
|
||||||
|
</a>
|
||||||
|
</span>-->
|
||||||
</h4>
|
</h4>
|
||||||
<div class="blockContainer">
|
<div class="blockContainer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -395,4 +424,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -22,7 +22,7 @@ class plugin extends common
|
|||||||
'delete' => self::GROUP_ADMIN,
|
'delete' => self::GROUP_ADMIN,
|
||||||
'save' => self::GROUP_ADMIN,
|
'save' => self::GROUP_ADMIN,
|
||||||
'store' => self::GROUP_ADMIN,
|
'store' => self::GROUP_ADMIN,
|
||||||
//'item' => self::GROUP_ADMIN,
|
'item' => self::GROUP_ADMIN,
|
||||||
// détail d'un objet
|
// détail d'un objet
|
||||||
'upload' => self::GROUP_ADMIN,
|
'upload' => self::GROUP_ADMIN,
|
||||||
// Téléverser catalogue
|
// Téléverser catalogue
|
||||||
@ -330,7 +330,6 @@ class plugin extends common
|
|||||||
'state' => $r['success']
|
'state' => $r['success']
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => helper::translate('Catalogue de modules'),
|
'title' => helper::translate('Catalogue de modules'),
|
||||||
@ -412,15 +411,6 @@ class plugin extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retourne le contenu du store en ligne
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public static function getStore() {
|
|
||||||
$store = json_decode(helper::getUrlContents(self::BASEURL_STORE . self::MODULE_STORE . 'list'), true);
|
|
||||||
return $store;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gestion des modules
|
* Gestion des modules
|
||||||
*/
|
*/
|
||||||
@ -566,9 +556,6 @@ class plugin extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Désactive l'icône rouge
|
|
||||||
$this->setData(['core', 'updateModuleAvailable', false]);
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => helper::translate('Gestion des modules'),
|
'title' => helper::translate('Gestion des modules'),
|
||||||
|
@ -419,7 +419,7 @@ class theme extends common
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
// Sauvegarder la configuration localisée
|
// Sauvegarder la configuration localisée
|
||||||
$this->setData(['locale', 'legalPageId', $this->getInput('configLegalPageId')], false);
|
$this->setData(['locale', 'legalPageId', $this->getInput('configLegalPageId')]);
|
||||||
$this->setData(['locale', 'searchPageId', $this->getInput('configSearchPageId')]);
|
$this->setData(['locale', 'searchPageId', $this->getInput('configSearchPageId')]);
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -507,23 +507,21 @@ class theme extends common
|
|||||||
'featureContent' => $featureContent,
|
'featureContent' => $featureContent,
|
||||||
'featureFiles' => $files
|
'featureFiles' => $files
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
// Modification de la position du menu selon la position de la bannière
|
// Modification de la position du menu selon la position de la bannière
|
||||||
if ($this->getData(['theme', 'header', 'position']) == 'site') {
|
if ($this->getData(['theme', 'header', 'position']) == 'site') {
|
||||||
$this->setData(['theme', 'menu', 'position', str_replace('body-', 'site-', $this->getData(['theme', 'menu', 'position']))], false);
|
$this->setData(['theme', 'menu', 'position', str_replace('body-', 'site-', $this->getData(['theme', 'menu', 'position']))]);
|
||||||
}
|
}
|
||||||
if ($this->getData(['theme', 'header', 'position']) == 'body') {
|
if ($this->getData(['theme', 'header', 'position']) == 'body') {
|
||||||
$this->setData(['theme', 'menu', 'position', str_replace('site-', 'body-', $this->getData(['theme', 'menu', 'position']))], false);
|
$this->setData(['theme', 'menu', 'position', str_replace('site-', 'body-', $this->getData(['theme', 'menu', 'position']))]);
|
||||||
}
|
}
|
||||||
// Menu accroché à la bannière qui devient cachée
|
// Menu accroché à la bannière qui devient cachée
|
||||||
if (
|
if (
|
||||||
$this->getData(['theme', 'header', 'position']) == 'hide' &&
|
$this->getData(['theme', 'header', 'position']) == 'hide' &&
|
||||||
in_array($this->getData(['theme', 'menu', 'position']), ['body-first', 'site-first', 'body-first', 'site-second'])
|
in_array($this->getData(['theme', 'menu', 'position']), ['body-first', 'site-first', 'body-first', 'site-second'])
|
||||||
) {
|
) {
|
||||||
$this->setData(['theme', 'menu', 'position', 'site'], false);
|
$this->setData(['theme', 'menu', 'position', 'site']);
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('theme');
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => helper::translate('Modifications enregistrées'),
|
'notification' => helper::translate('Modifications enregistrées'),
|
||||||
@ -652,7 +650,7 @@ class theme extends common
|
|||||||
if (is_array($typeValue)) {
|
if (is_array($typeValue)) {
|
||||||
foreach ($typeValue as $fontId => $fontValue) {
|
foreach ($typeValue as $fontId => $fontValue) {
|
||||||
// Recherche les correspondances
|
// Recherche les correspondances
|
||||||
$result = array_filter($fonts, function ($value) use ($fontId) {
|
$result = array_filter($fonts, function($value) use ($fontId) {
|
||||||
return $value == $fontId;
|
return $value == $fontId;
|
||||||
});
|
});
|
||||||
$keyResults = array_keys($result);
|
$keyResults = array_keys($result);
|
||||||
@ -848,7 +846,7 @@ class theme extends common
|
|||||||
file_exists($this->getData(['font', 'files', $this->getUrl(3), 'resource']))
|
file_exists($this->getData(['font', 'files', $this->getUrl(3), 'resource']))
|
||||||
) {
|
) {
|
||||||
|
|
||||||
unlink($this->getData(['font', 'files', $this->getUrl(3), 'resource']));
|
unlink($this->getData(['font', 'files', $this->getUrl(3), 'resource']));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -923,7 +921,7 @@ class theme extends common
|
|||||||
'fontWeight' => $this->getInput('themeTitleFontWeight'),
|
'fontWeight' => $this->getInput('themeTitleFontWeight'),
|
||||||
'textTransform' => $this->getInput('themeTitleTextTransform')
|
'textTransform' => $this->getInput('themeTitleTextTransform')
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'theme',
|
'theme',
|
||||||
'text',
|
'text',
|
||||||
@ -933,7 +931,7 @@ class theme extends common
|
|||||||
'textColor' => $this->getInput('themeTextTextColor'),
|
'textColor' => $this->getInput('themeTextTextColor'),
|
||||||
'linkColor' => $this->getInput('themeTextLinkColor')
|
'linkColor' => $this->getInput('themeTextLinkColor')
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'theme',
|
'theme',
|
||||||
'site',
|
'site',
|
||||||
@ -944,14 +942,14 @@ class theme extends common
|
|||||||
'width' => $this->getInput('themeSiteWidth'),
|
'width' => $this->getInput('themeSiteWidth'),
|
||||||
'margin' => $this->getInput('themeSiteMargin', helper::FILTER_BOOLEAN)
|
'margin' => $this->getInput('themeSiteMargin', helper::FILTER_BOOLEAN)
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'theme',
|
'theme',
|
||||||
'button',
|
'button',
|
||||||
[
|
[
|
||||||
'backgroundColor' => $this->getInput('themeButtonBackgroundColor')
|
'backgroundColor' => $this->getInput('themeButtonBackgroundColor')
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'theme',
|
'theme',
|
||||||
'block',
|
'block',
|
||||||
@ -959,9 +957,7 @@ class theme extends common
|
|||||||
'backgroundColor' => $this->getInput('themeBlockBackgroundColor'),
|
'backgroundColor' => $this->getInput('themeBlockBackgroundColor'),
|
||||||
'borderColor' => $this->getInput('themeBlockBorderColor')
|
'borderColor' => $this->getInput('themeBlockBorderColor')
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('theme');
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => helper::translate('Modifications enregistrées'),
|
'notification' => helper::translate('Modifications enregistrées'),
|
||||||
|
@ -7,7 +7,15 @@
|
|||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset9">
|
<div class="col1">
|
||||||
|
<?php /* echo template::button('themeBodyHelp', [
|
||||||
|
'href' => 'https://doc.zwiicms.fr/arriere-plan',
|
||||||
|
'target' => '_blank',
|
||||||
|
'value' => template::ico('help'),
|
||||||
|
'class' => 'buttonHelp'
|
||||||
|
]); */ ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('themeBodySubmit'); ?>
|
<?php echo template::submit('themeBodySubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -27,7 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::text('themeBodyToTopColor', [
|
<?php echo template::text('themeBodyToTopColor', [
|
||||||
'class' => 'colorPicker',
|
'class' => 'colorPicker',
|
||||||
'help' => 'Le curseur horizontal règle le niveau de transparence.',
|
'help' => 'Le curseur horizontal règle le niveau de transparence.',
|
||||||
'label' => 'Couleur icône haut de page',
|
'label' => 'Couleur icône haut de page',
|
||||||
@ -60,8 +68,7 @@
|
|||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'label' => 'Arrière plan',
|
'label' => 'Arrière plan',
|
||||||
'type' => 1,
|
'type' => 1,
|
||||||
'value' => $imageFile,
|
'value' => $imageFile
|
||||||
'folder' => $imageFile ? dirname($imageFile) : ''
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -20,7 +20,6 @@ $('#dataTables').DataTable({
|
|||||||
},
|
},
|
||||||
locale: 'fr',
|
locale: 'fr',
|
||||||
stateSave: true,
|
stateSave: true,
|
||||||
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "Tout"]],
|
|
||||||
"columnDefs": [{
|
"columnDefs": [{
|
||||||
target: 5,
|
target: 5,
|
||||||
orderable: false,
|
orderable: false,
|
||||||
|
@ -7,7 +7,15 @@
|
|||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset9">
|
<div class="col1">
|
||||||
|
<?php /* echo template::button('themeHeaderHelp', [
|
||||||
|
'href' => 'https://doc.zwiicms.fr/banniere',
|
||||||
|
'target' => '_blank',
|
||||||
|
'value' => template::ico('help'),
|
||||||
|
'class' => 'buttonHelp'
|
||||||
|
]); */?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('themeHeaderSubmit'); ?>
|
<?php echo template::submit('themeHeaderSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -150,17 +158,13 @@
|
|||||||
'label' => 'Image',
|
'label' => 'Image',
|
||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'type' => 1,
|
'type' => 1,
|
||||||
'value' => $imageFile,
|
'value' => $imageFile
|
||||||
'folder' => $imageFile ? dirname($imageFile) : ''
|
|
||||||
]);
|
]);
|
||||||
?>
|
?>
|
||||||
<span class="themeHeaderImageOptions displayNone" id="themeHeaderImageInfo">
|
<span class="themeHeaderImageOptions displayNone" id="themeHeaderImageInfo">
|
||||||
<?php echo helper::translate('Largeur de l\'image'); ?> <span id="themeHeaderImageWidth"></span>
|
<?php echo helper::translate('Largeur de l\'image'); ?> <span id="themeHeaderImageWidth"></span> ; <?php echo helper::translate('Largeur du site :'); ?> <?php echo $this->getData(['theme', 'site', 'width']); ?>
|
||||||
; <?php echo helper::translate('Largeur du site :'); ?>
|
|
||||||
<?php echo $this->getData(['theme', 'site', 'width']); ?>
|
|
||||||
|
|
|
|
||||||
<?php echo helper::translate('Hauteur de l\'image'); ?> <span
|
<?php echo helper::translate('Hauteur de l\'image'); ?> <span id="themeHeaderImageHeight"></span>
|
||||||
id="themeHeaderImageHeight"></span>
|
|
||||||
|
|
|
|
||||||
<?php echo helper::translate('Ratio'); ?> <span id="themeHeaderImageRatio"></span>
|
<?php echo helper::translate('Ratio'); ?> <span id="themeHeaderImageRatio"></span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -7,15 +7,22 @@
|
|||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset9">
|
<div class="col1">
|
||||||
|
<?php /* echo template::button('themeMenuHelp', [
|
||||||
|
'href' => 'https://doc.zwiicms.fr/menu',
|
||||||
|
'target' => '_blank',
|
||||||
|
'value' => template::ico('help'),
|
||||||
|
'class' => 'buttonHelp'
|
||||||
|
]); */?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset8">
|
||||||
<?php echo template::submit('themeMenuSubmit'); ?>
|
<?php echo template::submit('themeMenuSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4><?php echo helper::translate('Paramètres'); ?>
|
||||||
<?php echo helper::translate('Paramètres'); ?>
|
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
@ -77,8 +84,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4><?php echo helper::translate('Contenu'); ?>
|
||||||
<?php echo helper::translate('Contenu'); ?>
|
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
@ -106,8 +112,7 @@
|
|||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'label' => 'Logo du menu burger',
|
'label' => 'Logo du menu burger',
|
||||||
'type' => 1,
|
'type' => 1,
|
||||||
'value' => $imageFile,
|
'value' => $imageFile
|
||||||
'folder' => $imageFile ? dirname($imageFile) : ''
|
|
||||||
]);
|
]);
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
@ -118,8 +123,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4><?php echo helper::translate('Couleurs'); ?>
|
||||||
<?php echo helper::translate('Couleurs'); ?>
|
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
@ -160,7 +164,7 @@
|
|||||||
<?php
|
<?php
|
||||||
echo template::checkbox('themeMenuActiveColorAuto', true, 'Couleur de fond automatique', [
|
echo template::checkbox('themeMenuActiveColorAuto', true, 'Couleur de fond automatique', [
|
||||||
'checked' => $this->getData(['theme', 'menu', 'activeColorAuto']),
|
'checked' => $this->getData(['theme', 'menu', 'activeColorAuto']),
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::text('themeMenuActiveColor', [
|
<?php echo template::text('themeMenuActiveColor', [
|
||||||
@ -177,8 +181,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>
|
<h4><?php echo helper::translate('Mise en forme du texte'); ?>
|
||||||
<?php echo helper::translate('Mise en forme du texte'); ?>
|
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
|
@ -345,7 +345,6 @@ class user extends common
|
|||||||
'files' => $this->getInput('userEditFiles', helper::FILTER_BOOLEAN),
|
'files' => $this->getInput('userEditFiles', helper::FILTER_BOOLEAN),
|
||||||
'language' => $this->getInput('userEditLanguage', helper::FILTER_STRING_SHORT),
|
'language' => $this->getInput('userEditLanguage', helper::FILTER_STRING_SHORT),
|
||||||
'tags' => $this->getInput('userEditTags', helper::FILTER_STRING_SHORT),
|
'tags' => $this->getInput('userEditTags', helper::FILTER_STRING_SHORT),
|
||||||
'authKey' => $this->getData(['user', $this->getUrl(2), 'authKey']),
|
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
// Redirection spécifique si l'utilisateur change son mot de passe
|
// Redirection spécifique si l'utilisateur change son mot de passe
|
||||||
@ -416,7 +415,7 @@ class user extends common
|
|||||||
// Enregistre la date de la demande dans le compte utilisateur
|
// Enregistre la date de la demande dans le compte utilisateur
|
||||||
$this->setData(['user', $userId, 'forgot', time()]);
|
$this->setData(['user', $userId, 'forgot', time()]);
|
||||||
// Crée un id unique pour la réinitialisation
|
// Crée un id unique pour la réinitialisation
|
||||||
$uniqId = md5(json_encode($this->getData(['user', $userId, 'forgot'])));
|
$uniqId = md5(json_encode($this->getData(['user', $userId])));
|
||||||
// Envoi le mail
|
// Envoi le mail
|
||||||
$sent = $this->sendMail(
|
$sent = $this->sendMail(
|
||||||
$this->getData(['user', $userId, 'mail']),
|
$this->getData(['user', $userId, 'mail']),
|
||||||
@ -575,7 +574,7 @@ class user extends common
|
|||||||
// Stoppe si le profil est affecté
|
// Stoppe si le profil est affecté
|
||||||
foreach ($groups as $userId) {
|
foreach ($groups as $userId) {
|
||||||
if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) {
|
if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) {
|
||||||
$profilUsed = false;
|
$profilUsed= false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($this->getData(['profil']) as $groupId => $groupData) {
|
foreach ($this->getData(['profil']) as $groupId => $groupData) {
|
||||||
@ -936,11 +935,11 @@ class user extends common
|
|||||||
// recherche les membres du groupe
|
// recherche les membres du groupe
|
||||||
$groups = helper::arrayColumn($this->getData(['user']), 'group');
|
$groups = helper::arrayColumn($this->getData(['user']), 'group');
|
||||||
$groups = array_keys($groups, $this->getUrl(2));
|
$groups = array_keys($groups, $this->getUrl(2));
|
||||||
$flag = true;
|
$flag= true;
|
||||||
// Stoppe si le profil est affecté
|
// Stoppe si le profil est affecté
|
||||||
foreach ($groups as $userId) {
|
foreach ($groups as $userId) {
|
||||||
if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) {
|
if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) {
|
||||||
$flag = false;
|
$flag= false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
@ -1031,8 +1030,8 @@ class user extends common
|
|||||||
$this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) < time()
|
$this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) < time()
|
||||||
and $this->getData(['user', $userId, 'connectFail']) === $this->getData(['config', 'connect', 'attempt'])
|
and $this->getData(['user', $userId, 'connectFail']) === $this->getData(['config', 'connect', 'attempt'])
|
||||||
) {
|
) {
|
||||||
$this->setData(['user', $userId, 'connectFail', 0], false);
|
$this->setData(['user', $userId, 'connectFail', 0]);
|
||||||
$this->setData(['user', $userId, 'connectTimeout', 0], false);
|
$this->setData(['user', $userId, 'connectTimeout', 0]);
|
||||||
}
|
}
|
||||||
// Check la présence des variables et contrôle du blocage du compte si valeurs dépassées
|
// Check la présence des variables et contrôle du blocage du compte si valeurs dépassées
|
||||||
// Vérification du mot de passe et du groupe
|
// Vérification du mot de passe et du groupe
|
||||||
@ -1044,36 +1043,14 @@ class user extends common
|
|||||||
and $captcha === true
|
and $captcha === true
|
||||||
) {
|
) {
|
||||||
// RAZ
|
// RAZ
|
||||||
$this->setData(['user', $userId, 'connectFail', 0], false);
|
$this->setData(['user', $userId, 'connectFail', 0]);
|
||||||
$this->setData(['user', $userId, 'connectTimeout', 0], false);
|
$this->setData(['user', $userId, 'connectTimeout', 0]);
|
||||||
|
// Expiration
|
||||||
// Clé d'authenfication
|
|
||||||
$authKey = uniqid('', true) . bin2hex(random_bytes(8));
|
|
||||||
$this->setData(['user', $userId, 'authKey', $authKey]);
|
|
||||||
|
|
||||||
// Validité du cookie
|
|
||||||
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? strtotime("+1 year") : 0;
|
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? strtotime("+1 year") : 0;
|
||||||
switch ($this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN)) {
|
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
case false:
|
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
// Cookie de session
|
|
||||||
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
|
||||||
//setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
|
||||||
|
|
||||||
// Connexion par clé
|
|
||||||
setcookie('ZWII_AUTH_KEY', $authKey, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Cookie persistant
|
|
||||||
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false));
|
|
||||||
//setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false));
|
|
||||||
|
|
||||||
// Connexion par clé
|
|
||||||
setcookie('ZWII_AUTH_KEY', $authKey, $expire, helper::baseUrl(false, false));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Accès multiples avec le même compte
|
// Accès multiples avec le même compte
|
||||||
$this->setData(['user', $userId, 'accessCsrf', $_SESSION['csrf']], false);
|
$this->setData(['user', $userId, 'accessCsrf', $_SESSION['csrf']]);
|
||||||
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur
|
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur
|
||||||
if (
|
if (
|
||||||
$this->getData(['config', 'maintenance'])
|
$this->getData(['config', 'maintenance'])
|
||||||
@ -1087,9 +1064,8 @@ class user extends common
|
|||||||
} else {
|
} else {
|
||||||
$logStatus = 'Connexion réussie';
|
$logStatus = 'Connexion réussie';
|
||||||
$pageId = $this->getUrl(2);
|
$pageId = $this->getUrl(2);
|
||||||
if (
|
if ($this->getData(['config', 'page404']) === $pageId
|
||||||
$this->getData(['config', 'page404']) === $pageId
|
|| $this->getData(['config', 'page403']) === $pageId
|
||||||
|| $this->getData(['config', 'page403']) === $pageId
|
|
||||||
) {
|
) {
|
||||||
$pageId = '';
|
$pageId = '';
|
||||||
}
|
}
|
||||||
@ -1106,12 +1082,12 @@ class user extends common
|
|||||||
$notification = helper::translate('Captcha, identifiant ou mot de passe incorrects');
|
$notification = helper::translate('Captcha, identifiant ou mot de passe incorrects');
|
||||||
$logStatus = $captcha === true ? 'Erreur de mot de passe' : 'Erreur de captcha';
|
$logStatus = $captcha === true ? 'Erreur de mot de passe' : 'Erreur de captcha';
|
||||||
// Cas 1 le nombre de connexions est inférieur aux tentatives autorisées : incrément compteur d'échec
|
// Cas 1 le nombre de connexions est inférieur aux tentatives autorisées : incrément compteur d'échec
|
||||||
if ($this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'], false)) {
|
if ($this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'])) {
|
||||||
$this->setData(['user', $userId, 'connectFail', $this->getdata(['user', $userId, 'connectFail']) + 1], false);
|
$this->setData(['user', $userId, 'connectFail', $this->getdata(['user', $userId, 'connectFail']) + 1]);
|
||||||
}
|
}
|
||||||
// Cas 2 la limite du nombre de connexion est atteinte : placer le timer
|
// Cas 2 la limite du nombre de connexion est atteinte : placer le timer
|
||||||
if ($this->getdata(['user', $userId, 'connectFail']) == $this->getData(['config', 'connect', 'attempt'])) {
|
if ($this->getdata(['user', $userId, 'connectFail']) == $this->getData(['config', 'connect', 'attempt'])) {
|
||||||
$this->setData(['user', $userId, 'connectTimeout', time()], false);
|
$this->setData(['user', $userId, 'connectTimeout', time()]);
|
||||||
}
|
}
|
||||||
// Cas 3 le délai de bloquage court
|
// Cas 3 le délai de bloquage court
|
||||||
if ($this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) > time()) {
|
if ($this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) > time()) {
|
||||||
@ -1124,8 +1100,6 @@ class user extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('user');
|
|
||||||
}
|
}
|
||||||
// Journalisation
|
// Journalisation
|
||||||
$this->saveLog($logStatus);
|
$this->saveLog($logStatus);
|
||||||
@ -1149,8 +1123,7 @@ class user extends common
|
|||||||
public function logout()
|
public function logout()
|
||||||
{
|
{
|
||||||
helper::deleteCookie('ZWII_USER_ID');
|
helper::deleteCookie('ZWII_USER_ID');
|
||||||
//helper::deleteCookie('ZWII_USER_PASSWORD');
|
helper::deleteCookie('ZWII_USER_PASSWORD');
|
||||||
helper::deleteCookie('ZWII_AUTH_KEY');
|
|
||||||
|
|
||||||
// Détruit la session
|
// Détruit la session
|
||||||
session_destroy();
|
session_destroy();
|
||||||
@ -1204,11 +1177,11 @@ class user extends common
|
|||||||
$newPassword = $this->getInput('userResetNewPassword', helper::FILTER_PASSWORD, true);
|
$newPassword = $this->getInput('userResetNewPassword', helper::FILTER_PASSWORD, true);
|
||||||
}
|
}
|
||||||
// Modifie le mot de passe
|
// Modifie le mot de passe
|
||||||
$this->setData(['user', $this->getUrl(2), 'password', $newPassword], false);
|
$this->setData(['user', $this->getUrl(2), 'password', $newPassword]);
|
||||||
// Réinitialise la date de la demande
|
// Réinitialise la date de la demande
|
||||||
$this->setData(['user', $this->getUrl(2), 'forgot', 0], false);
|
$this->setData(['user', $this->getUrl(2), 'forgot', 0]);
|
||||||
// Réinitialise le blocage
|
// Réinitialise le blocage
|
||||||
$this->setData(['user', $this->getUrl(2), 'connectFail', 0], false);
|
$this->setData(['user', $this->getUrl(2), 'connectFail', 0]);
|
||||||
$this->setData(['user', $this->getUrl(2), 'connectTimeout', 0]);
|
$this->setData(['user', $this->getUrl(2), 'connectTimeout', 0]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -1323,7 +1296,7 @@ class user extends common
|
|||||||
"accessCsrf" => null,
|
"accessCsrf" => null,
|
||||||
'tags' => $item['tags']
|
'tags' => $item['tags']
|
||||||
]
|
]
|
||||||
], false);
|
]);
|
||||||
// Icône de notification
|
// Icône de notification
|
||||||
$item['notification'] = $create ? template::ico('check') : template::ico('cancel');
|
$item['notification'] = $create ? template::ico('check') : template::ico('cancel');
|
||||||
// Envoi du mail
|
// Envoi du mail
|
||||||
@ -1364,8 +1337,6 @@ class user extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Force la sauvegarde
|
|
||||||
$this->saveDB('user');
|
|
||||||
if (empty(self::$users)) {
|
if (empty(self::$users)) {
|
||||||
$notification = helper::translate('Rien à importer, erreur de format ou fichier incorrect');
|
$notification = helper::translate('Rien à importer, erreur de format ou fichier incorrect');
|
||||||
$success = false;
|
$success = false;
|
||||||
|
@ -16,4 +16,3 @@
|
|||||||
/** NE PAS EFFACER
|
/** NE PAS EFFACER
|
||||||
* admin.css
|
* admin.css
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -29,7 +29,6 @@ $(document).ready((function () {
|
|||||||
},
|
},
|
||||||
locale: 'fr',
|
locale: 'fr',
|
||||||
stateSave: true,
|
stateSave: true,
|
||||||
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "Tout"]],
|
|
||||||
"columnDefs": [
|
"columnDefs": [
|
||||||
{
|
{
|
||||||
target: 5,
|
target: 5,
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
<?php echo template::select('profilEditPath', $module::$sharePath, [
|
<?php echo template::select('profilEditPath', $module::$sharePath, [
|
||||||
'label' => 'Dossier',
|
'label' => 'Dossier',
|
||||||
'class' => 'filemanager',
|
'class' => 'filemanager',
|
||||||
'selected' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'path'])
|
'selected' => '.' . $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'path'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
13
core/vendor/datatables/datatables.custom.css
vendored
13
core/vendor/datatables/datatables.custom.css
vendored
@ -1,13 +0,0 @@
|
|||||||
.dataTables_length {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dataTables_length label {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dataTables_length select {
|
|
||||||
margin-left: 5px;
|
|
||||||
width: 80px;
|
|
||||||
}
|
|
2
core/vendor/datatables/french.json
vendored
2
core/vendor/datatables/french.json
vendored
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"processing": "Traitement en cours...",
|
"processing": "Traitement en cours...",
|
||||||
"search": "Rechercher :",
|
"search": "Rechercher :",
|
||||||
"lengthMenu": "Éléments par page : _MENU_",
|
"lengthMenu": "Éléments par page _MENU_",
|
||||||
"info": "Affichage de l'élement _START_ à _END_ sur _TOTAL_ éléments",
|
"info": "Affichage de l'élement _START_ à _END_ sur _TOTAL_ éléments",
|
||||||
"infoEmpty": "Affichage de l'élement 0 à 0 sur 0 éléments",
|
"infoEmpty": "Affichage de l'élement 0 à 0 sur 0 éléments",
|
||||||
"infoFiltered": "(filtré de _MAX_ éléments au total)",
|
"infoFiltered": "(filtré de _MAX_ éléments au total)",
|
||||||
|
3
core/vendor/datatables/inc.json
vendored
3
core/vendor/datatables/inc.json
vendored
@ -1,5 +1,4 @@
|
|||||||
[
|
[
|
||||||
"datatables.min.js",
|
"datatables.min.js",
|
||||||
"datatables.min.css",
|
"datatables.min.css"
|
||||||
"datatables.custom.css"
|
|
||||||
]
|
]
|
6
core/vendor/filemanager/UploadHandler.php
vendored
6
core/vendor/filemanager/UploadHandler.php
vendored
@ -1505,9 +1505,9 @@ class UploadHandler
|
|||||||
$magicianObj -> saveImage($targetFile);
|
$magicianObj -> saveImage($targetFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
$newWidth = 640;
|
|
||||||
$newHeight = 480;
|
|
||||||
$thumbResult = create_img($targetFile, $targetFileThumb, $newWidth, $newHeight);
|
$thumbResult = create_img($targetFile, $targetFileThumb, 122, 91);
|
||||||
|
|
||||||
if ( $thumbResult!==true)
|
if ( $thumbResult!==true)
|
||||||
{
|
{
|
||||||
|
4
core/vendor/filemanager/config/config.php
vendored
4
core/vendor/filemanager/config/config.php
vendored
@ -54,7 +54,7 @@ if (!is_null($u) && !is_null($g) && !is_null($userId)) {
|
|||||||
if ($g['profil'][$group][$profil]['filemanager'] === false)
|
if ($g['profil'][$group][$profil]['filemanager'] === false)
|
||||||
exit('Accès interdit');
|
exit('Accès interdit');
|
||||||
// lecture du profil
|
// lecture du profil
|
||||||
if (!is_null($profil) and $g['profil'][$group][$profil]['folder']['path'] !== '') {
|
if (!is_null($profil)) {
|
||||||
$file = $g['profil'][$group][$profil]['file'];
|
$file = $g['profil'][$group][$profil]['file'];
|
||||||
$folder = $g['profil'][$group][$profil]['folder'];
|
$folder = $g['profil'][$group][$profil]['folder'];
|
||||||
$uploadDir = $g['profil'][$group][$profil]['folder']['path'];
|
$uploadDir = $g['profil'][$group][$profil]['folder']['path'];
|
||||||
@ -591,7 +591,7 @@ $config = array(
|
|||||||
// path_from_filemanager/test/test1/
|
// path_from_filemanager/test/test1/
|
||||||
// PS if there isn't write permission in your destination folder you must set it
|
// PS if there isn't write permission in your destination folder you must set it
|
||||||
//
|
//
|
||||||
'fixed_image_creation' => false,
|
'fixed_image_creation' => true,
|
||||||
//activate or not the creation of one or more image resized with fixed path from filemanager folder
|
//activate or not the creation of one or more image resized with fixed path from filemanager folder
|
||||||
'fixed_path_from_filemanager' => array('../../../site/file/thumb/'),
|
'fixed_path_from_filemanager' => array('../../../site/file/thumb/'),
|
||||||
//fixed path of the image folder from the current position on upload folder
|
//fixed path of the image folder from the current position on upload folder
|
||||||
|
6
core/vendor/filemanager/dialog.php
vendored
6
core/vendor/filemanager/dialog.php
vendored
@ -59,12 +59,12 @@ if (checkRelativePath($subdir_path)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($subdir == "") {
|
if ($subdir == "") {
|
||||||
if (!empty($_COOKIE['ZWII_RFM_FOLDER']) && strpos($_COOKIE['ZWII_RFM_FOLDER'], '.') === false) {
|
if (!empty($_COOKIE['last_position']) && strpos($_COOKIE['last_position'], '.') === false) {
|
||||||
$subdir = trim($_COOKIE['ZWII_RFM_FOLDER']);
|
$subdir = trim($_COOKIE['last_position']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//remember last position
|
//remember last position
|
||||||
setcookie('ZWII_RFM_FOLDER', $subdir, time() + (86400 * 7));
|
setcookie('last_position', $subdir, time() + (86400 * 7));
|
||||||
|
|
||||||
if ($subdir == "/") {
|
if ($subdir == "/") {
|
||||||
$subdir = "";
|
$subdir = "";
|
||||||
|
25
index.php
25
index.php
@ -19,31 +19,6 @@
|
|||||||
*/
|
*/
|
||||||
// Remplace la directive htaccess
|
// Remplace la directive htaccess
|
||||||
ini_set('session.use_trans_sid', FALSE);
|
ini_set('session.use_trans_sid', FALSE);
|
||||||
|
|
||||||
// Crée un identifiant unique pour chaque site en fonction du nom de domaine ou autre
|
|
||||||
$siteId = md5($_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_FILENAME']); // Ou utilise un autre identifiant unique pour chaque site
|
|
||||||
// Change le nom de la session en fonction de cet identifiant
|
|
||||||
session_name('zwii_session_' . $siteId);
|
|
||||||
|
|
||||||
// Récupère dynamiquement le chemin du dossier dans lequel le script est exécuté
|
|
||||||
$scriptPath = dirname($_SERVER['SCRIPT_NAME']);
|
|
||||||
|
|
||||||
// Si le chemin est vide (ce qui peut arriver si le site est à la racine), définis-le comme '/'
|
|
||||||
if ($scriptPath === '/' || $scriptPath === '\\' || $scriptPath === '.') {
|
|
||||||
$scriptPath = '/';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Définissez le chemin du cookie de session dynamiquement
|
|
||||||
session_set_cookie_params([
|
|
||||||
'lifetime' => 0,
|
|
||||||
'path' => $scriptPath, // Utilise le chemin du script pour restreindre la session à ce répertoire
|
|
||||||
'domain' => $_SERVER['SERVER_NAME'], // Domaine par défaut
|
|
||||||
'secure' => isset($_SERVER['HTTPS']), // Pour HTTPS, si nécessaire
|
|
||||||
'httponly' => true,
|
|
||||||
'samesite' => 'Lax' // Ou 'Strict' ou 'None' selon tes besoins
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
// Démarre la session
|
// Démarre la session
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
class blog extends common
|
class blog extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '8.0';
|
const VERSION = '7.9';
|
||||||
const REALNAME = 'Blog';
|
const REALNAME = 'Blog';
|
||||||
const DELETE = true;
|
const DELETE = true;
|
||||||
const UPDATE = '0.0';
|
const UPDATE = '0.0';
|
||||||
@ -42,6 +42,9 @@ class blog extends common
|
|||||||
|
|
||||||
public static $articles = [];
|
public static $articles = [];
|
||||||
|
|
||||||
|
// Signature de l'article
|
||||||
|
public static $articleSignature = '';
|
||||||
|
|
||||||
// Signature du commentaire
|
// Signature du commentaire
|
||||||
public static $editCommentSignature = '';
|
public static $editCommentSignature = '';
|
||||||
|
|
||||||
@ -171,13 +174,10 @@ class blog extends common
|
|||||||
$this->setData(['module', $this->getUrl(0), 'config', 'timeFormat', '%H:%M']);
|
$this->setData(['module', $this->getUrl(0), 'config', 'timeFormat', '%H:%M']);
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '6.5']);
|
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '6.5']);
|
||||||
}
|
}
|
||||||
// Version 8.0
|
// Version 7.4
|
||||||
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '8.0', '<')) {
|
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '7.4', '<')) {
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'buttonBack', true]);
|
$this->setData(['module', $this->getUrl(0), 'config', 'buttonBack', true]);
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'showTime', true]);
|
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '7.4']);
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'showDate', true]);
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'showPseudo', true]);
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '8.0']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,10 +578,7 @@ class blog extends common
|
|||||||
'itemsperPage' => $this->getInput('blogOptionItemsperPage', helper::FILTER_INT, true),
|
'itemsperPage' => $this->getInput('blogOptionItemsperPage', helper::FILTER_INT, true),
|
||||||
'dateFormat' => $this->getInput('blogOptionDateFormat'),
|
'dateFormat' => $this->getInput('blogOptionDateFormat'),
|
||||||
'timeFormat' => $this->getInput('blogOptionTimeFormat'),
|
'timeFormat' => $this->getInput('blogOptionTimeFormat'),
|
||||||
'buttonBack' => $this->getInput('blogOptionButtonBack', helper::FILTER_BOOLEAN),
|
'buttonBack' => $this->getInput('newsOptionButtonBack'),
|
||||||
'showDate' => $this->getInput('blogOptionShowDate', helper::FILTER_BOOLEAN),
|
|
||||||
'showTime' => $this->getInput('blogOptionShowTime', helper::FILTER_BOOLEAN),
|
|
||||||
'showPseudo' => $this->getInput('blogOptionShowPseudo', helper::FILTER_BOOLEAN),
|
|
||||||
'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']),
|
'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']),
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
@ -599,6 +596,7 @@ class blog extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Suppression
|
* Suppression
|
||||||
*/
|
*/
|
||||||
@ -751,7 +749,7 @@ class blog extends common
|
|||||||
) {
|
) {
|
||||||
// Check la captcha
|
// Check la captcha
|
||||||
if (
|
if (
|
||||||
$this->isConnected() === false
|
$this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
//AND $this->getInput('blogArticlecaptcha', helper::FILTER_INT) !== $this->getInput('blogArticlecaptchaFirstNumber', helper::FILTER_INT) + $this->getInput('blogArticlecaptchaSecondNumber', helper::FILTER_INT))
|
//AND $this->getInput('blogArticlecaptcha', helper::FILTER_INT) !== $this->getInput('blogArticlecaptchaFirstNumber', helper::FILTER_INT) + $this->getInput('blogArticlecaptchaSecondNumber', helper::FILTER_INT))
|
||||||
and password_verify($this->getInput('blogArticleCaptcha', helper::FILTER_INT), $this->getInput('blogArticleCaptchaResult')) === false
|
and password_verify($this->getInput('blogArticleCaptcha', helper::FILTER_INT), $this->getInput('blogArticleCaptchaResult')) === false
|
||||||
) {
|
) {
|
||||||
@ -759,7 +757,7 @@ class blog extends common
|
|||||||
}
|
}
|
||||||
// Crée le commentaire
|
// Crée le commentaire
|
||||||
$commentId = helper::increment(uniqid(), $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'comment']));
|
$commentId = helper::increment(uniqid(), $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'comment']));
|
||||||
$content = $this->getInput('blogArticleContent', null, true);
|
$content = $this->getInput('blogArticleContent', false);
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module', $this->getUrl(0),
|
'module', $this->getUrl(0),
|
||||||
'posts', $this->getUrl(1),
|
'posts', $this->getUrl(1),
|
||||||
@ -830,8 +828,10 @@ class blog extends common
|
|||||||
$pagination = helper::pagination($commentIds, $this->getUrl(), $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage']), '#comment');
|
$pagination = helper::pagination($commentIds, $this->getUrl(), $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage']), '#comment');
|
||||||
// Liste des pages
|
// Liste des pages
|
||||||
self::$pages = $pagination['pages'];
|
self::$pages = $pagination['pages'];
|
||||||
|
// Signature de l'article
|
||||||
|
self::$articleSignature = $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId']));
|
||||||
// Signature du commentaire édité
|
// Signature du commentaire édité
|
||||||
if ($this->isConnected() === true) {
|
if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')) {
|
||||||
self::$editCommentSignature = $this->signature($this->getUser('id'));
|
self::$editCommentSignature = $this->signature($this->getUser('id'));
|
||||||
}
|
}
|
||||||
// Commentaires en fonction de la pagination
|
// Commentaires en fonction de la pagination
|
||||||
|
@ -1,12 +1,4 @@
|
|||||||
# Version 8.00
|
|
||||||
- Ajoute trois nouvelles options pour afficher ou masquer le pseudo, la date et l'heure de l'article.
|
|
||||||
- Corrige un bug d'affichage des articles lorsque le thème Moderne est sélectionné.
|
|
||||||
- Corrige un bug dans la méthode de tronquage de l'article, nécessite Zwii 13.5
|
|
||||||
- Corrige un mauvais format de la propriété buttonBack non stockée au type booléen.
|
|
||||||
# Version 7.11
|
|
||||||
- Le sélecteur de fichier affiche par défaut le chemin vers le fichier présent dans le champ.
|
|
||||||
# Version 7.10
|
|
||||||
- Empêche la validation d'un commentaire lorsque le contenu est vide.
|
|
||||||
# Versions 7.8 - 7.9
|
# Versions 7.8 - 7.9
|
||||||
- Le flux RSS ne fonctionne pas si les méta de la page sont vides.
|
- Le flux RSS ne fonctionne pas si les méta de la page sont vides.
|
||||||
# Version 7.7
|
# Version 7.7
|
||||||
|
@ -1 +1 @@
|
|||||||
{"name":"blog","realName":"Blog","version":"7.12","update":"0.0","delete":true,"dataDirectory":""}
|
{"name":"blog","realName":"Blog","version":"7.2","update":"0.0","delete":true,"dataDirectory":""}
|
@ -18,36 +18,14 @@
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6 newsDate textAlignRight">
|
<div class="col6 newsDate textAlignRight">
|
||||||
<!-- bloc signature -->
|
<!-- bloc signature et date -->
|
||||||
<?php if (
|
<?php echo template::ico('user'); ?>
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true
|
<?php echo $module::$articleSignature; ?>
|
||||||
): ?>
|
<?php echo template::ico('calendar-empty'); ?>
|
||||||
<?php echo template::ico('user'); ?>
|
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI) . ' ' . helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?>
|
||||||
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId'])) ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<!-- bloc date -->
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
|| $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo template::ico('calendar-empty', ['margin' => 'left']); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
&& $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo ' - '; ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<!-- Bloc edition -->
|
<!-- Bloc edition -->
|
||||||
<?php if (
|
<?php if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and
|
and
|
||||||
( // Propriétaire
|
( // Propriétaire
|
||||||
($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'editConsent']) === $module::EDIT_OWNER
|
($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'editConsent']) === $module::EDIT_OWNER
|
||||||
@ -110,7 +88,7 @@
|
|||||||
'readonly' => true
|
'readonly' => true
|
||||||
]); ?>
|
]); ?>
|
||||||
<div id="blogArticleCommentWrapper" class="displayNone">
|
<div id="blogArticleCommentWrapper" class="displayNone">
|
||||||
<?php if ($this->isConnected() === true): ?>
|
<?php if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')): ?>
|
||||||
<?php echo template::text('blogArticleUserName', [
|
<?php echo template::text('blogArticleUserName', [
|
||||||
'label' => 'Nom',
|
'label' => 'Nom',
|
||||||
'readonly' => true,
|
'readonly' => true,
|
||||||
@ -144,7 +122,7 @@
|
|||||||
'maxlength' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentMaxlength'])
|
'maxlength' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentMaxlength'])
|
||||||
]); ?>
|
]); ?>
|
||||||
<div id="blogArticleContentAlarm"> </div>
|
<div id="blogArticleContentAlarm"> </div>
|
||||||
<?php if ($this->isConnected() === false): ?>
|
<?php if ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')): ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<?php echo template::captcha('blogArticleCaptcha', [
|
<?php echo template::captcha('blogArticleCaptcha', [
|
||||||
|
@ -1,154 +1,153 @@
|
|||||||
<?php echo template::formOpen('blogEditForm'); ?>
|
<?php echo template::formOpen('blogEditForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('blogEditBack', [
|
<?php echo template::button('blogEditBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col3 offset6">
|
||||||
|
<?php echo template::button('blogEditDraft', [
|
||||||
|
'uniqueSubmission' => true,
|
||||||
|
'value' => 'Brouillon'
|
||||||
|
]); ?>
|
||||||
|
<?php echo template::hidden('blogEditState', [
|
||||||
|
'value' => true
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2">
|
||||||
|
<?php echo template::submit('blogEditSubmit', [
|
||||||
|
'value' => 'Publier',
|
||||||
|
'uniqueSubmission' => true
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3 offset6">
|
<div class="row">
|
||||||
<?php echo template::button('blogEditDraft', [
|
<div class="col12">
|
||||||
'uniqueSubmission' => true,
|
<div class="block">
|
||||||
'value' => 'Brouillon'
|
<h4><?php echo helper::translate('Paramètres');?></h4>
|
||||||
]); ?>
|
<div class="row">
|
||||||
<?php echo template::hidden('blogEditState', [
|
<div class="col6">
|
||||||
'value' => true
|
<?php echo template::text('blogEditTitle', [
|
||||||
]); ?>
|
'label' => 'Titre',
|
||||||
</div>
|
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'title'])
|
||||||
<div class="col2">
|
]); ?>
|
||||||
<?php echo template::submit('blogEditSubmit', [
|
</div>
|
||||||
'value' => 'Publier',
|
<div class="col6">
|
||||||
'uniqueSubmission' => true
|
<?php echo template::text('blogEditPermalink', [
|
||||||
]); ?>
|
'label' => 'Permalink',
|
||||||
</div>
|
'value' => $this->getUrl(2)
|
||||||
</div>
|
]); ?>
|
||||||
<div class="row">
|
</div>
|
||||||
<div class="col12">
|
|
||||||
<div class="block">
|
|
||||||
<h4><?php echo helper::translate('Paramètres'); ?></h4>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::text('blogEditTitle', [
|
|
||||||
'label' => 'Titre',
|
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'title'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="row">
|
||||||
<?php echo template::text('blogEditPermalink', [
|
<div class="col6">
|
||||||
'label' => 'Permalink',
|
<?php echo template::file('blogEditPicture', [
|
||||||
'value' => $this->getUrl(2)
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
]); ?>
|
'help' => $this->getData(['theme', 'site', 'width']) !== '100%' ? 'Taille optimale de l\'image de couverture : ' . ((int) substr($this->getData(['theme', 'site', 'width']), 0, -2) - (20 * 2)) . ' x 350 pixels.' : '',
|
||||||
|
'label' => 'Image de couverture',
|
||||||
|
'type' => 1,
|
||||||
|
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picture'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col3">
|
||||||
|
<?php echo template::select('blogEditPictureSize', $module::$pictureSizes, [
|
||||||
|
'label' => 'Largeur de l\'image',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'pictureSize'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col3">
|
||||||
|
<?php echo template::select('blogEditPicturePosition', $module::$picturePositions, [
|
||||||
|
'label' => 'Position',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picturePosition']),
|
||||||
|
'help' => 'Le texte de l\'article est adapté autour de l\'image'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col6">
|
||||||
<div class="col6">
|
<?php echo template::checkbox('blogEditHidePicture', true, 'Masquer l\'image de couverture dans l\'article', [
|
||||||
<?php echo template::file('blogEditPicture', [
|
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'hidePicture'])
|
||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
]); ?>
|
||||||
'help' => $this->getData(['theme', 'site', 'width']) !== '100%' ? 'Taille optimale de l\'image de couverture : ' . ((int) substr($this->getData(['theme', 'site', 'width']), 0, -2) - (20 * 2)) . ' x 350 pixels.' : '',
|
</div>
|
||||||
'label' => 'Image de couverture',
|
|
||||||
'type' => 1,
|
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picture']),
|
|
||||||
'folder' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picture']) ? dirname($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picture'])) : ''
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col3">
|
|
||||||
<?php echo template::select('blogEditPictureSize', $module::$pictureSizes, [
|
|
||||||
'label' => 'Largeur de l\'image',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'pictureSize'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col3">
|
|
||||||
<?php echo template::select('blogEditPicturePosition', $module::$picturePositions, [
|
|
||||||
'label' => 'Position',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picturePosition']),
|
|
||||||
'help' => 'Le texte de l\'article est adapté autour de l\'image'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::checkbox('blogEditHidePicture', true, 'Masquer l\'image de couverture dans l\'article', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'hidePicture'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<?php echo template::textarea('blogEditContent', [
|
||||||
<?php echo template::textarea('blogEditContent', [
|
'class' => 'editorWysiwyg',
|
||||||
'class' => 'editorWysiwyg',
|
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'content'])
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'content'])
|
]); ?>
|
||||||
]); ?>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col12">
|
||||||
<div class="col12">
|
<div class="block">
|
||||||
<div class="block">
|
<h4><?php echo helper::translate('Options de publication');?></h4>
|
||||||
<h4><?php echo helper::translate('Options de publication'); ?></h4>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col4">
|
||||||
<div class="col4">
|
<?php echo template::select('blogEditUserId', $module::$users, [
|
||||||
<?php echo template::select('blogEditUserId', $module::$users, [
|
'label' => 'Auteur',
|
||||||
'label' => 'Auteur',
|
'selected' => $this->getUser('id'),
|
||||||
'selected' => $this->getUser('id'),
|
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
|
||||||
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col4">
|
||||||
<div class="col4">
|
<?php echo template::date('blogEditPublishedOn', [
|
||||||
<?php echo template::date('blogEditPublishedOn', [
|
'help' => 'L\'article n\'est visible qu\'après la date de publication prévue.',
|
||||||
'help' => 'L\'article n\'est visible qu\'après la date de publication prévue.',
|
'type' => 'datetime-local',
|
||||||
'type' => 'datetime-local',
|
'label' => 'Publication',
|
||||||
'label' => 'Publication',
|
'value' => floor($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'publishedOn']) / 60) * 60
|
||||||
'value' => floor($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'publishedOn']) / 60) * 60
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col4">
|
||||||
<div class="col4">
|
<?php echo template::select('blogEditConsent', $module::$articleConsent , [
|
||||||
<?php echo template::select('blogEditConsent', $module::$articleConsent, [
|
'label' => 'Édition - Suppression',
|
||||||
'label' => 'Édition - Suppression',
|
'selected' => is_numeric($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'editConsent'])) ? $module::EDIT_GROUP : $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'editConsent']),
|
||||||
'selected' => is_numeric($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'editConsent'])) ? $module::EDIT_GROUP : $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'editConsent']),
|
'help' => 'Les utilisateurs des groupes supérieurs accèdent à l\'article sans restriction'
|
||||||
'help' => 'Les utilisateurs des groupes supérieurs accèdent à l\'article sans restriction'
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col12">
|
||||||
<div class="col12">
|
<div class="block">
|
||||||
<div class="block">
|
<h4><?php echo helper::translate('Commentaires');?></h4>
|
||||||
<h4><?php echo helper::translate('Commentaires'); ?></h4>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col4 ">
|
||||||
<div class="col4 ">
|
<?php echo template::checkbox('blogEditCommentClose', true, 'Fermer les commentaires', [
|
||||||
<?php echo template::checkbox('blogEditCommentClose', true, 'Fermer les commentaires', [
|
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentClose'])
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentClose'])
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col4 commentOptionsWrapper ">
|
||||||
<div class="col4 commentOptionsWrapper ">
|
<?php echo template::checkbox('blogEditCommentApproved', true, 'Approbation par un modérateur', [
|
||||||
<?php echo template::checkbox('blogEditCommentApproved', true, 'Approbation par un modérateur', [
|
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentApproved']),
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentApproved']),
|
''
|
||||||
''
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col4 commentOptionsWrapper">
|
||||||
<div class="col4 commentOptionsWrapper">
|
<?php echo template::select('blogEditCommentMaxlength', $module::$commentsLength,[
|
||||||
<?php echo template::select('blogEditCommentMaxlength', $module::$commentsLength, [
|
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.',
|
||||||
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.',
|
'label' => 'Caractères par commentaire',
|
||||||
'label' => 'Caractères par commentaire',
|
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentMaxlength'])
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentMaxlength'])
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col3 commentOptionsWrapper offset2">
|
|
||||||
<?php echo template::checkbox('blogEditCommentNotification', true, 'Notification par email', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentNotification']),
|
|
||||||
]); ?>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col4 commentOptionsWrapper">
|
<div class="row">
|
||||||
<?php echo template::select('blogEditCommentGroupNotification', $module::$groupNews, [
|
<div class="col3 commentOptionsWrapper offset2">
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentGroupNotification']),
|
<?php echo template::checkbox('blogEditCommentNotification', true, 'Notification par email', [
|
||||||
]); ?>
|
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentNotification']),
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col4 commentOptionsWrapper">
|
||||||
|
<?php echo template::select('blogEditCommentGroupNotification', $module::$groupNews, [
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentGroupNotification']),
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -24,32 +24,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6 blogEdit">
|
<div class="col6 blogEdit">
|
||||||
<!-- bloc signature -->
|
<!-- bloc signature et date -->
|
||||||
<?php if (
|
<?php echo template::ico('user'); ?>
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true
|
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?>
|
||||||
): ?>
|
<?php echo template::ico('calendar-empty'); ?>
|
||||||
<?php echo template::ico('user'); ?>
|
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI) . ' ' . helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI); ?>
|
||||||
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<!-- bloc Date -->
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
|| $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo template::ico('calendar-empty', ['margin' => 'left']); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
&& $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo ' - '; ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -72,7 +51,7 @@
|
|||||||
<div class="col6 blogEdit">
|
<div class="col6 blogEdit">
|
||||||
<!-- Bloc edition -->
|
<!-- Bloc edition -->
|
||||||
<?php if (
|
<?php if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and
|
and
|
||||||
( // Propriétaire
|
( // Propriétaire
|
||||||
($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'editConsent']) === $module::EDIT_OWNER
|
($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'editConsent']) === $module::EDIT_OWNER
|
||||||
@ -124,19 +103,18 @@
|
|||||||
file_exists(self::FILE_DIR . 'source/' . $article['picture'])
|
file_exists(self::FILE_DIR . 'source/' . $article['picture'])
|
||||||
): ?>
|
): ?>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php
|
<?php // Déterminer le nom de la miniature
|
||||||
// Déterminer le nom de la miniature
|
$parts = pathinfo($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'picture']));
|
||||||
$parts = pathinfo($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'picture']));
|
$thumb = 'mini_' . $parts['basename'];
|
||||||
$thumb = 'mini_' . $parts['basename'];
|
// Créer la miniature si manquante
|
||||||
// Créer la miniature si manquante
|
if (!file_exists(self::FILE_DIR . 'thumb/' . $thumb)) {
|
||||||
if (!file_exists(self::FILE_DIR . 'thumb/' . $thumb)) {
|
$this->makeThumb(
|
||||||
$this->makeThumb(
|
self::FILE_DIR . 'source/' . $article['picture'],
|
||||||
self::FILE_DIR . 'source/' . $article['picture'],
|
self::FILE_DIR . 'thumb/' . $thumb,
|
||||||
self::FILE_DIR . 'thumb/' . $thumb,
|
self::THUMBS_WIDTH
|
||||||
self::THUMBS_WIDTH
|
);
|
||||||
);
|
}
|
||||||
}
|
?>
|
||||||
?>
|
|
||||||
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>" class="blogPicture">
|
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>" class="blogPicture">
|
||||||
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR . 'thumb/' . $thumb; ?>"
|
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR . 'thumb/' . $thumb; ?>"
|
||||||
alt="<?php echo $article['picture']; ?>">
|
alt="<?php echo $article['picture']; ?>">
|
||||||
@ -160,46 +138,21 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="blogDate">
|
<div class="blogDate">
|
||||||
<!-- bloc signature -->
|
<!-- bloc signature et date -->
|
||||||
<?php if (
|
<?php echo template::ico('user'); ?>
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true
|
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?>
|
||||||
): ?>
|
<?php echo template::ico('calendar-empty'); ?>
|
||||||
<?php echo template::ico('user'); ?>
|
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI) . ' ' . helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI); ?>
|
||||||
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?>
|
</div>
|
||||||
<?php endif; ?> <!-- bloc date -->
|
<div class="blogContent">
|
||||||
<?php if (
|
<?php $lenght = $this->getData(['module', $this->getUrl(0), 'config', 'articlesLenght']) !== 0 ? $this->getData(['module', $this->getUrl(0), 'config', 'articlesLenght']) : 500 ?>
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
<?php echo helper::subword(strip_tags($article['content'], '<br><p>'), 0, $lenght); ?>...
|
||||||
|| $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
<div class="readMoreContainer">
|
||||||
): ?>
|
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>">
|
||||||
<?php echo template::ico('calendar-empty', ['margin' => 'left']); ?>
|
<button class="readMoreButton">
|
||||||
<?php endif; ?>
|
<?php echo helper::translate('Lire la suite'); ?>
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?>
|
</button>
|
||||||
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI); ?>
|
</a>
|
||||||
<?php endif; ?>
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
&& $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo ' - '; ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<div class="blogContent">
|
|
||||||
<?php $lenght = $this->getData(['module', $this->getUrl(0), 'config', 'articlesLenght']); ?>
|
|
||||||
<?php if ($lenght > 0): ?>
|
|
||||||
<?php ?>
|
|
||||||
<?php echo helper::subword($article['content'], 0, $lenght); ?>...
|
|
||||||
<div class="readMoreContainer">
|
|
||||||
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>">
|
|
||||||
<button class="readMoreButton">
|
|
||||||
<?php echo helper::translate('Lire la suite'); ?>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<?php else: ?>
|
|
||||||
<?php echo $article['content']; ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
/**
|
|
||||||
* This file is part of Zwii.
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*
|
|
||||||
* @author Rémi Jean <remi.jean@outlook.com>
|
|
||||||
* @copyright Copyright (C) 2008-2018, Rémi Jean
|
|
||||||
* @author Frédéric Tempez <frederic.tempez@outlook.com>
|
|
||||||
* @copyright Copyright (C) 2018-2024, Frédéric Tempez
|
|
||||||
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
|
|
||||||
* @link http://zwiicms.fr/
|
|
||||||
*/
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
// Gestion du changement de la case "Afficher la date"
|
|
||||||
$('#blogOptionShowDate').change(function() {
|
|
||||||
var showDateChecked = $(this).is(':checked');
|
|
||||||
|
|
||||||
// Afficher ou masquer le wrapper de l'heure selon l'état de la date
|
|
||||||
if (showDateChecked) {
|
|
||||||
$('.timeWrapper').show();
|
|
||||||
} else {
|
|
||||||
$('.timeWrapper').hide();
|
|
||||||
// Désactiver l'option "Afficher l'heure" lorsque la date est désactivée
|
|
||||||
$('#blogOptionShowTime').prop('checked', false).trigger('change');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Afficher ou masquer le format de la date
|
|
||||||
$('#blogOptionDateFormatWrapper').toggle(showDateChecked);
|
|
||||||
}).trigger('change'); // Déclenchement au chargement de la page
|
|
||||||
|
|
||||||
// Gestion du changement de la case "Afficher l'heure"
|
|
||||||
$('#blogOptionShowTime').change(function() {
|
|
||||||
var showTimeChecked = $(this).is(':checked');
|
|
||||||
|
|
||||||
// Afficher ou masquer le format de l'heure
|
|
||||||
$('#blogOptionTimeFormatWrapper').toggle(showTimeChecked);
|
|
||||||
}).trigger('change'); // Déclenchement au chargement de la page
|
|
||||||
});
|
|
@ -17,36 +17,32 @@
|
|||||||
<h4>
|
<h4>
|
||||||
<?php echo helper::translate('Paramètres'); ?>
|
<?php echo helper::translate('Paramètres'); ?>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="row">
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::checkbox('blogOptionButtonBack', true, 'Bouton de retour', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::checkbox('blogOptionShowPseudo', true, 'Signature', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'showPseudo'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::checkbox('blogOptionShowDate', true, 'Afficher la date', [
|
<?php echo template::select('blogOptionArticlesLayout', $module::$articlesLayout, [
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'showDate']),
|
'label' => 'Disposition',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'layout'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
|
<?php echo template::select('blogOptionArticlesLenght', $module::$articlesLenght, [
|
||||||
|
'label' => 'Aperçus',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'articlesLenght'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2">
|
||||||
|
<?php echo template::select('blogOptionItemsperPage', $module::$ArticlesListed, [
|
||||||
|
'label' => 'Articles par page',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2">
|
||||||
<?php echo template::select('blogOptionDateFormat', $module::$dateFormats, [
|
<?php echo template::select('blogOptionDateFormat', $module::$dateFormats, [
|
||||||
'label' => 'Format des dates',
|
'label' => 'Format des dates',
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat'])
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3 timeWrapper">
|
<div class="col2">
|
||||||
<?php echo template::checkbox('blogOptionShowTime', true, 'Afficher l\'heure', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'showTime']),
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col3 timeWrapper">
|
|
||||||
<?php echo template::select('blogOptionTimeFormat', $module::$timeFormats, [
|
<?php echo template::select('blogOptionTimeFormat', $module::$timeFormats, [
|
||||||
'label' => 'Format des heures',
|
'label' => 'Format des heures',
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat'])
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat'])
|
||||||
@ -54,34 +50,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col3">
|
||||||
<?php echo template::select('blogOptionArticlesLayout', $module::$articlesLayout, [
|
|
||||||
'label' => 'Disposition',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'layout'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col4">
|
|
||||||
<?php echo template::select('blogOptionArticlesLenght', $module::$articlesLenght, [
|
|
||||||
'label' => 'Aperçus',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'articlesLenght'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col4">
|
|
||||||
<?php echo template::select('blogOptionItemsperPage', $module::$ArticlesListed, [
|
|
||||||
'label' => 'Articles par page',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::checkbox('blogOptionShowFeeds', true, 'Lien du flux RSS', [
|
<?php echo template::checkbox('blogOptionShowFeeds', true, 'Lien du flux RSS', [
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'feeds']),
|
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'feeds']),
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col3">
|
||||||
|
<?php echo template::checkbox('newsOptionButtonBack', true, 'Bouton de retour', [
|
||||||
|
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::text('blogOptionFeedslabel', [
|
<?php echo template::text('blogOptionFeedslabel', [
|
||||||
'label' => 'Texte de l\'étiquette RSS',
|
'label' => 'Texte de l\'étiquette',
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel'])
|
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
# Versions 4.4
|
|
||||||
- Le sélecteur de fichier affiche par défaut le chemin vers le fichier présent dans le champ.
|
|
||||||
# Version 4.3
|
# Version 4.3
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
||||||
# Version 4.2
|
# Version 4.2
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
class form extends common
|
class form extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '4.4';
|
const VERSION = '4.3';
|
||||||
const REALNAME = 'Formulaire';
|
const REALNAME = 'Formulaire';
|
||||||
const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json)
|
const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json)
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Validation du formulaire'); ?></h4>
|
<h4><?php echo helper::translate('Validation du formulaire');?></h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::checkbox('formOptionCaptcha', true, 'Captcha', [
|
<?php echo template::checkbox('formOptionCaptcha', true, 'Captcha', [
|
||||||
@ -49,7 +49,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Gabarit'); ?></h4>
|
<h4><?php echo helper::translate('Gabarit');?></h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<?php echo template::select('formOptionAlign', $module::$optionAlign, [
|
<?php echo template::select('formOptionAlign', $module::$optionAlign, [
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4><?php echo helper::translate('Courriel'); ?></h4>
|
<h4><?php echo helper::translate('Courriel');?></h4>
|
||||||
<?php echo template::checkbox('formOptionMailOptionsToggle', true, 'Envoyer par mail les données saisies :', [
|
<?php echo template::checkbox('formOptionMailOptionsToggle', true, 'Envoyer par mail les données saisies :', [
|
||||||
'checked' => (bool) $this->getData(['module', $this->getUrl(0), 'config', 'group']) ||
|
'checked' => (bool) $this->getData(['module', $this->getUrl(0), 'config', 'group']) ||
|
||||||
!empty($this->getData(['module', $this->getUrl(0), 'config', 'user'])) ||
|
!empty($this->getData(['module', $this->getUrl(0), 'config', 'user'])) ||
|
||||||
@ -128,10 +128,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::file('formOptionLogo', [
|
<?php echo template::file('formOptionLogo', [
|
||||||
|
|
||||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||||
'label' => 'Logo du site',
|
'label' => 'Logo du site',
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'logoUrl']),
|
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'logoUrl'])
|
||||||
'folder' => $this->getData(['module', $this->getUrl(0), 'config', 'logoUrl']) ? dirname($this->getData(['module', $this->getUrl(0), 'config', 'logoUrl'])) : ''
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
@ -153,3 +153,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
@ -27,6 +27,8 @@ $( document ).ready(function() {
|
|||||||
serializeRegexp: ""
|
serializeRegexp: ""
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log($("#galleryEditSort").val());
|
||||||
|
|
||||||
if ($("#galleryEditSort").val() !== "SORT_HAND") {
|
if ($("#galleryEditSort").val() !== "SORT_HAND") {
|
||||||
$("#galleryTable tr").addClass("nodrag nodrop");
|
$("#galleryTable tr").addClass("nodrag nodrop");
|
||||||
$(".zwiico-sort").hide();
|
$(".zwiico-sort").hide();
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
# Versions 6.0
|
|
||||||
- Ajoute trois nouvelles options pour afficher ou masquer la signature, la date et l'heure de l'article.
|
|
||||||
- Corrige un mauvais format de la propriété buttonBack non stockée au type booléen.
|
|
||||||
# Versions 5.9
|
|
||||||
- Largeur d'un bouton de retour.
|
|
||||||
# Versions 5.7 - 5.8
|
# Versions 5.7 - 5.8
|
||||||
- Le flux RSS ne fonctionne pas si les méta de la page sont vides.
|
- Le flux RSS ne fonctionne pas si les méta de la page sont vides.
|
||||||
# Version 5.6
|
# Version 5.6
|
||||||
|
@ -1 +1 @@
|
|||||||
{"name":"news","realName":"News","version":"5.9","update":"0.0","delete":true,"dataDirectory":"site\/data\/news\/"}
|
{"name":"news","realName":"News","version":"5.0","update":"0.0","delete":true,"dataDirectory":"site\/data\/news\/"}
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Unorganisiert",
|
"Brouillon": "Unorganisiert",
|
||||||
"Couleur de la bordure": "Randfarbe",
|
"Couleur de la bordure": "Randfarbe",
|
||||||
"Couleur du fond": "Bodenfarbe",
|
"Couleur du fond": "Bodenfarbe",
|
||||||
"Étiquette RSS": "RSS -Label",
|
"Etiquette RSS": "RSS -Label",
|
||||||
"Fine": "Bußgeld",
|
"Fine": "Bußgeld",
|
||||||
"Flux limité aux articles de la première page.": "Flow Limited auf Artikel auf der ersten Seite.",
|
"Flux limité aux articles de la première page.": "Flow Limited auf Artikel auf der ersten Seite.",
|
||||||
"Informations générales": "Allgemeine Informationen",
|
"Informations générales": "Allgemeine Informationen",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Draft copy",
|
"Brouillon": "Draft copy",
|
||||||
"Couleur de la bordure": "Border color",
|
"Couleur de la bordure": "Border color",
|
||||||
"Couleur du fond": "Bottom color",
|
"Couleur du fond": "Bottom color",
|
||||||
"Étiquette RSS": "RSS label",
|
"Etiquette RSS": "RSS label",
|
||||||
"Fine": "Fine",
|
"Fine": "Fine",
|
||||||
"Flux limité aux articles de la première page.": "Flow limited to articles on the first page.",
|
"Flux limité aux articles de la première page.": "Flow limited to articles on the first page.",
|
||||||
"Informations générales": "General informations",
|
"Informations générales": "General informations",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Borrador",
|
"Brouillon": "Borrador",
|
||||||
"Couleur de la bordure": "Color de bordillo",
|
"Couleur de la bordure": "Color de bordillo",
|
||||||
"Couleur du fond": "Color de fondo",
|
"Couleur du fond": "Color de fondo",
|
||||||
"Étiquette RSS": "",
|
"Etiquette RSS": "",
|
||||||
"Fine": "Fino",
|
"Fine": "Fino",
|
||||||
"Flux limité aux articles de la première page.": "Alimento limitado a artículos en la primera página.",
|
"Flux limité aux articles de la première page.": "Alimento limitado a artículos en la primera página.",
|
||||||
"Informations générales": "Información general",
|
"Informations générales": "Información general",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "",
|
"Brouillon": "",
|
||||||
"Couleur de la bordure": "",
|
"Couleur de la bordure": "",
|
||||||
"Couleur du fond": "",
|
"Couleur du fond": "",
|
||||||
"Étiquette RSS": "",
|
"Etiquette RSS": "",
|
||||||
"Fine": "",
|
"Fine": "",
|
||||||
"Flux limité aux articles de la première page.": "",
|
"Flux limité aux articles de la première page.": "",
|
||||||
"Informations générales": "",
|
"Informations générales": "",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Σχέδιο",
|
"Brouillon": "Σχέδιο",
|
||||||
"Couleur de la bordure": "Χρώμα γραμμής",
|
"Couleur de la bordure": "Χρώμα γραμμής",
|
||||||
"Couleur du fond": "Χρώμα του φόντου",
|
"Couleur du fond": "Χρώμα του φόντου",
|
||||||
"Étiquette RSS": "Ετικέτα RSS",
|
"Etiquette RSS": "Ετικέτα RSS",
|
||||||
"Fine": "Πολύ λεπτή γραμμήλεπτή γραμμή",
|
"Fine": "Πολύ λεπτή γραμμήλεπτή γραμμή",
|
||||||
"Flux limité aux articles de la première page.": "Ροή περιορίζεται σε άρθρα στην πρώτη σελίδα.",
|
"Flux limité aux articles de la première page.": "Ροή περιορίζεται σε άρθρα στην πρώτη σελίδα.",
|
||||||
"Informations générales": "Γενικές πληροφορίες",
|
"Informations générales": "Γενικές πληροφορίες",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Progetto di copia",
|
"Brouillon": "Progetto di copia",
|
||||||
"Couleur de la bordure": "Colore del bordo",
|
"Couleur de la bordure": "Colore del bordo",
|
||||||
"Couleur du fond": "Colore inferiore",
|
"Couleur du fond": "Colore inferiore",
|
||||||
"Étiquette RSS": "Etichetta RSS",
|
"Etiquette RSS": "Etichetta RSS",
|
||||||
"Fine": "Bene",
|
"Fine": "Bene",
|
||||||
"Flux limité aux articles de la première page.": "Flusso limitato agli articoli nella prima pagina.",
|
"Flux limité aux articles de la première page.": "Flusso limitato agli articoli nella prima pagina.",
|
||||||
"Informations générales": "Informazioni generali",
|
"Informations générales": "Informazioni generali",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Cópia rascunho",
|
"Brouillon": "Cópia rascunho",
|
||||||
"Couleur de la bordure": "Cor da borda",
|
"Couleur de la bordure": "Cor da borda",
|
||||||
"Couleur du fond": "Cor inferior",
|
"Couleur du fond": "Cor inferior",
|
||||||
"Étiquette RSS": "Rótulo RSS",
|
"Etiquette RSS": "Rótulo RSS",
|
||||||
"Fine": "Multar",
|
"Fine": "Multar",
|
||||||
"Flux limité aux articles de la première page.": "Fluxo limitado a artigos na primeira página.",
|
"Flux limité aux articles de la première page.": "Fluxo limitado a artigos na primeira página.",
|
||||||
"Informations générales": "Informações gerais",
|
"Informations générales": "Informações gerais",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"Brouillon": "Taslak",
|
"Brouillon": "Taslak",
|
||||||
"Couleur de la bordure": "Çerçeve rengi",
|
"Couleur de la bordure": "Çerçeve rengi",
|
||||||
"Couleur du fond": "Arka plan rengi",
|
"Couleur du fond": "Arka plan rengi",
|
||||||
"Étiquette RSS": "RSS etiketi",
|
"Etiquette RSS": "RSS etiketi",
|
||||||
"Fine": "İnce",
|
"Fine": "İnce",
|
||||||
"Flux limité aux articles de la première page.": "İlk sayfadaki makalelerle sınırlıdır.",
|
"Flux limité aux articles de la première page.": "İlk sayfadaki makalelerle sınırlıdır.",
|
||||||
"Informations générales": "Genel bilgiler",
|
"Informations générales": "Genel bilgiler",
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
class news extends common
|
class news extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '6.0';
|
const VERSION = '5.8';
|
||||||
const REALNAME = 'News';
|
const REALNAME = 'News';
|
||||||
const DATADIRECTORY = self::DATA_DIR . 'news/';
|
const DATADIRECTORY = self::DATA_DIR . 'news/';
|
||||||
|
|
||||||
@ -124,12 +124,11 @@ class news extends common
|
|||||||
$feeds = new \FeedWriter\RSS2();
|
$feeds = new \FeedWriter\RSS2();
|
||||||
|
|
||||||
// En-tête
|
// En-tête
|
||||||
$feeds->setTitle($this->getData(['page', $this->getUrl(0), 'title']) ? $this->getData(['page', $this->getUrl(0), 'title']) : '');
|
$feeds->setTitle($this->getData(['page', $this->getUrl(0), 'title']) ? $this->getData(['page', $this->getUrl(0), 'title']): '');
|
||||||
$feeds->setLink(helper::baseUrl() . $this->getUrl(0));
|
$feeds->setLink(helper::baseUrl() . $this->getUrl(0));
|
||||||
if ($this->getData(['page', $this->getUrl(0), 'metaDescription'])) {
|
if ($this->getData(['page', $this->getUrl(0), 'metaDescription'])) {
|
||||||
$feeds->setDescription($this->getData(['page', $this->getUrl(0), 'metaDescription']));
|
$feeds->setDescription($this->getData(['page', $this->getUrl(0), 'metaDescription']));
|
||||||
}
|
};
|
||||||
;
|
|
||||||
$feeds->setChannelElement('language', 'fr-FR');
|
$feeds->setChannelElement('language', 'fr-FR');
|
||||||
$feeds->setDate(date('r', time()));
|
$feeds->setDate(date('r', time()));
|
||||||
$feeds->addGenerator();
|
$feeds->addGenerator();
|
||||||
@ -175,8 +174,7 @@ class news extends common
|
|||||||
$publishedOn = $this->getInput('newsAddPublishedOn', helper::FILTER_DATETIME, true);
|
$publishedOn = $this->getInput('newsAddPublishedOn', helper::FILTER_DATETIME, true);
|
||||||
$publishedOff = $this->getInput('newsAddPublishedOff') ? $this->getInput('newsAddPublishedOff', helper::FILTER_DATETIME) : '';
|
$publishedOff = $this->getInput('newsAddPublishedOff') ? $this->getInput('newsAddPublishedOff', helper::FILTER_DATETIME) : '';
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module',
|
'module', $this->getUrl(0),
|
||||||
$this->getUrl(0),
|
|
||||||
'posts',
|
'posts',
|
||||||
$newsId,
|
$newsId,
|
||||||
[
|
[
|
||||||
@ -290,8 +288,7 @@ class news extends common
|
|||||||
// Fin feuille de style
|
// Fin feuille de style
|
||||||
|
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module',
|
'module', $this->getUrl(0),
|
||||||
$this->getUrl(0),
|
|
||||||
'theme',
|
'theme',
|
||||||
[
|
[
|
||||||
'style' => $success ? self::DATADIRECTORY . $this->getUrl(0) . '/theme.css' : '',
|
'style' => $success ? self::DATADIRECTORY . $this->getUrl(0) . '/theme.css' : '',
|
||||||
@ -303,8 +300,7 @@ class news extends common
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module',
|
'module', $this->getUrl(0),
|
||||||
$this->getUrl(0),
|
|
||||||
'config',
|
'config',
|
||||||
[
|
[
|
||||||
'feeds' => $this->getInput('newsOptionShowFeeds', helper::FILTER_BOOLEAN),
|
'feeds' => $this->getInput('newsOptionShowFeeds', helper::FILTER_BOOLEAN),
|
||||||
@ -314,10 +310,7 @@ class news extends common
|
|||||||
'height' => $this->getInput('newsOptionHeight', helper::FILTER_INT, true),
|
'height' => $this->getInput('newsOptionHeight', helper::FILTER_INT, true),
|
||||||
'dateFormat' => $this->getInput('newsOptionDateFormat'),
|
'dateFormat' => $this->getInput('newsOptionDateFormat'),
|
||||||
'timeFormat' => $this->getInput('newsOptionTimeFormat'),
|
'timeFormat' => $this->getInput('newsOptionTimeFormat'),
|
||||||
'buttonBack' => $this->getInput('newsOptionButtonBack', helper::FILTER_BOOLEAN),
|
'buttonBack' => $this->getInput('newsOptionButtonBack'),
|
||||||
'showDate' => $this->getInput('newsOptionShowDate', helper::FILTER_BOOLEAN),
|
|
||||||
'showTime' => $this->getInput('newsOptionShowTime', helper::FILTER_BOOLEAN),
|
|
||||||
'showPseudo' => $this->getInput('newsOptionShowPseudo', helper::FILTER_BOOLEAN),
|
|
||||||
'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']),
|
'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']),
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
@ -325,7 +318,7 @@ class news extends common
|
|||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/option',
|
||||||
'notification' => helper::translate('Modifications enregistrées'),
|
'notification' => helper::translate('Modifications enregistrées'),
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
@ -435,8 +428,7 @@ class news extends common
|
|||||||
$publishedOn = $this->getInput('newsEditPublishedOn', helper::FILTER_DATETIME, true);
|
$publishedOn = $this->getInput('newsEditPublishedOn', helper::FILTER_DATETIME, true);
|
||||||
$publishedOff = $this->getInput('newsEditPublishedOff') ? $this->getInput('newsEditPublishedOff', helper::FILTER_DATETIME) : '';
|
$publishedOff = $this->getInput('newsEditPublishedOff') ? $this->getInput('newsEditPublishedOff', helper::FILTER_DATETIME) : '';
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module',
|
'module', $this->getUrl(0),
|
||||||
$this->getUrl(0),
|
|
||||||
'posts',
|
'posts',
|
||||||
$newsId,
|
$newsId,
|
||||||
[
|
[
|
||||||
@ -498,8 +490,6 @@ class news extends common
|
|||||||
}
|
}
|
||||||
// L'article existe
|
// L'article existe
|
||||||
else {
|
else {
|
||||||
self::$dateFormat = $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat']);
|
|
||||||
self::$timeFormat = $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat']);
|
|
||||||
self::$articleSignature = $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId']));
|
self::$articleSignature = $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId']));
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -619,15 +609,6 @@ class news extends common
|
|||||||
// Mettre à jour la version
|
// Mettre à jour la version
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '5.3']);
|
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '5.3']);
|
||||||
}
|
}
|
||||||
// Mise à jour 6.0
|
|
||||||
if (version_compare($versionData, '6.0', '<')) {
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'buttonBack', true]);
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'showTime', true]);
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'showDate', true]);
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'showPseudo', true]);
|
|
||||||
// Mettre à jour la version
|
|
||||||
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '6.0']);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,50 +12,32 @@
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6 newsDate textAlignRight">
|
<div class="col6 newsDate textAlignRight">
|
||||||
<!-- bloc signature -->
|
<!-- bloc signature et date -->
|
||||||
|
<?php echo template::ico('user'); ?>
|
||||||
|
<?php echo $module::$articleSignature . ' - '; ?>
|
||||||
|
<?php echo template::ico('calendar-empty'); ?>
|
||||||
|
<?php echo helper::dateUTF8('%d %B %Y', $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI) . ' ' . helper::dateUTF8('%H:%M', $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?>
|
||||||
|
<!-- Bloc edition -->
|
||||||
<?php if (
|
<?php if (
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
): ?>
|
|
||||||
<?php echo template::ico('user'); ?>
|
|
||||||
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId'])); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<!-- bloc date -->
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
|| $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo template::ico('calendar-empty', ['margin' => 'left']); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
&& $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo ' - '; ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?> <!-- Bloc edition -->
|
|
||||||
<?php if (
|
|
||||||
$this->isConnected() === true
|
|
||||||
and
|
and
|
||||||
( // Propriétaire
|
( // Propriétaire
|
||||||
($this->getUser('group') === self::GROUP_ADMIN)
|
($this->getUser('group') === self::GROUP_ADMIN)
|
||||||
)
|
)
|
||||||
): ?>
|
): ?>
|
||||||
|
-
|
||||||
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/edit/' . $this->getUrl(1); ?>">
|
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/edit/' . $this->getUrl(1); ?>">
|
||||||
<?php echo template::ico('pencil', ['margin' => 'left']); ?>
|
<?php echo template::ico('pencil'); ?>
|
||||||
<?php echo helper::translate('Éditer'); ?>
|
<?php echo helper::translate('Éditer'); ?>
|
||||||
</a>
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<!-- Bloc RSS-->
|
<!-- Bloc RSS-->
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'feeds'])): ?>
|
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'feeds'])): ?>
|
||||||
|
-
|
||||||
<div id="rssFeed">
|
<div id="rssFeed">
|
||||||
<a type="application/rss+xml" href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?>"
|
<a type="application/rss+xml" href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?>"
|
||||||
target="_blank">
|
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>';
|
||||||
?>
|
?>
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<?php echo template::formOpen('newsEditForm'); ?>
|
<?php echo template::formOpen('newsEditForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col2">
|
||||||
<?php echo template::button('newsEditBack', [
|
<?php echo template::button('newsEditBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset7">
|
<div class="col2 offset6">
|
||||||
<?php echo template::button('newsEditDraft', [
|
<?php echo template::button('newsEditDraft', [
|
||||||
'uniqueSubmission' => true,
|
'uniqueSubmission' => true,
|
||||||
'value' => helper::translate('Brouillon')
|
'value' => helper::translate('Brouillon')
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<?php if ($module::$news): ?>
|
<?php if ($module::$news): ?>
|
||||||
<link rel="stylesheet" type="text/css"
|
<link rel="stylesheet" type="text/css" href="<?php echo helper::baseUrl(false) . $this->getData(['module', $this->getUrl(0), 'theme', 'style']);?> "/>
|
||||||
href="<?php echo helper::baseUrl(false) . $this->getData(['module', $this->getUrl(0), 'theme', 'style']); ?> " />
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'feeds'])): ?>
|
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'feeds'])): ?>
|
||||||
<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">
|
||||||
@ -21,42 +20,22 @@
|
|||||||
<?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="newsSignature">
|
<div class="newsSignature">
|
||||||
<!-- bloc signature -->
|
<?php echo template::ico('user'); ?>
|
||||||
<?php if (
|
<?php echo $news['userId'] . ' - '; ?>
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true
|
<?php echo template::ico('calendar-empty'); ?>
|
||||||
): ?>
|
<?php echo helper::dateUTF8($module::$dateFormat, $news['publishedOn'], self::$i18nUI) . ' ' . helper::dateUTF8($module::$timeFormat, $news['publishedOn'], self::$i18nUI); ?>
|
||||||
<?php echo template::ico('user'); ?>
|
|
||||||
<?php echo $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $newsId, 'userId'])); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<!-- bloc Date -->
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
|| $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo template::ico('calendar-empty', ['margin' => 'left']); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $newsId, 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if (
|
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'showDate']) === true
|
|
||||||
&& $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true
|
|
||||||
): ?>
|
|
||||||
<?php echo ' - '; ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?>
|
|
||||||
<?php echo helper::dateUTF8($module::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $newsId, 'publishedOn']), self::$i18nUI); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
<!-- Bloc edition -->
|
<!-- Bloc edition -->
|
||||||
<?php if (
|
<?php if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and
|
and
|
||||||
( // Propriétaire
|
( // Propriétaire
|
||||||
($this->getUser('group') === self::GROUP_ADMIN)
|
($this->getUser('group') === self::GROUP_ADMIN)
|
||||||
)
|
)
|
||||||
): ?>
|
): ?>
|
||||||
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/edit/' . $newsId; ?>">
|
-
|
||||||
<?php echo template::ico('pencil', ['margin' => 'left']); ?> Éditer
|
<a
|
||||||
|
href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/edit/' . $newsId; ?>">
|
||||||
|
<?php echo template::ico('pencil'); ?> Éditer
|
||||||
</a>
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
@ -72,6 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
<?php echo $module::$pages; ?>
|
<?php echo $module::$pages; ?>
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
/**
|
|
||||||
* This file is part of Zwii.
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*
|
|
||||||
* @author Rémi Jean <remi.jean@outlook.com>
|
|
||||||
* @copyright Copyright (C) 2008-2018, Rémi Jean
|
|
||||||
* @author Frédéric Tempez <frederic.tempez@outlook.com>
|
|
||||||
* @copyright Copyright (C) 2018-2024, Frédéric Tempez
|
|
||||||
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
|
|
||||||
* @link http://zwiicms.fr/
|
|
||||||
*/
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
// Gestion du changement de la case "Afficher la date"
|
|
||||||
$('#newsOptionShowDate').change(function() {
|
|
||||||
var showDateChecked = $(this).is(':checked');
|
|
||||||
|
|
||||||
// Afficher ou masquer le wrapper de l'heure selon l'état de la date
|
|
||||||
if (showDateChecked) {
|
|
||||||
$('.timeWrapper').show();
|
|
||||||
} else {
|
|
||||||
$('.timeWrapper').hide();
|
|
||||||
// Désactiver l'option "Afficher l'heure" lorsque la date est désactivée
|
|
||||||
$('#newsOptionShowTime').prop('checked', false).trigger('change');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Afficher ou masquer le format de la date
|
|
||||||
$('#newsOptionDateFormatWrapper').toggle(showDateChecked);
|
|
||||||
}).trigger('change'); // Déclenchement au chargement de la page
|
|
||||||
|
|
||||||
// Gestion du changement de la case "Afficher l'heure"
|
|
||||||
$('#newsOptionShowTime').change(function() {
|
|
||||||
var showTimeChecked = $(this).is(':checked');
|
|
||||||
|
|
||||||
// Afficher ou masquer le format de l'heure
|
|
||||||
$('#newsOptionTimeFormatWrapper').toggle(showTimeChecked);
|
|
||||||
}).trigger('change'); // Déclenchement au chargement de la page
|
|
||||||
});
|
|
@ -1,130 +1,111 @@
|
|||||||
<?php echo template::formOpen('newsOption'); ?>
|
<?php echo template::formOpen('newsOption'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('newsOptionBack', [
|
<?php echo template::button('newsOptionBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset9">
|
||||||
|
<?php echo template::submit('newsOptionSubmit'); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset9">
|
<div class="row">
|
||||||
<?php echo template::submit('newsOptionSubmit'); ?>
|
<div class="col12">
|
||||||
</div>
|
<div class="block">
|
||||||
</div>
|
<h4><?php echo helper::translate('Paramètres'); ?></h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col2">
|
||||||
<div class="block">
|
<?php echo template::select('newsOptionItemsperCol', $module::$columns, [
|
||||||
<h4><?php echo helper::translate('Paramètres'); ?></h4>
|
'label' => 'Nombre de colonnes',
|
||||||
<div class="row">
|
'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperCol'])
|
||||||
<div class="col6">
|
]); ?>
|
||||||
<?php echo template::checkbox('newsOptionButtonBack', true, 'Bouton de retour', [
|
</div>
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack'])
|
<div class="col2">
|
||||||
]); ?>
|
<?php echo template::select('newsOptionItemsperPage', $module::$itemsList, [
|
||||||
|
'label' => 'Articles par page',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperPage'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2">
|
||||||
|
<?php echo template::select('newsOptionHeight', $module::$height, [
|
||||||
|
'label' => 'Abrégé de l\'article',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0),'config', 'height'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col3">
|
||||||
|
<?php echo template::select('newsOptionDateFormat', $module::$dateFormats, [
|
||||||
|
'label' => 'Format des dates',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col3">
|
||||||
|
<?php echo template::select('newsOptionTimeFormat', $module::$timeFormats, [
|
||||||
|
'label' => 'Format des heures',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="row">
|
||||||
<?php echo template::checkbox('newsOptionShowPseudo', true, 'Signature', [
|
<div class="col3">
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'showPseudo'])
|
<?php echo template::checkbox('newsOptionShowFeeds', true, 'Lien du flux RSS', [
|
||||||
]); ?>
|
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'feeds']),
|
||||||
</div>
|
'help' => 'Flux limité aux articles de la première page.'
|
||||||
</div>
|
]); ?>
|
||||||
<div class="row">
|
</div>
|
||||||
<div class="col3">
|
<div class="col3">
|
||||||
<?php echo template::checkbox('newsOptionShowDate', true, 'Afficher la date', [
|
<?php echo template::checkbox('newsOptionButtonBack', true, 'Bouton de retour', [
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'showDate']),
|
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col6">
|
||||||
<?php echo template::select('newsOptionDateFormat', $module::$dateFormats, [
|
<?php echo template::text('newsOptionFeedslabel', [
|
||||||
'label' => 'Format des dates',
|
'label' => 'Etiquette RSS',
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat'])
|
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3 timeWrapper">
|
|
||||||
<?php echo template::checkbox('newsOptionShowTime', true, 'Afficher l\'heure', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'showTime']),
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col3 timeWrapper">
|
|
||||||
<?php echo template::select('newsOptionTimeFormat', $module::$timeFormats, [
|
|
||||||
'label' => 'Format des heures',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col4">
|
|
||||||
<?php echo template::select('newsOptionItemsperCol', $module::$columns, [
|
|
||||||
'label' => 'Nombre de colonnes',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'itemsperCol'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col4">
|
|
||||||
<?php echo template::select('newsOptionItemsperPage', $module::$itemsList, [
|
|
||||||
'label' => 'Articles par page',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col4">
|
|
||||||
<?php echo template::select('newsOptionHeight', $module::$height, [
|
|
||||||
'label' => 'Abrégé de l\'article',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'height'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::checkbox('newsOptionShowFeeds', true, 'Lien du flux RSS', [
|
|
||||||
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'feeds']),
|
|
||||||
'help' => 'Flux limité aux articles de la première page.'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col6">
|
|
||||||
<?php echo template::text('newsOptionFeedslabel', [
|
|
||||||
'label' => 'Texte de l\'étiquette RSS',
|
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col12">
|
||||||
<div class="col12">
|
<div class="block">
|
||||||
<div class="block">
|
<h4><?php echo helper::translate('Thème');?></h4>
|
||||||
<h4><?php echo helper::translate('Thème'); ?></h4>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col3">
|
||||||
<div class="col3">
|
<?php echo template::select('newsThemeBorderStyle', $module::$borderStyle, [
|
||||||
<?php echo template::select('newsThemeBorderStyle', $module::$borderStyle, [
|
'label' => 'Bordure',
|
||||||
'label' => 'Bordure',
|
'selected' => $this->getData(['module', $this->getUrl(0),'theme', 'borderStyle'])
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'borderStyle'])
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col3">
|
||||||
<div class="col3">
|
<?php echo template::select('newsThemeBorderWidth', $module::$borderWidth, [
|
||||||
<?php echo template::select('newsThemeBorderWidth', $module::$borderWidth, [
|
'label' => 'Épaisseur',
|
||||||
'label' => 'Épaisseur',
|
'selected' => $this->getData(['module', $this->getUrl(0),'theme', 'borderWidth'])
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'borderWidth'])
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col3">
|
||||||
<div class="col3">
|
<?php echo template::text('newsThemeBorderColor', [
|
||||||
<?php echo template::text('newsThemeBorderColor', [
|
'class' => 'colorPicker',
|
||||||
'class' => 'colorPicker',
|
'help' => 'Couleur visible en l\'absence d\'une image.<br />Le curseur horizontal règle le niveau de transparence.',
|
||||||
'help' => 'Couleur visible en l\'absence d\'une image.<br />Le curseur horizontal règle le niveau de transparence.',
|
'label' => 'Couleur de la bordure',
|
||||||
'label' => 'Couleur de la bordure',
|
'value' => $this->getData(['module', $this->getUrl(0),'theme', 'borderColor'])
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'theme', 'borderColor'])
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
<div class="col3">
|
||||||
<div class="col3">
|
<?php echo template::text('newsThemeBackgroundColor', [
|
||||||
<?php echo template::text('newsThemeBackgroundColor', [
|
'class' => 'colorPicker',
|
||||||
'class' => 'colorPicker',
|
'help' => 'Couleur visible en l\'absence d\'une image.<br />Le curseur horizontal règle le niveau de transparence.',
|
||||||
'help' => 'Couleur visible en l\'absence d\'une image.<br />Le curseur horizontal règle le niveau de transparence.',
|
'label' => 'Couleur du fond',
|
||||||
'label' => 'Couleur du fond',
|
'value' => $this->getData(['module', $this->getUrl(0),'theme', 'backgroundColor'])
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'theme', 'backgroundColor'])
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
||||||
<div class="moduleVersion">Version n°
|
<div class="moduleVersion">Version n°
|
||||||
<?php echo $module::VERSION; ?>
|
<?php echo $module::VERSION; ?>
|
||||||
|
@ -58,7 +58,7 @@ class redirection extends common
|
|||||||
{
|
{
|
||||||
// Message si l'utilisateur peut éditer la page
|
// Message si l'utilisateur peut éditer la page
|
||||||
if (
|
if (
|
||||||
$this->isConnected() === true
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
&& $this->getUser('group') >= self::GROUP_EDITOR
|
&& $this->getUser('group') >= self::GROUP_EDITOR
|
||||||
&& $this->getUrl(1) !== 'force'
|
&& $this->getUrl(1) !== 'force'
|
||||||
) {
|
) {
|
||||||
|
@ -1,12 +1,3 @@
|
|||||||
# Version 7.2
|
|
||||||
- Le dossier sélectionné est affiché par défaut dans la page update.
|
|
||||||
# Version 7.1
|
|
||||||
- Améliore le desgin du module
|
|
||||||
# Version 7.0
|
|
||||||
- Ajoute un affichage de la légende sous l'image
|
|
||||||
- Corrige un tri inversé
|
|
||||||
- Erreur dans la feuille de style de la vue index
|
|
||||||
- Bug de calcul de la largeur maximale du slide dans la vue index
|
|
||||||
# Version 6.5
|
# Version 6.5
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
||||||
# Version 6.4
|
# Version 6.4
|
||||||
|
@ -27,7 +27,7 @@ class slider extends common
|
|||||||
'index' => self::GROUP_VISITOR
|
'index' => self::GROUP_VISITOR
|
||||||
];
|
];
|
||||||
|
|
||||||
const VERSION = '7.2';
|
const VERSION = '6.4';
|
||||||
const REALNAME = 'Carrousel';
|
const REALNAME = 'Carrousel';
|
||||||
const DELETE = true;
|
const DELETE = true;
|
||||||
const UPDATE = '0.0';
|
const UPDATE = '0.0';
|
||||||
@ -57,7 +57,6 @@ class slider extends common
|
|||||||
false => 'Puces invisibles'
|
false => 'Puces invisibles'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
public static $auto = [
|
public static $auto = [
|
||||||
true => 'Active',
|
true => 'Active',
|
||||||
false => 'Inactive'
|
false => 'Inactive'
|
||||||
@ -77,7 +76,7 @@ class slider extends common
|
|||||||
1920 => '1920 pixels',
|
1920 => '1920 pixels',
|
||||||
0 => 'Largeur de l\'écran'
|
0 => 'Largeur de l\'écran'
|
||||||
];
|
];
|
||||||
public static $selectedMaxwidth = 640;
|
public static $selectedMaxwidth = 0;
|
||||||
|
|
||||||
// Transition
|
// Transition
|
||||||
public static $speed = [
|
public static $speed = [
|
||||||
@ -126,17 +125,12 @@ class slider extends common
|
|||||||
|
|
||||||
//Choix du tri
|
//Choix du tri
|
||||||
public static $sort = [
|
public static $sort = [
|
||||||
'dsc' => 'Alphabétique naturel',
|
'asc' => 'Alphabétique naturel',
|
||||||
'asc' => 'Alphabétique naturel inverse',
|
'dsc' => 'Alphabétique naturel inverse',
|
||||||
'rand' => 'Aléatoire',
|
'rand' => 'Aléatoire',
|
||||||
'none' => 'Par défaut, sans tri',
|
'none' => 'Par défaut, sans tri',
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $caption = [
|
|
||||||
'bottom' => 'En bas de l\'image',
|
|
||||||
'alt' => 'Uniquement dans le texte alternatif'
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mise à jour du dossier
|
* Mise à jour du dossier
|
||||||
*/
|
*/
|
||||||
@ -242,27 +236,15 @@ class slider extends common
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Tri des images par ordre alphabétique, alphabétique inverse, aléatoire ou pas
|
// Tri des images pour affichage de la liste dans la page d'édition
|
||||||
switch ($this->getData(['module', $this->getUrl(0), 'theme', 'sort'])) {
|
switch ($this->getData(['module', $this->getUrl(0), 'theme', 'sort'])) {
|
||||||
case 'asc':
|
|
||||||
krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
|
|
||||||
break;
|
|
||||||
case 'dsc':
|
case 'dsc':
|
||||||
ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
|
ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
|
||||||
break;
|
break;
|
||||||
case 'rand':
|
case 'asc':
|
||||||
// Récupérer les clés du tableau
|
krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
|
||||||
$keys = array_keys(self::$pictures);
|
|
||||||
// Mélanger les clés
|
|
||||||
shuffle($keys);
|
|
||||||
// Créer un nouveau tableau avec les clés mélangées
|
|
||||||
$shuffledPictures = [];
|
|
||||||
foreach ($keys as $key) {
|
|
||||||
$shuffledPictures[$key] = self::$pictures[$key];
|
|
||||||
}
|
|
||||||
// Mettre à jour le tableau initial avec le nouveau tableau mélangé
|
|
||||||
self::$pictures = $shuffledPictures;
|
|
||||||
break;
|
break;
|
||||||
|
case 'rand':
|
||||||
case 'none':
|
case 'none':
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -349,8 +331,7 @@ class slider extends common
|
|||||||
'speed' => $speed,
|
'speed' => $speed,
|
||||||
'timeout' => $timeout,
|
'timeout' => $timeout,
|
||||||
'namespace' => $this->getInput('sliderThemeNameSpace', helper::FILTER_STRING_SHORT),
|
'namespace' => $this->getInput('sliderThemeNameSpace', helper::FILTER_STRING_SHORT),
|
||||||
'sort' => $this->getInput('sliderThemeSort', helper::FILTER_STRING_SHORT),
|
'sort' => $this->getInput('sliderThemeTri', helper::FILTER_STRING_SHORT),
|
||||||
'caption' => $this->getInput('sliderThemeCaption', helper::FILTER_STRING_SHORT),
|
|
||||||
],
|
],
|
||||||
'directory' => $this->getData(['module', $this->getUrl(0), 'directory']),
|
'directory' => $this->getData(['module', $this->getUrl(0), 'directory']),
|
||||||
'legends' => $this->getData(['module', $this->getUrl(0), 'legends']),
|
'legends' => $this->getData(['module', $this->getUrl(0), 'legends']),
|
||||||
@ -372,7 +353,7 @@ class slider extends common
|
|||||||
// Sélection largeur de l'écran
|
// Sélection largeur de l'écran
|
||||||
self::$selectedMaxwidth = array_key_exists($this->getData(['module', $this->getUrl(0), 'theme', 'maxWidth']), self::$screenWidth)
|
self::$selectedMaxwidth = array_key_exists($this->getData(['module', $this->getUrl(0), 'theme', 'maxWidth']), self::$screenWidth)
|
||||||
? $this->getData(['module', $this->getUrl(0), 'theme', 'maxWidth'])
|
? $this->getData(['module', $this->getUrl(0), 'theme', 'maxWidth'])
|
||||||
: 640;
|
: 0;
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -397,18 +378,23 @@ class slider extends common
|
|||||||
if ($fileInfos->isDot() === false and $fileInfos->isFile() and @getimagesize($fileInfos->getPathname())) {
|
if ($fileInfos->isDot() === false and $fileInfos->isFile() and @getimagesize($fileInfos->getPathname())) {
|
||||||
self::$pictures[$directory . '/' . $fileInfos->getFilename()] = [
|
self::$pictures[$directory . '/' . $fileInfos->getFilename()] = [
|
||||||
'legend' => $this->getData(['module', $galleryId, 'legends', str_replace('.', '', $fileInfos->getFilename())]),
|
'legend' => $this->getData(['module', $galleryId, 'legends', str_replace('.', '', $fileInfos->getFilename())]),
|
||||||
'uri' => $this->getData(['module', $galleryId, 'uri', str_replace('.', '', $fileInfos->getFilename())])
|
'uri' => $this->getData(['module', $galleryId, 'uri', str_replace('.', '', $fileInfos->getFilename())]),
|
||||||
];
|
];
|
||||||
|
//self::$pictures['uri'][$directory . '/' . $fileInfos->getFilename()] = ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tri des images par ordre alphabétique, alphabétique inverse, aléatoire ou pas
|
// Tri des images par ordre alphabétique, alphabétique inverse, aléatoire ou pas
|
||||||
switch ($this->getData(['module', $this->getUrl(0), 'theme', 'sort'])) {
|
switch ($this->getData(['module', $galleryId, 'theme', 'sort'])) {
|
||||||
case 'asc':
|
case 'desc':
|
||||||
krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
|
uksort(self::$pictures, function ($a, $b) {
|
||||||
|
return strcmp(basename($a), basename($b));
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case 'dsc':
|
case 'asc':
|
||||||
ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
|
uksort(self::$pictures, function ($a, $b) {
|
||||||
|
return strcmp(basename($b), basename($a));
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case 'rand':
|
case 'rand':
|
||||||
// Récupérer les clés du tableau
|
// Récupérer les clés du tableau
|
||||||
@ -424,6 +410,7 @@ class slider extends common
|
|||||||
self::$pictures = $shuffledPictures;
|
self::$pictures = $shuffledPictures;
|
||||||
break;
|
break;
|
||||||
case 'none':
|
case 'none':
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -461,6 +448,7 @@ class slider extends common
|
|||||||
private function init()
|
private function init()
|
||||||
{
|
{
|
||||||
if (is_null($this->getData(['module', $this->getUrl(0), 'theme']))) {
|
if (is_null($this->getData(['module', $this->getUrl(0), 'theme']))) {
|
||||||
|
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module',
|
'module',
|
||||||
$this->getUrl(0),
|
$this->getUrl(0),
|
||||||
|
@ -15,236 +15,222 @@
|
|||||||
/*! http://responsiveslides.com v1.55 by @arielsalminen */
|
/*! http://responsiveslides.com v1.55 by @arielsalminen */
|
||||||
|
|
||||||
.rslides {
|
.rslides {
|
||||||
position: relative;
|
position: relative;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rslides li {
|
.rslides li {
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: none;
|
display: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rslides li:first-child {
|
.rslides li:first-child {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rslides img {
|
.rslides img {
|
||||||
display: block;
|
display: block;
|
||||||
height: auto;
|
height: auto;
|
||||||
float: left;
|
float: left;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#wrapper {
|
#wrapper {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-bottom: 50px;
|
margin-bottom: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rslides h1 {
|
h1 {
|
||||||
font: 600 28px/36px sans-serif;
|
font: 600 28px/36px sans-serif;
|
||||||
margin: 50px 0;
|
margin: 50px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rslides h3 {
|
h3 {
|
||||||
font: 600 18px/24px sans-serif;
|
font: 600 18px/24px sans-serif;
|
||||||
color: #999;
|
color: #999;
|
||||||
margin: 0 0 20px;
|
margin: 0 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rslides a {
|
a {
|
||||||
color: #222;
|
color: #222;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rslides {
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
.rslides {
|
.rslides_container {
|
||||||
margin: 0 auto;
|
margin-bottom: 50px;
|
||||||
}
|
position: relative;
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.rslides_container {
|
.centered-btns_nav {
|
||||||
margin-bottom: 50px;
|
z-index: 3;
|
||||||
position: relative;
|
position: absolute;
|
||||||
float: left;
|
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||||
width: 100%;
|
top: 50%;
|
||||||
}
|
left: 0;
|
||||||
|
opacity: 0.7;
|
||||||
|
text-indent: -9999px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-decoration: none;
|
||||||
|
height: 61px;
|
||||||
|
width: 38px;
|
||||||
|
background: transparent url("module/slider/view/index/black.gif") no-repeat left top;
|
||||||
|
margin-top: -45px;
|
||||||
|
}
|
||||||
|
|
||||||
.centered-btns_nav {
|
.centered-btns_nav:active {
|
||||||
z-index: 3;
|
opacity: 1.0;
|
||||||
position: absolute;
|
}
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
||||||
top: 50%;
|
|
||||||
left: 0;
|
|
||||||
opacity: 0.7;
|
|
||||||
text-indent: -9999px;
|
|
||||||
overflow: hidden;
|
|
||||||
text-decoration: none;
|
|
||||||
height: 61px;
|
|
||||||
width: 38px;
|
|
||||||
background: transparent url("module/slider/view/index/black.gif") no-repeat left top;
|
|
||||||
margin-top: -45px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.centered-btns_nav:active {
|
.centered-btns_nav.next {
|
||||||
opacity: 1.0;
|
left: auto;
|
||||||
}
|
background-position: right top;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.centered-btns_nav.next {
|
.transparent-btns_nav {
|
||||||
left: auto;
|
z-index: 3;
|
||||||
background-position: right top;
|
position: absolute;
|
||||||
right: 0;
|
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||||
}
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
display: block;
|
||||||
|
background: #fff; /* Fix for IE6-9 */
|
||||||
|
opacity: 0;
|
||||||
|
filter: alpha(opacity=1);
|
||||||
|
width: 48%;
|
||||||
|
text-indent: -9999px;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 91%;
|
||||||
|
}
|
||||||
|
|
||||||
.transparent-btns_nav {
|
.transparent-btns_nav.next {
|
||||||
z-index: 3;
|
left: auto;
|
||||||
position: absolute;
|
right: 0;
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
}
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
display: block;
|
|
||||||
background: #fff;
|
|
||||||
/* Fix for IE6-9 */
|
|
||||||
opacity: 0;
|
|
||||||
filter: alpha(opacity=1);
|
|
||||||
width: 48%;
|
|
||||||
text-indent: -9999px;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 91%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transparent-btns_nav.next {
|
.large-btns_nav {
|
||||||
left: auto;
|
z-index: 3;
|
||||||
right: 0;
|
position: absolute;
|
||||||
}
|
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||||
|
opacity: 0.6;
|
||||||
|
text-indent: -9999px;
|
||||||
|
overflow: hidden;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
background: #000 url("module/slider/view/index/black.gif") no-repeat left 50%;
|
||||||
|
width: 38px;
|
||||||
|
}
|
||||||
|
|
||||||
.large-btns_nav {
|
.large-btns_nav:active {
|
||||||
z-index: 3;
|
opacity: 1.0;
|
||||||
position: absolute;
|
}
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
||||||
opacity: 0.6;
|
|
||||||
text-indent: -9999px;
|
|
||||||
overflow: hidden;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
background: #000 url("module/slider/view/index/black.gif") no-repeat left 50%;
|
|
||||||
width: 38px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.large-btns_nav:active {
|
.large-btns_nav.next {
|
||||||
opacity: 1.0;
|
left: auto;
|
||||||
}
|
background-position: right 50%;
|
||||||
|
right: 0;
|
||||||
.large-btns_nav.next {
|
}
|
||||||
left: auto;
|
|
||||||
background-position: right 50%;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Boutons blancs
|
Boutons blancs
|
||||||
*/
|
*/
|
||||||
.white-btns_nav {
|
.white-btns_nav {
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
text-indent: -9999px;
|
text-indent: -9999px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
background: transparent url("module/slider/view/index/white.gif") no-repeat left 50%;
|
background: transparent url("module/slider/view/index/white.gif") no-repeat left 50%;
|
||||||
width: 38px;
|
width: 38px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.white-btns_nav:active {
|
.white-btns_nav:active {
|
||||||
opacity: 1.0;
|
opacity: 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.white-btns_nav.next {
|
.white-btns_nav.next {
|
||||||
left: auto;
|
left: auto;
|
||||||
background-position: right 50%;
|
background-position: right 50%;
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Boutons blancs
|
Boutons blancs
|
||||||
*/
|
*/
|
||||||
.centered-btns_nav:focus,
|
.centered-btns_nav:focus,
|
||||||
.transparent-btns_nav:focus,
|
.transparent-btns_nav:focus,
|
||||||
.large-btns_nav:focus,
|
.large-btns_nav:focus,
|
||||||
.white-btns_nav:focus {
|
.white-btns_nav:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.centered-btns_tabs,
|
.centered-btns_tabs,
|
||||||
.transparent-btns_tabs,
|
.transparent-btns_tabs,
|
||||||
.large-btns_tabs,
|
.large-btns_tabs,
|
||||||
.white-btns_tabs {
|
.white-btns_tabs {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 0px;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.centered-btns_tabs li,
|
.centered-btns_tabs li,
|
||||||
.transparent-btns_tabs li,
|
.transparent-btns_tabs li,
|
||||||
.large-btns_tabs li,
|
.large-btns_tabs li,
|
||||||
.white-btns_tabs li {
|
.white-btns_tabs li {
|
||||||
display: inline;
|
display: inline;
|
||||||
float: none;
|
float: none;
|
||||||
margin-right: 5px;
|
_float: left;
|
||||||
}
|
*float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
.centered-btns_tabs a,
|
.centered-btns_tabs a,
|
||||||
.transparent-btns_tabs a,
|
.transparent-btns_tabs a,
|
||||||
.large-btns_tabs a,
|
.large-btns_tabs a,
|
||||||
.white-btns_tabs a {
|
.white-btns_tabs a {
|
||||||
text-indent: -9999px;
|
text-indent: -9999px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
-webkit-border-radius: 15px;
|
-webkit-border-radius: 15px;
|
||||||
-moz-border-radius: 15px;
|
-moz-border-radius: 15px;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
background: #ccc;
|
background: #ccc;
|
||||||
background: rgba(0, 0, 0, .2);
|
background: rgba(0, 0, 0, .2);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
/*display: block;*/
|
_display: block;
|
||||||
|
*display: block;
|
||||||
-webkit-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
|
-webkit-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
|
||||||
-moz-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
|
-moz-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
|
||||||
box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
|
box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
|
||||||
width: 9px;
|
width: 9px;
|
||||||
height: 9px;
|
height: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.centered-btns_here a,
|
.centered-btns_here a,
|
||||||
.transparent-btns_here a,
|
.transparent-btns_here a,
|
||||||
.large-btns_here a,
|
.large-btns_here a,
|
||||||
.white-btns_here a {
|
.white-btns_here a {
|
||||||
background: #222;
|
background: #222;
|
||||||
background: rgba(0, 0, 0, .8);
|
background: rgba(0,0,0, .8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.caption {
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
padding: 15px;
|
|
||||||
text-align: center;
|
|
||||||
background: #000;
|
|
||||||
background: rgba(0,0,0, .8);
|
|
||||||
color: #fff;
|
|
||||||
margin: inherit;
|
|
||||||
}
|
|
||||||
|
|
@ -36,7 +36,22 @@
|
|||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
var maxwidth = "<?php echo $this->getData(['module', $this->getUrl(0),'theme', 'maxWidth']); ?>";
|
var maxwidth = "<?php echo $this->getData(['module', $this->getUrl(0),'theme', 'maxWidth']); ?>";
|
||||||
|
var screenwidth = "<?php echo intval(trim($this->getData(['theme', 'site', 'width']), 'px')); ?>";
|
||||||
var sort = "<?php echo $this->getData(['module', $this->getUrl(0),'theme', 'sort']); ?>";
|
var sort = "<?php echo $this->getData(['module', $this->getUrl(0),'theme', 'sort']); ?>";
|
||||||
|
// Réduction de la taille maximale selon la largeur de la section
|
||||||
|
|
||||||
|
// Limiter à la largeur de l'écran
|
||||||
|
if (
|
||||||
|
screenwidth !== '100%' &&
|
||||||
|
maxwidth > screenwidth
|
||||||
|
) {
|
||||||
|
mawwidth = screenwidth - 40;
|
||||||
|
}
|
||||||
|
// Largeur 100%
|
||||||
|
maxwidth = $("#site").width();
|
||||||
|
|
||||||
|
|
||||||
|
console.log(maxwidth);
|
||||||
$("#wrapper").css('width', "100%");
|
$("#wrapper").css('width', "100%");
|
||||||
$(function () {
|
$(function () {
|
||||||
$("#sliders").responsiveSlides({
|
$("#sliders").responsiveSlides({
|
||||||
|
@ -2,17 +2,15 @@
|
|||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
<div class="rslides_container">
|
<div class="rslides_container">
|
||||||
<ul class="rslides" id="sliders">
|
<ul class="rslides" id="sliders">
|
||||||
|
<!--id="<?php echo $this->getData(['module', $this->getUrl(0), 'config', 'boutonsVisibles']); ?>"> -->
|
||||||
<?php foreach ($module::$pictures as $picture => $options): ?>
|
<?php foreach ($module::$pictures as $picture => $options): ?>
|
||||||
<?php if (!empty($options['uri'])): ?>
|
<?php if (!empty($options['uri'])): ?>
|
||||||
<a href="<?php echo helper::baseUrl() . $options['uri']; ?>">
|
<a href="<?php echo helper::baseUrl() . $options['uri']; ?>">
|
||||||
<?php endif; ?>
|
|
||||||
<li>
|
|
||||||
<img src="<?php echo helper::baseUrl(false) . $picture; ?>" alt="<?php echo $options['legend']; ?>">
|
|
||||||
<?php if ($this->getData(['module', $this->getUrl(0), 'theme', 'caption']) === 'bottom'): ?>
|
|
||||||
<p class="caption"><?php echo $options['legend']; ?></p>
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</li>
|
<li>
|
||||||
<?php if (!empty($options['uri'])): ?>
|
<img src="<?php echo helper::baseUrl(false) . $picture; ?>" alt="<?php echo $options['legend']; ?>">
|
||||||
|
</li>
|
||||||
|
<?php if (!empty($options['uri'])): ?>
|
||||||
</a>
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
@ -53,33 +53,26 @@
|
|||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Navigation</h4>
|
<h4>Navigation</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3">
|
<div class="col4">
|
||||||
<?php echo template::select('sliderThemeSort', $module::$sort, [
|
<?php echo template::select('sliderThemeTri', $module::$sort, [
|
||||||
'label' => 'Tri des images',
|
'label' => 'Tri des images',
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'sort'])
|
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'sort'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col4">
|
||||||
<?php echo template::select('sliderThemePager', $module::$pager, [
|
<?php echo template::select('sliderThemePager', $module::$pager, [
|
||||||
'label' => 'Puces horizontales',
|
'label' => 'Puces horizontales',
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'pager']),
|
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'pager']),
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
<div class="col4">
|
||||||
<?php echo template::select('sliderThemeNameSpace', $module::$namespace, [
|
<?php echo template::select('sliderThemeNameSpace', $module::$namespace, [
|
||||||
'label' => 'Boutons latéraux',
|
'label' => 'Boutons latéraux',
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'namespace'])
|
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'namespace'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col3">
|
|
||||||
<?php echo template::select('sliderThemeCaption', $module::$caption, [
|
|
||||||
'label' => 'Légendes',
|
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'caption'])
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
@ -1,35 +1,35 @@
|
|||||||
|
|
||||||
<?php echo template::formOpen('galleryUpdateForm'); ?>
|
<?php echo template::formOpen('galleryUpdateForm'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('galleryUpdateBack', [
|
<?php echo template::button('galleryUpdateBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset9">
|
||||||
|
<?php echo template::submit('galleryUpdateSubmit'); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset9">
|
<div class="row">
|
||||||
<?php echo template::submit('galleryUpdateSubmit'); ?>
|
<div class="col12">
|
||||||
</div>
|
<div class="block">
|
||||||
</div>
|
<h4>Dossier de la galerie</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<?php echo template::hidden('galleryUpdateDirectoryOld', [
|
||||||
<h4>Dossier de la galerie</h4>
|
'noDirty' => true, // Désactivé à cause des modifications en ajax
|
||||||
<div class="row">
|
]); ?>
|
||||||
<div class="col12">
|
<?php echo template::select('galleryUpdateDirectory', [], [
|
||||||
<?php echo template::hidden('galleryUpdateDirectoryOld', [
|
'label' => 'Dossier cible',
|
||||||
'noDirty' => true, // Désactivé à cause des modifications en ajax
|
'noDirty' => true, // Désactivé à cause des modifications en ajax,
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), 'directory']),
|
]); ?>
|
||||||
]); ?>
|
</div>
|
||||||
<?php echo template::select('galleryUpdateDirectory', [], [
|
|
||||||
'label' => 'Dossier cible',
|
|
||||||
'noDirty' => true, // Désactivé à cause des modifications en ajax,
|
|
||||||
]); ?>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
||||||
<div class="moduleVersion">Module Slider version n°
|
<div class="moduleVersion">Module Slider version n°
|
||||||
<?php echo $module::VERSION; ?>
|
<?php echo $module::VERSION; ?>
|
||||||
|
60
tmplog.txt
60
tmplog.txt
@ -1,60 +0,0 @@
|
|||||||
[JsonDb][17:33:28.696300]--site/data/user.json
|
|
||||||
[JsonDb][17:33:30.923100]--site/data/config.json
|
|
||||||
[JsonDb][17:33:39.929400]--site/data/fr_FR/page.json
|
|
||||||
[SecurePut][17:33:39.932300]--site/data/fr_FR/content/accueil.html
|
|
||||||
[SecurePut][17:33:39.935700]--site/data/fr_FR/content/enfant.html
|
|
||||||
[SecurePut][17:33:39.938700]--site/data/fr_FR/content/privee.html
|
|
||||||
[SecurePut][17:33:39.940500]--site/data/fr_FR/content/mise-en-page.html
|
|
||||||
[SecurePut][17:33:39.942300]--site/data/fr_FR/content/menu-lateral.html
|
|
||||||
[SecurePut][17:33:39.944900]--site/data/fr_FR/content/blog.html
|
|
||||||
[SecurePut][17:33:39.947400]--site/data/fr_FR/content/galeries.html
|
|
||||||
[SecurePut][17:33:39.949500]--site/data/fr_FR/content/site-de-zwii.html
|
|
||||||
[SecurePut][17:33:39.952400]--site/data/fr_FR/content/contact.html
|
|
||||||
[SecurePut][17:33:39.954800]--site/data/fr_FR/content/barre.html
|
|
||||||
[SecurePut][17:33:39.957200]--site/data/fr_FR/content/barrelateraleavecmenu.html
|
|
||||||
[SecurePut][17:33:39.960100]--site/data/fr_FR/content/mentions-legales.html
|
|
||||||
[SecurePut][17:33:39.962300]--site/data/fr_FR/content/erreur302.html
|
|
||||||
[SecurePut][17:33:39.964600]--site/data/fr_FR/content/erreur403.html
|
|
||||||
[SecurePut][17:33:39.967200]--site/data/fr_FR/content/erreur404.html
|
|
||||||
[SecurePut][17:33:39.969200]--site/data/fr_FR/content/recherche.html
|
|
||||||
[JsonDb][17:33:39.971800]--site/data/fr_FR/module.json
|
|
||||||
[SecurePut][17:33:39.975600]--site/data/fr_FR/content/accueil.html
|
|
||||||
[JsonDb][17:33:39.979800]--site/data/fr_FR/locale.json
|
|
||||||
[SecurePut][17:33:39.982100]--site/data/fr_FR/content/accueil.html
|
|
||||||
[JsonDb][17:33:40.236800]--site/data/user.json
|
|
||||||
[JsonDb][17:33:41.108200]--site/data/config.json
|
|
||||||
[JsonDb][16:39:49.897300]--site/data/user.json
|
|
||||||
[JsonDb][16:40:24.088000]--site/data/user.json
|
|
||||||
[JsonDb][16:40:25.205100]--site/data/user.json
|
|
||||||
[JsonDb][16:40:25.222500]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.225500]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.228800]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.232500]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.272700]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.305900]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.309400]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.347700]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.380400]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.425500]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.467600]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:25.508100]--site/data/fr_FR/module.json
|
|
||||||
[JsonDb][16:40:26.909300]--site/data/user.json
|
|
||||||
[JsonDb][16:40:28.342200]--site/data/user.json
|
|
||||||
[JsonDb][16:40:35.539700]--site/data/user.json
|
|
||||||
[JsonDb][16:46:38.876100]--site/data/user.json
|
|
||||||
[JsonDb][17:00:43.742000]--site/data/user.json
|
|
||||||
[SecurePut][17:00:43.757100]--site/data/font/font.html
|
|
||||||
[SecurePut][17:00:43.759700]--site/data/font/font.css
|
|
||||||
[JsonDb][17:00:45.950500]--site/data/user.json
|
|
||||||
[SecurePut][17:00:45.982300]--site/data/font/font.html
|
|
||||||
[SecurePut][17:00:45.984900]--site/data/font/font.css
|
|
||||||
[JsonDb][17:00:50.370800]--site/data/user.json
|
|
||||||
[SecurePut][17:00:50.386000]--site/data/font/font.html
|
|
||||||
[SecurePut][17:00:50.388700]--site/data/font/font.css
|
|
||||||
[JsonDb][17:00:51.923600]--site/data/user.json
|
|
||||||
[SecurePut][17:00:51.932700]--site/data/font/font.html
|
|
||||||
[SecurePut][17:00:51.935700]--site/data/font/font.css
|
|
||||||
[JsonDb][17:00:54.354900]--site/data/user.json
|
|
||||||
[JsonDb][17:00:57.097400]--site/data/user.json
|
|
||||||
[JsonDb][17:00:59.142200]--site/data/user.json
|
|
||||||
[JsonDb][17:01:01.703400]--site/data/user.json
|
|
Loading…
Reference in New Issue
Block a user