[10.0.57.dev] nouveau i18n + erreur édition bannière + alignement des drapeaux
This commit is contained in:
parent
9f97d9e5e6
commit
85b4b178ca
@ -253,10 +253,12 @@ core.start = function() {
|
||||
|
||||
/**
|
||||
* Choix de la langue dans la barre de membre
|
||||
*/
|
||||
$("#barFormSelectLanguage").on("change", function(){
|
||||
$("#barFormSelectLanguage").submit();
|
||||
});
|
||||
*/
|
||||
$("#barSelectLanguage").on("change", function(){
|
||||
$(" #barFormSelectLanguage").submit();
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Champs d'upload de fichiers
|
||||
*/
|
||||
|
@ -31,7 +31,7 @@ class common {
|
||||
const TEMP_DIR = 'site/tmp/';
|
||||
|
||||
// Numéro de version
|
||||
const ZWII_VERSION = '10.0.55.dev';
|
||||
const ZWII_VERSION = '10.0.57.dev';
|
||||
|
||||
public static $actions = [];
|
||||
public static $coreModuleIds = [
|
||||
@ -1258,7 +1258,8 @@ class core extends common {
|
||||
$css .= 'nav{margin:0 20px 0}';
|
||||
}
|
||||
}
|
||||
//$css .= '#i18nBar {padding:' . $this->getData(['theme', 'menu', 'height']) . ';}';
|
||||
$css .= '#i18nBar {padding:' . $this->getData(['theme', 'menu', 'height']) . ';}';
|
||||
$css .= '.flag {height: ' . $this->getData(['theme', 'menu', 'fontSize']) . ';}';
|
||||
$colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColor']));
|
||||
$css .= 'nav #burgerText {color:' . $colors['text'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'menu', 'font'])) . '",sans-serif;' . 'font-weight:' . $this->getData(['theme', 'menu', 'fontWeight']) . ';text-transform:' . $this->getData(['theme', 'menu', 'textTransform']) . '}';
|
||||
$css .= '#toggle span,#menu a{padding:' . $this->getData(['theme', 'menu', 'height']) .';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'menu', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'menu', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'menu', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'menu', 'textTransform']) . '}';
|
||||
@ -1277,8 +1278,6 @@ class core extends common {
|
||||
$css .= "footer #footersite > div {padding:0}";
|
||||
$css .= "footer #footerbody > div {padding:0}";
|
||||
$css .= '#footerFontText > p {margin-top: 0; margin-bottom: 0;}';
|
||||
//$css .= '#footersiteLeft, #footersiteCenter, #footersiteRight {padding:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
|
||||
//$css .= '#footerbodyLeft, #footerbodyCenter, #footerbodyRight {padding:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
|
||||
$css .= '#footerSocials{text-align:' . $this->getData(['theme', 'footer', 'socialsAlign']) . '}';
|
||||
$css .= '#footerText{text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}';
|
||||
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
|
||||
@ -2606,8 +2605,8 @@ class layout extends common {
|
||||
// ne pas afficher la barre de langue pour une seule
|
||||
// Sélection des langues installées
|
||||
if (sizeof($this->i18nInstalled()) > 1) {
|
||||
$leftItems .= '<li><form method="POST" action="' . helper::baseUrl() . 'i18n/lang" id="barFormSelectLanguage">';
|
||||
$leftItems .= '<select id="barSelectLanguage" name="i18nSelect" >';
|
||||
$leftItems .= '<li><form method="POST" action="' . helper::baseUrl() . 'i18n/lang" id="barFormSelectLanguage">';
|
||||
$leftItems .= '<select id="barSelectLanguage" name="i18nSelect">'; //onchange="this.form.submit()"
|
||||
foreach ($this->i18nInstalled() as $itemKey => $item) {
|
||||
$leftItems .= '<option ';
|
||||
$leftItems .= 'value="' . $itemKey .'"';
|
||||
|
@ -594,14 +594,8 @@ ul .menuSideChild, li .menuSideChild {
|
||||
}
|
||||
|
||||
/* Icones de langues du menu */
|
||||
nav .flag {
|
||||
height: 12px;
|
||||
padding: 0 3px 0 3px;
|
||||
max-width:100%;
|
||||
}
|
||||
|
||||
nav .flagSelected {
|
||||
height: 15px;
|
||||
.flag {
|
||||
margin: 0px 5px 0 5px;
|
||||
}
|
||||
|
||||
/* Paramètres du menu et de la barre de langue */
|
||||
@ -610,12 +604,11 @@ nav .flagSelected {
|
||||
display: inline-flex;
|
||||
}
|
||||
#i18nBar {
|
||||
display: flex ;
|
||||
margin-top: -4px;
|
||||
display: inline-flex ;
|
||||
float: right;
|
||||
}
|
||||
#i18nBar::after {
|
||||
clear:right;
|
||||
}
|
||||
|
||||
|
||||
/* Corps */
|
||||
@media (min-width:769px) {
|
||||
|
@ -87,7 +87,7 @@
|
||||
</div>
|
||||
<div id="i18nBar">
|
||||
<?php $layout->showi18nUserSelect(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<?php endif; ?>
|
||||
@ -159,7 +159,7 @@
|
||||
</div>
|
||||
<div id="i18nBar">
|
||||
<?php $layout->showi18nUserSelect(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<?php endif; ?>
|
||||
|
@ -16,113 +16,119 @@ class i18n extends common {
|
||||
|
||||
public static $actions = [
|
||||
'index' => self::GROUP_MODERATOR,
|
||||
'add' => self::GROUP_MODERATOR,
|
||||
'delete' => self::GROUP_MODERATOR,
|
||||
'lang' => self::GROUP_VISITOR
|
||||
];
|
||||
public static $languages = [];
|
||||
|
||||
|
||||
/**
|
||||
* Ajouter une localisation
|
||||
*/
|
||||
public function add() {
|
||||
// Soumission du formulaire
|
||||
if($this->isPost()) {
|
||||
// Mode Création
|
||||
// Récupérer les données du formulaire
|
||||
$create = $this->getInput('i18nAddSelect');
|
||||
$copyFrom = $this->getInput('i18nAddCopyFrom');
|
||||
$notification = '';
|
||||
$success = array ('create' => false,'remove'=> false);
|
||||
if (!empty ($create)) {
|
||||
// Mode création de langue
|
||||
// La langue est déja créée ?
|
||||
if (in_array($create,$this->i18nInstalled()) === false) {
|
||||
$copyFrom = $copyFrom === '' ? 'core/module/i18n/ressource/' : self::DATA_DIR . $copyFrom . '/';
|
||||
// Créer le dossier
|
||||
if (is_dir(self::DATA_DIR . $create) === false ) {
|
||||
$success ['create'] = mkdir (self::DATA_DIR . $create);
|
||||
} else {
|
||||
$success ['create'] = true;
|
||||
}
|
||||
// Copier les données par défaut
|
||||
$success ['create'] = (copy ($copyFrom . 'module.json', self::DATA_DIR . $create . '/module.json') === true && $success ['create'] === true) ? true : false;
|
||||
$success ['create'] = (copy ($copyFrom . 'page.json', self::DATA_DIR . $create . '/page.json') === true && $success ['create'] === true) ? true : false;
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$notification = $success['create'] === true ? self::$i18nList[$create] . ' installée' : self::$i18nList[$create] . ' déjà installée' ;
|
||||
}
|
||||
$this->addOutput([
|
||||
'notification' => $notification,
|
||||
'title' => 'Ajouter une langue',
|
||||
'view' => 'add',
|
||||
'state' => $success ['create']
|
||||
]);
|
||||
|
||||
} else {
|
||||
// Valeurs en sortie sans post
|
||||
$this->addOutput([
|
||||
'title' => 'Ajouter une langue',
|
||||
'view' => 'add'
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Config : gestion des langues
|
||||
*/
|
||||
public function index() {
|
||||
// Soumission du formulaire
|
||||
if($this->isPost()) {
|
||||
// Et faire un backup
|
||||
|
||||
// Récupérer les données du formulaire
|
||||
$remove = $this->getInput('i18nLanguageRemove');
|
||||
$notification = '';
|
||||
$success = array ('create' => false,'remove'=> false);
|
||||
|
||||
// Mode effacement
|
||||
if (!empty ($remove)) {
|
||||
|
||||
// Une notification existe déjà, insérer un séparateur
|
||||
if ($notification) {
|
||||
$notification .= ' | ';
|
||||
}
|
||||
// Suppression impossible langue actuelle ou fr
|
||||
if ( $remove !== $this->geti18n()) {
|
||||
// Le dossier existe ?
|
||||
if (is_dir(self::DATA_DIR . $remove) === true) {
|
||||
$success ['remove'] = unlink (self::DATA_DIR . $remove . '/module.json');
|
||||
$success ['remove'] = (unlink (self::DATA_DIR . $remove . '/page.json') && $success ['remove'] === true) ? true : false ;
|
||||
$success ['remove'] = (rmdir (self::DATA_DIR . $remove) === true && $success ['remove'] === true) ? true : false ;
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$notification .= $success['remove'] === true ? self::$i18nList[$remove] .' effacée' : self::$i18nList[$remove] . ' n\'existe pas' ;
|
||||
if ($this->isPost()) {
|
||||
// Mode ajout de langue
|
||||
// Récupérer les données du formulaire
|
||||
if (!empty ($this->getInput('i18nLanguageAdd'))) { // Formulaire valide
|
||||
$create = $this->getInput('i18nLanguageAdd');
|
||||
$copyFrom = $this->getInput('i18nLanguageCopyFrom');
|
||||
// Mode création de langue
|
||||
// La langue est déja créée ?
|
||||
if (in_array($create,$this->i18nInstalled()) === false) { // La langue n'est pas installée ?
|
||||
//Déterminer l'origine des données copiées
|
||||
$copyFrom = $copyFrom === '' ? 'core/module/i18n/ressource/' : self::DATA_DIR . $copyFrom . '/';
|
||||
// Créer le dossier
|
||||
if (is_dir(self::DATA_DIR . $create) === false ) { // Si le dossier est déjà créé
|
||||
$success = mkdir (self::DATA_DIR . $create);
|
||||
} else {
|
||||
$success = true;
|
||||
}
|
||||
// Copier les données par défaut avec gestion des erreurs
|
||||
$success = (copy ($copyFrom . 'module.json', self::DATA_DIR . $this->getInput('i18nLanguageAdd') . '/module.json') === true && $success === true) ? true : false;
|
||||
$success = (copy ($copyFrom . 'page.json', self::DATA_DIR . $this->getInput('i18nLanguageAdd') . '/page.json') === true && $success === true) ? true : false;
|
||||
} else {
|
||||
// Valeurs en sortie
|
||||
$success ['remove'] = false;
|
||||
$notification .= self::$i18nList[$remove] . ' est active, effacement impossible';
|
||||
$notification = $create . ' est déjà installée';
|
||||
$success = false;
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$notification = $success === true ? self::$i18nList[$this->getInput('i18nLanguageAdd')] . ' installée' : self::$i18nList[create] . ' déjà installée' ;
|
||||
} else {
|
||||
$notification = 'Veuillez choisir une langue';
|
||||
$success = false;
|
||||
}
|
||||
|
||||
$this->addOutput([
|
||||
'notification' => $notification,
|
||||
'title' => 'Internationalisation',
|
||||
'title' => 'Gestion des langues',
|
||||
'view' => 'index',
|
||||
'state' => $success ['remove']
|
||||
]);
|
||||
'state' => $success
|
||||
]);
|
||||
// Fin traitement du formulaire
|
||||
}
|
||||
// Affichage par défaut
|
||||
$langIds = $this->i18nInstalled();
|
||||
asort($langIds);
|
||||
foreach($langIds as $itemKeyLang => $itemLang) {
|
||||
self::$languages[] = [
|
||||
$itemLang,
|
||||
template::button('i18nDelete' . $itemKeyLang, [
|
||||
'class' => 'i18nDelete buttonRed',
|
||||
'href' => helper::baseUrl() . 'i18n/delete/' . $itemKeyLang. '/' . $_SESSION['csrf'],
|
||||
'value' => template::ico('cancel')
|
||||
])
|
||||
];
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'title' => 'Gestion des langues',
|
||||
'view' => 'index'
|
||||
]);
|
||||
}
|
||||
|
||||
} else {
|
||||
// Valeurs en sortie sans post
|
||||
|
||||
/* Effacer une langue
|
||||
*
|
||||
*/
|
||||
public function delete() {
|
||||
// Jeton incorrect
|
||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'title' => 'Internationalisation',
|
||||
'view' => 'index'
|
||||
]);
|
||||
|
||||
'redirect' => helper::baseUrl() . 'i18n',
|
||||
'notification' => 'Action non autorisée'
|
||||
]);
|
||||
} elseif ( $this->getUrl(2) === $this->geti18n()) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'redirect' => helper::baseUrl() . 'i18n',
|
||||
'notification' => 'Vous ne pouvez pas supprimer la langue courante'
|
||||
]);
|
||||
} elseif ( $this->getUrl(2) === 'fr') {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'redirect' => helper::baseUrl() . 'i18n',
|
||||
'notification' => 'Vous ne pouvez pas supprimer la langue par défaut'
|
||||
]);
|
||||
} else {
|
||||
// Le dossier existe ?
|
||||
if (is_dir(self::DATA_DIR . $this->getUrl(2)) === true) {
|
||||
$success = unlink (self::DATA_DIR . $this->getUrl(2) . '/module.json');
|
||||
$success = (unlink (self::DATA_DIR . $this->getUrl(2) . '/page.json') && $success === true) ? true : false ;
|
||||
$success = (rmdir (self::DATA_DIR . $this->getUrl(2)) === true && $success === true) ? true : false ;
|
||||
} else {
|
||||
$success = false;
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$notification = $success === true ? 'Langue ' . $this->getUrl(2) .' effacée' : 'Langue ' . $this->getUrl(2) . ' n\'existe pas' ;
|
||||
$this->addOutput([
|
||||
'notification' => $notification,
|
||||
'redirect' => helper::baseUrl() . 'i18n',
|
||||
'state' => $success
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
* Traitement du changement de langues
|
||||
*/
|
||||
public function lang() {
|
||||
@ -152,5 +158,4 @@ class i18n extends common {
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
<?php echo template::formOpen('i18nAdd'); ?>
|
||||
<div class="row">
|
||||
<div class="col2">
|
||||
<?php echo template::button('i18nAddBack', [
|
||||
'class' => 'buttonGrey',
|
||||
'href' => helper::baseUrl() .'i18n',
|
||||
'value' => 'Retour'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2 offset8">
|
||||
<?php echo template::submit('i18NAddSubmit'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4>Ajouter une localisation</h4>
|
||||
<div class="row">
|
||||
<div class="col5">
|
||||
<?php echo template::select('i18nAddCopyFrom', $this->i18nInstalled(true), [
|
||||
'label' => 'Copier la structure de',
|
||||
'help' => 'Ne rien sélectionner pour une copie vierge ',
|
||||
'selected' => -1
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php echo template::ico('right-big'); ?>
|
||||
</div>
|
||||
<div class="col5">
|
||||
<?php
|
||||
$available = array ('' => 'Sélectionner');
|
||||
$available = array_merge ($available, self::$i18nList);
|
||||
echo template::select('i18nAddSelect', $available, [
|
||||
'label' => 'vers'
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo template::formClose(); ?>
|
@ -1,4 +1,4 @@
|
||||
<?php echo template::formOpen('i18nIndex'); ?>
|
||||
<?php echo template::formOpen('i18nIndexForm'); ?>
|
||||
<div class="row">
|
||||
<div class="col2">
|
||||
<?php echo template::button('i18nBack', [
|
||||
@ -8,38 +8,36 @@
|
||||
'value' => 'Accueil'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2 offset6">
|
||||
<?php echo template::button('i18nAddButton', [
|
||||
'href' => helper::baseUrl() . 'i18n/add',
|
||||
'value' => 'Ajouter'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2">
|
||||
<?php echo template::submit('i18nSubmit'); ?>
|
||||
<div class="col2 offset8">
|
||||
<?php echo template::submit('galleryEditSubmit'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4>Supprimer une localisation</h4>
|
||||
<div class="row">
|
||||
<?php echo template::select('i18nLanguageRemove', $this->i18nInstalled(true, true), [
|
||||
'label' => 'Localisations installées',
|
||||
'help' => 'La suppression d\'une langue entraîne l\'effacement des pages et des modules',
|
||||
'selected' => -1
|
||||
]); ?>
|
||||
<h4>Ajouter une localisation</h4>
|
||||
<div class="row">
|
||||
<div class="col5">
|
||||
<?php echo template::select('i18nLanguageCopyFrom', $this->i18nInstalled(true), [
|
||||
'label' => 'Copier la structure de',
|
||||
'help' => 'Ne rien sélectionner pour une copie vierge ',
|
||||
'selected' => -1
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php echo template::ico('right-big'); ?>
|
||||
</div>
|
||||
<div class="col5">
|
||||
<?php
|
||||
$available = array ('' => 'Sélectionner');
|
||||
$available = array_merge ($available, self::$i18nList);
|
||||
echo template::select('i18nLanguageAdd', $available, [
|
||||
'label' => 'vers'
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="row">
|
||||
<div class="col4">
|
||||
<?php echo template::select('i18nHomePageId', helper::arrayCollumn($this->getData(['page']), 'title', 'SORT_ASC'), [
|
||||
'label' => 'Page d\'accueil',
|
||||
//'selected' => $this->getData(['config', 'homePageId'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<?php echo template::formClose(); ?>
|
||||
<?php echo template::table([11, 1], $module::$languages, ['Langues installées', '']); ?>
|
||||
<?php echo template::formClose(); ?>
|
@ -17,7 +17,7 @@
|
||||
/**
|
||||
* Aperçu en direct
|
||||
*/
|
||||
$("input, select").on("change", function() {
|
||||
$("input, select").not("#barSelectLanguage").on("change", function() {
|
||||
|
||||
// Récupérer la taille de l'image
|
||||
var tmpImg = new Image();
|
||||
|
@ -23,11 +23,12 @@ $("input, select").on("change", function() {
|
||||
css += "nav a,#toggle span,nav a:hover{color:" + $("#themeMenuTextColor").val() + "}";
|
||||
css += "nav a:hover{background-color:" + colors.darken + "}";
|
||||
css += "nav a.active{background-color:" + colors.veryDarken + "}";
|
||||
//css += "#i18nBar {padding:" + $("#themeMenuHeight").val() + "}";
|
||||
css += "#i18nBar {padding:" + $("#themeMenuHeight").val() + "}";
|
||||
css += ".flag {height: " + $("#themeMenuFontSize").val() + "}";
|
||||
// Taille, hauteur, épaisseur et capitalisation de caractères du menu
|
||||
css += "#toggle span,#menu a{padding:" + $("#themeMenuHeight").val() + ";font-family:'" + menuFont.replace(/\+/g, " ") + "',sans-serif;font-weight:" + $("#themeMenuFontWeight").val() + ";font-size:" + $("#themeMenuFontSize").val() + ";text-transform:" + $("#themeMenuTextTransform").val() + "}";
|
||||
// Alignement du menu
|
||||
css += "#menu{text-align:" + $("#themeMenuTextAlign").val() + "}";
|
||||
css += "#menu{text-align:" + $("#themeMenuTextAlign").val() + "}";
|
||||
// Marge
|
||||
if($("#themeMenuMargin").is(":checked")) {
|
||||
if(
|
||||
|
Loading…
Reference in New Issue
Block a user