12100 Sélecteur de langue du site dans la barre d'administration

This commit is contained in:
Fred Tempez 2022-12-30 15:47:55 +01:00
parent 1c16e14bac
commit 45c918e2ee
6 changed files with 49 additions and 15 deletions

View File

@ -5,6 +5,7 @@
- Corrige une erreur fatale avec un argument float au lieu d'int dans mt_srand. - Corrige une erreur fatale avec un argument float au lieu d'int dans mt_srand.
### Améliorations : ### Améliorations :
- Changement du nom de formulaire de gestion des langues (multilangue devient multilingue). - Changement du nom de formulaire de gestion des langues (multilangue devient multilingue).
- Présence d'un sélecteur de langue de contenu dans la barre d'administration.
- Traductions de l'interface d'administration, ajout de nouvelles fonctionnalités : - Traductions de l'interface d'administration, ajout de nouvelles fonctionnalités :
- Installation et mise à jour d'une langue depuis un magasin en ligne ; - Installation et mise à jour d'une langue depuis un magasin en ligne ;
- Téléchargement d'une langue modifiée avec l'éditeur intégré ; - Téléchargement d'une langue modifiée avec l'éditeur intégré ;

View File

@ -252,6 +252,16 @@ core.start = function() {
} }
}); });
/**
* Sélection d'une langue du site
*/
$("#barSelectLanguage").on("change", function() {
var lang = $(this).val();
console.log (lang);
if(lang) {
$(location).attr("href", lang);
}
});
/** /**
* Choix de page dans la barre de membre * Choix de page dans la barre de membre
*/ */
@ -261,6 +271,7 @@ core.start = function() {
$(location).attr("href", pageUrl); $(location).attr("href", pageUrl);
} }
}); });
/** /**
* Champs d'upload de fichiers * Champs d'upload de fichiers
*/ */

View File

@ -318,7 +318,6 @@ class common
self::$i18nContent = 'fr_FR'; self::$i18nContent = 'fr_FR';
\setlocale(LC_TIME, self::$i18nContent . '.UTF8'); \setlocale(LC_TIME, self::$i18nContent . '.UTF8');
} }
/** /**
* Mise à jour à partir de la version 11.5.12 * Mise à jour à partir de la version 11.5.12
* */ * */
@ -1798,7 +1797,7 @@ class common
$t[] = $this->showi18n($key); $t[] = $this->showi18n($key);
} }
} }
// Pas de drapeau si la langu eest unique // Pas de drapeau si la langue est unique
if (count($t) > 1) { if (count($t) > 1) {
foreach ($t as $key) { foreach ($t as $key) {
echo $key; echo $key;
@ -2135,9 +2134,28 @@ class common
if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')) { if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')) {
// Items de gauche // Items de gauche
$leftItems = ''; $leftItems = '';
// Sélecteur de langues
if ($this->getUser('group') >= self::GROUP_MODERATOR) {
$c = 0;
$leftItem = '';
foreach (self::$languages as $key => $value) {
if (is_dir(self::DATA_DIR . $key)) {
$c++;
$location = helper::baseUrl() . 'translate/content/' . $key ;
$leftItem .= '<option value="' . $location . '" ' . ($key === self::$i18nContent ? 'selected' : '') . '>' . $value . '</option>';
}
}
if ($c > 1 ) {
$leftItems .= '<li><select id="barSelectLanguage">';
$leftItems .= $leftItem;
$leftItems .= '</select></li>';
}
}
// Liste des pages
if ($this->getUser('group') >= self::GROUP_MODERATOR) { if ($this->getUser('group') >= self::GROUP_MODERATOR) {
$leftItems .= '<li><select id="barSelectPage">'; $leftItems .= '<li><select id="barSelectPage">';
$leftItems .= '<option value="">Choisissez une page</option>'; $leftItems .= '<option value="">Pages du site</option>';
$leftItems .= '<optgroup label="Pages orphelines">'; $leftItems .= '<optgroup label="Pages orphelines">';
$orpheline = true; $orpheline = true;
$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);
@ -2241,7 +2259,7 @@ class common
'href' => helper::baseUrl() . 'plugin' 'href' => helper::baseUrl() . 'plugin'
]) . '</li>'; ]) . '</li>';
$rightItems .= '<li>' . template::ico('flag', [ $rightItems .= '<li>' . template::ico('flag', [
'help' => 'Contenu Multilingues', 'help' => 'Multilingue',
'href' => helper::baseUrl() . 'translate' 'href' => helper::baseUrl() . 'translate'
]) . '</li>'; ]) . '</li>';
$rightItems .= '<li>' . template::ico('cog-alt', [ $rightItems .= '<li>' . template::ico('cog-alt', [
@ -2809,7 +2827,7 @@ class core extends common
$css .= '.button.buttonGreen, button[type=submit] {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:hover, button[type=submit]:hover {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:active, button[type=submit]:active {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}'; $css .= '.button.buttonGreen, button[type=submit] {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:hover, button[type=submit]:hover {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:active, button[type=submit]:active {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundBlockColor'])); $colors = helper::colorVariants($this->getData(['admin', 'backgroundBlockColor']));
$css .= '.buttonTab, .block {border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}.buttonTab, .block h4 {background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';}'; $css .= '.buttonTab, .block {border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}.buttonTab, .block h4 {background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
$css .= 'table tr,input[type=email],input[type=text],input[type=password],select:not(#barSelectPage),textarea:not(.editorWysiwyg), textarea:not(.editorWysiwygComment),.inputFile{background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}'; $css .= 'table tr,input[type=email],input[type=text],input[type=password],select:not(#barSelectLanguage),select:not(#barSelectPage),textarea:not(.editorWysiwyg), textarea:not(.editorWysiwygComment),.inputFile{background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}';
// Bordure du contour TinyMCE // Bordure du contour TinyMCE
$css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}'; $css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}';
// Enregistre la personnalisation // Enregistre la personnalisation

View File

@ -411,14 +411,16 @@ td>.col12 {
} }
#bar select { #bar select {
width: 250px; width: 150px;
border: 0; border: 0;
color: #111112; color: #111112;
font-size: 12px; font-size: 12px;
background-color: rgba(255, 255, 255, 1); background-color: rgba(255, 255, 255, 1);
padding : 8px;
margin-left: 5px;
} }
@media screen and (min-width: 769px) { @media screen and (min-width: 800px) {
#bar #barLeft { #bar #barLeft {
float: left; float: left;
} }
@ -429,7 +431,7 @@ td>.col12 {
} }
} }
@media screen and (max-width: 768px) { @media screen and (max-width: 799px) {
#bar { #bar {
text-align: center; text-align: center;
padding: 0 1; padding: 0 1;
@ -440,11 +442,13 @@ td>.col12 {
height: auto; height: auto;
} }
#bar #barSelectPage { #bar select {
width: 40%; font-size: 1.3em;
font-size: 1em; width: 100%;
margin: 10px;
} }
#bar #barLeft { #bar #barLeft {
font-size: 1.2em; font-size: 1.2em;
float: none; float: none;
@ -469,7 +473,7 @@ td>.col12 {
#site { #site {
margin: 20px auto; margin: 20px auto;
} }
} }#barSelectPage
*/ */
/* Bannière */ /* Bannière */
@ -502,7 +506,7 @@ header .container {
height: 100%; height: 100%;
} }
/* Marges au cotenu de la bannière personnalisée /* Marges au contenu de la bannière personnalisée
header:not(.container) #featureContent { header:not(.container) #featureContent {
margin: 0 10px; margin: 0 10px;
}*/ }*/

View File

@ -9,4 +9,4 @@
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International * @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/ * @link http://zwiicms.fr/
*/ */
$("input, select").on("change",(function(){var titleFont=$("#adminFontTitle").val(),textFont=$("#adminFontText").val(),css="@import url('https://fonts.cdnfonts.com/css/"+titleFont+"');",css="@import url('https://fonts.cdnfonts.com/css/"+textFont+"');",colors,css="#site{background-color:"+(colors=core.colorVariants($("#adminBackgroundColor").val())).normal+";}",colors,colors,colors,colors;css+="body, .row > div {font:"+$("#adminFontTextSize").val()+" '"+textFont+"', sans-serif;}",css+="body h1, h2, h3, h4, h5, h6 {font-family:'"+titleFont+"', sans-serif; color:"+$("#adminColorTitle").val()+";}",css+="body:not(.editorWysiwyg),span .zwiico-help {color:"+$("#adminColorText").val()+";}",css+="input[type='checkbox']:checked + label::before,.speechBubble{ background-color:"+(colors=core.colorVariants($("#adminColorButton").val())).normal+"; color:"+$("#adminColorButtonText").val()+";}",css+=".speechBubble::before {border-color:"+colors.normal+" transparent transparent transparent;}",css+=".button {background-color:"+colors.normal+";color:"+colors.text+";}.button:hover {background-color:"+colors.darken+";color:"+colors.text+";}.button:active {background-color:"+colors.veryDarken+";color:"+colors.text+";}",css+=".button.buttonGrey {background-color: "+(colors=core.colorVariants($("#adminColorGrey").val())).normal+";color:"+colors.text+";}.button.buttonGrey:hover {background-color:"+colors.darken+";color:"+colors.text+"}.button.buttonGrey:active {background-color:"+colors.veryDarken+";color:"+colors.text+";}",css+=".button.buttonRed {background-color: "+(colors=core.colorVariants($("#adminColorRed").val())).normal+";color:"+colors.text+";}.button.buttonRed:hover {background-color:"+colors.darken+";color:"+colors.text+"}.button.buttonRed:active {background-color:"+colors.veryDarken+";color:"+colors.text+"}",css+=".button.buttonGreen, button[type=submit] {background-color: "+(colors=core.colorVariants($("#adminColorGreen").val())).normal+";color: ;color:"+colors.text+"}.button.buttonGreen:hover, button[type=submit]:hover {background-color: "+colors.darken+";color:"+colors.text+";}.button.buttonGreen:active, button[type=submit]:active {background-color:"+colors.veryDarken+";color:"+colors.text+"}";var colors=core.colorVariants($("#adminBackGroundBlockColor").val());css+=".block {border: 1px solid "+$("#adminBorderBlockColor").val()+";}.block h4 {background-color: "+colors.normal+";color:"+colors.text+";}",css+="input[type=email],input[type=text],input[type=password],select:not(#barSelectPage),textarea:not(.editorWysiwyg),.inputFile{background-color: "+colors.normal+";color:"+colors.text+";border: 1px solid "+$("#adminBorderBlockColor").val()+";}",$("#themePreview").remove(),$("<style>").attr("type","text/css").attr("id","themePreview").text(css).appendTo("head")})),$("#configAdminReset").on("click",(function(){var _this=$(this);return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème de l'administration ?",(function(){$(location).attr("href",_this.attr("href"))}))})); $("input, select").on("change",(function(){var titleFont=$("#adminFontTitle").val(),textFont=$("#adminFontText").val(),css="@import url('https://fonts.cdnfonts.com/css/"+titleFont+"');",css="@import url('https://fonts.cdnfonts.com/css/"+textFont+"');",colors,css="#site{background-color:"+(colors=core.colorVariants($("#adminBackgroundColor").val())).normal+";}",colors,colors,colors,colors;css+="body, .row > div {font:"+$("#adminFontTextSize").val()+" '"+textFont+"', sans-serif;}",css+="body h1, h2, h3, h4, h5, h6 {font-family:'"+titleFont+"', sans-serif; color:"+$("#adminColorTitle").val()+";}",css+="body:not(.editorWysiwyg),span .zwiico-help {color:"+$("#adminColorText").val()+";}",css+="input[type='checkbox']:checked + label::before,.speechBubble{ background-color:"+(colors=core.colorVariants($("#adminColorButton").val())).normal+"; color:"+$("#adminColorButtonText").val()+";}",css+=".speechBubble::before {border-color:"+colors.normal+" transparent transparent transparent;}",css+=".button {background-color:"+colors.normal+";color:"+colors.text+";}.button:hover {background-color:"+colors.darken+";color:"+colors.text+";}.button:active {background-color:"+colors.veryDarken+";color:"+colors.text+";}",css+=".button.buttonGrey {background-color: "+(colors=core.colorVariants($("#adminColorGrey").val())).normal+";color:"+colors.text+";}.button.buttonGrey:hover {background-color:"+colors.darken+";color:"+colors.text+"}.button.buttonGrey:active {background-color:"+colors.veryDarken+";color:"+colors.text+";}",css+=".button.buttonRed {background-color: "+(colors=core.colorVariants($("#adminColorRed").val())).normal+";color:"+colors.text+";}.button.buttonRed:hover {background-color:"+colors.darken+";color:"+colors.text+"}.button.buttonRed:active {background-color:"+colors.veryDarken+";color:"+colors.text+"}",css+=".button.buttonGreen, button[type=submit] {background-color: "+(colors=core.colorVariants($("#adminColorGreen").val())).normal+";color: ;color:"+colors.text+"}.button.buttonGreen:hover, button[type=submit]:hover {background-color: "+colors.darken+";color:"+colors.text+";}.button.buttonGreen:active, button[type=submit]:active {background-color:"+colors.veryDarken+";color:"+colors.text+"}";var colors=core.colorVariants($("#adminBackGroundBlockColor").val());css+=".block {border: 1px solid "+$("#adminBorderBlockColor").val()+";}.block h4 {background-color: "+colors.normal+";color:"+colors.text+";}",css+="input[type=email],input[type=text],input[type=password],select:not(#bar select),textarea:not(.editorWysiwyg),.inputFile{background-color: "+colors.normal+";color:"+colors.text+";border: 1px solid "+$("#adminBorderBlockColor").val()+";}",$("#themePreview").remove(),$("<style>").attr("type","text/css").attr("id","themePreview").text(css).appendTo("head")})),$("#configAdminReset").on("click",(function(){var _this=$(this);return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème de l'administration ?",(function(){$(location).attr("href",_this.attr("href"))}))}));

View File

@ -573,7 +573,7 @@ class translate extends common
// Nettoyer le cookie // Nettoyer le cookie
helper::deleteCookie('ZWII_CONTENT'); helper::deleteCookie('ZWII_CONTENT');
// Stocker le choix // Stocker le choix
setcookie('ZWII_CONTENT', $lang, time() + 3600, helper::baseUrl(false, false), '', helper::isHttps(), true); setcookie('ZWII_CONTENT', $lang, time() + 3600, helper::baseUrl(false, false), '', true, helper::isHttps());
} }
// Valeurs en sortie // Valeurs en sortie