Intégration des pages en colonne
This commit is contained in:
commit
1fc8061236
@ -5,6 +5,7 @@
|
||||
- Stockage distinct du thème et des autres données (core, config, page, module et users ) avec import des données d'une version 8
|
||||
- Exporter un thème (avec les images) sous forme d'une archive ZIP à télécharger ou stocker dans Fichiers.
|
||||
- Importer un thème à partir des fichiers
|
||||
- Deux blocs (colonnes) à droite ou à gauche contenant des informations fixes, le paramétage est dans le thème, mais les contenus sont stockés dans les pages.
|
||||
|
||||
## Verison 8.5.3
|
||||
* Modification :
|
||||
|
@ -176,6 +176,38 @@ class common {
|
||||
'group' => self::GROUP_VISITOR,
|
||||
'targetBlank' => false,
|
||||
'title' => 'Contact'
|
||||
],
|
||||
'blockRight' => [
|
||||
'typeMenu' => '',
|
||||
'iconUrl' => '',
|
||||
'disable' => false,
|
||||
'content' => '<p>Bloc à droite du site</p>',
|
||||
'hideTitle' => false,
|
||||
'metaDescription' => '',
|
||||
'metaTitle' => '',
|
||||
'moduleId' => '',
|
||||
'modulePosition' => '',
|
||||
'parentPageId' => '',
|
||||
'position' => 0,
|
||||
'group' => self::GROUP_VISITOR,
|
||||
'targetBlank' => false,
|
||||
'title' => 'blockRight'
|
||||
],
|
||||
'blockLeft' => [
|
||||
'typeMenu' => '',
|
||||
'iconUrl' => '',
|
||||
'disable' => false,
|
||||
'content' => '<p>Bloc à gauche du site</p>',
|
||||
'hideTitle' => false,
|
||||
'metaDescription' => '',
|
||||
'metaTitle' => '',
|
||||
'moduleId' => '',
|
||||
'modulePosition' => '',
|
||||
'parentPageId' => '',
|
||||
'position' => 0,
|
||||
'group' => self::GROUP_VISITOR,
|
||||
'targetBlank' => false,
|
||||
'title' => 'blockLeft'
|
||||
]
|
||||
],
|
||||
'module' => [
|
||||
@ -349,7 +381,8 @@ class common {
|
||||
'backgroundColor' => 'rgba(255, 255, 255, 1)',
|
||||
'radius' => '0',
|
||||
'shadow' => '0',
|
||||
'width' => '1170px'
|
||||
'width' => '1170px',
|
||||
'blocks' => '100'
|
||||
],
|
||||
'text' => [
|
||||
'font' => 'Open+Sans',
|
||||
@ -994,7 +1027,7 @@ class common {
|
||||
}
|
||||
// Version 9.0.0
|
||||
if($this->getData(['core', 'dataVersion']) < 900) {
|
||||
|
||||
$this->setData(['theme', 'site', 'blocks','100']);
|
||||
$this->setData(['core', 'dataVersion', 900]);
|
||||
$this->SaveData();
|
||||
}
|
||||
@ -1999,8 +2032,6 @@ class layout extends common {
|
||||
$targetBlank = $this->getData(['page', $childKey, 'targetBlank']) ? ' target="_blank"' : '';
|
||||
// Mise en page du sous-item
|
||||
|
||||
// Menu Image
|
||||
|
||||
if ( $this->getData(['page',$childKey,'disable']) === true
|
||||
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD') )
|
||||
|
||||
@ -2131,13 +2162,17 @@ class layout extends common {
|
||||
if($this->getUser('group') >= self::GROUP_MODERATOR) {
|
||||
$leftItems .= '<li><select id="barSelectPage">';
|
||||
$leftItems .= '<option value="">Choisissez une page</option>';
|
||||
$currentPageId = $this->getData(['page', $this->getUrl(0)]) ? $this->getUrl(0) : $this->getUrl(2);
|
||||
$currentPageId = $this->getData(['page', $this->getUrl(0)]) ? $this->getUrl(0) : $this->getUrl(2);
|
||||
foreach($this->getHierarchy(null, false) as $parentPageId => $childrenPageIds) {
|
||||
if ($parentPageId === 'blockLeft'
|
||||
OR $parentPageId === 'blockRight') { continue; }
|
||||
$leftItems .= '<option value="' . helper::baseUrl() . $parentPageId . '"' . ($parentPageId === $currentPageId ? ' selected' : false) . '>' . $this->getData(['page', $parentPageId, 'title']) . '</option>';
|
||||
foreach($childrenPageIds as $childKey) {
|
||||
$leftItems .= '<option value="' . helper::baseUrl() . $childKey . '"' . ($childKey === $currentPageId ? ' selected' : false) . '> ' . $this->getData(['page', $childKey, 'title']) . '</option>';
|
||||
}
|
||||
}
|
||||
$leftItems .= '<option value="">-------------------</option>';
|
||||
$leftItems .= '<option value="' . helper::baseUrl() . 'page/block">Édition des blocs</option>';
|
||||
$leftItems .= '</select></li>';
|
||||
$leftItems .= '<li><a href="' . helper::baseUrl() . 'page/add" title="Créer une page">' . template::ico('plus') . '</a></li>';
|
||||
if(
|
||||
|
@ -33,11 +33,9 @@
|
||||
<?php if($this->getData(['theme', 'header', 'position']) === 'body'): ?>
|
||||
<!-- Bannière dans le fond du site -->
|
||||
|
||||
<!-- menu image -->
|
||||
<?php
|
||||
if ($this->getData(['theme','header','linkHome'])){
|
||||
echo "<a href='" . helper::baseUrl(false) . "'>" ;} ?>
|
||||
<!-- menu image -->
|
||||
|
||||
<header>
|
||||
<?php if(
|
||||
@ -45,22 +43,16 @@
|
||||
// Affiche toujours le titre de la bannière pour l'édition du thème
|
||||
OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header')
|
||||
): ?>
|
||||
|
||||
|
||||
<div class="container">
|
||||
<span><?php echo $this->getData(['config', 'title']); ?></span>
|
||||
</div>
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
</header>
|
||||
<!-- menu image -->
|
||||
</header>
|
||||
<?php
|
||||
if ($this->getData(['theme','header','linkHome'])){echo "</a>";}
|
||||
?>
|
||||
<!-- menu image -->
|
||||
|
||||
?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if($this->getData(['theme', 'menu', 'position']) === 'body-second'): ?>
|
||||
<!-- Menu dans le fond du site après la bannière -->
|
||||
<nav>
|
||||
@ -90,12 +82,9 @@
|
||||
)
|
||||
): ?>
|
||||
<!-- Bannière dans le site -->
|
||||
|
||||
<!-- menu image -->
|
||||
<?php
|
||||
if ($this->getData(['theme','header','linkHome'])){
|
||||
echo "<a href='" . helper::baseUrl(false) . "'>" ;} ?>
|
||||
<!-- menu image -->
|
||||
<header <?php if($this->getData(['theme', 'header', 'position']) === 'hide'): ?>class="displayNone"<?php endif; ?>>
|
||||
<?php if(
|
||||
$this->getData(['theme', 'header', 'textHide']) === false
|
||||
@ -127,7 +116,44 @@
|
||||
</nav>
|
||||
<?php endif; ?>
|
||||
<!-- Corps -->
|
||||
<section><?php $layout->showContent(); ?></section>
|
||||
<?php if ($this->getUrl(0) === 'theme' OR
|
||||
$this->getUrl(0) === 'config' OR
|
||||
$this->getUrl(0) === 'install' OR
|
||||
$this->getUrl(0) === 'maintenance' OR
|
||||
$this->getUrl(0) === 'page' OR
|
||||
$this->getUrl(0) === 'user' ) { ?> <!-- Pas de multi colonne-->
|
||||
<section><?php $layout->showContent(); ?></section>
|
||||
<?php } else {
|
||||
$blocks = explode('-',$this->getData(['theme','site','blocks']));
|
||||
$blockleft=$blockright="";
|
||||
switch (sizeof($blocks)) {
|
||||
case 1 : // une colonne
|
||||
$content = 'col'. $blocks[0] ;
|
||||
break;
|
||||
case 2 : // 2 blocks
|
||||
if ($blocks[0] < $blocks[1]) { // détermine la position de la colonne
|
||||
$blockleft = 'col'. $blocks[0];
|
||||
$content = 'col'. $blocks[1] ;
|
||||
} else {
|
||||
$content = 'col' . $blocks[0];
|
||||
$blockright = 'col' . $blocks[1];
|
||||
}
|
||||
break;
|
||||
case 3 : // 3 blocks
|
||||
$blockleft = 'col' . $blocks[0];
|
||||
$content = 'col' . $blocks[1];
|
||||
$blockright = 'col' . $blocks[2];
|
||||
}
|
||||
?>
|
||||
<section>
|
||||
<div class="row">
|
||||
<?php if ($blockleft !== "") :?> <div class="<?php echo $blockleft; ?>" id="contentleft"><?php echo $this->getData(['page','blockLeft','content']);?></div> <?php endif; ?>
|
||||
<div class="<?php echo $content; ?>" id="contentsite"><?php $layout->showContent(); ?></div>
|
||||
<?php if ($blockright !== "") :?> <div class="<?php echo $blockright; ?>" id="contentright"><?php echo $this->getData(['page','blockRight','content']);?></div> <?php endif; ?>
|
||||
</div>
|
||||
</section>
|
||||
<?php } ?>
|
||||
<!-- footer -->
|
||||
<?php if(
|
||||
$this->getData(['theme', 'footer', 'position']) === 'site'
|
||||
// Affiche toujours le pied de page pour l'édition du thème
|
||||
|
@ -17,26 +17,26 @@ class page extends common {
|
||||
public static $actions = [
|
||||
'add' => self::GROUP_MODERATOR,
|
||||
'delete' => self::GROUP_MODERATOR,
|
||||
'edit' => self::GROUP_MODERATOR
|
||||
'edit' => self::GROUP_MODERATOR,
|
||||
'block' => self::GROUP_ADMIN
|
||||
];
|
||||
public static $pagesNoParentId = [
|
||||
'' => 'Aucune'
|
||||
];
|
||||
public static $moduleIds = [];
|
||||
|
||||
// Menu image
|
||||
public static $typeMenu = [
|
||||
'text' => 'Texte',
|
||||
'icon' => 'Icône',
|
||||
'icontitle' => 'Icône et bulle'
|
||||
];
|
||||
// menu image
|
||||
// Position du module
|
||||
public static $modulePosition = [
|
||||
'bottom' => 'En bas',
|
||||
'top' => 'En haut',
|
||||
'free' => 'Libre'
|
||||
'bottom' => 'En bas',
|
||||
'top' => 'En haut',
|
||||
'free' => 'Libre'
|
||||
];
|
||||
|
||||
/**
|
||||
* Création
|
||||
*/
|
||||
@ -46,12 +46,10 @@ class page extends common {
|
||||
$this->setData([
|
||||
'page',
|
||||
$pageId,
|
||||
[
|
||||
// Menu icon
|
||||
[
|
||||
'typeMenu' => 'text',
|
||||
'iconUrl' => '',
|
||||
'disable' => false,
|
||||
// Menu icon
|
||||
'disable' => false,
|
||||
'content' => 'Contenu de votre nouvelle page.',
|
||||
'hideTitle' => false,
|
||||
'metaDescription' => '',
|
||||
@ -77,7 +75,6 @@ class page extends common {
|
||||
* Suppression
|
||||
*/
|
||||
public function delete() {
|
||||
if($this->isPost()) {
|
||||
// La page n'existe pas
|
||||
if($this->getData(['page', $this->getUrl(2)]) === null) {
|
||||
// Valeurs en sortie
|
||||
@ -112,13 +109,67 @@ class page extends common {
|
||||
'state' => true
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
// Valeurs en sortie
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Édition des blocs
|
||||
*/
|
||||
public function block () {
|
||||
if($this->isPost()) {
|
||||
$this->setData([
|
||||
'page',
|
||||
'blockLeft', [
|
||||
'typeMenu' => 'text',
|
||||
'iconUrl' => '',
|
||||
'disable' => true,
|
||||
'hideTitle' => false,
|
||||
'metaDescription' => '',
|
||||
'metaTitle' => '',
|
||||
'moduleId' => '',
|
||||
'parentPageId' => '',
|
||||
'modulePosition' => 'bottom',
|
||||
'position' => 0,
|
||||
'group' => self::GROUP_VISITOR,
|
||||
'targetBlank' => false,
|
||||
'title' => 'blockLeft',
|
||||
'content' => (empty($this->getInput('pageBlockLeftContent', null)) ? "<p></p>" : $this->getInput('pageBlockLeftContent', null))]
|
||||
]);
|
||||
$this->setData([
|
||||
'page',
|
||||
'blockRight', [
|
||||
'typeMenu' => 'text',
|
||||
'iconUrl' => '',
|
||||
'disable' => true,
|
||||
'hideTitle' => false,
|
||||
'metaDescription' => '',
|
||||
'metaTitle' => '',
|
||||
'moduleId' => '',
|
||||
'parentPageId' => '',
|
||||
'modulePosition' => 'bottom',
|
||||
'position' => 0,
|
||||
'group' => self::GROUP_VISITOR,
|
||||
'targetBlank' => false,
|
||||
'title' => 'blockRight',
|
||||
'content' => (empty($this->getInput('pageBlockRightContent', null)) ? "<p></p>" : $this->getInput('pageBlockRightContent', null))]
|
||||
]);
|
||||
$this->addOutput([
|
||||
'access' => false
|
||||
'redirect' => helper::baseUrl(),
|
||||
'notification' => 'Modifications enregistrées',
|
||||
'state' => true
|
||||
]);
|
||||
}
|
||||
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'title' => 'Édition des blocs',
|
||||
'vendor' => [
|
||||
'tinymce'
|
||||
],
|
||||
'view' => 'block'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Édition
|
||||
|
102
core/module/page/view/block/block.js.php
Normal file
102
core/module/page/view/block/block.js.php
Normal file
@ -0,0 +1,102 @@
|
||||
/**
|
||||
* This file is part of Zwii.
|
||||
*
|
||||
* For full copyright and license information, please see the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*
|
||||
* @author Rémi Jean <remi.jean@outlook.com>
|
||||
* @copyright Copyright (C) 2008-2018, Rémi Jean
|
||||
* @license GNU General Public License, version 3
|
||||
* @link http://zwiicms.com/
|
||||
*/
|
||||
|
||||
/**
|
||||
* Confirmation de suppression
|
||||
*/
|
||||
$("#pageEditDelete").on("click", function() {
|
||||
var _this = $(this);
|
||||
return core.confirm("Êtes-vous sûr de vouloir supprimer cette page ?", function() {
|
||||
$(location).attr("href", _this.attr("href"));
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Bloque/Débloque le bouton de configuration au changement de module
|
||||
*/
|
||||
var pageEditModuleIdDOM = $("#pageEditModuleId");
|
||||
pageEditModuleIdDOM.on("change", function() {
|
||||
if($(this).val() === "") {
|
||||
$("#pageEditModuleConfig").addClass("disabled");
|
||||
$("#pageEditContentContainer").slideDown();
|
||||
}
|
||||
else {
|
||||
$("#pageEditModuleConfig").removeClass("disabled");
|
||||
$("#pageEditContentContainer").slideUp();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Soumission du formulaire pour éditer le module
|
||||
*/
|
||||
$("#pageEditModuleConfig").on("click", function() {
|
||||
$("#pageEditModuleRedirect").val(1);
|
||||
$("#pageEditForm").trigger("submit");
|
||||
});
|
||||
|
||||
/**
|
||||
* Affiche les pages en fonction de la page parent dans le choix de la position
|
||||
*/
|
||||
var hierarchy = <?php echo json_encode($this->getHierarchy()); ?>;
|
||||
var pages = <?php echo json_encode($this->getData(['page'])); ?>;
|
||||
$("#pageEditParentPageId").on("change", function() {
|
||||
var positionDOM = $("#pageEditPosition");
|
||||
positionDOM.empty().append(
|
||||
$("<option>").val(0).text("Ne pas afficher"),
|
||||
$("<option>").val(1).text("Au début")
|
||||
);
|
||||
var parentSelected = $(this).val();
|
||||
var positionSelected = 0;
|
||||
var positionPrevious = 1;
|
||||
// Aucune page parent selectionnée
|
||||
if(parentSelected === "") {
|
||||
// Liste des pages sans parents
|
||||
for(var key in hierarchy) {
|
||||
if(hierarchy.hasOwnProperty(key)) {
|
||||
// Sélectionne la page avant si il s'agit de la page courante
|
||||
if(key === "<?php echo $this->getUrl(2); ?>") {
|
||||
positionSelected = positionPrevious;
|
||||
}
|
||||
// Sinon ajoute la page à la liste
|
||||
else {
|
||||
// Enregistre la position de cette page afin de la sélectionner si la prochaine page de la liste est la page courante
|
||||
positionPrevious++;
|
||||
// Ajout à la liste
|
||||
positionDOM.append(
|
||||
$("<option>").val(positionPrevious).text("Après \"" + pages[key].title + "\"")
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Un page parent est selectionnée
|
||||
else {
|
||||
// Liste des pages enfants de la page parent
|
||||
for(var i = 0; i < hierarchy[parentSelected].length; i++) {
|
||||
// Pour page courante sélectionne la page précédente (pas de - 1 à positionSelected à cause des options par défaut)
|
||||
if(hierarchy[parentSelected][i] === "<?php echo $this->getUrl(2); ?>") {
|
||||
positionSelected = positionPrevious;
|
||||
}
|
||||
// Sinon ajoute la page à la liste
|
||||
else {
|
||||
// Enregistre la position de cette page afin de la sélectionner si la prochaine page de la liste est la page courante
|
||||
positionPrevious++;
|
||||
// Ajout à la liste
|
||||
positionDOM.append(
|
||||
$("<option>").val(positionPrevious).text("Après \"" + pages[hierarchy[parentSelected][i]].title + "\"")
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sélectionne la bonne position
|
||||
positionDOM.val(positionSelected);
|
||||
}).trigger("change");
|
33
core/module/page/view/block/block.php
Normal file
33
core/module/page/view/block/block.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php echo template::formOpen('pageblockEditForm'); ?>
|
||||
<div class="row">
|
||||
<div class="col2">
|
||||
<?php $href = helper::baseUrl() . $this->getUrl(2); ?>
|
||||
<?php if ($this->getData(['page', $this->getUrl(2), 'moduleId']) === 'redirection')$href = helper::baseUrl(); ?>
|
||||
<?php echo template::button('pageblockEditBack', [
|
||||
'class' => 'buttonGrey',
|
||||
'href' => $href,
|
||||
'ico' => 'left',
|
||||
'value' => 'Retour'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2 offset8">
|
||||
<?php echo template::submit('pageblockEditSubmit'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class="col6">
|
||||
<?php echo template::textarea('pageBlockLeftContent', [
|
||||
'label' => 'Contenu du bloc à gauche :',
|
||||
'class' => 'editorWysiwyg',
|
||||
'value' => $this->getData(['page','blockLeft', 'content'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<?php echo template::textarea('pageBlockRightContent', [
|
||||
'label' => 'Contenu du bloc à droite :',
|
||||
'class' => 'editorWysiwyg',
|
||||
'value' => $this->getData(['page','blockRight', 'content'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo template::formClose(); ?>
|
@ -55,8 +55,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
|
||||
<div class="col6">
|
||||
<?php echo template::select('pageTypeMenu', $module::$typeMenu,[
|
||||
'help' => 'Sélectionnez le type de menu.',
|
||||
'label' => 'Type de menu',
|
||||
@ -64,7 +63,6 @@
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col6">
|
||||
|
||||
<?php echo template::file('pageIconUrl', [
|
||||
'label' => 'Icône',
|
||||
'value' => $this->getData(['page', $this->getUrl(2), 'iconUrl'])
|
||||
|
@ -15,6 +15,14 @@ body {
|
||||
#site {
|
||||
}
|
||||
|
||||
/* Blocs dans le site */
|
||||
#contentleft {
|
||||
}
|
||||
#contentright {
|
||||
}
|
||||
#contentsite {
|
||||
}
|
||||
|
||||
/* Bannière */
|
||||
header {
|
||||
}
|
||||
|
@ -201,9 +201,18 @@ class theme extends common {
|
||||
'contain' => 'Image entière',
|
||||
'cover' => 'Largeur adaptée au fond',
|
||||
'100% 100%' => 'Taille adaptée au fond'
|
||||
|
||||
];
|
||||
|
||||
public static $siteBlocks = [
|
||||
'12' => 'Un seul bloc, uniquement le site',
|
||||
'4-8' => 'Deux blocs : 1/3 - 2/3',
|
||||
'8-4' => 'Deux blocs : 2/3 - 1/3',
|
||||
'3-9' => 'Deux blocs : 1/4 - 3/4',
|
||||
'9-3' => 'Deux blocs : 3/4 - 1/2',
|
||||
'3-6-3' => 'Trois blocs : 1/4 - 1/2 - 1/4'
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* Mode avancé
|
||||
*/
|
||||
@ -424,7 +433,8 @@ class theme extends common {
|
||||
'backgroundColor' => $this->getInput('themeSiteBackgroundColor'),
|
||||
'radius' => $this->getInput('themeSiteRadius'),
|
||||
'shadow' => $this->getInput('themeSiteShadow'),
|
||||
'width' => $this->getInput('themeSiteWidth')
|
||||
'width' => $this->getInput('themeSiteWidth'),
|
||||
'blocks' => $this->getInput('themeSiteBlocks')
|
||||
]]);
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -437,7 +447,8 @@ class theme extends common {
|
||||
$this->addOutput([
|
||||
'title' => 'Personnalisation du site',
|
||||
'vendor' => [
|
||||
'tinycolorpicker'
|
||||
'tinycolorpicker',
|
||||
'tinymce'
|
||||
],
|
||||
'view' => 'site'
|
||||
]);
|
||||
|
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col4">
|
||||
<div class="col4 offset2">
|
||||
<?php echo template::text('themeButtonBackgroundColor', [
|
||||
'class' => 'colorPicker',
|
||||
'label' => 'Boutons',
|
||||
@ -82,6 +82,15 @@
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class="col4 offset4">
|
||||
<?php echo template::select('themeSiteBlocks', $module::$siteBlocks, [
|
||||
'label' => 'Répartition des blocs :',
|
||||
'help' => 'Pour éditer le contenu des blocs, sélectionnez \'Édition des blocs\' dans la liste des pages.',
|
||||
'selected' => $this->getData(['theme', 'site', 'blocks'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
2
core/vendor/filemanager/config/config.php
vendored
2
core/vendor/filemanager/config/config.php
vendored
@ -8,7 +8,7 @@ mb_http_input('UTF-8');
|
||||
mb_language('uni');
|
||||
mb_regex_encoding('UTF-8');
|
||||
ob_start('mb_output_handler');
|
||||
date_default_timezone_set('Europe/Rome');
|
||||
date_default_timezone_set('Europe/Paris');
|
||||
setlocale(LC_CTYPE, 'fr_FR'); //correct transliteration
|
||||
|
||||
/*
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Loading…
Reference in New Issue
Block a user