forked from ZwiiCMS-Team/ZwiiCampus
Compare commits
No commits in common. "master" and "1.9usersdelete" have entirely different histories.
master
...
1.9usersde
@ -32,13 +32,5 @@ Options -Indexes
|
|||||||
Options -MultiViews
|
Options -MultiViews
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
# Enlever le slash final des URL
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-d
|
|
||||||
RewriteCond %{REQUEST_URI} ^(.+)/$
|
|
||||||
RewriteRule ^ %1 [R=301,L]
|
|
||||||
|
|
||||||
# ne pas supprimer la ligne URL rewriting !
|
# ne pas supprimer la ligne URL rewriting !
|
||||||
|
|
||||||
# URL rewriting
|
# URL rewriting
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# ZwiiCampus 1.10.04
|
# ZwiiCampus 1.7.09
|
||||||
|
|
||||||
ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé.
|
ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé.
|
||||||
|
|
||||||
|
@ -338,12 +338,13 @@ class helper
|
|||||||
{
|
{
|
||||||
// N'interroge que le serveur Apache
|
// N'interroge que le serveur Apache
|
||||||
if (strpos($_SERVER["SERVER_SOFTWARE"], 'Apache') > 0) {
|
if (strpos($_SERVER["SERVER_SOFTWARE"], 'Apache') > 0) {
|
||||||
self::$rewriteStatus = false;
|
self::$rewriteStatus === false;
|
||||||
} else {
|
} elseif (self::$rewriteStatus === null) {
|
||||||
// Ouvre et scinde le fichier .htaccess
|
// Ouvre et scinde le fichier .htaccess
|
||||||
$htaccess = explode('# URL rewriting', file_get_contents('.htaccess'));
|
$htaccess = explode('# URL rewriting', file_get_contents('.htaccess'));
|
||||||
// Retourne un boolean en fonction du contenu de la partie réservée à l'URL rewriting
|
// Retourne un boolean en fonction du contenu de la partie réservée à l'URL rewriting
|
||||||
self::$rewriteStatus = (strpos($htaccess[1], 'RewriteEngine on') !== false);
|
//self::$rewriteStatus = (empty($htaccess[1]) === false);
|
||||||
|
self::$rewriteStatus = (strpos($htaccess[1], 'RewriteEngine on') > 0) ? true : false;
|
||||||
}
|
}
|
||||||
return self::$rewriteStatus;
|
return self::$rewriteStatus;
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,7 @@ class layout extends common
|
|||||||
}
|
}
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
echo '</section></main>';
|
echo '</main></section>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1001,7 +1001,7 @@ class layout extends common
|
|||||||
// Bouton Ajouter une page
|
// Bouton Ajouter une page
|
||||||
if ($this->getUser('permission', 'page', 'add')) {
|
if ($this->getUser('permission', 'page', 'add')) {
|
||||||
$leftItems .= '<li>' . template::ico('plus', [
|
$leftItems .= '<li>' . template::ico('plus', [
|
||||||
'href' => helper::baseUrl() . 'page/add/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/add',
|
||||||
'help' => 'Nouvelle page ou barre latérale'
|
'help' => 'Nouvelle page ou barre latérale'
|
||||||
]) . '</li>';
|
]) . '</li>';
|
||||||
}
|
}
|
||||||
@ -1016,53 +1016,46 @@ class layout extends common
|
|||||||
)
|
)
|
||||||
// Sur une page d'accueil
|
// Sur une page d'accueil
|
||||||
or $this->getUrl(0) === ''
|
or $this->getUrl(0) === ''
|
||||||
) {
|
) {
|
||||||
// Bouton Editer une page
|
// Bouton Editer une page
|
||||||
if (
|
if ($this->getUser('permission', 'page', 'edit')) {
|
||||||
$this->getUser('permission', 'page', 'edit')
|
$leftItems .= '<li>' . template::ico('pencil', [
|
||||||
and $this->geturl(1) !== 'edit'
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
) {
|
'help' => 'Éditer la page'
|
||||||
$leftItems .= '<li>' . template::ico('pencil', [
|
]) . '</li>';
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
|
||||||
'help' => 'Éditer la page'
|
|
||||||
]) . '</li>';
|
|
||||||
}
|
|
||||||
// Bouton Editer le module d'une page
|
|
||||||
if (
|
|
||||||
$this->getUser('permission', 'page', 'module')
|
|
||||||
and $this->geturl(1) !== 'edit'
|
|
||||||
and $this->getData(['page', $this->getUrl(0), 'moduleId'])
|
|
||||||
) {
|
|
||||||
$leftItems .= '<li>' . template::ico('gear', [
|
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
|
||||||
'help' => 'Module de la page'
|
|
||||||
]) . '</li>';
|
|
||||||
}
|
|
||||||
// Bouton dupliquer une page
|
|
||||||
if (
|
|
||||||
$this->getUser('permission', 'page', 'duplicate')
|
|
||||||
and $this->geturl(1) !== 'edit'
|
|
||||||
) {
|
|
||||||
$leftItems .= '<li>' . template::ico('clone', [
|
|
||||||
'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(0) . '/' . self::$siteContent,
|
|
||||||
'help' => 'Dupliquer la page'
|
|
||||||
])
|
|
||||||
. '</li>';
|
|
||||||
}
|
|
||||||
// Bouton Effacer une page
|
|
||||||
if (
|
|
||||||
$this->getUser('permission', 'page', 'delete')
|
|
||||||
and $this->geturl(1) !== 'edit'
|
|
||||||
|
|
||||||
) {
|
|
||||||
$leftItems .= '<li>' . template::ico('trash', [
|
|
||||||
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(0) . '/' . self::$siteContent,
|
|
||||||
'help' => 'Supprimer la page',
|
|
||||||
'id' => 'pageDelete'
|
|
||||||
])
|
|
||||||
. '</li>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// Bouton Editer le module d'une page
|
||||||
|
if (
|
||||||
|
$this->getUser('permission', 'page', 'module')
|
||||||
|
&& $this->getData(['page', $this->getUrl(0), 'moduleId'])
|
||||||
|
) {
|
||||||
|
$leftItems .= '<li>' . template::ico('gear', [
|
||||||
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
|
||||||
|
'help' => 'Module de la page'
|
||||||
|
]) . '</li>';
|
||||||
|
}
|
||||||
|
// Bouton dupliquer une page
|
||||||
|
if (
|
||||||
|
$this->getUser('permission', 'page', 'duplicate')
|
||||||
|
) {
|
||||||
|
$leftItems .= '<li>' . template::ico('clone', [
|
||||||
|
'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(0),
|
||||||
|
'help' => 'Dupliquer la page'
|
||||||
|
])
|
||||||
|
. '</li>';
|
||||||
|
}
|
||||||
|
// Bouton Effacer une page
|
||||||
|
if (
|
||||||
|
$this->getUser('permission', 'page', 'delete')
|
||||||
|
) {
|
||||||
|
$leftItems .= '<li>' . template::ico('trash', [
|
||||||
|
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(0),
|
||||||
|
'help' => 'Supprimer la page',
|
||||||
|
'id' => 'pageDelete'
|
||||||
|
])
|
||||||
|
. '</li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Items de droite
|
// Items de droite
|
||||||
$rightItems = '';
|
$rightItems = '';
|
||||||
|
@ -15,12 +15,12 @@ class core extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fuseau horaire
|
// Fuseau horaire
|
||||||
common::$timezone = $this->getData(['config', 'timezone']); // Utile pour transmettre le timezone à la classe helper
|
self::$timezone = $this->getData(['config', 'timezone']); // Utile pour transmettre le timezone à la classe helper
|
||||||
date_default_timezone_set(common::$timezone);
|
date_default_timezone_set(self::$timezone);
|
||||||
// Supprime les fichiers temporaires
|
// Supprime les fichiers temporaires
|
||||||
$lastClearTmp = mktime(0, 0, 0);
|
$lastClearTmp = mktime(0, 0, 0);
|
||||||
if ($lastClearTmp > $this->getData(['core', 'lastClearTmp']) + 86400) {
|
if ($lastClearTmp > $this->getData(['core', 'lastClearTmp']) + 86400) {
|
||||||
$iterator = new DirectoryIterator(common::TEMP_DIR);
|
$iterator = new DirectoryIterator(self::TEMP_DIR);
|
||||||
foreach ($iterator as $fileInfos) {
|
foreach ($iterator as $fileInfos) {
|
||||||
if (
|
if (
|
||||||
$fileInfos->isFile() &&
|
$fileInfos->isFile() &&
|
||||||
@ -43,11 +43,11 @@ class core extends common
|
|||||||
and $this->getData(['user']) // Pas de backup pendant l'installation
|
and $this->getData(['user']) // Pas de backup pendant l'installation
|
||||||
) {
|
) {
|
||||||
// Copie des fichier de données
|
// Copie des fichier de données
|
||||||
helper::autoBackup(common::BACKUP_DIR, ['backup', 'tmp', 'file']);
|
helper::autoBackup(self::BACKUP_DIR, ['backup', 'tmp', 'file']);
|
||||||
// Date du dernier backup
|
// Date du dernier backup
|
||||||
$this->setData(['core', 'lastBackup', $lastBackup]);
|
$this->setData(['core', 'lastBackup', $lastBackup]);
|
||||||
// Supprime les backups de plus de 30 jours
|
// Supprime les backups de plus de 30 jours
|
||||||
$iterator = new DirectoryIterator(common::BACKUP_DIR);
|
$iterator = new DirectoryIterator(self::BACKUP_DIR);
|
||||||
foreach ($iterator as $fileInfos) {
|
foreach ($iterator as $fileInfos) {
|
||||||
if (
|
if (
|
||||||
$fileInfos->isFile()
|
$fileInfos->isFile()
|
||||||
@ -60,23 +60,23 @@ class core extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Crée le fichier de personnalisation avancée
|
// Crée le fichier de personnalisation avancée
|
||||||
if (file_exists(common::DATA_DIR . 'custom.css') === false) {
|
if (file_exists(self::DATA_DIR . 'custom.css') === false) {
|
||||||
file_put_contents(common::DATA_DIR . 'custom.css', ('core/module/theme/resource/custom.css'));
|
file_put_contents(self::DATA_DIR . 'custom.css', ('core/module/theme/resource/custom.css'));
|
||||||
chmod(common::DATA_DIR . 'custom.css', 0755);
|
chmod(self::DATA_DIR . 'custom.css', 0755);
|
||||||
}
|
}
|
||||||
// Crée le fichier de personnalisation
|
// Crée le fichier de personnalisation
|
||||||
if (file_exists(common::DATA_DIR . common::$siteContent . '/theme.css') === false) {
|
if (file_exists(self::DATA_DIR . self::$siteContent . '/theme.css') === false) {
|
||||||
file_put_contents(common::DATA_DIR . common::$siteContent . '/theme.css', '');
|
file_put_contents(self::DATA_DIR . self::$siteContent . '/theme.css', '');
|
||||||
chmod(common::DATA_DIR . common::$siteContent . '/theme.css', 0755);
|
chmod(self::DATA_DIR . self::$siteContent . '/theme.css', 0755);
|
||||||
}
|
}
|
||||||
// Crée le fichier de personnalisation de l'administration
|
// Crée le fichier de personnalisation de l'administration
|
||||||
if (file_exists(common::DATA_DIR . 'admin.css') === false) {
|
if (file_exists(self::DATA_DIR . 'admin.css') === false) {
|
||||||
file_put_contents(common::DATA_DIR . 'admin.css', '');
|
file_put_contents(self::DATA_DIR . 'admin.css', '');
|
||||||
chmod(common::DATA_DIR . 'admin.css', 0755);
|
chmod(self::DATA_DIR . 'admin.css', 0755);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check la version rafraichissement du theme
|
// Check la version rafraichissement du theme
|
||||||
$cssVersion = preg_split('/\*+/', file_get_contents(common::DATA_DIR . common::$siteContent . '/theme.css'));
|
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR . self::$siteContent . '/theme.css'));
|
||||||
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) {
|
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) {
|
||||||
// Version
|
// Version
|
||||||
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
|
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
|
||||||
@ -92,7 +92,7 @@ class core extends common
|
|||||||
// Fonts disponibles
|
// Fonts disponibles
|
||||||
$fontsAvailable['files'] = $this->getData(['font', 'files']);
|
$fontsAvailable['files'] = $this->getData(['font', 'files']);
|
||||||
$fontsAvailable['imported'] = $this->getData(['font', 'imported']);
|
$fontsAvailable['imported'] = $this->getData(['font', 'imported']);
|
||||||
$fontsAvailable['websafe'] = common::$fontsWebSafe;
|
$fontsAvailable['websafe'] = self::$fontsWebSafe;
|
||||||
|
|
||||||
// Fontes installées
|
// Fontes installées
|
||||||
$fonts = [
|
$fonts = [
|
||||||
@ -273,7 +273,7 @@ class core extends common
|
|||||||
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
|
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
|
||||||
|
|
||||||
// Enregistre la personnalisation
|
// Enregistre la personnalisation
|
||||||
file_put_contents(common::DATA_DIR . common::$siteContent . '/theme.css', $css);
|
file_put_contents(self::DATA_DIR . self::$siteContent . '/theme.css', $css);
|
||||||
|
|
||||||
// Effacer le cache pour tenir compte de la couleur de fond TinyMCE
|
// Effacer le cache pour tenir compte de la couleur de fond TinyMCE
|
||||||
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
|
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
|
||||||
@ -284,7 +284,7 @@ class core extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check la version rafraichissement du theme admin
|
// Check la version rafraichissement du theme admin
|
||||||
$cssVersion = preg_split('/\*+/', file_get_contents(common::DATA_DIR . 'admin.css'));
|
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR . 'admin.css'));
|
||||||
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
|
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
|
||||||
|
|
||||||
// Version
|
// Version
|
||||||
@ -293,7 +293,7 @@ class core extends common
|
|||||||
// Fonts disponibles
|
// Fonts disponibles
|
||||||
$fontsAvailable['files'] = $this->getData(['font', 'files']);
|
$fontsAvailable['files'] = $this->getData(['font', 'files']);
|
||||||
$fontsAvailable['imported'] = $this->getData(['font', 'imported']);
|
$fontsAvailable['imported'] = $this->getData(['font', 'imported']);
|
||||||
$fontsAvailable['websafe'] = common::$fontsWebSafe;
|
$fontsAvailable['websafe'] = self::$fontsWebSafe;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Import des polices de caractères
|
* Import des polices de caractères
|
||||||
@ -368,7 +368,7 @@ class core extends common
|
|||||||
// Bordure du contour TinyMCE
|
// Bordure du contour TinyMCE
|
||||||
$css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}';
|
$css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}';
|
||||||
// Enregistre la personnalisation
|
// Enregistre la personnalisation
|
||||||
file_put_contents(common::DATA_DIR . 'admin.css', $css);
|
file_put_contents(self::DATA_DIR . 'admin.css', $css);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -384,8 +384,8 @@ class core extends common
|
|||||||
require 'core/module/' . $classPath;
|
require 'core/module/' . $classPath;
|
||||||
}
|
}
|
||||||
// Module
|
// Module
|
||||||
elseif (is_readable(common::MODULE_DIR . $classPath)) {
|
elseif (is_readable(self::MODULE_DIR . $classPath)) {
|
||||||
require common::MODULE_DIR . $classPath;
|
require self::MODULE_DIR . $classPath;
|
||||||
}
|
}
|
||||||
// Librairie
|
// Librairie
|
||||||
elseif (is_readable('core/vendor/' . $classPath)) {
|
elseif (is_readable('core/vendor/' . $classPath)) {
|
||||||
@ -414,21 +414,29 @@ class core extends common
|
|||||||
// Sauvegarde la dernière page visitée par l'utilisateur connecté et enregistre l'historique des consultations
|
// Sauvegarde la dernière page visitée par l'utilisateur connecté et enregistre l'historique des consultations
|
||||||
if (
|
if (
|
||||||
$this->getUser('id')
|
$this->getUser('id')
|
||||||
&& common::$siteContent !== 'home'
|
&& self::$siteContent !== 'home'
|
||||||
&& in_array($this->getUrl(0), array_keys($this->getData(['page'])))
|
&& in_array($this->getUrl(0), array_keys($this->getData(['page'])))
|
||||||
// Le userId n'est pas celui d'un admis ni le prof du contenu
|
// Le userId n'est pas celui d'un admis ni le prof du contenu
|
||||||
&& (
|
&& (
|
||||||
$this->getUser('group') < common::GROUP_ADMIN
|
$this->getUser('group') < self::GROUP_ADMIN
|
||||||
|| $this->getUser('id') !== $this->getData(['course', common::$siteContent, 'author'])
|
|| $this->getUser('id') !== $this->getData(['course', self::$siteContent, 'author'])
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
// Stocke l'historique des pages vues
|
||||||
|
/*
|
||||||
|
$data = is_array($this->getData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0)]))
|
||||||
|
? array_merge([time()], $this->getData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0)]))
|
||||||
|
: [time()];
|
||||||
|
|
||||||
|
$this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0), $data]);
|
||||||
|
*/
|
||||||
// Stocke la dernière page vue et sa date de consultation
|
// Stocke la dernière page vue et sa date de consultation
|
||||||
$this->setData(['enrolment', common::$siteContent, $this->getUser('id'), 'lastPageView', $this->getUrl(0)]);
|
$this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'lastPageView', $this->getUrl(0)]);
|
||||||
$this->setData(['enrolment', common::$siteContent, $this->getUser('id'), 'datePageView', time()]);
|
$this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'datePageView', time()]);
|
||||||
|
|
||||||
// Stocke le rapport en CSV
|
// Stocke le rapport en CSV
|
||||||
$file = fopen(common::DATA_DIR . common::$siteContent . '/report.csv', 'a+');
|
$file = fopen(self::DATA_DIR . self::$siteContent . '/report.csv', 'a+');
|
||||||
fputcsv($file, [$this->getUser('id'), $this->getUrl(0), time()], ';');
|
fputcsv($file, [ $this->getUser('id'), $this->getUrl(0) ,time()], ';');
|
||||||
fclose($file);
|
fclose($file);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -439,7 +447,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->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and ($this->getUser('group') === common::GROUP_BANNED
|
and ($this->getUser('group') === self::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)
|
||||||
)
|
)
|
||||||
@ -454,7 +462,7 @@ class core extends common
|
|||||||
and $this->getUrl(1) !== 'login'
|
and $this->getUrl(1) !== 'login'
|
||||||
and ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
and ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') < common::GROUP_ADMIN
|
and $this->getUser('group') < self::GROUP_ADMIN
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -467,11 +475,31 @@ class core extends common
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pour éviter une 404 sur une langue étrangère, bascule dans la langue correcte.
|
||||||
|
if (is_null($this->getData(['page', $this->getUrl(0)]))) {
|
||||||
|
foreach ($this->getData(['course']) as $key => $value) {;
|
||||||
|
if (
|
||||||
|
is_dir(self::DATA_DIR . $key) &&
|
||||||
|
file_exists(self::DATA_DIR . $key . '/page.json')
|
||||||
|
) {
|
||||||
|
$pagesId = json_decode(file_get_contents(self::DATA_DIR . $key . '/page.json'), true);
|
||||||
|
if (
|
||||||
|
is_array($pagesId['page']) &&
|
||||||
|
array_key_exists($this->getUrl(0), $pagesId['page'])
|
||||||
|
) {
|
||||||
|
//$_SESSION['ZWII_SITE_CONTENT'] = $key;
|
||||||
|
header('Refresh:0; url=' . helper::baseUrl() . 'course/swap/' . $key . '/' . $this->getUrl(0));
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check l'accès à la page
|
// Check l'accès à la page
|
||||||
$access = null;
|
$access = null;
|
||||||
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']) === self::GROUP_VISITOR
|
||||||
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
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
|
||||||
@ -492,19 +520,11 @@ class core extends common
|
|||||||
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
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->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
and $this->getUser('group') < common::GROUP_EDITOR
|
and $this->getUser('group') < self::GROUP_EDITOR
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$access = false;
|
$access = false;
|
||||||
}
|
}
|
||||||
// Lève une erreur si l'url est celle d'une page avec des éléments surnuméraires https://www.site.fr/page/truc
|
|
||||||
if (
|
|
||||||
array_key_exists($this->getUrl(0), $this->getData(['page']))
|
|
||||||
and $this->getUrl(1)
|
|
||||||
and $this->getData(['page', $this->getUrl(0), 'moduleId']) === ''
|
|
||||||
) {
|
|
||||||
$access = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -526,9 +546,9 @@ class core extends common
|
|||||||
$this->getUser('id') &&
|
$this->getUser('id') &&
|
||||||
$userId !== $this->getUser('id') &&
|
$userId !== $this->getUser('id') &&
|
||||||
$this->getData(['user', $userId, 'accessUrl']) === $this->getUrl() &&
|
$this->getData(['user', $userId, 'accessUrl']) === $this->getUrl() &&
|
||||||
array_intersect($t, common::$concurrentAccess) &&
|
array_intersect($t, self::$concurrentAccess) &&
|
||||||
//array_intersect($t, common::$accessExclude) !== false &&
|
//array_intersect($t, self::$accessExclude) !== false &&
|
||||||
time() < $this->getData(['user', $userId, 'accessTimer']) + common::ACCESS_TIMER
|
time() < $this->getData(['user', $userId, 'accessTimer']) + self::ACCESS_TIMER
|
||||||
) {
|
) {
|
||||||
$access = false;
|
$access = false;
|
||||||
$accessInfo['userName'] = $this->getData(['user', $userId, 'lastname']) . ' ' . $this->getData(['user', $userId, 'firstname']);
|
$accessInfo['userName'] = $this->getData(['user', $userId, 'lastname']) . ' ' . $this->getData(['user', $userId, 'firstname']);
|
||||||
@ -565,10 +585,10 @@ class core extends common
|
|||||||
$inlineScript[] = $this->getData(['page', $this->getUrl(0), 'js']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'js']);
|
$inlineScript[] = $this->getData(['page', $this->getUrl(0), 'js']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'js']);
|
||||||
|
|
||||||
// Importe le contenu, le CSS et le script des barres
|
// Importe le contenu, le CSS et le script des barres
|
||||||
$contentRight = $this->getData(['page', $this->getUrl(0), 'barRight']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barRight']), common::$siteContent) : '';
|
$contentRight = $this->getData(['page', $this->getUrl(0), 'barRight']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barRight']), self::$siteContent) : '';
|
||||||
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']);
|
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']);
|
||||||
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']);
|
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']);
|
||||||
$contentLeft = $this->getData(['page', $this->getUrl(0), 'barLeft']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barLeft']), common::$siteContent) : '';
|
$contentLeft = $this->getData(['page', $this->getUrl(0), 'barLeft']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barLeft']), self::$siteContent) : '';
|
||||||
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']);
|
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']);
|
||||||
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']);
|
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']);
|
||||||
|
|
||||||
@ -586,7 +606,7 @@ class core extends common
|
|||||||
|
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
'content' => $this->getPage($this->getUrl(0), common::$siteContent),
|
'content' => $this->getPage($this->getUrl(0), self::$siteContent),
|
||||||
'metaDescription' => $this->getData(['page', $this->getUrl(0), 'metaDescription']),
|
'metaDescription' => $this->getData(['page', $this->getUrl(0), 'metaDescription']),
|
||||||
'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']),
|
'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']),
|
||||||
'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']),
|
'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']),
|
||||||
@ -612,7 +632,7 @@ class core extends common
|
|||||||
: $this->getData(['page', $this->getUrl(0), 'metaDescription']);
|
: $this->getData(['page', $this->getUrl(0), 'metaDescription']);
|
||||||
|
|
||||||
// Importe le CSS de la page principale
|
// Importe le CSS de la page principale
|
||||||
$pageContent = $this->getPage($this->getUrl(0), common::$siteContent);
|
$pageContent = $this->getPage($this->getUrl(0), self::$siteContent);
|
||||||
|
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
@ -657,7 +677,7 @@ class core extends common
|
|||||||
$output = $module->output;
|
$output = $module->output;
|
||||||
// Check le groupe de l'utilisateur
|
// Check le groupe de l'utilisateur
|
||||||
if (
|
if (
|
||||||
($module::$actions[$action] === common::GROUP_VISITOR
|
($module::$actions[$action] === self::GROUP_VISITOR
|
||||||
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
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)
|
||||||
@ -670,10 +690,10 @@ class core extends common
|
|||||||
foreach ($_POST as $postId => $postValue) {
|
foreach ($_POST as $postId => $postValue) {
|
||||||
if (is_array($postValue)) {
|
if (is_array($postValue)) {
|
||||||
foreach ($postValue as $subPostId => $subPostValue) {
|
foreach ($postValue as $subPostId => $subPostValue) {
|
||||||
common::$inputBefore[$postId . '_' . $subPostId] = $subPostValue;
|
self::$inputBefore[$postId . '_' . $subPostId] = $subPostValue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
common::$inputBefore[$postId] = $postValue;
|
self::$inputBefore[$postId] = $postValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -713,9 +733,9 @@ class core extends common
|
|||||||
// Contenu par vue
|
// Contenu par vue
|
||||||
elseif ($output['view']) {
|
elseif ($output['view']) {
|
||||||
// Chemin en fonction d'un module du coeur ou d'un module
|
// Chemin en fonction d'un module du coeur ou d'un module
|
||||||
$modulePath = in_array($moduleId, common::$coreModuleIds) ? 'core/' : '';
|
$modulePath = in_array($moduleId, self::$coreModuleIds) ? 'core/' : '';
|
||||||
// CSS
|
// CSS
|
||||||
$stylePath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.css';
|
$stylePath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.css';
|
||||||
if (file_exists($stylePath)) {
|
if (file_exists($stylePath)) {
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'style' => file_get_contents($stylePath)
|
'style' => file_get_contents($stylePath)
|
||||||
@ -728,7 +748,7 @@ class core extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
// JS
|
// JS
|
||||||
$scriptPath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.js.php';
|
$scriptPath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.js.php';
|
||||||
if (file_exists($scriptPath)) {
|
if (file_exists($scriptPath)) {
|
||||||
ob_start();
|
ob_start();
|
||||||
include $scriptPath;
|
include $scriptPath;
|
||||||
@ -737,7 +757,7 @@ class core extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Vue
|
// Vue
|
||||||
$viewPath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.php';
|
$viewPath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.php';
|
||||||
if (file_exists($viewPath)) {
|
if (file_exists($viewPath)) {
|
||||||
ob_start();
|
ob_start();
|
||||||
include $viewPath;
|
include $viewPath;
|
||||||
@ -806,7 +826,7 @@ class core extends common
|
|||||||
if ($accessInfo['userName']) {
|
if ($accessInfo['userName']) {
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Accès verrouillé',
|
'title' => 'Accès verrouillé',
|
||||||
'content' => template::speech('<p>' . sprintf(helper::translate('La page %s est ouverte par l\'utilisateur %s</p><p><a style="color:inherit" href="javascript:history.back()">%s</a></p>'), $accessInfo['pageId'], $accessInfo['userName'], helper::translate('Retour')))
|
'content' => template::speech('<p>'. sprintf(helper::translate('La page %s est ouverte par l\'utilisateur %s</p><p><a style="color:inherit" href="javascript:history.back()">%s</a></p>'), $accessInfo['pageId'], $accessInfo['userName'], helper::translate('Retour')))
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
@ -818,49 +838,22 @@ class core extends common
|
|||||||
} else {
|
} else {
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Accès interdit',
|
'title' => 'Accès interdit',
|
||||||
'content' => template::speech('<p>' . helper::translate('Vous n\'êtes pas autorisé à consulter cette page (erreur 403)') . '</p><p><a style="color:inherit" href="javascript:history.back()">' . helper::translate('Retour') . '</a></p>')
|
'content' => template::speech('<p>' . helper::translate('Vous n\'êtes pas autorisé à consulter cette page (erreur 403)') . '</p><p><a style="color:inherit" href="javascript:history.back()">'. helper::translate('Retour') . '</a></p>')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($this->output['content'] === '') {
|
} elseif ($this->output['content'] === '') {
|
||||||
|
|
||||||
// Pour éviter une 404, bascule dans l'espace correct si la page existe dans cet espace.
|
|
||||||
// Parcourir les espaces y compris l'accueil
|
|
||||||
foreach (array_merge(['home' => []], $this->getData(['course'])) as $courseId => $value) {
|
|
||||||
;
|
|
||||||
if (
|
|
||||||
// l'espace existe
|
|
||||||
is_dir(common::DATA_DIR . $courseId) &&
|
|
||||||
file_exists(common::DATA_DIR . $courseId . '/page.json')
|
|
||||||
) {
|
|
||||||
// Lire les données des pages
|
|
||||||
$pagesId = json_decode(file_get_contents(common::DATA_DIR . $courseId . '/page.json'), true);
|
|
||||||
if (
|
|
||||||
// La page existe
|
|
||||||
is_array($pagesId['page']) &&
|
|
||||||
array_key_exists($this->getUrl(0), $pagesId['page'])
|
|
||||||
) {
|
|
||||||
// Basculer
|
|
||||||
$_SESSION['ZWII_SITE_CONTENT'] = $courseId;
|
|
||||||
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// La page n'existe pas dans les esapces, on génére une erreur 404
|
|
||||||
http_response_code(404);
|
http_response_code(404);
|
||||||
if (
|
if (
|
||||||
// une page est définie dans la configuration mais dans home
|
|
||||||
$this->getData(['config', 'page404']) !== 'none'
|
$this->getData(['config', 'page404']) !== 'none'
|
||||||
|
//and $this->getData(['page', $this->getData(['config', 'page404'])])
|
||||||
) {
|
) {
|
||||||
// Bascule sur l'acccueil et rediriger
|
|
||||||
$_SESSION['ZWII_SITE_CONTENT'] = 'home';
|
$_SESSION['ZWII_SITE_CONTENT'] = 'home';
|
||||||
header('Location:' . helper::baseUrl() . $this->getData(['config', 'page404']));
|
header('Location:' . helper::baseUrl() . $this->getData(['config', 'page404']));
|
||||||
} else {
|
} else {
|
||||||
// Page par défaut
|
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Page indisponible',
|
'title' => 'Page indisponible',
|
||||||
'content' => template::speech('<p>' . helper::translate('La page demandée n\'existe pas ou est introuvable (erreur 404)') . '</p><p><a style="color:inherit" href="javascript:history.back()">' . helper::translate('Retour') . '</a></p>')
|
'content' => template::speech('<p>' . helper::translate('La page demandée n\'existe pas ou est introuvable (erreur 404)') . '</p><p><a style="color:inherit" href="javascript:history.back()">'. helper::translate('Retour') . '</a></p>')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -883,25 +876,25 @@ class core extends common
|
|||||||
}
|
}
|
||||||
switch ($this->output['display']) {
|
switch ($this->output['display']) {
|
||||||
// Layout brut
|
// Layout brut
|
||||||
case common::DISPLAY_RAW:
|
case self::DISPLAY_RAW:
|
||||||
echo $this->output['content'];
|
echo $this->output['content'];
|
||||||
break;
|
break;
|
||||||
// Layout vide
|
// Layout vide
|
||||||
case common::DISPLAY_LAYOUT_BLANK:
|
case self::DISPLAY_LAYOUT_BLANK:
|
||||||
require 'core/layout/blank.php';
|
require 'core/layout/blank.php';
|
||||||
break;
|
break;
|
||||||
// Affichage en JSON
|
// Affichage en JSON
|
||||||
case common::DISPLAY_JSON:
|
case self::DISPLAY_JSON:
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode($this->output['content']);
|
echo json_encode($this->output['content']);
|
||||||
break;
|
break;
|
||||||
// RSS feed
|
// RSS feed
|
||||||
case common::DISPLAY_RSS:
|
case self::DISPLAY_RSS:
|
||||||
header('Content-type: application/rss+xml; charset=UTF-8');
|
header('Content-type: application/rss+xml; charset=UTF-8');
|
||||||
echo $this->output['content'];
|
echo $this->output['content'];
|
||||||
break;
|
break;
|
||||||
// Layout allégé
|
// Layout allégé
|
||||||
case common::DISPLAY_LAYOUT_LIGHT:
|
case self::DISPLAY_LAYOUT_LIGHT:
|
||||||
ob_start();
|
ob_start();
|
||||||
require 'core/layout/light.php';
|
require 'core/layout/light.php';
|
||||||
$content = ob_get_clean();
|
$content = ob_get_clean();
|
||||||
@ -912,7 +905,7 @@ class core extends common
|
|||||||
echo $content;
|
echo $content;
|
||||||
break;
|
break;
|
||||||
// Layout principal
|
// Layout principal
|
||||||
case common::DISPLAY_LAYOUT_MAIN:
|
case self::DISPLAY_LAYOUT_MAIN:
|
||||||
ob_start();
|
ob_start();
|
||||||
require 'core/layout/main.php';
|
require 'core/layout/main.php';
|
||||||
$content = ob_get_clean();
|
$content = ob_get_clean();
|
||||||
|
@ -462,7 +462,7 @@ $(document).ready(function () {
|
|||||||
/**
|
/**
|
||||||
* Chargement paresseux des images et des iframes
|
* Chargement paresseux des images et des iframes
|
||||||
*/
|
*/
|
||||||
$("img").attr("loading", "lazy");
|
$("img,picture,iframe").attr("loading", "lazy");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Effet accordéon
|
* Effet accordéon
|
||||||
|
@ -51,7 +51,7 @@ class common
|
|||||||
const ACCESS_TIMER = 1800;
|
const ACCESS_TIMER = 1800;
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
const ZWII_VERSION = '1.10.04';
|
const ZWII_VERSION = '1.9.00';
|
||||||
|
|
||||||
// URL autoupdate
|
// URL autoupdate
|
||||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
||||||
@ -1105,9 +1105,8 @@ class common
|
|||||||
}
|
}
|
||||||
// Articles du blog
|
// Articles du blog
|
||||||
if (
|
if (
|
||||||
$this->getData(['page', $parentPageId, 'moduleId']) === 'blog'
|
$this->getData(['page', $parentPageId, 'moduleId']) === 'blog' &&
|
||||||
&& !empty($this->getData(['module', $parentPageId]))
|
!empty($this->getData(['module', $parentPageId]))
|
||||||
&& $this->getData(['module', $parentPageId, 'posts'])
|
|
||||||
) {
|
) {
|
||||||
foreach ($this->getData(['module', $parentPageId, 'posts']) as $articleId => $article) {
|
foreach ($this->getData(['module', $parentPageId, 'posts']) as $articleId => $article) {
|
||||||
if ($this->getData(['module', $parentPageId, 'posts', $articleId, 'state']) === true) {
|
if ($this->getData(['module', $parentPageId, 'posts', $articleId, 'state']) === true) {
|
||||||
|
@ -490,7 +490,7 @@ class config extends common
|
|||||||
'cookiesFooterText' => $this->getInput('configLocaleCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
'cookiesFooterText' => $this->getInput('configLocaleCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
'buttonValidLabel' => $this->getInput('configLocaleCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
'buttonValidLabel' => $this->getInput('configLocaleCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
],
|
],
|
||||||
'social' => [
|
'social' => [
|
||||||
'facebookId' => $this->getInput('socialFacebookId'),
|
'facebookId' => $this->getInput('socialFacebookId'),
|
||||||
'linkedinId' => $this->getInput('socialLinkedinId'),
|
'linkedinId' => $this->getInput('socialLinkedinId'),
|
||||||
'instagramId' => $this->getInput('socialInstagramId'),
|
'instagramId' => $this->getInput('socialInstagramId'),
|
||||||
@ -556,7 +556,7 @@ class config extends common
|
|||||||
) {
|
) {
|
||||||
// Ajout des lignes dans le .htaccess
|
// Ajout des lignes dans le .htaccess
|
||||||
$fileContent = file_get_contents('.htaccess');
|
$fileContent = file_get_contents('.htaccess');
|
||||||
$rewriteData =
|
$rewriteData = PHP_EOL .
|
||||||
'# URL rewriting' . PHP_EOL .
|
'# URL rewriting' . PHP_EOL .
|
||||||
'<IfModule mod_rewrite.c>' . PHP_EOL .
|
'<IfModule mod_rewrite.c>' . PHP_EOL .
|
||||||
"\tRewriteEngine on" . PHP_EOL .
|
"\tRewriteEngine on" . PHP_EOL .
|
||||||
@ -565,7 +565,7 @@ class config extends common
|
|||||||
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
||||||
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
|
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
|
||||||
'</IfModule>' . PHP_EOL .
|
'</IfModule>' . PHP_EOL .
|
||||||
'# URL rewriting';
|
'# URL rewriting' . PHP_EOL;
|
||||||
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
|
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
|
||||||
file_put_contents(
|
file_put_contents(
|
||||||
'.htaccess',
|
'.htaccess',
|
||||||
@ -957,19 +957,4 @@ class config extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fonction pour vérifier la présence du module de réécriture
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function isModRewriteEnabled() {
|
|
||||||
// Check if Apache and mod_rewrite is loaded
|
|
||||||
if (function_exists('apache_get_modules')) {
|
|
||||||
$modules = apache_get_modules();
|
|
||||||
return in_array('mod_rewrite', $modules);
|
|
||||||
} else {
|
|
||||||
// Fallback if not using Apache or unable to detect modules
|
|
||||||
return getenv('HTTP_MOD_REWRITE') == 'On' || getenv('REDIRECT_STATUS') == '200';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -48,7 +48,7 @@
|
|||||||
<?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"], 'nginx')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -111,20 +111,13 @@ class course extends common
|
|||||||
self::$courseAccess[$this->getData(['course', $courseId, 'access'])],
|
self::$courseAccess[$this->getData(['course', $courseId, 'access'])],
|
||||||
self::$courseEnrolment[$this->getData(['course', $courseId, 'enrolment'])]
|
self::$courseEnrolment[$this->getData(['course', $courseId, 'enrolment'])]
|
||||||
);
|
);
|
||||||
if ($this->getUser('permission', 'course', 'users') === true) {
|
|
||||||
$users = template::button('categoryUser' . $this->getUrl(2), [
|
|
||||||
'href' => helper::baseUrl() . 'course/users/' . $courseId,
|
|
||||||
'value' => template::ico('users'),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
self::$courses[] = [
|
self::$courses[] = [
|
||||||
$info,
|
$info,
|
||||||
$this->getData(['course', $courseId, 'description']),
|
$this->getData(['course', $courseId, 'description']),
|
||||||
$enrolment,
|
$enrolment,
|
||||||
$users,
|
|
||||||
template::button('categoryUser' . $courseId, [
|
template::button('categoryUser' . $courseId, [
|
||||||
'href' => helper::baseUrl() . 'course/manage/' . $courseId,
|
'href' => helper::baseUrl() . 'course/manage/' . $courseId,
|
||||||
'value' => template::ico('sliders'),
|
'value' => template::ico('eye'),
|
||||||
'help' => 'Gérer'
|
'help' => 'Gérer'
|
||||||
])
|
])
|
||||||
];
|
];
|
||||||
|
@ -23,16 +23,6 @@ $(document).ready(function () {
|
|||||||
target: 2,
|
target: 2,
|
||||||
orderable: false,
|
orderable: false,
|
||||||
searchable: false
|
searchable: false
|
||||||
},
|
|
||||||
{
|
|
||||||
target: 3,
|
|
||||||
orderable: false,
|
|
||||||
searchable: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
target: 4,
|
|
||||||
orderable: false,
|
|
||||||
searchable: false
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if ($module::$courses): ?>
|
<?php if ($module::$courses): ?>
|
||||||
<?php echo template::table([4, 3, 3, 1, 1], $module::$courses, ['Titre court', 'Description', 'Inscription', '', '',], ['id' => 'dataTables']); ?>
|
<?php echo template::table([4, 4, 3, 1], $module::$courses, ['Titre court', 'Description', 'Inscription', '',], ['id' => 'dataTables']); ?>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php echo template::speech('Aucun espace'); ?>
|
<?php echo template::speech('Aucun espace'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
@ -55,6 +55,15 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
<?php if ($this->getUser('permission', 'course', 'users') === true): ?>
|
||||||
|
<div class="col2">
|
||||||
|
<?php echo template::button('categoryUser' . $this->getUrl(2), [
|
||||||
|
'href' => helper::baseUrl() . 'course/users/' . $this->getUrl(2),
|
||||||
|
'value' => 'Participants',
|
||||||
|
'ico' => 'users'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('courseUserBack', [
|
<?php echo template::button('courseUserBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'course/' . $this->getUrl(2),
|
'href' => helper::baseUrl() . 'course/manage/' . $this->getUrl(2),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -85,23 +85,12 @@ class page extends common
|
|||||||
*/
|
*/
|
||||||
public function duplicate()
|
public function duplicate()
|
||||||
{
|
{
|
||||||
// La session ne correspond pas au site ouvert dans cet onglet
|
|
||||||
if (
|
|
||||||
// Contrôle la présence de l'id d'espace uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
|
|
||||||
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
|
|
||||||
) {
|
|
||||||
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
|
|
||||||
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adresse sans le token
|
// Adresse sans le token
|
||||||
$page = $this->getUrl(2);
|
$page = $this->getUrl(2);
|
||||||
|
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
|
||||||
|| $this->getData(['page', $page]) === null
|
$this->getData(['page', $page]) === null
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -129,7 +118,7 @@ class page extends common
|
|||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $pageId . '/' . self::$siteContent,
|
'redirect' => helper::baseUrl() . 'page/edit/' . $pageId,
|
||||||
'notification' => $notification,
|
'notification' => $notification,
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
@ -142,19 +131,7 @@ class page extends common
|
|||||||
*/
|
*/
|
||||||
public function add()
|
public function add()
|
||||||
{
|
{
|
||||||
// La session ne correspond pas au site ouvert dans cet onglet
|
if ($this->getUser('permission', __CLASS__, __FUNCTION__) !== true) {
|
||||||
if (
|
|
||||||
// Contrôle la présence de l'id d'espace uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
|
|
||||||
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
|
|
||||||
) {
|
|
||||||
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
|
|
||||||
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
@ -221,24 +198,12 @@ class page extends common
|
|||||||
*/
|
*/
|
||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
|
|
||||||
// La session ne correspond pas au site ouvert dans cet onglet
|
|
||||||
if (
|
|
||||||
// Contrôle la présence de l'id d'espace uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
|
|
||||||
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
|
|
||||||
) {
|
|
||||||
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
|
|
||||||
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// $url prend l'adresse sans le token
|
// $url prend l'adresse sans le token
|
||||||
$page = $this->getUrl(2);
|
$page = $this->getUrl(2);
|
||||||
|
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
|
||||||
|| $this->getData(['page', $page]) === null
|
$this->getData(['page', $page]) === null
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -251,8 +216,8 @@ class page extends common
|
|||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . $this->homePageId(),
|
'redirect' => helper::baseUrl() . $this->homePageId(),
|
||||||
'notification' => self::$siteContent === 'home'
|
'notification' => self::$siteContent === 'home'
|
||||||
? helper::translate('Suppression interdite, cette page est définie comme page d\'accueil du site')
|
? helper::translate('Suppression interdite, cette page est définie comme page d\'accueil du site')
|
||||||
: helper::translate('Suppression interdite, cette page est définie comme page d\'accueil d\'un espace')
|
: helper::translate('Suppression interdite, cette page est définie comme page d\'accueil d\'un espace')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Impossible de supprimer la page affectée
|
// Impossible de supprimer la page affectée
|
||||||
@ -299,7 +264,7 @@ class page extends common
|
|||||||
elseif ($this->getHierarchy($page, null)) {
|
elseif ($this->getHierarchy($page, null)) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $page . '/' . self::$siteContent,
|
'redirect' => helper::baseUrl() . 'page/edit/' . $page,
|
||||||
'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants')
|
'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -339,24 +304,10 @@ class page extends common
|
|||||||
*/
|
*/
|
||||||
public function edit()
|
public function edit()
|
||||||
{
|
{
|
||||||
// La session ne correspond pas au site ouvert dans cet onglet
|
|
||||||
if (
|
|
||||||
// Contrôle la présence de l'id d'espace uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
|
|
||||||
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
|
|
||||||
) {
|
|
||||||
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
|
|
||||||
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
// La page n'existe pas
|
// La page n'existe pas
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
|
||||||
|| $this->getData(['page', $this->getUrl(2)]) === null
|
$this->getData(['page', $this->getUrl(2)]) === null
|
||||||
// Contrôle la présence de l'id d'espace uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
|
|
||||||
|| (
|
|
||||||
$this->getUrl(3)
|
|
||||||
&& $this->getUrl(3) != self::$siteContent
|
|
||||||
)
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -683,7 +634,7 @@ class page extends common
|
|||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => helper::translate('Modifications enregistrées'),
|
'notification' => helper::translate('Modifications enregistrées'),
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
|
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2),
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -718,7 +669,7 @@ class page extends common
|
|||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'notification' => helper::translate('Modifications enregistrées'),
|
'notification' => helper::translate('Modifications enregistrées'),
|
||||||
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
|
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2),
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -734,16 +685,16 @@ class page extends common
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retourne les informations sur les pages en omettant les clés CSS et JS qui occasionnent des bugs d'affichage dans l'éditeur de page
|
* Retourne les informations sur les pages en omettant les clés CSS et JS qui occasionnent des bugs d'affichage dans l'éditeur de page
|
||||||
* @return string tableau associatif des pages dans le menu
|
* @return array tableau associatif des pages dans le menu
|
||||||
*/
|
*/
|
||||||
public function getPageInfo()
|
public function getPageInfo()
|
||||||
{
|
{
|
||||||
$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);
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('pageCssEditorBack', [
|
<?php echo template::button('pageCssEditorBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,14 +19,14 @@
|
|||||||
<div class="col1 offset6">
|
<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/delete/' . $this->getUrl(2),
|
||||||
'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/duplicate/' . $this->getUrl(2),
|
||||||
'value' => template::ico('clone'),
|
'value' => template::ico('clone'),
|
||||||
'help' => 'Dupliquer la page'
|
'help' => 'Dupliquer la page'
|
||||||
]); ?>
|
]); ?>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('pageJsEditorBack', [
|
<?php echo template::button('pageJsEditorBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
class blog extends common
|
class blog extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '7.9';
|
const VERSION = '7.6';
|
||||||
const REALNAME = 'Blog';
|
const REALNAME = 'Blog';
|
||||||
const DELETE = true;
|
const DELETE = true;
|
||||||
const UPDATE = '0.0';
|
const UPDATE = '0.0';
|
||||||
@ -196,11 +196,9 @@ class blog 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']));
|
||||||
$feeds->setLink(helper::baseUrl() . $this->getUrl(0));
|
$feeds->setLink(helper::baseUrl() . $this->getUrl(0));
|
||||||
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();
|
||||||
@ -363,7 +361,7 @@ class blog extends common
|
|||||||
self::$dateFormat = $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat']);
|
self::$dateFormat = $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat']);
|
||||||
self::$timeFormat = $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat']);
|
self::$timeFormat = $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat']);
|
||||||
self::$comments[] = [
|
self::$comments[] = [
|
||||||
helper::dateUTF8(self::$dateFormat, $comment['createdOn'], self::$i18nUI) . ' - ' . helper::dateUTF8(self::$timeFormat, $comment['createdOn'], self::$i18nUI),
|
helper::dateUTF8(self::$dateFormat, $comment['createdOn']) . ' - ' . helper::dateUTF8(self::$timeFormat, $comment['createdOn']),
|
||||||
$comment['content'],
|
$comment['content'],
|
||||||
$comment['userId'] ? $this->getData(['user', $comment['userId'], 'firstname']) . ' ' . $this->getData(['user', $comment['userId'], 'lastname']) : $comment['author'],
|
$comment['userId'] ? $this->getData(['user', $comment['userId'], 'firstname']) . ' ' . $this->getData(['user', $comment['userId'], 'lastname']) : $comment['author'],
|
||||||
$buttonApproval,
|
$buttonApproval,
|
||||||
@ -532,7 +530,7 @@ class blog extends common
|
|||||||
'<a href="' . helper::baseurl() . $this->getUrl(0) . '/' . $articleIds[$i] . '" target="_blank" >' .
|
'<a href="' . helper::baseurl() . $this->getUrl(0) . '/' . $articleIds[$i] . '" target="_blank" >' .
|
||||||
$this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'title']) .
|
$this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'title']) .
|
||||||
'</a>',
|
'</a>',
|
||||||
helper::dateUTF8(self::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'publishedOn']), self::$i18nUI) . ' - ' . helper::dateUTF8(self::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'publishedOn']), self::$i18nUI),
|
helper::dateUTF8(self::$dateFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'publishedOn'])) . ' - ' . helper::dateUTF8(self::$timeFormat, $this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'publishedOn'])),
|
||||||
self::$states[$this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'state'])],
|
self::$states[$this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'state'])],
|
||||||
// Bouton pour afficher les commentaires de l'article
|
// Bouton pour afficher les commentaires de l'article
|
||||||
template::button('blogConfigComment' . $articleIds[$i], [
|
template::button('blogConfigComment' . $articleIds[$i], [
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
|
|
||||||
# Versions 7.8 - 7.9
|
|
||||||
- Le flux RSS ne fonctionne pas si les méta de la page sont vides.
|
|
||||||
# Version 7.7
|
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
|
||||||
# Version 7.6
|
# Version 7.6
|
||||||
- Mise à jour RSS Feed
|
- Mise à jour RSS Feed
|
||||||
# Version 7.5
|
# Version 7.5
|
||||||
|
0
module/blog/ressource/feed-icon-16.gif
Executable file → Normal file
0
module/blog/ressource/feed-icon-16.gif
Executable file → Normal file
Before Width: | Height: | Size: 652 B After Width: | Height: | Size: 652 B |
0
module/blog/vendor/FeedWriter/ATOM.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/ATOM.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/Feed.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/Feed.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/InvalidOperationException.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/InvalidOperationException.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/Item.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/Item.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/README.md
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/README.md
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/RSS1.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/RSS1.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/RSS2.php
vendored
Executable file → Normal file
0
module/blog/vendor/FeedWriter/RSS2.php
vendored
Executable file → Normal file
0
module/blog/vendor/furl/LICENSE
vendored
Executable file → Normal file
0
module/blog/vendor/furl/LICENSE
vendored
Executable file → Normal file
0
module/blog/vendor/furl/README.md
vendored
Executable file → Normal file
0
module/blog/vendor/furl/README.md
vendored
Executable file → Normal file
0
module/blog/vendor/furl/inc.json
vendored
Executable file → Normal file
0
module/blog/vendor/furl/inc.json
vendored
Executable file → Normal file
0
module/blog/vendor/furl/jquery.furl.js
vendored
Executable file → Normal file
0
module/blog/vendor/furl/jquery.furl.js
vendored
Executable file → Normal file
0
module/blog/view/add/add.css
Executable file → Normal file
0
module/blog/view/add/add.css
Executable file → Normal file
0
module/blog/view/add/add.js.php
Executable file → Normal file
0
module/blog/view/add/add.js.php
Executable file → Normal file
0
module/blog/view/add/add.php
Executable file → Normal file
0
module/blog/view/add/add.php
Executable file → Normal file
0
module/blog/view/article/article.css
Executable file → Normal file
0
module/blog/view/article/article.css
Executable file → Normal file
0
module/blog/view/article/article.js.php
Executable file → Normal file
0
module/blog/view/article/article.js.php
Executable file → Normal file
0
module/blog/view/comment/comment.css
Executable file → Normal file
0
module/blog/view/comment/comment.css
Executable file → Normal file
0
module/blog/view/comment/comment.js.php
Executable file → Normal file
0
module/blog/view/comment/comment.js.php
Executable file → Normal file
0
module/blog/view/comment/comment.php
Executable file → Normal file
0
module/blog/view/comment/comment.php
Executable file → Normal file
0
module/blog/view/config/config.css
Executable file → Normal file
0
module/blog/view/config/config.css
Executable file → Normal file
0
module/blog/view/config/config.js.php
Executable file → Normal file
0
module/blog/view/config/config.js.php
Executable file → Normal file
2
module/blog/view/config/config.php
Executable file → Normal file
2
module/blog/view/config/config.php
Executable file → Normal file
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('blogConfigBack', [
|
<?php echo template::button('blogConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'posts',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
0
module/blog/view/edit/edit.css
Executable file → Normal file
0
module/blog/view/edit/edit.css
Executable file → Normal file
0
module/blog/view/edit/edit.js.php
Executable file → Normal file
0
module/blog/view/edit/edit.js.php
Executable file → Normal file
0
module/blog/view/edit/edit.php
Executable file → Normal file
0
module/blog/view/edit/edit.php
Executable file → Normal file
0
module/blog/view/index/index.css
Executable file → Normal file
0
module/blog/view/index/index.css
Executable file → Normal file
0
module/blog/view/option/option.css
Executable file → Normal file
0
module/blog/view/option/option.css
Executable file → Normal file
0
module/blog/view/rss/rss.php
Executable file → Normal file
0
module/blog/view/rss/rss.php
Executable file → Normal file
@ -1,5 +1,3 @@
|
|||||||
# Version 4.3
|
|
||||||
- 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
|
||||||
- Termes des commandes de profils
|
- Termes des commandes de profils
|
||||||
# Version 4.1
|
# Version 4.1
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
class form extends common
|
class form extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '4.3';
|
const VERSION = '4.2';
|
||||||
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)
|
||||||
|
|
||||||
|
0
module/form/vendor/html-sortable/html-sortable.min.js
vendored
Executable file → Normal file
0
module/form/vendor/html-sortable/html-sortable.min.js
vendored
Executable file → Normal file
0
module/form/vendor/html-sortable/inc.json
vendored
Executable file → Normal file
0
module/form/vendor/html-sortable/inc.json
vendored
Executable file → Normal file
0
module/form/vendor/html-sortable/lisezmoi.txt
vendored
Executable file → Normal file
0
module/form/vendor/html-sortable/lisezmoi.txt
vendored
Executable file → Normal file
0
module/form/view/config/config.css
Executable file → Normal file
0
module/form/view/config/config.css
Executable file → Normal file
@ -53,7 +53,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('formConfigBack', [
|
<?php echo template::button('formConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
0
module/form/view/data/data.css
Executable file → Normal file
0
module/form/view/data/data.css
Executable file → Normal file
@ -1,5 +1,3 @@
|
|||||||
# Version 4.2
|
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
|
||||||
# Version 4.1
|
# Version 4.1
|
||||||
- Termes des commandes de profils
|
- Termes des commandes de profils
|
||||||
# Version 4.0
|
# Version 4.0
|
||||||
|
@ -18,7 +18,7 @@ class gallery extends common
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
const VERSION = '4.2';
|
const VERSION = '4.1';
|
||||||
const REALNAME = 'Galerie';
|
const REALNAME = 'Galerie';
|
||||||
const DATADIRECTORY = self::DATA_DIR . 'gallery/';
|
const DATADIRECTORY = self::DATA_DIR . 'gallery/';
|
||||||
|
|
||||||
|
0
module/gallery/ressource/theme.css
Executable file → Normal file
0
module/gallery/ressource/theme.css
Executable file → Normal file
0
module/gallery/ressource/vartheme.css
Executable file → Normal file
0
module/gallery/ressource/vartheme.css
Executable file → Normal file
0
module/gallery/vendor/tablednd/inc.json
vendored
Executable file → Normal file
0
module/gallery/vendor/tablednd/inc.json
vendored
Executable file → Normal file
0
module/gallery/vendor/tablednd/lisez-moi.txt
vendored
Executable file → Normal file
0
module/gallery/vendor/tablednd/lisez-moi.txt
vendored
Executable file → Normal file
0
module/gallery/vendor/tablednd/tablednd.min.js
vendored
Executable file → Normal file
0
module/gallery/vendor/tablednd/tablednd.min.js
vendored
Executable file → Normal file
0
module/gallery/view/config/config.css
Executable file → Normal file
0
module/gallery/view/config/config.css
Executable file → Normal file
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('galleryConfigBack', [
|
<?php echo template::button('galleryConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
0
module/gallery/view/edit/edit.css
Executable file → Normal file
0
module/gallery/view/edit/edit.css
Executable file → Normal file
0
module/gallery/view/theme/theme.css
Executable file → Normal file
0
module/gallery/view/theme/theme.css
Executable file → Normal file
@ -1,7 +1,3 @@
|
|||||||
# Versions 5.7 - 5.8
|
|
||||||
- Le flux RSS ne fonctionne pas si les méta de la page sont vides.
|
|
||||||
# Version 5.6
|
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
|
||||||
# Version 5.5
|
# Version 5.5
|
||||||
- Mise à jour RSS Feed
|
- Mise à jour RSS Feed
|
||||||
# Version 5.4
|
# Version 5.4
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
class news extends common
|
class news extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '5.8';
|
const VERSION = '5.5';
|
||||||
const REALNAME = 'News';
|
const REALNAME = 'News';
|
||||||
const DATADIRECTORY = self::DATA_DIR . 'news/';
|
const DATADIRECTORY = self::DATA_DIR . 'news/';
|
||||||
|
|
||||||
@ -124,11 +124,9 @@ 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']));
|
||||||
$feeds->setLink(helper::baseUrl() . $this->getUrl(0));
|
$feeds->setLink(helper::baseUrl() . $this->getUrl(0));
|
||||||
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();
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('newsConfigBack', [
|
<?php echo template::button('newsConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),'posts',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
# Version 2.2
|
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
|
||||||
# Version 2.1
|
# Version 2.1
|
||||||
- Edition du module ou de la page impossible.
|
- Edition du module ou de la page impossible.
|
||||||
# Version 2.0
|
# Version 2.0
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
class redirection extends common
|
class redirection extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '2.2';
|
const VERSION = '2.1';
|
||||||
const REALNAME = 'Redirection';
|
const REALNAME = 'Redirection';
|
||||||
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)
|
||||||
|
|
||||||
|
0
module/redirection/view/config/config.css
Executable file → Normal file
0
module/redirection/view/config/config.css
Executable file → Normal file
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('redirectionConfigBack', [
|
<?php echo template::button('redirectionConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
0
module/redirection/view/index/index.css
Executable file → Normal file
0
module/redirection/view/index/index.css
Executable file → Normal file
@ -1,5 +1,3 @@
|
|||||||
# Version 3.2
|
|
||||||
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
|
|
||||||
# Version 3.1
|
# Version 3.1
|
||||||
- Initialise un module installé dans une page sans avoir ouvert la page de configuration sans lancer de mise à jour.
|
- Initialise un module installé dans une page sans avoir ouvert la page de configuration sans lancer de mise à jour.
|
||||||
# Version 3.0
|
# Version 3.0
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
class search extends common
|
class search extends common
|
||||||
{
|
{
|
||||||
|
|
||||||
const VERSION = '3.2';
|
const VERSION = '3.1';
|
||||||
const REALNAME = 'Recherche';
|
const REALNAME = 'Recherche';
|
||||||
const DATADIRECTORY = self::DATA_DIR . 'search/';
|
const DATADIRECTORY = self::DATA_DIR . 'search/';
|
||||||
|
|
||||||
|
0
module/search/view/config/config.css
Executable file → Normal file
0
module/search/view/config/config.css
Executable file → Normal file
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('searchConfigBack', [
|
<?php echo template::button('searchConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
0
module/search/view/index/index.css
Executable file → Normal file
0
module/search/view/index/index.css
Executable file → Normal file
@ -1,5 +1,3 @@
|
|||||||
# Version 6.5
|
|
||||||
- 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
|
||||||
- Corrige plusieurs bugs dans les fonctions de tri
|
- Corrige plusieurs bugs dans les fonctions de tri
|
||||||
# Version 6.3
|
# Version 6.3
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('galleryConfigBack', [
|
<?php echo template::button('galleryConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="col2">
|
<div class="col2">
|
||||||
<?php echo template::button('registrationConfigBack', [
|
<?php echo template::button('registrationConfigBack', [
|
||||||
'class' => '',
|
'class' => '',
|
||||||
'href' => helper::baseUrl() .'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() .'page/edit/' . $this->getUrl(0) ,
|
||||||
'ico' => 'left',
|
'ico' => 'left',
|
||||||
'value' => 'Retour'
|
'value' => 'Retour'
|
||||||
]); ?>
|
]); ?>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('coursesConfigBack', [
|
<?php echo template::button('coursesConfigBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
|
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
<?php $startRow = 0; ?>
|
<?php $startRow = 0; ?>
|
||||||
<?php $c = $this->getData(['course']);?>
|
<?php foreach ($this->getData(['course']) as $courseId => $courseValue): ?>
|
||||||
<?php $titles = array_column($c, 'title'); ?>
|
|
||||||
<?php array_multisort($titles, SORT_ASC, $c); ?>
|
|
||||||
<?php foreach ($c as $courseId => $courseValue): ?>
|
|
||||||
<!-- Filtre de catégorie -->
|
<!-- Filtre de catégorie -->
|
||||||
<?php if (
|
<?php if (
|
||||||
$this->getData(['module', $this->getUrl(0), 'config', 'category']) !== 'all' &&
|
$this->getData(['module', $this->getUrl(0), 'config', 'category']) !== 'all' &&
|
||||||
|
@ -153,6 +153,13 @@ class workshop extends common
|
|||||||
'view' => 'index'
|
'view' => 'index'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'showBarEditButton' => true,
|
||||||
|
'showPageContent' => true,
|
||||||
|
'view' => 'index',
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise avec des valeurs par défaut
|
// Initialise avec des valeurs par défaut
|
||||||
|
Loading…
x
Reference in New Issue
Block a user