Modifications 4304

This commit is contained in:
Deltacms 2022-09-02 08:44:18 +02:00
parent 0d282a86d9
commit 3eac7f08df
58 changed files with 4543 additions and 3837 deletions

View File

@ -1,36 +1,36 @@
# Active la compression GZIP - option Apache
# Racine du site DeltaCMS
<Files .htaccess>
Require all denied
</Files>
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|woff)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
# Active la compression DEFLATE - option Apache
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/shtml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
# Bloque l'accès à la liste des fichiers
Options -Indexes
# Désactive l'option de substitution automatique
<IfModule mod_negotiation.c>
Options -MultiViews
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/shtml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE font/woff
AddOutputFilterByType DEFLATE font/woff2
AddOutputFilterByType DEFLATE application/font-woff
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
Options -Indexes -MultiViews
# Attention, surtout ne rien modifier ci-dessous !
# URL rewriting

View File

@ -1,5 +1,19 @@
# Changelog
## Version 4.3.04 de Deltacms
- Modifications :
- Fichiers .htaccess : Mise à jour vers Apache 2.4. Attention pour cette mise à jour vers la version Deltacms 4.3.04
l'option "Préservez le fichier .htaccess racine", dans Configurer le site / onglet Configuration / bloc Mise à jour automatisée,
doit être décochée. Sinon vous devrez mettre en version Apache 2.4 votre .htaccess racine personnalisé,
- Fichiers robots.txt et sitemap.xml : suppression de la mise à jour automatique de ces fichiers, elle ne pourra plus se faire
que par un appui sur le bouton "Générer sitemap.xml et robots.txt" dans Configurer le site / onglet Référencement / bloc Paramètres,
- Blog : le lexique pour la langue d'administration est déporté dans un dossier 'lang',
- Blog : L'image d'illustration n'est plus obligatoire,
- Filemanager : les images au format webp sont autorisées,
- Agenda, Statislite : les dossiers d'installation de ces modules sont placés dans un dossier 'ressource' du module.
- Corrections :
- Form, Agenda : déplacement de l'initialisation de variables Javascript qui provoquait un décalage d'affichage dans la barre d'administration.
## Version 4.3.03 de Deltacms
- Modifications :
- News : nouvelle option insérer des images ou des iframe sans marges.

View File

@ -1,5 +1,5 @@
# DeltaCMS 4.3.03
# DeltaCMS 4.3.04
DeltaCMS 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.
L'administration du site est bilingue anglais ou français, le site peut être rédigé dans une des principales langues européennes.

View File

@ -1,3 +1 @@
# Bloque l'accès à la librairie
Order deny,allow
Deny from all
Require all denied

View File

@ -1,3 +0,0 @@
# Bloque l'accès à la librairie
Order deny,allow
Deny from all

View File

@ -48,7 +48,7 @@ class common {
// Numéro de version
const DELTA_UPDATE_URL = 'https://update.deltacms.fr/master/';
const DELTA_VERSION = '4.3.03';
const DELTA_VERSION = '4.3.04';
const DELTA_UPDATE_CHANNEL = "v4";
public static $actions = [];
@ -894,7 +894,7 @@ class common {
/**
* Génère un fichier un fichier sitemap.xml
* Génère un fichier sitemap.xml
* https://github.com/icamys/php-sitemap-generator
* $command valeurs possible
* all : génère un site map complet
@ -926,49 +926,54 @@ class common {
$datetime = new DateTime(date('c'));
$datetime->format(DateTime::ATOM); // Updated ISO8601
foreach($this->getHierarchy(null, null, null) as $parentPageId => $childrenPageIds) {
// Exclure les barres et les pages non publiques et les pages masquées
if ($this->getData(['page',$parentPageId,'group']) !== 0 ||
$this->getData(['page', $parentPageId, 'block']) === 'bar' ) {
continue;
}
// Page désactivée, traiter les sous-pages sans prendre en compte la page parente.
if ($this->getData(['page', $parentPageId, 'disable']) !== true ) {
// Cas de la page d'accueil ne pas dupliquer l'URL
$pageId = ($parentPageId !== $this->getData(['locale', 'homePageId'])) ? $parentPageId : '';
$sitemap->addUrl ('/' . $pageId, $datetime);
}
// Articles du blog
if ($this->getData(['page', $parentPageId, 'moduleId']) === 'blog' &&
!empty($this->getData(['module',$parentPageId])) ) {
foreach($this->getData(['module',$parentPageId,'posts']) as $articleId => $article) {
if($this->getData(['module',$parentPageId,'posts',$articleId,'state']) === true) {
$date = $this->getData(['module',$parentPageId,'posts',$articleId,'publishedOn']);
$sitemap->addUrl('/' . $parentPageId . '/' . $articleId , new DateTime("@{$date}",new DateTimeZone($timezone)));
}
}
}
// Sous-pages
foreach($childrenPageIds as $childKey) {
if ($this->getData(['page',$childKey,'group']) !== 0 || $this->getData(['page', $childKey, 'disable']) === true) {
if ($this->getData(['config','seo', 'robots']) === true) {
foreach($this->getHierarchy(null, null, null) as $parentPageId => $childrenPageIds) {
// Exclure les barres et les pages non publiques et les pages masquées
if ($this->getData(['page',$parentPageId,'group']) !== 0 ||
$this->getData(['page', $parentPageId, 'block']) === 'bar' ) {
continue;
}
// Cas de la page d'accueil ne pas dupliquer l'URL
$pageId = ($childKey !== $this->getData(['locale', 'homePageId'])) ? $childKey : '';
$sitemap->addUrl('/' . $childKey,$datetime);
// La sous-page est un blog
if ($this->getData(['page', $childKey, 'moduleId']) === 'blog' &&
!empty($this->getData(['module',$childKey])) ) {
foreach($this->getData(['module',$childKey,'posts']) as $articleId => $article) {
if($this->getData(['module',$childKey,'posts',$articleId,'state']) === true) {
$date = $this->getData(['module',$childKey,'posts',$articleId,'publishedOn']);
$sitemap->addUrl( '/' . $childKey . '/' . $articleId , new DateTime("@{$date}",new DateTimeZone($timezone)));
// Page désactivée, traiter les sous-pages sans prendre en compte la page parente.
if ($this->getData(['page', $parentPageId, 'disable']) !== true ) {
// Cas de la page d'accueil ne pas dupliquer l'URL
$pageId = ($parentPageId !== $this->getData(['locale', 'homePageId'])) ? $parentPageId : '';
$sitemap->addUrl ('/' . $pageId, $datetime);
}
// Articles du blog
if ($this->getData(['page', $parentPageId, 'moduleId']) === 'blog' &&
!empty($this->getData(['module',$parentPageId])) ) {
foreach($this->getData(['module',$parentPageId,'posts']) as $articleId => $article) {
if($this->getData(['module',$parentPageId,'posts',$articleId,'state']) === true) {
$date = $this->getData(['module',$parentPageId,'posts',$articleId,'publishedOn']);
$sitemap->addUrl('/' . $parentPageId . '/' . $articleId , new DateTime("@{$date}",new DateTimeZone($timezone)));
}
}
}
}
// Sous-pages
foreach($childrenPageIds as $childKey) {
if ($this->getData(['page',$childKey,'group']) !== 0 || $this->getData(['page', $childKey, 'disable']) === true) {
continue;
}
// Cas de la page d'accueil ne pas dupliquer l'URL
$pageId = ($childKey !== $this->getData(['locale', 'homePageId'])) ? $childKey : '';
$sitemap->addUrl('/' . $childKey,$datetime);
// La sous-page est un blog
if ($this->getData(['page', $childKey, 'moduleId']) === 'blog' &&
!empty($this->getData(['module',$childKey])) ) {
foreach($this->getData(['module',$childKey,'posts']) as $articleId => $article) {
if($this->getData(['module',$childKey,'posts',$articleId,'state']) === true) {
$date = $this->getData(['module',$childKey,'posts',$articleId,'publishedOn']);
$sitemap->addUrl( '/' . $childKey . '/' . $articleId , new DateTime("@{$date}",new DateTimeZone($timezone)));
}
}
}
}
}
}
else{
$sitemap->addUrl ('/', $datetime);
}
// Flush all stored urls from memory to the disk and close all necessary tags.
@ -999,7 +1004,7 @@ class common {
* Création d'une miniature
* Fonction utilisée lors de la mise à jour d'une version 9 à une version 10
* @param string $src image source
* @param string $dets image destination
* @param string $dest image destination
* @param integer $desired_width largeur demandée
*/
function makeThumb($src, $dest, $desired_width) {
@ -1021,6 +1026,9 @@ class common {
case 'gif':
$source_image = imagecreatefromgif($src);
break;
case 'webp':
$source_image = imagecreatefromwebp($src);
break;
}
// Image valide
if ($source_image) {
@ -1034,7 +1042,6 @@ class common {
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
switch(mime_content_type($src) ) {
case 'image/jpeg':
case 'image/jpg':
return (imagejpeg($virtual_image, $dest));
break;
case 'image/png':
@ -1043,6 +1050,9 @@ class common {
case 'image/gif':
return (imagegif($virtual_image, $dest));
break;
case 'image/webp':
return (imagewebp($virtual_image, $dest));
break;
}
} else {
return (false);
@ -1255,6 +1265,7 @@ class common {
$blocks = [];
if( null !== $this->getData(['page',$this->getUrl(0),'block'])) $blocks = explode('-',$this->getData(['page',$this->getUrl(0),'block']));
// Initialiser
$content = "";
$blockleft=$blockright="";
switch (sizeof($blocks)) {
case 1 : // une colonne
@ -1369,8 +1380,7 @@ class common {
/**
* Affiche les crédits, conditions requis :
* La traduction est active et le site n'est pas en français.
* La fonction est activée.
* La traduction automatique est active et La fonction est activée.
*/
if ( $this->getData(['config', 'i18n', 'enable']) === true
AND $this->getData(['config', 'i18n','scriptGoogle']) === true
@ -1920,40 +1930,27 @@ class common {
echo $items;
}
/**
* Affiche le meta titre
*/
public function showMetaTitle() {
echo '<title>' . $this->output['metaTitle'] . '</title>';
echo '<meta property="og:title" content="' . $this->output['metaTitle'] . '" />';
echo '<link rel="canonical" href="'. helper::baseUrl(true).$this->getUrl() .'" />';
}
/**
* Affiche la meta description
*/
public function showMetaDescription() {
echo '<meta name="description" content="' . $this->output['metaDescription'] . '" />';
echo '<meta property="og:description" content="' . $this->output['metaDescription'] . '" />';
}
/**
* Affiche le meta type
*/
public function showMetaType() {
echo '<meta property="og:type" content="website" />';
}
/**
* Affiche la meta image (site screenshot)
*/
public function showMetaImage() {
echo '<meta property="og:image" content="' . helper::baseUrl() .self::FILE_DIR.'source/screenshot.jpg" />';
}
/**
* Affiche les balises title et meta name
*/
public function showMetaTitle() {
echo '<title>' . $this->output['metaTitle'] . '</title>' . PHP_EOL;
echo '<meta name="description" content="' . $this->output['metaDescription'] . '" />' . PHP_EOL;
echo '<link rel="canonical" href="'. helper::baseUrl(true).$this->getUrl() .'" />' . PHP_EOL;
}
/**
* Affiche les balises meta property
*/
public function showMetaProperty() {
echo '<meta property="og:title" content="' . $this->output['metaTitle'] . '" />' . PHP_EOL;
echo '<meta property="og:description" content="' . $this->output['metaDescription'] . '" />' . PHP_EOL;
echo '<meta property="og:type" content="website" />' . PHP_EOL;
echo '<meta property="og:image" content="' . helper::baseUrl() .self::FILE_DIR.'source/screenshot.jpg" />' . PHP_EOL;
}
/**
* Affiche la notification

View File

@ -60,8 +60,8 @@ if ($this->getData(['core', 'dataVersion']) < 4202) {
$this->setData(['core', 'dataVersion', 4202]);
}
if ($this->getData(['core', 'dataVersion']) < 4303) {
if ($this->getData(['core', 'dataVersion']) < 4304) {
// Mise à jour
$this->setData(['core', 'dataVersion', 4303]);
$this->setData(['core', 'dataVersion', 4304]);
}
?>

View File

@ -3,13 +3,15 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->showMetaTitle(); ?>
<?php $this->showMetaDescription(); ?>
<?php $this->showMetaType(); ?>
<?php $this->showMetaImage(); ?>
<?php $this->showFavicon(); ?>
<?php $this->showVendor(); ?>
<?php $this->showStyle(); ?>
<?php
$this->showMetaTitle();
$this->showMetaProperty();
?>
<?php
$this->showFavicon();
$this->showVendor();
$this->showStyle();
?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/blank.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">

View File

@ -3,13 +3,15 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->showMetaTitle(); ?>
<?php $this->showMetaDescription(); ?>
<?php $this->showMetaType(); ?>
<?php $this->showMetaImage(); ?>
<?php $this->showFavicon(); ?>
<?php $this->showVendor(); ?>
<?php $this->showStyle(); ?>
<?php
$this->showMetaTitle();
$this->showMetaProperty();
?>
<?php
$this->showFavicon();
$this->showVendor();
$this->showStyle();
?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/light.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">

View File

@ -7,12 +7,14 @@ if( $this->getInput('DELTA_I18N_SITE') !== '' && $this->getInput('DELTA_I18N_SIT
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->showMetaTitle(); ?>
<?php $this->showMetaDescription(); ?>
<?php $this->showMetaType(); ?>
<?php $this->showMetaImage(); ?>
<?php $this->showFavicon(); ?>
<?php $this->showVendor(); ?>
<?php
$this->showMetaTitle();
$this->showMetaProperty();
?>
<?php
$this->showFavicon();
$this->showVendor();
?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css?<?php echo md5_file('core/layout/common.css');?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
@ -171,23 +173,23 @@ if( $this->getInput('DELTA_I18N_SITE') !== '' && $this->getInput('DELTA_I18N_SIT
<?php
$headerClass = $this->getData(['theme', 'header', 'position']) === 'hide' ? 'displayNone' : '';
$headerClass .= $this->getData(['theme', 'header', 'tinyHidden']) ? ' bannerDisplay ' : '';
?>
<header <?php echo empty($headerClass) ? '' : 'class="' . $headerClass . '"';?>>
<?php if ($this->getData(['theme','header','feature']) === 'wallpaper' ): ?>
<?php if(
$this->getData(['theme', 'header', 'textHide']) === false
// Affiche toujours le titre de la bannière pour l'édition du thème
OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header')
): ?>
<span class="notranslate" id="themeHeaderTitle"><?php echo $this->getData(['locale', 'title']); ?></span>
<?php else: ?>
<span id="themeHeaderTitle">&nbsp;</span>
<?php endif; ?>
?>
<header <?php echo empty($headerClass) ? '' : 'class="' . $headerClass . '"';?>>
<?php if ($this->getData(['theme','header','feature']) === 'wallpaper' ): ?>
<?php if(
$this->getData(['theme', 'header', 'textHide']) === false
// Affiche toujours le titre de la bannière pour l'édition du thème
OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header')
): ?>
<span class="notranslate" id="themeHeaderTitle"><?php echo $this->getData(['locale', 'title']); ?></span>
<?php else: ?>
<div id="featureContent">
<?php echo $this->getData(['theme','header','featureContent']);?>
</diV>
<span id="themeHeaderTitle">&nbsp;</span>
<?php endif; ?>
<?php else: ?>
<div id="featureContent">
<?php echo $this->getData(['theme','header','featureContent']);?>
</diV>
<?php endif; ?>
</header>
<?php echo ( $this->getData(['theme','header','linkHomePage']) && $this->getData(['theme','header','feature']) === 'wallpaper' ) ? '</a>' : ''; ?>
<?php endif; ?>

View File

@ -636,11 +636,11 @@ class config extends common {
$this->setData(['core', 'baseUrl', helper::baseUrl(true,false) ]);
}
// Générer robots.txt et sitemap
$this->generateFiles();
// $this->generateFiles();
// Valeurs en sortie
$this->addOutput([
'title' => $text[0],
'view' => 'index',
'redirect' => helper::baseUrl() . 'config',
'notification' => $text[1] ,
'state' => true
]);

View File

@ -1,10 +1,3 @@
# Bloque l'accès aux données
<Files *.json>
Order deny,allow
Deny from all
Require all denied
</Files>
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>

View File

@ -5,7 +5,7 @@
"feeds": true,
"feedsLabel": "Syndication RSS",
"itemsperPage": 6,
"versionData": "6.2"
"versionData": "6.3"
},
"texts": {
"NoComment": "No comment yet",
@ -23,7 +23,8 @@
"Send": "Send",
"TinymceMaxi": "You have reached the maximum of",
"TinymceCara": "characters left",
"TinymceExceed": "You were about to exceed the maximum of "
"TinymceExceed": "You were about to exceed the maximum of ",
"ReadMore": "Read more"
},
"posts": {
"premier-article": {
@ -140,7 +141,7 @@
"logoUrl": "",
"logoWidth": "40",
"maxSizeUpload": "500000",
"versionData": "4.1",
"versionData": "4.2",
"uploadJpg": true,
"uploadPng": true,
"uploadPdf": false,

View File

@ -5,7 +5,7 @@
"feeds": true,
"feedsLabel": "Syndication RSS",
"itemsperPage": 4,
"versionData": "6.2"
"versionData": "6.3"
},
"texts": {
"NoComment": "Pas encore de commentaire",
@ -23,7 +23,8 @@
"Send": "Envoyer",
"TinymceMaxi": "Vous avez atteint le maximum de",
"TinymceCara": "caractères restants",
"TinymceExceed": "Vous alliez dépasser le maximum de "
"TinymceExceed": "Vous alliez dépasser le maximum de ",
"ReadMore": "Lire la suite"
},
"posts": {
"premier-article": {
@ -140,7 +141,7 @@
"logoUrl": "",
"logoWidth": "40",
"maxSizeUpload": "1000000",
"versionData": "4.1",
"versionData": "4.2",
"uploadJpg": true,
"uploadPng": true,
"uploadPdf": false,

View File

@ -70,7 +70,7 @@ class init extends common {
]
],
'core' => [
'dataVersion' => 4303,
'dataVersion' => 4304,
'lastBackup' => 0,
'lastClearTmp' => 0,
'lastAutoUpdate' => 0,

View File

@ -223,7 +223,7 @@ class page extends common {
}
$this->setPage($pageId, '<p>'.$text[1].'</p>', self::$i18n);
// Met à jour le site map
$this->createSitemap('all');
// $this->createSitemap('all');
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $pageId,
@ -365,7 +365,7 @@ class page extends common {
}
$this->deleteData(['module', $url[0]]);
// Met à jour le site map
$this->createSitemap('all');
// $this->createSitemap('all');
// Met à jour 'config', 'statislite', 'enable' si aucume page utilise le module Statislite
$inPages = helper::arrayCollumn($this->getData(['page']),'moduleId', 'SORT_DESC');
$statislite = 'off';
@ -567,7 +567,7 @@ class page extends common {
}
}
// Met à jour le site map
$this->createSitemap('all');
// $this->createSitemap('all');
// Redirection vers la configuration
if($this->getInput('pageEditModuleRedirect', helper::FILTER_BOOLEAN)) {
// Valeurs en sortie

View File

@ -1,8 +1,4 @@
# Bloque l'accès aux données
Order deny,allow
Deny from all
# Sauf l'accès au modèle csv
<Files template.csv>
Order Allow,Deny
Allow from all
</Files>
Require all denied
<Files *.csv>
Require all granted
</Files>

View File

@ -41,6 +41,7 @@ class UploadHandler
const IMAGETYPE_GIF = 1;
const IMAGETYPE_JPEG = 2;
const IMAGETYPE_PNG = 3;
const IMAGETYPE_WEBP = 4;
protected $image_objects = array();
@ -508,7 +509,7 @@ class UploadHandler
$index, $content_range) {
// Add missing file extension for known image types:
if (strpos($name, '.') === false &&
preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
preg_match('/^image\/(gif|jpe?g|png|webp)/', $type, $matches)) {
$name .= '.'.$matches[1];
}
if ($this->options['correct_image_extensions']) {
@ -522,6 +523,9 @@ class UploadHandler
case self::IMAGETYPE_GIF:
$extensions = array('gif');
break;
case self::IMAGETYPE_WEBP:
$extensions = array('webp');
break;
}
// Adjust incorrect image file extensions:
if (!empty($extensions)) {
@ -734,6 +738,12 @@ class UploadHandler
$image_quality = isset($options['png_quality']) ?
$options['png_quality'] : 9;
break;
case 'webp':
$src_func = 'imagecreatefromwebp';
$write_func = 'imagewebp';
$image_quality = isset($options['webp_quality']) ?
$options['webp_quality'] : 75;
break;
default:
return false;
}
@ -1083,6 +1093,9 @@ class UploadHandler
if (bin2hex(@$data[0]).substr($data, 1, 4) === '89PNG') {
return self::IMAGETYPE_PNG;
}
if ($data === 'RIFF') {
return self::IMAGETYPE_WEBP;
}
return false;
}

View File

@ -1 +1 @@
Deny from all
Require all denied

View File

@ -466,7 +466,7 @@ $config = array(
//**********************
//Allowed extensions (lowercase insert)
//**********************
'ext_img' => array( 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff','svg', 'ico' ), //Images
'ext_img' => array( 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff','svg', 'ico', 'webp' ), //Images
'ext_file' => array( 'doc', 'docx', 'rtf', 'pdf', 'xls', 'xlsx', 'txt', 'csv', 'html', 'xhtml', 'psd', 'sql', 'log', 'fla', 'xml', 'ade', 'adp', 'mdb', 'accdb', 'ppt', 'pptx', 'odt', 'ots', 'ott', 'odb', 'odg', 'otp', 'otg', 'odf', 'ods', 'odp', 'css', 'ai', 'kmz','dwg', 'dxf', 'hpgl', 'plt', 'spl', 'step', 'stp', 'iges', 'igs', 'sat', 'cgm', 'ics', 'gpx', 'kml', 'ttf', 'eot', 'woff', 'otf', 'woff2', ''), //Files
'ext_video' => array( 'mov', 'mpeg', 'm4v', 'mp4', 'avi', 'mpg', 'wma', "flv", "webm" ), //Video
'ext_music' => array( 'mp3', 'mpga', 'm4a', 'ac3', 'aiff', 'mid', 'ogg', 'wav' ), //Audio

View File

@ -133,6 +133,8 @@ $mime_types = array(
"audio/x-ms-wax" => "wax",
"image/vnd.wap.wbmp" => "wbmp",
"application/vnd.wap.wbxml" => "wbxml",
"video/webm" => "webm",
"image/webp" => "webp",
"video/x-ms-wm" => "wm",
"audio/x-ms-wma" => "wma",
"text/vnd.wap.wml" => "wml",

File diff suppressed because it is too large Load Diff

View File

@ -36,7 +36,7 @@ class agenda extends common {
'index' => self::GROUP_VISITOR
];
const VERSION = '5.1';
const VERSION = '5.2';
const REALNAME = 'Agenda';
const DELETE = true;
const UPDATE = '4.1';
@ -136,14 +136,14 @@ class agenda extends common {
* Appelée par les fonctions index et config
*/
private function update() {
// Initialisation ou mise à jour vers la version 4.7
// Mise à jour vers la version 4.7
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '4.7', '<') ) {
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0).'_affiche')) mkdir(self::DATAMODULE.'data/'.$this->getUrl(0).'_affiche');
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','4.7']);
}
// Initialisation ou mise à jour vers la version 5.0
// Mise à jour vers la version 5.0
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '5.0', '<') ) {
$this->setData(['module', $this->getUrl(0), 'texts',[
'configTextButtonBack' => 'Retour',
@ -154,10 +154,14 @@ class agenda extends common {
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','5.0']);
}
// Initialisation ou mise à jour vers la version 5.1
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '5.1', '<') ) {
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','5.1']);
}
// Mise à jour vers la version 5.2
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '5.2', '<') ) {
// Mise à jour des .htaccess avec Apache2.4
copy( './module/agenda/ressource/data/agenda/module/adresses/.htaccess', './site/data/agenda/module/adresses/.htaccess');
copy( './module/agenda/ressource/data/agenda/module/data/.htaccess', './site/data/agenda/module/data/.htaccess');
copy( './module/agenda/ressource/file/source/agenda/adresses/.htaccess', './site/file/source/agenda/adresses/.htaccess');
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','5.2']);
}
}
/**
@ -775,26 +779,12 @@ class agenda extends common {
self::$time_unix_deb = $date->getTimestamp();
$date->setTime(18, 00);
self::$time_unix_fin = $date->getTimestamp();
// Passage de la langue d'administration à Tinymce et à flatpickr
$lang_admin = 'fr_FR';
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_admin = 'en_GB';
$lang_flatpickr = 'default';
}
?>
<script>
var lang_admin = "<?php echo $lang_admin; ?>";
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
</script>
<?php
// Valeurs en sortie hors soumission du formulaire
$this->addOutput([
'showBarEditButton' => true,
'showPageContent' => false,
'vendor' => [
'flatpickr',
'tinymce',
'flatpickr'
],
'view' => 'creation'
]);
@ -911,26 +901,13 @@ class agenda extends common {
}
$this->limite_groupes();
if( $this->getUser('group') >= self::$evenement['groupe_mod']){
// Passage de la langue d'administration à Tinymce et à flatpickr
$lang_admin = 'fr_FR';
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_admin = 'en_GB';
$lang_flatpickr = 'default';
}
?>
<script>
var lang_admin = "<?php echo $lang_admin; ?>";
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
</script>
<?php
// Affichage de la page édition d'un évènement avec les valeurs actuelles
$this->addOutput([
'showBarEditButton' => true,
'showPageContent' => false,
'vendor' => [
'flatpickr',
'tinymce'
'flatpickr'
],
'view' => 'edition'
]);
@ -948,7 +925,7 @@ class agenda extends common {
/**
* Newname utilisé par la version 9 pour inscrire le nouveau nom de page dans le json du module
* Newname utilisé pour inscrire le nouveau nom de page dans le json du module
*/
public function newname() {
$this->setData(['module',$this->getUrl(0),'name',$this->getUrl(0)]);
@ -973,8 +950,10 @@ class agenda extends common {
}
// Mise à jour des données de module
$this->update();
if (null !== $this->getData(['module', $this->getUrl(0), 'config', 'versionData'])
&& version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '5.2', '<')){
$this->update();
}
//Pour récupération des données ajax jquery date ou id
$url = $_SERVER['REQUEST_URI'];
if (strpos($url,'/da:') !== false){
@ -1005,24 +984,22 @@ class agenda extends common {
'droit_creation' => 2,
'droit_limite' => true,
'maxiWidth' => '800',
'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData'])
'versionData' => self::VERSION
],
'categories' => [
'valCategories' => false
]
]]);
//Création des dossiers de sauvegarde de l'agenda
if(! is_dir(self::DATAMODULE.'data')) mkdir(self::DATAMODULE.'data',0770,true);
// Upload des ressources puis création des dossiers de sauvegarde de l'agenda
$this->custom_copy('./module/agenda/ressource/data', self::DATA_DIR);
$this->custom_copy('./module/agenda/ressource/file', self::FILE_DIR);
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0)))mkdir(self::DATAMODULE.'data/'.$this->getUrl(0));
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0).'_sauve'))mkdir(self::DATAMODULE.'data/'.$this->getUrl(0).'_sauve');
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0).'_visible')) mkdir(self::DATAMODULE.'data/'.$this->getUrl(0).'_visible');
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0).'_affiche')) mkdir(self::DATAMODULE.'data/'.$this->getUrl(0).'_affiche');
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0))) mkdir(self::DATAMODULE.'data/'.$this->getUrl(0));
if(! is_dir(self::DATAFILE.'ics')) mkdir(self::DATAFILE.'ics');
if(! is_dir(self::DATAFILE.'categories')) mkdir(self::DATAFILE.'categories');
if(! is_dir(self::DATAMODULE.'ics')) mkdir(self::DATAMODULE.'ics');
if(! is_dir(self::DATAMODULE.'adresses')) mkdir(self::DATAMODULE.'adresses');
$this->addOutput([
'notification' => $text[0],

View File

@ -0,0 +1,7 @@
# Bloque l'accès aux données
<Files "*.txt">
Require all denied
</Files>
<Files "*.csv">
Require all denied
</Files>

View File

@ -0,0 +1,3 @@
<Files "*.json">
Require all granted
</Files>

View File

@ -0,0 +1,7 @@
# Bloque l'accès aux données
<Files "*.txt">
Require all denied
</Files>
<Files "*.csv">
Require all denied
</Files>

View File

@ -0,0 +1,733 @@
BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME:Jours fériés Métropole
NAME:Jours fériés Métropole
PRODID:Etalab
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250529
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:d1d8e2e240ae715d149c11145638a06d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:81b412b83868ed02ea1a8024c4c8a357
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:00fd28dc3058aa5389abadb6a02b8b5b
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:93686d52c729aca3c401065e490d98fd
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160516
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:a4b1c3723d5d877d7265deb24faaa8d8
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:de8342ff2afa7031a581237cc35cdbf0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:95d3fe478e70603ed092aba9bb14cc03
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20221225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:8cbfd34c58535adf9152928830f16b56
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:eb4f4cd6ccfb42abd6190130b4f80c77
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210524
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:29bd64b591fb6044b6579673f13d241a
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:526c2a579f44a21fa277f3faed7f155b
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160328
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:60bb00b126ff132ace83b1a77bdd4775
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:81a277f6a2065fa3d9379df5559941de
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20211101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:ddf94e83421783ed9b68791012d4ffcc
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20161101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:242cd3a4e72710ea57ed35e76497783b
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20151101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:f96ae94fa61bb2f3c671ba8a0e127c65
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20171225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:dae23dc0b21d6334b5654044a52d95e1
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20171111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:6b06d7c6e368c2bb47895630c9ac618f
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:512be151b9a03e408a8ee80371bdb5d5
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:5ec1ea7aeb0fcd5593fcc8b2de69ce6e
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:2c17ae593ff7e9e3c8585e30a3183279
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230518
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:4a8d93da3ec625969c13c4820b24f514
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20201101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:fe6c71c56021b2d7e573e1cd6cde074d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:5d769cd717fe2027b11077cca08ce35d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180521
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:9c332de8829db3bdaab01f1190f15663
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20211225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:0e4218e8cf22ab9abf21febe9456e20c
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20241101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:dd267dce0232b504133231c68f19c9ae
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:f5144d62904c585628142166f2a2e695
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:3c43707735a4d4a214466edf8e6fcbe6
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:1edff23fc91c41ad446abf064725fc70
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200601
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:2b10299dd0366c510b07bd9a4ff048b1
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:856f2701d117a9b188086541706c7964
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20231225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:367624e227aac3812528f241349a7c96
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20241225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:a2ad4bde5f021604f088ac8ff9dd8fd0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:7b836334425862ddb4bf47b488d0fd03
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190530
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:d9a96a99fbedf3bb211eccd97f155fd4
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:f768ecc87a5cd7be120b87f25d9233bc
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:0840d81f66979ceec8c1d332f4012d01
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:bc90b2144ad8e4a8f40d6174ba41fba0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150525
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:b99c07d06dc0e712f70888f4b78d413a
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240520
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:0f00afe53d71e95961a45b42cda9ace8
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20181111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:6a18fa390a60e5a32d0b6898ca0fedf1
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:848a71f1f9793e72415143c5847e2b9d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240509
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:b4016e3b941132ba6672d2f6fe1fe608
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230529
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:c708f3ba4561a574d917b8301fb62e13
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20201111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:840d3b553f7c5745c66e526a5120296a
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:f4574587958b1848a827cefd81923521
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:2b200c0a320d6c3c9376ec32ac5209bd
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220606
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:47ecd83655fb3d9f3f466ed71b30edf5
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:c6b6e5340de7a9d4382f02f409f70198
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:72478cfa7389b0e74e289cd5548c52d8
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170605
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:24d76b93707f517fd9742a53297eb15d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:a6590e8f64c1f8d2ec22a7f66a39f5db
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240401
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:89aa3606f0cf255cd22be993f739c289
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20201225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:58eb1d45cb1e4020902c9d7f48a6aca3
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:a5532e6257cf41e64b6c8f4f8e4f62f9
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180402
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:53aef7b2068f87bb46c4d87b76d3f62f
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20251111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:d4fcc714c308a93c9d80b65b84e297ba
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20251101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:fca336a73b4976ab496d4afe93449e61
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20191225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:94dc7bca0d98b843c0a464dfaba404fa
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220418
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:fd293a74887a0208fd4b2f996922d146
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210513
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:71f318271fab7c933b84c9f4c1c2791d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:1d3c47ada506eafb4f0b1045343412e3
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230410
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:7a6a65c90bf078e3ea7d1038166dd061
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20251225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:7adc4181e295ea370f71a6f017f77e4e
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170525
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:f3265f5ca615c3fb59694612cd7077ef
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20191101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:546de5f95d01851e99635413b7328543
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:147d0831ff1a762a404fcd1c62527fcb
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:77c4d1dce03d48cf722cc0d46d126876
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210405
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:7ce5538a440f5b760fc61beeb005e279
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20151111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:82e5c9d47a87040e405295cb9de85b3a
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20171101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:0d4171e346dd06e288c5ca5d4c2694c3
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:b9a8a659021921221508c443a9385582
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:9cdedd9a4810fc24e452a4bfe84ce2bd
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:877bb3d4bec9c9e2202194eb67265250
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200413
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:ee8b94a34f43dc3f00cf575ac9a3401b
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20151225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:c976c51152f0dd8144b46562cec06f22
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:fbf4c942a1bc6d8e18c69cfb477e89e2
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20161111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:89198e369802ebc60ae2d36128ad4dcf
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:ff83f977fea539750d3a7c076a799767
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150406
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:b53416352327943804f0ec1d6a684947
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:c3cf1311f57118aab4bc96248df024e1
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:c097697da80859a33dae16c90daff383
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250609
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:e7bec9699cfe0509ab2b5a1bc92e308d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200521
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:357ace601bea837565327c9d3dab7d77
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:29eeecbea86fbfd359d9551084be1df0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:4bb974b056c03fff8d2c6f158355d452
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20211111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:de39555c83e7530d261e49864323ede7
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20241111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:c2e9351248275761ab92e2fff42a1b76
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190422
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:b378b5d243d0ad3f0b835eb70ad0a4ed
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:474b26ed4a97afacbaf2f015b1e5dcea
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:4ee79fba95cf1048678f65b0580687e0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250421
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:4702b0a28f8c0b3d92c583d2c5d39ea7
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:22adedd30f8f6d6232db4a1d4d0bfce4
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190501
DTSTAMP:20200101T000000Z
SUMMARY:1er mai
UID:eda3a7ef23063dcbf65fbdc298fbb3ec
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20231101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:824ab1768b09b7eb077f74a116793836
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20150514
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:9bb62e903fe599f23bd5e24acd310c2f
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:db81d5a8de54d7cecd057d0d43a4a87d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20210815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:0caa48853dd06d031dcf0a78f9def079
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20231111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:a7ad613a417360a84394ce679ff84484
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180510
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:e1eec9f61c8b0877be2cf39c81fad25f
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170417
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pâques
UID:2930e6b4bad7f7d369382aa65929684d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190610
DTSTAMP:20200101T000000Z
SUMMARY:Lundi de Pentecôte
UID:a19d90214f28b0dfad0a0b2eb04b1069
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220526
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:b59a0a0e8b147c3c6a105703da32e16d
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:b940bf2c89a7a6429d8aca19cd27da24
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:737601a775f06ef776cb8111eecb1df1
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:af04912c51afa4711116ca03058202ab
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20181101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:2d978c43c970d71323573948a7720349
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20191111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:f610cb4feff3c50245a2f136f9e5af3f
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20221111
DTSTAMP:20200101T000000Z
SUMMARY:11 novembre
UID:9fbcdbeb6181e8cb00b78e8cd9145318
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:dfadc3cee0b9aa21cc89477447b097b5
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160714
DTSTAMP:20200101T000000Z
SUMMARY:14 juillet
UID:c6cff5af72cbabefdcb9330e2e6d13c6
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20230508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:47ee8f7c375e59fcb5508beb5188a072
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:c0b9c2c8b3364fcc6c61a20725b4aee3
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20161225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:83ac83d92caaca8a08a6dab0024d5227
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160505
DTSTAMP:20200101T000000Z
SUMMARY:Ascension
UID:338b07bf80ee8ccff3e3f2eb09388a3a
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190815
DTSTAMP:20200101T000000Z
SUMMARY:Assomption
UID:ff9d7c093b8d971133c5c444e93c0f6f
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20181225
DTSTAMP:20200101T000000Z
SUMMARY:Jour de Noël
UID:dfdeebebc2a52cad2747a1cffedfaa77
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20221101
DTSTAMP:20200101T000000Z
SUMMARY:Toussaint
UID:0d73b395edba6d3dd8eaf1a7554dd8bb
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160101
DTSTAMP:20200101T000000Z
SUMMARY:1er janvier
UID:46df3293d93419db1f69ac30aabfdfd1
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20180508
DTSTAMP:20200101T000000Z
SUMMARY:8 mai
UID:4b40a5a01999a2bf2a8a40bbc22fb2f3
END:VEVENT
METHOD:PUBLISH
END:VCALENDAR

View File

@ -63,6 +63,28 @@ switch ($val) {
break;
}
?>
<?php
// Passage de la langue d'administration à Tinymce et à flatpickr
$lang_admin = 'fr_FR';
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_admin = 'en_GB';
$lang_flatpickr = 'default';
}
?>
<script>
var lang_admin = "<?php echo $lang_admin; ?>";
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
</script>
<?php
// Inclusion de tinymce
echo '<script src="' . helper::baseUrl(false) . 'core/vendor/tinymce/tinymce.min.js' . '"></script>';
echo '<script src="' . helper::baseUrl(false) . 'core/vendor/tinymce/init.js' . '"></script>';
echo '<link rel="stylesheet" href="' . helper::baseUrl(false) . 'core/vendor/tinymce/init.css' . '">';
?>
<?php echo template::formOpen('creation_events'); ?>
<div class="row">
<div class="col2">

View File

@ -55,6 +55,28 @@ switch ($val) {
break;
}
?>
<?php
// Passage de la langue d'administration à Tinymce et à flatpickr
$lang_admin = 'fr_FR';
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_admin = 'en_GB';
$lang_flatpickr = 'default';
}
?>
<script>
var lang_admin = "<?php echo $lang_admin; ?>";
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
</script>
<?php
// Inclusion de tinymce
echo '<script src="' . helper::baseUrl(false) . 'core/vendor/tinymce/tinymce.min.js' . '"></script>';
echo '<script src="' . helper::baseUrl(false) . 'core/vendor/tinymce/init.js' . '"></script>';
echo '<link rel="stylesheet" href="' . helper::baseUrl(false) . 'core/vendor/tinymce/init.css' . '">';
?>
<!--Adaptation de Tinymce en fonction des droits des utilisateurs -->
<?php if( $this->getUser('group') >= $module::$evenement['groupe_mod'] ){
if( $this->getUser('group') >= 2){

View File

@ -18,7 +18,7 @@
class blog extends common {
const VERSION = '6.2';
const VERSION = '6.3';
const REALNAME = 'Blog';
const DELETE = true;
const UPDATE = '0.0';
@ -61,70 +61,9 @@ class blog extends common {
public static $pages;
public static $states = [
false => 'Brouillon',
true => 'Publié'
];
public static $states_en = [
false => 'Draft',
true => 'Published'
];
public static $pictureSizes = [
'20' => 'Très petite',
'30' => 'Petite',
'40' => 'Grande',
'50' => 'Très Grande',
'100' => 'Pleine largeur',
];
public static $pictureSizes_en = [
'20' => 'Very small',
'30' => 'Small',
'40' => 'Large',
'50' => 'Very large',
'100' => 'Full width',
];
public static $picturePositions_en = [
'left' => 'Left',
'right' => 'Right',
];
public static $picturePositions = [
'left' => 'à gauche',
'right' => 'à droite',
];
// Nombre d'objets par page
public static $ItemsList = [
4 => '4 articles',
8 => '8 articles',
12 => '12 articles',
16 => '16 articles',
22 => '22 articles'
];
//Paramètre longueur maximale des commentaires en nb de caractères
public static $commentLength = [
'500' => '500',
'1000' => '1000',
'2000' => '2000',
'5000' => '5000',
'10000' => '10000'
];
// Permissions d'un article
public static $articleConsent = [
self::EDIT_ALL => 'Tous les groupes',
self::EDIT_GROUP => 'Groupe du propriétaire',
self::EDIT_OWNER => 'Propriétaire'
];
public static $articleConsent_en = [
self::EDIT_ALL => 'All groups',
self::EDIT_GROUP => 'Owner\'s group',
self::EDIT_OWNER => 'Owner'
];
public static $users = [];
/**
* Mise à jour du module
* Appelée par les fonctions index et config
@ -179,9 +118,10 @@ class blog extends common {
}
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','6.0']);
}
// Version 6.2
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '6.2', '<') ) {
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','6.2']);
// Version 6.3
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '6.3', '<') ) {
$this->setData(['module', $this->getUrl(0), 'texts', 'ReadMore', 'Lire la suite']);
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','6.3']);
}
}
@ -255,20 +195,9 @@ class blog extends common {
*/
public function texts() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = '';
$text[1] = 'Textes enregistrés';
$text[2] = 'Textes visibles par un visiteur';
break;
case 'en' :
$text[0] = '';
$text[1] = '';
$text[2] = 'Texts visible to a visitor';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Soumission du formulaire
if($this->isPost()) {
$this->setData(['module', $this->getUrl(0), 'texts',[
@ -288,18 +217,18 @@ class blog extends common {
'TinymceMaxi' => $this->getInput('blogTextsTinymceMaxi',helper::FILTER_STRING_SHORT),
'TinymceCara' => $this->getInput('blogTextsTinymceCara',helper::FILTER_STRING_SHORT),
'TinymceExceed' => $this->getInput('blogTextsTinymceExceed',helper::FILTER_STRING_SHORT),
'ReadMore' => $this->getInput('blogTextsReadMore',helper::FILTER_STRING_SHORT)
]]);
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[1],
'notification' => $text['blog']['texts'][1],
'state' => true
]);
}
$this->addOutput([
'title' => $text[2],
'title' => $text['blog']['texts'][2],
'view' => 'texts',
]);
}
@ -308,18 +237,9 @@ class blog extends common {
*/
public function add() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Nouvel article créé';
$text[1] = 'Nouvel article';
break;
case 'en' :
$text[0] = 'New article created';
$text[1] = 'New article';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Soumission du formulaire
if($this->isPost()) {
// Modification de l'userId
@ -340,7 +260,7 @@ class blog extends common {
$articleId, [
'comment' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment']),
'content' => $this->getInput('blogAddContent', null),
'picture' => $this->getInput('blogAddPicture', helper::FILTER_STRING_SHORT, true),
'picture' => $this->getInput('blogAddPicture', helper::FILTER_STRING_SHORT),
'hidePicture' => $this->getInput('blogAddHidePicture', helper::FILTER_BOOLEAN),
'pictureSize' => $this->getInput('blogAddPictureSize', helper::FILTER_STRING_SHORT),
'picturePosition' => $this->getInput('blogAddPicturePosition', helper::FILTER_STRING_SHORT),
@ -359,7 +279,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0],
'notification' => $text['blog']['add'][0],
'state' => true
]);
}
@ -371,12 +291,8 @@ class blog extends common {
}
unset($userFirstname);
// Passage de la langue d'administration à Tinymce et flatpickr
$lang_admin = 'fr_FR';
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_admin = 'en_GB';
$lang_flatpickr = 'default';
}
$lang_admin = $text['blog']['add'][2];
$lang_flatpickr = $text['blog']['add'][3];
?>
<script>
var lang_admin = "<?php echo $lang_admin; ?>";
@ -385,7 +301,7 @@ class blog extends common {
<?php
// Valeurs en sortie
$this->addOutput([
'title' => $text[1],
'title' => $text['blog']['add'][1],
'vendor' => [
'tinymce',
'flatpickr'
@ -399,24 +315,15 @@ class blog extends common {
*/
public function comment() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Tout effacer';
$text[1] = 'Gestion des commentaires : ';
break;
case 'en' :
$text[0] = 'Delete all';
$text[1] = 'Comment management : ';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
$comments = $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2),'comment']);
self::$commentsDelete = template::button('blogCommentDeleteAll', [
'class' => 'blogCommentDeleteAll buttonRed',
'href' => helper::baseUrl() . $this->getUrl(0) . '/commentDeleteAll/' . $this->getUrl(2).'/' . $_SESSION['csrf'] ,
'ico' => 'cancel',
'value' => $text[0]
'value' => $text['blog']['comment'][0]
]);
// Dates suivant la langue d'administration
setlocale(LC_TIME, 'fr_FR');
@ -458,7 +365,7 @@ class blog extends common {
}
// Valeurs en sortie
$this->addOutput([
'title' => $text[1]. $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'title']),
'title' => $text['blog']['comment'][1]. $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'title']),
'view' => 'comment'
]);
}
@ -468,18 +375,9 @@ class blog extends common {
*/
public function commentDelete() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Action non autorisée';
$text[1] = 'Commentaire supprimé';
break;
case 'en' :
$text[0] = 'Action not permitted';
$text[1] = 'Comment deleted';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Le commentaire n'existe pas
if($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment', $this->getUrl(3)]) === null) {
// Valeurs en sortie
@ -492,7 +390,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0]
'notification' => $text['blog']['commentDelete'][0]
]);
}
// Suppression
@ -501,7 +399,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/comment/'.$this->getUrl(2),
'notification' => $text[1],
'notification' => $text['blog']['commentDelete'][1],
'state' => true
]);
}
@ -512,24 +410,15 @@ class blog extends common {
*/
public function commentDeleteAll() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Action non autorisée';
$text[1] = 'Commentaires supprimés';
break;
case 'en' :
$text[0] = 'Action not allowed';
$text[1] = 'Comments deleted';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Jeton incorrect
if ($this->getUrl(3) !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0]
'notification' => $text['blog']['commentDeleteAll'][0]
]);
}
// Suppression
@ -538,7 +427,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/comment',
'notification' => $text[1],
'notification' => $text['blog']['commentDeleteAll'][1],
'state' => true
]);
}
@ -549,20 +438,9 @@ class blog extends common {
*/
public function commentApprove() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Action non autorisée';
$text[1] = 'Commentaire approuvé';
$text[2] = 'Commentaire rejeté';
break;
case 'en' :
$text[0] = 'Unauthorised action';
$text[1] = 'Comment approved';
$text[2] = 'Comment rejected';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Le commentaire n'existe pas
if($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment', $this->getUrl(3)]) === null) {
// Valeurs en sortie
@ -575,7 +453,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0]
'notification' => $text['blog']['commentApprove'][0]
]);
}
// Inversion du statut
@ -592,7 +470,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/comment/'.$this->getUrl(2),
'notification' => $approved ? $text[1] : $text[2],
'notification' => $approved ? $text['blog']['commentApprove'][1] : $text['blog']['commentApprove'][2],
'state' => $approved
]);
}
@ -603,22 +481,9 @@ class blog extends common {
*/
public function config() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Modifications enregistrées';
$text[1] = 'Configuration du module';
$text[2] = ' à ';
$states = self::$states;
break;
case 'en' :
$text[0] = 'Saved changes';
$text[1] = 'Module configuration';
$text[2] = ' at ';
$states = self::$states_en;
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Mise à jour des données de module
if( null === $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) )$this->update();
// Soumission du formulaire
@ -632,7 +497,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0],
'notification' => $text['blog']['config'][0],
'state' => true
]);
} else {
@ -692,7 +557,7 @@ class blog extends common {
'<a href="' . helper::baseurl() . $this->getUrl(0) . '/' . $articleIds[$i] . '" target="_blank" >' .
$this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'title']) .
'</a>',
$date .$text[2]. $heure,
$date .$text['blog']['config'][2]. $heure,
$states[$this->getData(['module', $this->getUrl(0), 'posts', $articleIds[$i], 'state'])],
// Bouton pour afficher les commentaires de l'article
template::button('blogConfigComment' . $articleIds[$i], [
@ -713,7 +578,7 @@ class blog extends common {
}
// Valeurs en sortie
$this->addOutput([
'title' => $text[1],
'title' => $text['blog']['config'][1],
'view' => 'config'
]);
}
@ -724,18 +589,9 @@ class blog extends common {
*/
public function delete() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Action non autorisée';
$text[1] = 'Article supprimé';
break;
case 'en' :
$text[0] = 'Unauthorised action';
$text[1] = 'Article deleted';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
if($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2)]) === null) {
// Valeurs en sortie
$this->addOutput([
@ -747,7 +603,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0]
'notification' => $text['blog']['delete'][0]
]);
}
// Suppression
@ -756,7 +612,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[1],
'notification' => $text['blog']['delete'][1],
'state' => true
]);
}
@ -767,24 +623,15 @@ class blog extends common {
*/
public function edit() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Action non autorisée';
$text[1] = 'Modifications enregistrées';
break;
case 'en' :
$text[0] = 'Unauthorised action';
$text[1] = 'Changes saved';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Jeton incorrect
if ($this->getUrl(3) !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[0]
'notification' => $text['blog']['edit'][0]
]);
}
// L'article n'existe pas
@ -817,7 +664,7 @@ class blog extends common {
$articleId, [
'comment' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment']),
'content' => $this->getInput('blogEditContent', null),
'picture' => $this->getInput('blogEditPicture', helper::FILTER_STRING_SHORT, true),
'picture' => $this->getInput('blogEditPicture', helper::FILTER_STRING_SHORT),
'hidePicture' => $this->getInput('blogEditHidePicture', helper::FILTER_BOOLEAN),
'pictureSize' => $this->getInput('blogEditPictureSize', helper::FILTER_STRING_SHORT),
'picturePosition' => $this->getInput('blogEditPicturePosition', helper::FILTER_STRING_SHORT),
@ -840,7 +687,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => $text[1],
'notification' => $text['blog']['edit'][1],
'state' => true
]);
}
@ -885,58 +732,8 @@ class blog extends common {
*/
public function index() {
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = '<br/>Une notification a été envoyée.';
$text[1] = '<br/> Erreur de notification : ';
$text[4] = 'Nouveau commentaire déposé';
$text[5] = 'Bonjour';
$text[6] = 'L\'article ';
$text[7] = 'a reçu un nouveau commentaire';
$text[8] = 'Pas encore de commentaire';
$text[9] = 'Ecrire un commentaire';
$text[10] = 'Nom';
$text[11] = 'Commentaire avec maximum';
$text[12] = 'caractères';
$text[13] = 'commentaire';
$text[14] = 'Commentaire déposé';
$text[15] = 'Commentaire déposé en attente d\'approbation';
$text[16] = 'Cet article ne reçoit pas de commentaire';
$text[17] = 'Connexion';
$text[18] = 'Editer';
$text[19] = 'Annuler';
$text[20] = 'Envoyer';
$text[21] = 'Vous avez atteint le maximum de';
$text[22] = 'caractères restants';
$text[23] = 'Vous alliez dépasser le maximum de ';
break;
case 'en' :
$text[0] = '<br/>A notification has been sent.';
$text[1] = '<br/> Notification error : ';
$text[4] = 'New comment submitted';
$text[5] = 'Hello';
$text[6] = 'The article ';
$text[7] = ' has received a new comment';
$text[8] = 'No comment yet';
$text[9] = 'Write a comment';
$text[10] = 'Name';
$text[11] = 'Comment with maximum';
$text[12] = 'characters';
$text[13] = 'Comment';
$text[14] = 'Comment filed';
$text[15] = 'Comment submitted pending approval';
$text[16] = 'This article does not receive comments';
$text[17] = 'Login';
$text[18] = 'Edit';
$text[19] = 'Cancel';
$text[20] = 'Send';
$text[21] = 'You have reached the maximum of';
$text[22] = 'Characters left';
$text[23] = 'You were about to exceed the maximum of';
break;
}
$param = 'blog';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Installation ?
if( null === $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) ){
$this->setData(['module', $this->getUrl(0), 'config',[
@ -946,22 +743,22 @@ class blog extends common {
'versionData' => self::VERSION
]]);
$this->setData(['module', $this->getUrl(0), 'texts',[
'NoComment' => $text[8],
'Write' => $text[9],
'Name' => $text[10],
'Maxi' => $text[11],
'Cara' => $text[12],
'Comment' => $text[13],
'CommentOK' => $text[14],
'Waiting' => $text[15],
'ArticleNoComment' => $text[16],
'Connection' => $text[17],
'Edit' => $text[18],
'Cancel' => $text[19],
'Send' => $text[20],
'TinymceMaxi' => $text[21],
'TinymceCara' => $text[22],
'TinymceExceed' => $text[23],
'NoComment' => $text['blog']['index'][8],
'Write' => $text['blog']['index'][9],
'Name' => $text['blog']['index'][10],
'Maxi' => $text['blog']['index'][11],
'Cara' => $text['blog']['index'][12],
'Comment' => $text['blog']['index'][13],
'CommentOK' => $text['blog']['index'][14],
'Waiting' => $text['blog']['index'][15],
'ArticleNoComment' => $text['blog']['index'][16],
'Connection' => $text['blog']['index'][17],
'Edit' => $text['blog']['index'][18],
'Cancel' => $text['blog']['index'][19],
'Send' => $text['blog']['index'][20],
'TinymceMaxi' => $text['blog']['index'][21],
'TinymceCara' => $text['blog']['index'][22],
'TinymceExceed' => $text['blog']['index'][23],
]]);
} else{
// Mise à jour des données de module
@ -1022,9 +819,9 @@ class blog extends common {
foreach($to as $key => $adress){
$sent = $this->sendMail(
$adress,
$text[4],
$text[5] . ' <strong>' . $firstname[$key] . ' ' . $lastname[$key] . '</strong>,<br><br>' .
$text[6].'<a href="' . helper::baseUrl() . $this->getUrl(0) . '/ ' . $this->getUrl(1) . '">' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'title']) . '</a>'.$text[7].'<br><br>',
$text['blog']['index'][4],
$text['blog']['index'][5] . ' <strong>' . $firstname[$key] . ' ' . $lastname[$key] . '</strong>,<br><br>' .
$text['blog']['index'][6].'<a href="' . helper::baseUrl() . $this->getUrl(0) . '/ ' . $this->getUrl(1) . '">' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'title']) . '</a>'.$text['blog']['index'][7].'<br><br>',
''
);
if( $sent === false) $error++;
@ -1032,7 +829,7 @@ class blog extends common {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl() . '#comment',
'notification' => ($error === 0 ? $notification . $text[0] : $notification . $text[1] . $sent),
'notification' => ($error === 0 ? $notification . $text['blog']['index'][0] : $notification . $text['blog']['index'][1] . $sent),
'state' => ($sent === true ? true : null)
]);

View File

@ -0,0 +1,196 @@
<?php
// Lexique du module Blog en anglais
$text['blog_view']['add'][0] = 'Back';
$text['blog_view']['add'][1] = 'Save as draft';
$text['blog_view']['add'][2] = 'Publish';
$text['blog_view']['add'][3] = 'General information';
$text['blog_view']['add'][4] = 'Title';
$text['blog_view']['add'][5] = 'Optional image. Optimal size of cover image : ';
$text['blog_view']['add'][6] = 'Cover image';
$text['blog_view']['add'][7] = 'Width of image';
$text['blog_view']['add'][8] = 'Position';
$text['blog_view']['add'][9] = 'The text of the article is adapted around the image';
$text['blog_view']['add'][10] = 'Hide image in article';
$text['blog_view']['add'][11] = 'Publication options';
$text['blog_view']['add'][12] = 'Author';
$text['blog_view']['add'][13] = 'The article is not visible until after the scheduled publication date';
$text['blog_view']['add'][14] = 'Date of publication';
$text['blog_view']['add'][15] = 'Edit / Delete';
$text['blog_view']['add'][16] = 'Users in higher groups have unrestricted access to the article';
$text['blog_view']['add'][17] = 'Comments';
$text['blog_view']['add'][18] = 'Close comments';
$text['blog_view']['add'][19] = 'Moderator approval';
$text['blog_view']['add'][20] = 'Choice of maximum number of characters for each comment in the article, including html formatting';
$text['blog_view']['add'][21] = 'Characters per comment';
$text['blog_view']['add'][22] = 'Email notification';
$text['blog_view']['add'][23] = 'Optional image';
$text['blog_view']['comment'][0] = 'Return';
$text['blog_view']['comment'][1] = 'Date';
$text['blog_view']['comment'][2] = 'Content';
$text['blog_view']['comment'][3] = 'Author';
$text['blog_view']['comment'][4] = 'No comments';
$text['blog_view']['config'][0] = 'Back';
$text['blog_view']['config'][1] = 'Article';
$text['blog_view']['config'][2] = 'Save';
$text['blog_view']['config'][3] = 'Module settings';
$text['blog_view']['config'][4] = 'RSS feed link';
$text['blog_view']['config'][5] = 'Label text';
$text['blog_view']['config'][6] = 'Articles per page';
$text['blog_view']['config'][7] = 'Title';
$text['blog_view']['config'][8] = 'Date published';
$text['blog_view']['config'][9] = 'Status';
$text['blog_view']['config'][10] = 'Comments';
$text['blog_view']['config'][11] = 'No article';
$text['blog_view']['config'][12] = 'Version No.';
$text['blog_view']['config'][13] = 'Texts';
$text['blog_view']['config'][14] = "Are you sure you want to delete this article ?";
$text['blog_view']['edit'][0] = 'Back';
$text['blog_view']['edit'][1] = 'Save as draft';
$text['blog_view']['edit'][2] = 'Publish';
$text['blog_view']['edit'][3] = 'General information';
$text['blog_view']['edit'][4] = 'Title';
$text['blog_view']['edit'][5] = 'Optional image. Optimal size of cover image : ';
$text['blog_view']['edit'][6] = 'Cover image';
$text['blog_view']['edit'][7] = 'Width of image';
$text['blog_view']['edit'][8] = 'Position';
$text['blog_view']['edit'][9] = 'The text of the article is adapted around the image';
$text['blog_view']['edit'][10] = 'Hide image in article';
$text['blog_view']['edit'][11] = 'Publication options';
$text['blog_view']['edit'][12] = 'Author';
$text['blog_view']['edit'][13] = 'The article is not visible until after the scheduled publication date';
$text['blog_view']['edit'][14] = 'Date of publication';
$text['blog_view']['edit'][15] = 'Edit / Delete';
$text['blog_view']['edit'][16] = 'Users in higher groups have unrestricted access to the article';
$text['blog_view']['edit'][17] = 'Comments';
$text['blog_view']['edit'][18] = 'Close comments';
$text['blog_view']['edit'][19] = 'Moderator approval';
$text['blog_view']['edit'][20] = 'Choice of the maximum number of characters for each comment in the article, including html formatting.';
$text['blog_view']['edit'][21] = 'Characters per comment';
$text['blog_view']['edit'][22] = 'Email notification';
$text['blog_view']['edit'][23] = 'Editors = editors + administrators<br/> Members = members + editors + administrators';
$text['blog_view']['indext'][0] = 'Read more';
$text['blog_view']['indext'][1] = 'No article';
$text['blog_view']['texts'][0] = 'Back';
$text['blog_view']['texts'][1] = 'Adapt these texts into the language of your visitors';
$text['blog_view']['texts'][2] = 'Save';
$text['blog_view']['texts'][3] = 'No comment yet';
$text['blog_view']['texts'][4] = 'Write a comment';
$text['blog_view']['texts'][5] = 'Name';
$text['blog_view']['texts'][6] = 'Comment with maximum';
$text['blog_view']['texts'][7] = 'characters';
$text['blog_view']['texts'][8] = 'comment';
$text['blog_view']['texts'][9] = 'Comment filed';
$text['blog_view']['texts'][10] = 'Comment submitted pending approval';
$text['blog_view']['texts'][11] = 'This article does not receive comments';
$text['blog_view']['texts'][13] = 'Login';
$text['blog_view']['texts'][15] = 'Edit';
$text['blog_view']['texts'][16] = 'Cancel';
$text['blog_view']['texts'][17] = 'Send';
$text['blog_view']['texts'][18] = 'You have reached the maximum of';
$text['blog_view']['texts'][19] = 'characters left';
$text['blog_view']['texts'][20] = 'You were about to exceed the maximum of ';
$text['blog_view']['texts'][25] = 'Version no.';
$text['blog_view']['texts'][26] ='Read more';
$text['blog_view']['article'][0] = 'en_GB';
$text['blog']['config'][0] = 'Saved changes';
$text['blog']['config'][1] = 'Module configuration';
$text['blog']['config'][2] = ' at ';
$text['blog']['index'][0] = '<br/>A notification has been sent.';
$text['blog']['index'][1] = '<br/> Notification error : ';
$text['blog']['index'][4] = 'New comment submitted';
$text['blog']['index'][5] = 'Hello';
$text['blog']['index'][6] = 'The article ';
$text['blog']['index'][7] = ' has received a new comment';
$text['blog']['index'][8] = 'No comment yet';
$text['blog']['index'][9] = 'Write a comment';
$text['blog']['index'][10] = 'Name';
$text['blog']['index'][11] = 'Comment with maximum';
$text['blog']['index'][12] = 'characters';
$text['blog']['index'][13] = 'Comment';
$text['blog']['index'][14] = 'Comment filed';
$text['blog']['index'][15] = 'Comment submitted pending approval';
$text['blog']['index'][16] = 'This article does not receive comments';
$text['blog']['index'][17] = 'Login';
$text['blog']['index'][18] = 'Edit';
$text['blog']['index'][19] = 'Cancel';
$text['blog']['index'][20] = 'Send';
$text['blog']['index'][21] = 'You have reached the maximum of';
$text['blog']['index'][22] = 'Characters left';
$text['blog']['index'][23] = 'You were about to exceed the maximum of';
$text['blog']['edit'][0] = 'Unauthorised action';
$text['blog']['edit'][1] = 'Changes saved';
$text['blog']['delete'][0] = 'Unauthorised action';
$text['blog']['delete'][1] = 'Article deleted';
$text['blog']['commentApprove'][0] = 'Unauthorised action';
$text['blog']['commentApprove'][1] = 'Comment approved';
$text['blog']['commentApprove'][2] = 'Comment rejected';
$text['blog']['texts'][0] = '';
$text['blog']['texts'][1] = '';
$text['blog']['texts'][2] = 'Texts visible to a visitor';
$text['blog']['add'][0] = 'New article created';
$text['blog']['add'][1] = 'New article';
$text['blog']['add'][2] = 'en_GB';
$text['blog']['add'][3] = 'default';
$text['blog']['comment'][0] = 'Delete all';
$text['blog']['comment'][1] = 'Comment management : ';
$text['blog']['commentDelete'][0] = 'Action not permitted';
$text['blog']['commentDelete'][1] = 'Comment deleted';
$text['blog']['commentDeleteAll'][0] = 'Action not allowed';
$text['blog']['commentDeleteAll'][1] = 'Comments deleted';
$states = [
false => 'Draft',
true => 'Published'
];
// Nombre d'objets par page
$ItemsList = [
4 => '4 articles',
8 => '8 articles',
12 => '12 articles',
16 => '16 articles',
22 => '22 articles'
];
$pictureSizes = [
'20' => 'Very small',
'30' => 'Small',
'40' => 'Large',
'50' => 'Very large',
'100' => 'Full width',
];
$picturePositions = [
'left' => 'Left',
'right' => 'Right',
];
//Paramètre longueur maximale des commentaires en nb de caractères
$commentLength = [
'500' => '500',
'1000' => '1000',
'2000' => '2000',
'5000' => '5000',
'10000' => '10000'
];
// Permissions d'un article
if( $param === 'blog' ){
$articleConsent = [
self::EDIT_ALL => 'All groups',
self::EDIT_GROUP => 'Owner\'s group',
self::EDIT_OWNER => 'Owner'
];
$groupNews = [
self::GROUP_MEMBER => 'Member',
self::GROUP_MODERATOR => 'Editor',
self::GROUP_ADMIN => 'Administrator'
];
} elseif( $param === 'blog_view' ) {
$articleConsent = [
$module::EDIT_ALL => 'All groups',
$module::EDIT_GROUP => 'Owner\'s group',
$module::EDIT_OWNER => 'Owner'
];
$groupNews = [
$module::GROUP_MEMBER => 'Member',
$module::GROUP_MODERATOR => 'Editor',
$module::GROUP_ADMIN => 'Administrator'
];
}
?>

View File

@ -0,0 +1,193 @@
<?php
// Lexique du module Blog en français
$text['blog_view']['add'][0] = 'Retour';
$text['blog_view']['add'][1] = 'Enregistrer en brouillon';
$text['blog_view']['add'][2] = 'Publier';
$text['blog_view']['add'][3] = 'Informations générales';
$text['blog_view']['add'][4] = 'Titre';
$text['blog_view']['add'][5] = 'Image facultative. Taille optimale de l\'image de couverture : ';
$text['blog_view']['add'][6] = 'Image de couverture';
$text['blog_view']['add'][7] = 'Largeur de l\'image';
$text['blog_view']['add'][8] = 'Position';
$text['blog_view']['add'][9] = 'Le texte de l\'article est adapté autour de l\'image';
$text['blog_view']['add'][10] = 'Masquer l\'image dans l\'article';
$text['blog_view']['add'][11] = 'Options de publication';
$text['blog_view']['add'][12] = 'Auteur';
$text['blog_view']['add'][13] = 'L\'article n\'est visible qu\'après la date de publication prévue.';
$text['blog_view']['add'][14] = 'Date de publication';
$text['blog_view']['add'][15] = 'Edition / Suppression';
$text['blog_view']['add'][16] = 'Les utilisateurs des groupes supérieurs accèdent à l\'article sans restriction';
$text['blog_view']['add'][17] = 'Commentaires';
$text['blog_view']['add'][18] = 'Fermer les commentaires';
$text['blog_view']['add'][19] = 'Approbation par un modérateur';
$text['blog_view']['add'][20] = 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.';
$text['blog_view']['add'][21] = 'Caractères par commentaire';
$text['blog_view']['add'][22] = 'Notification par email';
$text['blog_view']['add'][23] = 'Image facultative';
$text['blog_view']['comment'][0] = 'Retour';
$text['blog_view']['comment'][1] = 'Date';
$text['blog_view']['comment'][2] = 'Contenu';
$text['blog_view']['comment'][3] = 'Auteur';
$text['blog_view']['comment'][4] = 'Aucun commentaire.';
$text['blog_view']['config'][0] = 'Retour';
$text['blog_view']['config'][1] = 'Article';
$text['blog_view']['config'][2] = 'Enregistrer';
$text['blog_view']['config'][3] = 'Paramètres du module';
$text['blog_view']['config'][4] = 'Lien du flux RSS';
$text['blog_view']['config'][5] = 'Texte de l\'étiquette';
$text['blog_view']['config'][6] = 'Articles par page';
$text['blog_view']['config'][7] = 'Titre';
$text['blog_view']['config'][8] = 'Date de publication';
$text['blog_view']['config'][9] = 'Etat';
$text['blog_view']['config'][10] = 'Commentaires';
$text['blog_view']['config'][11] = 'Aucun article.';
$text['blog_view']['config'][12] = 'Version n°';
$text['blog_view']['config'][13] = 'Textes';
$text['blog_view']['config'][14] = "Êtes-vous sûr de vouloir supprimer cet article ?";
$text['blog_view']['edit'][0] = 'Retour';
$text['blog_view']['edit'][1] = 'Enregistrer en brouillon';
$text['blog_view']['edit'][2] = 'Publier';
$text['blog_view']['edit'][3] = 'Informations générales';
$text['blog_view']['edit'][4] = 'Titre';
$text['blog_view']['edit'][5] = 'Image facultative. Taille optimale de l\'image de couverture : ';
$text['blog_view']['edit'][6] = 'Image de couverture';
$text['blog_view']['edit'][7] = 'Largeur de l\'image';
$text['blog_view']['edit'][8] = 'Position';
$text['blog_view']['edit'][9] = 'Le texte de l\'article est adapté autour de l\'image';
$text['blog_view']['edit'][10] = 'Masquer l\'image dans l\'article';
$text['blog_view']['edit'][11] = 'Options de publication';
$text['blog_view']['edit'][12] = 'Auteur';
$text['blog_view']['edit'][13] = 'L\'article n\'est visible qu\'après la date de publication prévue.';
$text['blog_view']['edit'][14] = 'Date de publication';
$text['blog_view']['edit'][15] = 'Edition / Suppression';
$text['blog_view']['edit'][16] = 'Les utilisateurs des groupes supérieurs accèdent à l\'article sans restriction';
$text['blog_view']['edit'][17] = 'Commentaires';
$text['blog_view']['edit'][18] = 'Fermer les commentaires';
$text['blog_view']['edit'][19] = 'Approbation par un modérateur';
$text['blog_view']['edit'][20] = 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.';
$text['blog_view']['edit'][21] = 'Caractères par commentaire';
$text['blog_view']['edit'][22] = 'Notification par email';
$text['blog_view']['edit'][23] = 'Editeurs = éditeurs + administrateurs<br/> Membres = membres + éditeurs + administrateurs';
$text['blog_view']['indext'][0] = 'Lire la suite';
$text['blog_view']['indext'][1] = 'Aucun article';
$text['blog_view']['texts'][0] = 'Retour';
$text['blog_view']['texts'][1] = 'Adapter ces textes dans la langue de vos visiteurs';
$text['blog_view']['texts'][2] = 'Enregistrer';
$text['blog_view']['texts'][3] = 'Pas encore de commentaire';
$text['blog_view']['texts'][4] = 'Ecrire un commentaire';
$text['blog_view']['texts'][5] = 'Nom';
$text['blog_view']['texts'][6] = 'Commentaire avec maximum';
$text['blog_view']['texts'][7] = 'caractères';
$text['blog_view']['texts'][8] = 'commentaire';
$text['blog_view']['texts'][9] = 'Commentaire déposé';
$text['blog_view']['texts'][10] = 'Commentaire déposé en attente d\'approbation';
$text['blog_view']['texts'][11] = 'Cet article ne reçoit pas de commentaire';
$text['blog_view']['texts'][13] = 'Connexion';
$text['blog_view']['texts'][15] ='Editer';
$text['blog_view']['texts'][16] ='Annuler';
$text['blog_view']['texts'][17] ='Envoyer';
$text['blog_view']['texts'][18] ='Vous avez atteint le maximum de';
$text['blog_view']['texts'][19] ='caractères restants';
$text['blog_view']['texts'][20] ='Vous alliez dépasser le maximum de ';
$text['blog_view']['texts'][25] ='Version n°';
$text['blog_view']['texts'][26] ='Lire la suite';
$text['blog_view']['article'][0] = 'fr_FR';
$text['blog']['config'][0] = 'Modifications enregistrées';
$text['blog']['config'][1] = 'Configuration du module';
$text['blog']['config'][2] = ' à ';
$text['blog']['index'][0] = '<br/>Une notification a été envoyée.';
$text['blog']['index'][1] = '<br/> Erreur de notification : ';
$text['blog']['index'][4] = 'Nouveau commentaire déposé';
$text['blog']['index'][5] = 'Bonjour';
$text['blog']['index'][6] = 'L\'article ';
$text['blog']['index'][7] = 'a reçu un nouveau commentaire';
$text['blog']['index'][8] = 'Pas encore de commentaire';
$text['blog']['index'][9] = 'Ecrire un commentaire';
$text['blog']['index'][10] = 'Nom';
$text['blog']['index'][11] = 'Commentaire avec maximum';
$text['blog']['index'][12] = 'caractères';
$text['blog']['index'][13] = 'commentaire';
$text['blog']['index'][14] = 'Commentaire déposé';
$text['blog']['index'][15] = 'Commentaire déposé en attente d\'approbation';
$text['blog']['index'][16] = 'Cet article ne reçoit pas de commentaire';
$text['blog']['index'][17] = 'Connexion';
$text['blog']['index'][18] = 'Editer';
$text['blog']['index'][19] = 'Annuler';
$text['blog']['index'][20] = 'Envoyer';
$text['blog']['index'][21] = 'Vous avez atteint le maximum de';
$text['blog']['index'][22] = 'caractères restants';
$text['blog']['index'][23] = 'Vous alliez dépasser le maximum de ';
$text['blog']['edit'][0] = 'Action non autorisée';
$text['blog']['edit'][1] = 'Modifications enregistrées';
$text['blog']['delete'][0] = 'Action non autorisée';
$text['blog']['delete'][1] = 'Article supprimé';
$text['blog']['commentApprove'][0] = 'Action non autorisée';
$text['blog']['commentApprove'][1] = 'Commentaire approuvé';
$text['blog']['commentApprove'][2] = 'Commentaire rejeté';
$text['blog']['texts'][0] = '';
$text['blog']['texts'][1] = 'Textes enregistrés';
$text['blog']['texts'][2] = 'Textes visibles par un visiteur';
$text['blog']['add'][0] = 'Nouvel article créé';
$text['blog']['add'][1] = 'Nouvel article';
$text['blog']['add'][2] = 'fr_FR';
$text['blog']['add'][3] = 'fr';
$text['blog']['comment'][0] = 'Tout effacer';
$text['blog']['comment'][1] = 'Gestion des commentaires : ';
$text['blog']['commentDelete'][0] = 'Action non autorisée';
$text['blog']['commentDelete'][1] = 'Commentaire supprimé';
$text['blog']['commentDeleteAll'][0] = 'Action non autorisée';
$text['blog']['commentDeleteAll'][1] = 'Commentaires supprimés';
$states = [
false => 'Brouillon',
true => 'Publié'
];
// Nombre d'objets par page
$ItemsList = [
4 => '4 articles',
8 => '8 articles',
12 => '12 articles',
16 => '16 articles',
22 => '22 articles'
];
$pictureSizes = [
'20' => 'Très petite',
'30' => 'Petite',
'40' => 'Grande',
'50' => 'Très Grande',
'100' => 'Pleine largeur',
];
$picturePositions = [
'left' => 'à gauche',
'right' => 'à droite',
];
$commentLength = [
'500' => '500',
'1000' => '1000',
'2000' => '2000',
'5000' => '5000',
'10000' => '10000'
];
if( $param === 'blog' ){
$articleConsent = [
self::EDIT_ALL => 'Tous les groupes',
self::EDIT_GROUP => 'Groupe du propriétaire',
self::EDIT_OWNER => 'Propriétaire'
];
$groupNews = [
self::GROUP_MEMBER => 'Membre',
self::GROUP_MODERATOR => 'Éditeur',
self::GROUP_ADMIN => 'Administrateur'
];
} elseif( $param === 'blog_view' ) {
$articleConsent = [
$module::EDIT_ALL => 'Tous les groupes',
$module::EDIT_GROUP => 'Groupe du propriétaire',
$module::EDIT_OWNER => 'Propriétaire'
];
$groupNews = [
$module::GROUP_MEMBER => 'Membre',
$module::GROUP_MODERATOR => 'Éditeur',
$module::GROUP_ADMIN => 'Administrateur'
];
}
?>

View File

@ -1,80 +1,22 @@
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Retour';
$text[1] = 'Enregistrer en brouillon';
$text[2] = 'Publier';
$text[3] = 'Informations générales';
$text[4] = 'Titre';
$text[5] = 'Taille optimale de l\'image de couverture : ';
$text[6] = 'Image de couverture';
$text[7] = 'Largeur de l\'image';
$text[8] = 'Position';
$text[9] = 'Le texte de l\'article est adapté autour de l\'image';
$text[10] = 'Masquer l\'image dans l\'article';
$text[11] = 'Options de publication';
$text[12] = 'Auteur';
$text[13] = 'L\'article n\'est visible qu\'après la date de publication prévue.';
$text[14] = 'Date de publication';
$text[15] = 'Edition / Suppression';
$text[16] = 'Les utilisateurs des groupes supérieurs accèdent à l\'article sans restriction';
$text[17] = 'Commentaires';
$text[18] = 'Fermer les commentaires';
$text[19] = 'Approbation par un modérateur';
$text[20] = 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.';
$text[21] = 'Caractères par commentaire';
$text[22] = 'Notification par email';
$pictureSizes = $module::$pictureSizes;
$picturePositions = $module::$picturePositions;
$articleConsent = $module::$articleConsent;
break;
case 'en' :
$text[0] = 'Back';
$text[1] = 'Save as draft';
$text[2] = 'Publish';
$text[3] = 'General information';
$text[4] = 'Title';
$text[5] = 'Optimal size of cover image : ';
$text[6] = 'Cover image';
$text[7] = 'Width of image';
$text[8] = 'Position';
$text[9] = 'The text of the article is adapted around the image';
$text[10] = 'Hide image in article';
$text[11] = 'Publication options';
$text[12] = 'Author';
$text[13] = 'The article is not visible until after the scheduled publication date';
$text[14] = 'Date of publication';
$text[15] = 'Edit / Delete';
$text[16] = 'Users in higher groups have unrestricted access to the article';
$text[17] = 'Comments';
$text[18] = 'Close comments';
$text[19] = 'Moderator approval';
$text[20] = 'Choice of maximum number of characters for each comment in the article, including html formatting';
$text[21] = 'Characters per comment';
$text[22] = 'Email notification';
$pictureSizes = $module::$pictureSizes_en;
$picturePositions = $module::$picturePositions_en;
$articleConsent = $module::$articleConsent_en;
break;
}
?>
<?php echo template::formOpen('blogAddForm'); ?>
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
echo template::formOpen('blogAddForm'); ?>
<div class="row">
<div class="col2">
<?php echo template::button('blogAddBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'ico' => 'left',
'value' => $text[0]
'value' => $text['blog_view']['add'][0]
]); ?>
</div>
<div class="col3 offset5">
<?php echo template::button('blogAddDraft', [
'uniqueSubmission' => true,
'value' => $text[1]
'value' => $text['blog_view']['add'][1]
]); ?>
<?php echo template::hidden('blogAddState', [
'value' => true
@ -82,7 +24,7 @@ switch ($val) {
</div>
<div class="col2">
<?php echo template::submit('blogAddPublish', [
'value' => $text[2],
'value' => $text['blog_view']['add'][2],
'uniqueSubmission' => true
]); ?>
</div>
@ -90,39 +32,39 @@ switch ($val) {
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[3]; ?></h4>
<h4><?php echo $text['blog_view']['add'][3]; ?></h4>
<div class="row">
<div class="col12">
<?php echo template::text('blogAddTitle', [
'label' => $text[4]
'label' => $text['blog_view']['add'][4]
]); ?>
</div>
</div>
<div class="row">
<div class="col4">
<?php $help ='';
if( $this->getData(['theme', 'site', 'width']) !== '100%' ) $help = $text[5]. ((int) substr($this->getData(['theme', 'site', 'width']), 0, -2) - (20 * 2)) . ' x 350 pixels.';
<?php $help =$text['blog_view']['add'][23];
if( $this->getData(['theme', 'site', 'width']) !== '100%' ) $help = $text['blog_view']['add'][5]. ((int) substr($this->getData(['theme', 'site', 'width']), 0, -2) - (20 * 2)) . ' x 350 pixels.';
echo template::file('blogAddPicture', [
'help' => $help,
'label' => $text[6],
'label' => $text['blog_view']['add'][6],
'type' => 1
]); ?>
</div>
<div class="col4">
<?php echo template::select('blogAddPictureSize', $pictureSizes, [
'label' => $text[7]
'label' => $text['blog_view']['add'][7]
]); ?>
</div>
<div class="col4">
<?php echo template::select('blogAddPicturePosition', $picturePositions, [
'label' => $text[8],
'help' => $text[9]
'label' => $text['blog_view']['add'][8],
'help' => $text['blog_view']['add'][9]
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::checkbox('blogAddHidePicture', true, $text[10], [
<?php echo template::checkbox('blogAddHidePicture', true, $text['blog_view']['add'][10], [
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'hidePicture'])
]); ?>
</div>
@ -136,27 +78,27 @@ switch ($val) {
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[11]; ?></h4>
<h4><?php echo $text['blog_view']['add'][11]; ?></h4>
<div class="row">
<div class="col4">
<?php echo template::select('blogAddUserId', $module::$users, [
'label' => $text[12],
'label' => $text['blog_view']['add'][12],
'selected' => $this->getUser('id'),
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
]); ?>
</div>
<div class="col4">
<?php echo template::date('blogAddPublishedOn', [
'help' => $text[13],
'label' => $text[14],
'help' => $text['blog_view']['add'][13],
'label' => $text['blog_view']['add'][14],
'value' => time()
]); ?>
</div>
<div class="col4">
<?php echo template::select('blogAddConsent', $articleConsent , [
'label' => $text[15],
'label' => $text['blog_view']['add'][15],
'selected' => $module::EDIT_ALL,
'help' => $text[16]
'help' => $text['blog_view']['add'][16]
]); ?>
</div>
</div>
@ -166,27 +108,27 @@ switch ($val) {
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[17]; ?></h4>
<h4><?php echo $text['blog_view']['add'][17]; ?></h4>
<div class="row">
<div class="col4 ">
<?php echo template::checkbox('blogAddCommentClose', true, $text[18]); ?>
<?php echo template::checkbox('blogAddCommentClose', true, $text['blog_view']['add'][18]); ?>
</div>
<div class="col4 commentOptionsWrapper ">
<?php echo template::checkbox('blogAddCommentApproved', true, $text[19]); ?>
<?php echo template::checkbox('blogAddCommentApproved', true, $text['blog_view']['add'][19]); ?>
</div>
<div class="col4 commentOptionsWrapper">
<?php echo template::select('blogAddCommentMaxlength', $module::$commentLength,[
'help' => $text[20],
'label' => $text[21]
<?php echo template::select('blogAddCommentMaxlength', $commentLength,[
'help' => $text['blog_view']['add'][20],
'label' => $text['blog_view']['add'][21]
]); ?>
</div>
</div>
<div class="row">
<div class="col3 commentOptionsWrapper offset2">
<?php echo template::checkbox('blogAddCommentNotification', true, $text[22]); ?>
<?php echo template::checkbox('blogAddCommentNotification', true, $text['blog_view']['add'][22]); ?>
</div>
<div class="col4 commentOptionsWrapper">
<?php echo template::select('blogAddCommentGroupNotification', $module::$groupNews); ?>
<?php echo template::select('blogAddCommentGroupNotification', $groupNews); ?>
</div>
</div>
</div>

View File

@ -1,5 +1,9 @@
<?php
// Adaptation de la langue dans tinymce en fonction de la langue de la page, originale ou en traduction rédigée
// Lexique
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Adaptation de la langue dans tinymce pour la rédaction d'un commentaire en fonction de la langue de la page, originale ou en traduction rédigée
$lang = $this->getData(['config', 'i18n', 'langBase']);
if ( !empty($_COOKIE["DELTA_I18N_SITE"])) {
if( $this->getInput('DELTA_I18N_SITE') !== 'base' ) $lang = $this->getInput('DELTA_I18N_SITE');
@ -21,14 +25,7 @@ switch ($lang) {
}
// Si la langue n'est pas supportée par Tinymce la langue d'administration est utilisée
if( ! file_exists( 'core/vendor/tinymce/langs/'.$lang_page.'.js' )){
switch ($this->getData(['config', 'i18n', 'langAdmin'])) {
case 'en' :
$lang_page = 'en_GB';
break;
case 'fr' :
$lang_page = 'fr_FR';
break;
}
$lang_page = $text['blog_view']['article'][0];
}
echo '<script> var lang_admin = "'.$lang_page.'"; </script>';
echo '<script src="'. helper::baseUrl(false).'core/vendor/tinymce/tinymce.min.js"></script>';
@ -51,7 +48,8 @@ if( function_exists('datefmt_create') && function_exists('datefmt_create') && ex
<div class="row">
<div class="col12">
<?php $pictureSize = $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'pictureSize']) === null ? '100' : $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'pictureSize']); ?>
<?php if ($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'hidePicture']) == false) {
<?php if ( $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'hidePicture']) === false
&& $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'picture']) !=='' ) {
echo '<img class="blogArticlePicture blogArticlePicture' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'picturePosition']) .
' pict' . $pictureSize . '" src="' . helper::baseUrl(false) . self::FILE_DIR.'source/' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'picture']) .
'" alt="' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'picture']) . '">';

View File

@ -1,23 +1,7 @@
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Retour';
$text[1] = 'Date';
$text[2] = 'Contenu';
$text[3] = 'Auteur';
$text[4] = 'Aucun commentaire.';
break;
case 'en' :
$text[0] = 'Return';
$text[1] = 'Date';
$text[2] = 'Content';
$text[3] = 'Author';
$text[4] = 'No comments';
break;
}
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
?>
<div class="row">
<div class="col2">
@ -25,7 +9,7 @@ switch ($val) {
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'ico' => 'left',
'value' => $text[0]
'value' => $text['blog_view']['comment'][0]
]); ?>
</div>
@ -35,9 +19,9 @@ switch ($val) {
</div>
</div>
<?php echo template::table([3, 5, 2, 1, 1], $module::$comments, [$text[1], $text[2], $text[3], '', '']); ?>
<?php echo template::table([3, 5, 2, 1, 1], $module::$comments, [$text['blog_view']['comment'][1], $text['blog_view']['comment'][2], $text['blog_view']['comment'][3], '', '']); ?>
<?php echo $module::$pages.'<br/>'; ?>
<?php else: ?>
</div>
<?php echo template::speech($text[4]); ?>
<?php echo template::speech($text['blog_view']['comment'][4]); ?>
<?php endif; ?>

View File

@ -18,14 +18,7 @@
*/
$(".blogConfigDelete").on("click", function() {
var _this = $(this);
var text="";
<?php if( $this->getData(['config', 'i18n', 'langAdmin' ]) === 'fr'){
echo 'text = "Êtes-vous sûr de vouloir supprimer cet article ?";' ;
}
else{
echo 'text = "Are you sure you want to delete this article ?";' ;
} ?>
return core.confirm(text, function() {
return core.confirm(textConfirm, function() {
$(location).attr("href", _this.attr("href"));
});
});

View File

@ -1,93 +1,59 @@
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Retour';
$text[1] = 'Article';
$text[2] = 'Enregistrer';
$text[3] = 'Paramètres du module';
$text[4] = 'Lien du flux RSS';
$text[5] = 'Texte de l\'étiquette';
$text[6] = 'Articles par page';
$text[7] = 'Titre';
$text[8] = 'Date de publication';
$text[9] = 'Etat';
$text[10] = 'Commentaires';
$text[11] = 'Aucun article.';
$text[12] = 'Version n°';
$text[13] = 'Textes';
break;
case 'en' :
$text[0] = 'Back';
$text[1] = 'Article';
$text[2] = 'Save';
$text[3] = 'Module settings';
$text[4] = 'RSS feed link';
$text[5] = 'Label text';
$text[6] = 'Articles per page';
$text[7] = 'Title';
$text[8] = 'Date published';
$text[9] = 'Status';
$text[10] = 'Comments';
$text[11] = 'No article';
$text[12] = 'Version No.';
$text[13] = 'Texts';
break;
}
?>
<?php echo template::formOpen('blogConfig'); ?>
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
echo template::formOpen('blogConfig'); ?>
<div class="row">
<div class="col2">
<?php echo template::button('blogConfigBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'posts',
'ico' => 'left',
'value' => $text[0]
'value' => $text['blog_view']['config'][0]
]); ?>
</div>
<div class="col2 offset4">
<?php echo template::button('blogConfigTexts', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/texts',
'ico' => '',
'value' => $text[13]
'value' => $text['blog_view']['config'][13]
]); ?>
</div>
<div class="col2">
<?php echo template::button('blogConfigAdd', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/add',
'ico' => 'plus',
'value' => $text[1]
'value' => $text['blog_view']['config'][1]
]); ?>
</div>
<div class="col2">
<?php echo template::submit('blogConfigSubmit',[
'value' => $text[2]
'value' => $text['blog_view']['config'][2]
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[3]; ?></h4>
<h4><?php echo $text['blog_view']['config'][3]; ?></h4>
<div class="row">
<div class="col6">
<?php echo template::checkbox('blogConfigShowFeeds', true, $text[4], [
<?php echo template::checkbox('blogConfigShowFeeds', true, $text['blog_view']['config'][4], [
'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'feeds']),
]); ?>
</div>
<div class="col6">
<?php echo template::text('blogConfigFeedslabel', [
'label' => $text[5],
'label' => $text['blog_view']['config'][5],
'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel'])
]); ?>
</div>
</div>
<div class="row">
<div class="col6 offset6">
<?php echo template::select('blogConfigItemsperPage', $module::$ItemsList, [
'label' => $text[6],
<?php echo template::select('blogConfigItemsperPage', $ItemsList, [
'label' => $text['blog_view']['config'][6],
'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperPage'])
]); ?>
</div>
@ -97,12 +63,15 @@ switch ($val) {
</div>
<?php echo template::formClose(); ?>
<?php if($module::$articles): ?>
<?php echo template::table([4, 4, 1, 1, 1, 1], $module::$articles, [$text[7], $text[8], $text[9], $text[10], '','']); ?>
<?php echo template::table([4, 4, 1, 1, 1, 1], $module::$articles, [$text['blog_view']['config'][7], $text['blog_view']['config'][8], $text['blog_view']['config'][9], $text['blog_view']['config'][10], '','']); ?>
<?php echo $module::$pages; ?>
<?php else: ?>
<?php echo template::speech($text[11]); ?>
<?php echo template::speech($text['blog_view']['config'][11]); ?>
<?php endif; ?>
<div class="moduleVersion"><?php echo $text[12]; ?>
<div class="moduleVersion"><?php echo $text['blog_view']['config'][12]; ?>
<?php echo $module::VERSION; ?>
</div>
<script>
var textConfirm = <?php echo '"'.$text['blog_view']['config'][14].'"'; ?>;
</script>

View File

@ -1,82 +1,22 @@
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Retour';
$text[1] = 'Enregistrer en brouillon';
$text[2] = 'Publier';
$text[3] = 'Informations générales';
$text[4] = 'Titre';
$text[5] = 'Taille optimale de l\'image de couverture : ';
$text[6] = 'Image de couverture';
$text[7] = 'Largeur de l\'image';
$text[8] = 'Position';
$text[9] = 'Le texte de l\'article est adapté autour de l\'image';
$text[10] = 'Masquer l\'image dans l\'article';
$text[11] = 'Options de publication';
$text[12] = 'Auteur';
$text[13] = 'L\'article n\'est visible qu\'après la date de publication prévue.';
$text[14] = 'Date de publication';
$text[15] = 'Edition / Suppression';
$text[16] = 'Les utilisateurs des groupes supérieurs accèdent à l\'article sans restriction';
$text[17] = 'Commentaires';
$text[18] = 'Fermer les commentaires';
$text[19] = 'Approbation par un modérateur';
$text[20] = 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.';
$text[21] = 'Caractères par commentaire';
$text[22] = 'Notification par email';
$text[23] = 'Editeurs = éditeurs + administrateurs<br/> Membres = membres + éditeurs + administrateurs';
$pictureSizes = $module::$pictureSizes;
$picturePositions = $module::$picturePositions;
$articleConsent = $module::$articleConsent;
break;
case 'en' :
$text[0] = 'Back';
$text[1] = 'Save as draft';
$text[2] = 'Publish';
$text[3] = 'General information';
$text[4] = 'Title';
$text[5] = 'Optimal size of cover image : ';
$text[6] = 'Cover image';
$text[7] = 'Width of image';
$text[8] = 'Position';
$text[9] = 'The text of the article is adapted around the image';
$text[10] = 'Hide image in article';
$text[11] = 'Publication options';
$text[12] = 'Author';
$text[13] = 'The article is not visible until after the scheduled publication date';
$text[14] = 'Date of publication';
$text[15] = 'Edit / Delete';
$text[16] = 'Users in higher groups have unrestricted access to the article';
$text[17] = 'Comments';
$text[18] = 'Close comments';
$text[19] = 'Moderator approval';
$text[20] = 'Choice of the maximum number of characters for each comment in the article, including html formatting.';
$text[21] = 'Characters per comment';
$text[22] = 'Email notification';
$text[23] = 'Editors = editors + administrators<br/> Members = members + editors + administrators';
$pictureSizes = $module::$pictureSizes_en;
$picturePositions = $module::$picturePositions_en;
$articleConsent = $module::$articleConsent_en;
break;
}
?>
<?php echo template::formOpen('blogEditForm'); ?>
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
echo template::formOpen('blogEditForm'); ?>
<div class="row">
<div class="col2">
<?php echo template::button('blogEditBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'ico' => 'left',
'value' => $text[0]
'value' => $text['blog_view']['edit'][0]
]); ?>
</div>
<div class="col3 offset5">
<?php echo template::button('blogEditDraft', [
'uniqueSubmission' => true,
'value' => $text[1]
'value' => $text['blog_view']['edit'][1]
]); ?>
<?php echo template::hidden('blogEditState', [
'value' => true
@ -84,7 +24,7 @@ switch ($val) {
</div>
<div class="col2">
<?php echo template::submit('blogEditSubmit', [
'value' => $text[2],
'value' => $text['blog_view']['edit'][2],
'uniqueSubmission' => true,
]); ?>
</div>
@ -92,43 +32,43 @@ switch ($val) {
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[3]; ?></h4>
<h4><?php echo $text['blog_view']['edit'][3]; ?></h4>
<div class="row">
<div class="col12">
<?php echo template::text('blogEditTitle', [
'label' => $text[4],
'label' => $text['blog_view']['edit'][4],
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'title'])
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php $help = '';
if( $this->getData(['theme', 'site', 'width']) !== '100%' ) $help = $text[5] . ((int) substr($this->getData(['theme', 'site', 'width']), 0, -2) - (20 * 2)) . ' x 350 pixels.';
<?php $help = $text['blog_view']['add'][23];
if( $this->getData(['theme', 'site', 'width']) !== '100%' ) $help = $text['blog_view']['edit'][5] . ((int) substr($this->getData(['theme', 'site', 'width']), 0, -2) - (20 * 2)) . ' x 350 pixels.';
echo template::file('blogEditPicture', [
'help' => $help,
'label' => $text[6],
'label' => $text['blog_view']['edit'][6],
'type' => 1,
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picture'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('blogEditPictureSize', $pictureSizes, [
'label' => $text[7],
'label' => $text['blog_view']['edit'][7],
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'pictureSize'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('blogEditPicturePosition', $picturePositions, [
'label' => $text[8],
'label' => $text['blog_view']['edit'][8],
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'picturePosition']),
'help' => $text[9]
'help' => $text['blog_view']['edit'][9]
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::checkbox('blogEditHidePicture', true, $text[10], [
<?php echo template::checkbox('blogEditHidePicture', true, $text['blog_view']['edit'][10], [
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'hidePicture'])
]); ?>
</div>
@ -143,27 +83,27 @@ switch ($val) {
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[11]; ?></h4>
<h4><?php echo $text['blog_view']['edit'][11]; ?></h4>
<div class="row">
<div class="col4">
<?php echo template::select('blogEditUserId', $module::$users, [
'label' => $text[12],
'label' => $text['blog_view']['edit'][12],
'selected' => $this->getUser('id'),
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
]); ?>
</div>
<div class="col4">
<?php echo template::date('blogEditPublishedOn', [
'help' => $text[13],
'label' => $text[14],
'help' => $text['blog_view']['edit'][13],
'label' => $text['blog_view']['edit'][14],
'value' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'publishedOn'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('blogEditConsent', $articleConsent , [
'label' => $text[15],
'label' => $text['blog_view']['edit'][15],
'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' => $text[16]
'help' => $text['blog_view']['edit'][16]
]); ?>
</div>
</div>
@ -173,23 +113,23 @@ switch ($val) {
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo$text[17]; ?></h4>
<h4><?php echo$text['blog_view']['edit'][17]; ?></h4>
<div class="row">
<div class="col4 ">
<?php echo template::checkbox('blogEditCommentClose', true, $text[18], [
<?php echo template::checkbox('blogEditCommentClose', true, $text['blog_view']['edit'][18], [
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentClose'])
]); ?>
</div>
<div class="col4 commentOptionsWrapper ">
<?php echo template::checkbox('blogEditCommentApproved', true, $text[19], [
<?php echo template::checkbox('blogEditCommentApproved', true, $text['blog_view']['edit'][19], [
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentApproved']),
''
]); ?>
</div>
<div class="col4 commentOptionsWrapper">
<?php echo template::select('blogEditCommentMaxlength', $module::$commentLength,[
'help' => $text[20],
'label' => $text[21],
<?php echo template::select('blogEditCommentMaxlength', $commentLength,[
'help' => $text['blog_view']['edit'][20],
'label' => $text['blog_view']['edit'][21],
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentMaxlength'])
]); ?>
</div>
@ -197,14 +137,14 @@ switch ($val) {
</div>
<div class="row">
<div class="col3 commentOptionsWrapper offset2">
<?php echo template::checkbox('blogEditCommentNotification', true, $text[22], [
<?php echo template::checkbox('blogEditCommentNotification', true, $text['blog_view']['edit'][22], [
'checked' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentNotification']),
]); ?>
</div>
<div class="col4 commentOptionsWrapper">
<?php echo template::select('blogEditCommentGroupNotification', $module::$groupNews, [
<?php echo template::select('blogEditCommentGroupNotification', $groupNews, [
'selected' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'commentGroupNotification']),
'help' => $text[23]
'help' => $text['blog_view']['edit'][23]
]); ?>
</div>
</div>

View File

@ -1,17 +1,7 @@
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Lire la suite';
$text[1] = 'Aucun article';
break;
case 'en' :
$text[0] = 'Read more';
$text[1] = 'No article';
break;
}
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// Pour les dates suivant la langue de rédaction du site
if( function_exists('datefmt_create') && function_exists('datefmt_create') && extension_loaded('intl') ){
$zone = 'Europe/Paris';
@ -29,24 +19,28 @@ if($module::$articles): ?>
<div class="col12">
<?php foreach($module::$articles as $articleId => $article): ?>
<div class="row rowArticle">
<div class="col3">
<?php if ( file_exists(self::FILE_DIR . 'source/' . $article['picture']) ): ?>
<?php // Déterminer le nom de la miniature
$parts = explode('/',$article['picture']);
$thumb = str_replace ($parts[(count($parts)-1)],'mini_' . $parts[(count($parts)-1)], $article['picture']);
// Créer la miniature si manquante
if (!file_exists( self::FILE_DIR . 'thumb/' . $thumb) ) {
$this->makeThumb( self::FILE_DIR . 'source/' . $article['picture'],
self::FILE_DIR . 'thumb/' . $thumb,
self::THUMBS_WIDTH);
}
?>
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>" class="blogPicture">
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR . 'thumb/' . $thumb; ?>" alt="<?php echo $article['picture']; ?>">
</a>
<?php endif;?>
</div>
<div class="col9">
<?php if( $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'picture']) !=='' ){ ?>
<div class="col3">
<?php if ( file_exists(self::FILE_DIR . 'source/' . $article['picture']) ): ?>
<?php // Déterminer le nom de la miniature
$parts = explode('/',$article['picture']);
$thumb = str_replace ($parts[(count($parts)-1)],'mini_' . $parts[(count($parts)-1)], $article['picture']);
// Créer la miniature si manquante
if (!file_exists( self::FILE_DIR . 'thumb/' . $thumb) ) {
$this->makeThumb( self::FILE_DIR . 'source/' . $article['picture'],
self::FILE_DIR . 'thumb/' . $thumb,
self::THUMBS_WIDTH);
}
?>
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>" class="blogPicture">
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR . 'thumb/' . $thumb; ?>" alt="<?php echo $article['picture']; ?>">
</a>
<?php endif;?>
</div>
<div class="col9">
<?php } else { ?>
<div class="col12">
<?php } ?>
<h2 class="blogTitle">
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId; ?>">
<?php echo $article['title']; ?>
@ -71,7 +65,7 @@ if($module::$articles): ?>
</div>
<p class="blogContent">
<?php echo helper::subword(strip_tags($article['content']), 0, 400); ?>...
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId;?>"><?php echo $text[0]; ?></a>
<a href="<?php echo helper::baseUrl() . $this->getUrl(0) . '/' . $articleId;?>"><?php echo $this->getData(['module', $this->getUrl(0), 'texts', 'ReadMore']); ?></a>
</p>
</div>
</div>
@ -90,5 +84,5 @@ if($module::$articles): ?>
</div>
<?php endif; ?>
<?php else: ?>
<?php echo template::speech($text[1]); ?>
<?php echo template::speech($text['blog_view']['indext'][1]); ?>
<?php endif; ?>

View File

@ -1,55 +1,9 @@
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Retour';
$text[1] = 'Adapter ces textes dans la langue de vos visiteurs';
$text[2] = 'Enregistrer';
$text[3] = 'Pas encore de commentaire';
$text[4] = 'Ecrire un commentaire';
$text[5] = 'Nom';
$text[6] = 'Commentaire avec maximum';
$text[7] = 'caractères';
$text[8] = 'commentaire';
$text[9] = 'Commentaire déposé';
$text[10] = 'Commentaire déposé en attente d\'approbation';
$text[11] = 'Cet article ne reçoit pas de commentaire';
$text[13] = 'Connexion';
$text[15] ='Editer';
$text[16] ='Annuler';
$text[17] ='Envoyer';
$text[18] ='Vous avez atteint le maximum de';
$text[19] ='caractères restants';
$text[20] ='Vous alliez dépasser le maximum de ';
$text[25] ='Version n°';
break;
case 'en' :
$text[0] = 'Back';
$text[1] = 'Adapt these texts into the language of your visitors';
$text[2] = 'Save';
$text[3] = 'No comment yet';
$text[4] = 'Write a comment';
$text[5] = 'Name';
$text[6] = 'Comment with maximum';
$text[7] = 'characters';
$text[8] = 'comment';
$text[9] = 'Comment filed';
$text[10] = 'Comment submitted pending approval';
$text[11] = 'This article does not receive comments';
$text[13] = 'Login';
$text[15] = 'Edit';
$text[16] = 'Cancel';
$text[17] = 'Send';
$text[18] = 'You have reached the maximum of';
$text[19] = 'characters left';
$text[20] = 'You were about to exceed the maximum of ';
$text[25] = 'Version no.';
break;
}
?>
<?php // drapeau pour la langue d'origine ou la langue en traduction rédigée
$param = 'blog_view';
include('./module/blog/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_blog.php');
// drapeau pour la langue d'origine ou la langue en traduction rédigée
if( $this->getInput('DELTA_I18N_SITE') === '' || $this->getInput('DELTA_I18N_SITE')=== null || $this->getInput('DELTA_I18N_SITE') === 'base'){
$flag = $this->getData(['config', 'i18n', 'langBase']);
}
@ -64,35 +18,35 @@ else{
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0). '/config',
'ico' => 'left',
'value' => $text[0]
'value' => $text['blog_view']['texts'][0]
]); ?>
</div>
<div class="col2 offset8">
<?php echo template::submit('blogTextsSubmit',[
'value' => $text[2]
'value' => $text['blog_view']['texts'][2]
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo $text[1]; ?><?php echo ' '.template::flag($flag, '20px');?></h4>
<h4><?php echo $text['blog_view']['texts'][1]; ?><?php echo ' '.template::flag($flag, '20px');?></h4>
<div class="row">
<div class="col4">
<?php echo template::text('blogTextsNoComment', [
'label' => $text[3],
'label' => $text['blog_view']['texts'][3],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'NoComment'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsWrite', [
'label' => $text[4],
'label' => $text['blog_view']['texts'][4],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Write'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsName', [
'label' => $text[5],
'label' => $text['blog_view']['texts'][5],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Name'])
]); ?>
</div>
@ -100,19 +54,19 @@ else{
<div class="row">
<div class="col4">
<?php echo template::text('blogTextsMaxi', [
'label' => $text[6],
'label' => $text['blog_view']['texts'][6],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Maxi'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsCara', [
'label' => $text[7],
'label' => $text['blog_view']['texts'][7],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Cara'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsComment', [
'label' => $text[8],
'label' => $text['blog_view']['texts'][8],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Comment'])
]); ?>
</div>
@ -120,19 +74,19 @@ else{
<div class="row">
<div class="col4">
<?php echo template::text('blogTextsCommentOK', [
'label' => $text[9],
'label' => $text['blog_view']['texts'][9],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'CommentOK'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsWaiting', [
'label' => $text[10],
'label' => $text['blog_view']['texts'][10],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Waiting'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsArticleNoComment', [
'label' => $text[11],
'label' => $text['blog_view']['texts'][11],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'ArticleNoComment'])
]); ?>
</div>
@ -140,19 +94,19 @@ else{
<div class="row">
<div class="col4">
<?php echo template::text('blogTextsConnection', [
'label' => $text[13],
'label' => $text['blog_view']['texts'][13],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Connection'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsEdit', [
'label' => $text[15],
'label' => $text['blog_view']['texts'][15],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Edit'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsCancel', [
'label' => $text[16],
'label' => $text['blog_view']['texts'][16],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Cancel'])
]); ?>
</div>
@ -160,19 +114,19 @@ else{
<div class="row">
<div class="col4">
<?php echo template::text('blogTextsSend', [
'label' => $text[17],
'label' => $text['blog_view']['texts'][17],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'Send'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsTinymceMaxi', [
'label' => $text[18],
'label' => $text['blog_view']['texts'][18],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'TinymceMaxi'])
]); ?>
</div>
<div class="col4">
<?php echo template::text('blogTextsTinymceCara', [
'label' => $text[19],
'label' => $text['blog_view']['texts'][19],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'TinymceCara'])
]); ?>
</div>
@ -180,16 +134,22 @@ else{
<div class="row">
<div class="col4">
<?php echo template::text('blogTextsTinymceExceed', [
'label' => $text[20],
'label' => $text['blog_view']['texts'][20],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'TinymceExceed'])
]); ?>
</div>
</div>
<div class="col4">
<?php echo template::text('blogTextsReadMore', [
'label' => $text['blog_view']['texts'][26],
'value' => $this->getData(['module', $this->getUrl(0), 'texts', 'ReadMore'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>
<div class="moduleVersion"><?php echo $text[25]; ?>
<div class="moduleVersion"><?php echo $text['blog_view']['texts'][25]; ?>
<?php echo $module::VERSION; ?>
</div>

View File

@ -18,7 +18,7 @@
class form extends common {
const VERSION = '4.1';
const VERSION = '4.2';
const REALNAME = 'Formulaire';
const DELETE = true;
const UPDATE = '0.0';
@ -115,6 +115,9 @@ class form extends common {
$this->setData(['module', $this->getUrl(0), 'config', 'uploadTxt',false]);
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','4.1']);
}
if( version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '4.1', '<') ){
$this->setData(['module', $this->getUrl(0), 'config', 'versionData', '4.2']);
}
}
@ -654,16 +657,7 @@ class form extends common {
$sent = false;
$redirect = helper::baseUrl() . $this->getUrl(0);
}
// Passage de la langue d'administration à flatpickr
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_flatpickr = 'default';
}
?>
<script type="text/javascript">
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
</script>
<?php
// Valeurs en sortie
$this->addOutput([
'notification' => ($sent === true ? $text[3] : $notice),
@ -674,16 +668,7 @@ class form extends common {
],
]);
}
// Passage de la langue d'administration à flatpickr
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_flatpickr = 'default';
}
?>
<script>
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
</script>
<?php
// Valeurs en sortie
$this->addOutput([
'showBarEditButton' => true,

View File

@ -15,6 +15,15 @@
*/
/* Passage de la langue d'administration à flatpickr */
<?php
$lang_flatpickr = 'fr';
if( $this->getData(['config', 'i18n', 'langAdmin']) ==='en'){
$lang_flatpickr = 'default';
}
?>
var lang_flatpickr = "<?php echo $lang_flatpickr; ?>";
$( "#formFileReset" ).click(function() {
$( "#fileToUpload" ).val('');
});

View File

@ -57,19 +57,17 @@ switch ($val) {
<?php echo template::checkbox('formInput[' . $index . ']', true, $input['name'], [
'checked' => $this->getData([ 'module', $this->getUrl(0), 'draft', 'checkbox'])
]); ?>
<?php elseif($input['type'] === $module::TYPE_FILE): ?>
<label class='formLabel'> <?php echo $input['name']; ?> </label>
<div class="formInputFile">
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="button" id="formFileReset" value="X">
</div><br>
</div>
<?php elseif($input['type'] === $module::TYPE_LABEL): ?>
<p class='formLabel'> <?php echo $input['name']; ?> </p>
<?php endif; ?>
<?php endforeach; ?>
<?php if($this->getData(['module', $this->getUrl(0), 'config', 'captcha'])): ?>
<div class="row">

View File

@ -8,7 +8,8 @@ class init extends news {
'height' => -1,
'versionData' => self::VERSION,
'hiddeTitle' => false,
'sameHeight' => false
'sameHeight' => false,
'noMargin' => true
];
public static $defaultTheme = [

View File

@ -0,0 +1,3 @@
<Files "*.json">
Require all granted
</Files>

View File

@ -31,7 +31,7 @@ class statislite extends common {
'conversionTime' => self::GROUP_VISITOR
];
const VERSION = '4.3';
const VERSION = '4.4';
const REALNAME = 'Statislite';
const DELETE = true;
const UPDATE = '2.6';
@ -82,9 +82,12 @@ class statislite extends common {
*/
private function update() {
// Installation ou mise à jour vers la version 4.3
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '4.3', '<') ) {
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','4.3']);
// Installation ou mise à jour vers la version 4.4
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '4.4', '<') ) {
if( file_exists("./site/data/statislite/module/json/.htaccess") ) unlink("./site/data/statislite/module/json/.htaccess");
if( file_exists("./site/data/statislite/module/json_sauve/.htaccess") ) unlink("./site/data/statislite/module/json_sauve/.htaccess");
copy('./module/statislite/ressource/tmp/.htaccess', self::DATAMODULE.'/tmp/.htaccess');
$this->setData(['module', $this->getUrl(0), 'config', 'versionData','4.4']);
}
}
@ -94,16 +97,7 @@ class statislite extends common {
public function config() {
// Lexique
include('./module/statislite/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_statislite.php');
// Mise à jour des données de module s'il existe
if( null !== $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) ) $this->update();
// Installation des ressources à la création de la page
if( $this->getData(['module', $this->getUrl(0), 'config', 'config']) !== true){
// Copie des fichiers de module/statislite/ressource/ vers self::DATAMODULE
$this->custom_copy('./module/statislite/ressource', self::DATAMODULE);
}
// Détection d'un changement de nom de la page statistique pour mettre à jour listeQS
if( is_file( self::$fichiers_json.'filtre_primaire.json')){
$json = file_get_contents(self::$fichiers_json.'filtre_primaire.json');
@ -445,8 +439,14 @@ class statislite extends common {
// Lexique
include('./module/statislite/lang/'. $this->getData(['config', 'i18n', 'langAdmin']) . '/lex_statislite.php');
// Si le module n'existe pas, on le crée avec des valeurs par défaut et on demande une validation de la configuration
// Si le module n'existe pas, copie des ressources, on le crée avec des valeurs par défaut et on demande une validation de la configuration
if( $this->getData(['module', $this->getUrl(0), 'config', 'config']) !== true){
// Copie des fichiers de module/statislite/ressource/ vers self::DATAMODULE
if( !is_dir( self::DATAMODULE)) mkdir( self::DATAMODULE, 0755, true);
$this->custom_copy('./module/statislite/ressource', self::DATAMODULE);
if( !is_dir( self::DATAMODULE.'/json' )) mkdir( self::DATAMODULE.'/json', 0755);
if( !is_dir( self::DATAMODULE.'/json_sauve' ))mkdir( self::DATAMODULE.'/json_sauve', 0755);
$this->setData(['module', $this->getUrl(0), 'config',[
'timeVisiteMini' => '30',
'timePageMini' => '5',

View File

@ -1,3 +1 @@
# Bloque l'accès aux sauvegardes
Order deny,allow
Deny from all
Require all denied

View File

@ -1,5 +1,3 @@
# Bloque l'accès aux données
<Files ~ "\.(htaccess|json|log)$">
Order deny,allow
Deny from all
</Files>
<Files ~ "\.(json|log)$">
Require all denied
</Files>

View File

@ -1,14 +0,0 @@
# Bloque l'accès aux données
<Files *.txt>
Order deny,allow
Deny from all
</Files>
<Files *.csv>
Order deny,allow
Deny from all
</Files>
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>

View File

@ -1,4 +0,0 @@
# Autorise l'accès aux fichiers json par les scripts js
<Files *.json>
allow from all
</Files>

View File

@ -1,10 +0,0 @@
# Bloque l'accès aux données
<Files *.json>
Order deny,allow
Deny from all
</Files>
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>

View File

@ -1,10 +0,0 @@
# Bloque l'accès aux données
<Files *.json>
Order deny,allow
Deny from all
</Files>
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>

View File

@ -1,4 +0,0 @@
# Autorise l'accès de sessionInvalide.json. et robots.json
<Files *.json>
allow from all
</Files>

View File

@ -1,14 +0,0 @@
# Bloque l'accès aux données
<Files *.txt>
Order deny,allow
Deny from all
</Files>
<Files *.csv>
Order deny,allow
Deny from all
</Files>
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>

View File

@ -1,8 +1,4 @@
# Bloque l'accès aux données temporaires
Order deny,allow
Deny from all
# Sauf l'accès aux images pour le captcha
Require all denied
<Files *.png>
Order Allow,Deny
Allow from all
Require all granted
</Files>