ZwiiCMS/core/module/theme/view/menu/menu.js.php

142 lines
4.5 KiB
PHP
Executable File

/**
* 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/
*/
/**
* Aperçu en direct
*/
$("input, select").on("change", function() {
// Import des polices de caractères
var menuFont = $("#themeMenuFont").val();
var css = "@import url('https://fonts.googleapis.com/css?family=" + menuFont + "');";
var colors = core.colorVariants($("#themeMenuBackgroundColor").val());
// Couleurs du menu
css += "nav,nav a{background-color:" + colors.normal + "}";
css += "nav a,#toggle span,nav a:hover{color:" + $("#themeMenuTextColor").val() + "}";
css += "nav a:hover{background-color:" + colors.darken + "}";
if ($("#themeMenuActiveColorAuto").is(':checked')) {
css += "nav a.active{background-color:" + colors.veryDarken + "}";
} else {
css += "nav a.active{background-color:" + $("#themeMenuActiveColor").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() + "}";
// Marge
if($("#themeMenuMargin").is(":checked")) {
if(
<?php echo json_encode($this->getData(['theme', 'menu', 'position']) === 'site-first'); ?>
|| <?php echo json_encode($this->getData(['theme', 'header', 'position']) === 'body'); ?>
) {
css += 'nav{padding:20px 20px 0 20px}';
}
else {
css += 'nav{padding:0 20px}';
}
}
else {
css += 'nav{margin:0}';
}
// Ajout du css au DOM
$("#themePreview").remove();
$("<style>")
.attr("type", "text/css")
.attr("id", "themePreview")
.text(css)
.appendTo("head");
// Position du menu
switch($("#themeMenuPosition").val()) {
case 'hide':
$("nav").hide();
break;
case 'site-first':
$("nav").show().prependTo("#site");
break;
case 'site-second':
if(<?php echo json_encode($this->getData(['theme', 'header', 'position']) === 'site'); ?>) {
$("nav").show().insertAfter("header");
}
else {
$("nav").show().prependTo("#site");
}
break;
case 'body-first':
$("nav").show().insertAfter("#bar");
$("#menu").removeClass('container-large');
$("nav").removeClass('#navfixedconnected');
$("#menu").addClass('container');
break;
case 'body-second':
if(<?php echo json_encode($this->getData(['theme', 'header', 'position']) === 'body'); ?>) {
$("nav").show().insertAfter("header");
}
else {
$("nav").show().insertAfter("#bar");
}
$("nav").removeClass('#navfixedconnected');
break;
case 'top':
$("nav").show().insertAfter("#bar");
$("#menu").removeClass('container');
$("#menu").addClass('container-large');
$("nav").addClass('#navfixedconnected');
break;
case 'site':
$("nav").show().prependTo("#site");
break;
}
});
//
// Lien de connexion (addClass() et removeClass() au lieu de hide() et show() car ils ne conservent pas le display-inline: block; de #themeMenuLoginLink)
$("#themeMenuLoginLink").on("change", function() {
if($(this).is(":checked")) {
$("#menuLoginLink").removeClass('displayNone');
}
else {
$("#menuLoginLink").addClass('displayNone');
}
}).trigger("change");
// Affiche / Cache les options de la position
$("#themeMenuPosition").on("change", function() {
if($(this).val() === 'site-first' || $(this).val() === 'site-second') {
$("#themeMenuPositionOptions").slideDown();
}
else {
$("#themeMenuPositionOptions").slideUp(function() {
$("#themeMenuMargin").prop("checked", false).trigger("change");
});
}
}).trigger("change");
// Affiche / Cache les options du menu fixe
$("#themeMenuPosition").on("change", function() {
if($(this).val() === 'top') {
$("#themeMenuPositionFixed").slideDown();
}
else {
$("#themeMenuPositionFixed").slideUp(function() {
$("#themeMenuFixed").prop("checked", false).trigger("change");
});
}
}).trigger("change");
// Affiche la sélection de couleur auto
$("#themeMenuActiveColorAuto").on("change", function() {
if ($(this).is(':checked') ) {
$("#themeMenuActiveColorWrapper").slideUp();
} else {
$("#themeMenuActiveColorWrapper").slideDown();
}
}).trigger("change");