gain en rapidité pour l'affichage petit écran

This commit is contained in:
Deltacms 2023-06-29 08:21:42 +02:00
parent 85729f1663
commit 932cb0f178
2 changed files with 109 additions and 105 deletions

View File

@ -164,6 +164,40 @@ core.noticeRemove = function(id) {
* Scripts à exécuter en premier
*/
core.start = function() {
/* Décalage en petit écran de la bannière ou de la section si le menu burger est fixe et non caché
* n'opère pas sur les pages de configuration du thème
*/
$(window).on("resize", function() {
if($(window).width() < 800) {
// Variables du thème
var positionNav = <?php echo json_encode($this->getData(['theme', 'menu', 'position'])); ?>;
var burgerFixed = <?php echo json_encode($this->getData(['theme', 'menu', 'burgerFixed'])); ?>;
var namePage = <?php echo json_encode($this->getUrl(0)); ?>;
if( positionNav !=='hide' && burgerFixed === true && namePage !== 'theme'){
var positionHeader = <?php echo json_encode($this->getData(['theme', 'header', 'position'])); ?>;
var tinyHidden = <?php echo json_encode($this->getData(['theme', 'header', 'tinyHidden'])); ?>;
var homePageOnly = <?php echo json_encode($this->getData(['theme', 'header', 'homePageOnly'])); ?>;
// bannerMenuHeight et bannerMenuHeightSection transmis par core.php/showMenu()
var burgerOverlay = <?php echo json_encode($this->getData(['theme', 'menu', 'burgerOverlay'])); ?>;
var homePageId = <?php echo json_encode($this->getData(['locale', 'homePageId'])); ?>;
var offsetBanner = "0";
if( burgerOverlay === false) offsetBanner = bannerMenuHeight;
// Si la bannière est visible la décaler
if( tinyHidden === false && ( homePageOnly === false || namePage === homePageId )){
$("#site.container header, header.container").css("padding-top",offsetBanner);
} else {
// sinon décaler la section
$("section").css("padding-top",bannerMenuHeightSection);
}
// Si la bannière est cachée décaler la section
if( positionHeader === 'hide'){
$("section").css("padding-top",bannerMenuHeightSection);
}
}
}
}).trigger("resize");
/**
* Remonter en haut au clic sur le bouton
*/
@ -388,7 +422,78 @@ core.start = function() {
}
}
}).trigger("resize");
/* Positionnement vertical du bandeau du menu burger si il est fixe et si un utilisateur est connecté
*/
$(window).on("resize", function() {
if($(window).width() < 800) {
<?php if( $this->getData(['theme','menu', 'burgerFixed'])=== true){ ?>
var barHeight = $(" #bar ").css("height");
$(".navfixedburgerconnected").css("top",barHeight);
<?php } ?>
}
}).trigger("resize");
/* En petit écran, affichage / masquage des items du sous-menu
* ou signalisation que la page est désactivée par ouverture du sous-menu
*/
$(window).on("resize", function() {
if($(window).width() < 800) {
function displaySubPages( parentId ){
var select = "ul#_"+parentId+".navSub";
var select2 = 'nav #menu ul li #' + parentId + ' span.iconSubExistSmallScreen';
if( $(select).css("z-index") === "-1" ) {
$(select).css("z-index","1");
$(select).css("opacity","1");
$(select).css("padding-left","20px");
$(select).css("position","static");
$(select2).removeClass('zwiico-plus').addClass('zwiico-minus');
} else {
$(select).css("z-index","-1");
$(select).css("opacity","0");
$(select).css("position","absolute");
$(select2).removeClass('zwiico-minus').addClass('zwiico-plus');
}
}
$("nav #menu ul li span").click(function() {
// id de la page parent
var parentId = $(this).parents().attr("id");
displaySubPages( parentId);
});
$("nav #menu a.disabled-link").click(function() {
// id de la page parent
var parentId = $(this).parents().parents().attr("id");
displaySubPages( parentId);
});
}
}).trigger("resize");
/*
* Largeur minimale des onglets principaux du menu et largeur du sous-menu égale à la largeur de l'onglet parent
* sauf en petit écran
*/
$(window).on("resize", function() {
if( $(window).width() > 799 ){
if( typeof parentPage !== "undefined" ){
var page=[];
if( '<?php echo $this->getData(['theme', 'menu', 'minWidthParentOrAll']); ?>' === ''){
page = parentPage;
// suppression d'un sous-menu depuis le dernier enregistrement de theme.css
$.each(allPage, function(index, value) {
// si la page n'est pas parent on repositionne min-width à auto
if( parentPage.includes( value ) === false ) $('nav li .' + value).css('min-width', 'auto');
});
} else{
page = allPage;
}
$.each(page, function(index, value) {
$('nav li .' + value).css('min-width', '<?php echo $this->getData(['theme', 'menu', 'minWidthTab']); ?>');
$('nav li ul li .'+value).css('width', $('.'+value).css('width'));
$('nav li.' + value).css('text-align', 'left');
});
}
}
}).trigger("resize");
};
@ -552,34 +657,7 @@ $(document).ready(function(){
});
});
});
/*
* Largeur minimale des onglets principaux du menu et largeur du sous-menu égale à la largeur de l'onglet parent
* sauf en petit écran
*/
$(window).on("resize", function() {
if( $(window).width() > 799 ){
if( typeof parentPage !== "undefined" ){
var page=[];
if( '<?php echo $this->getData(['theme', 'menu', 'minWidthParentOrAll']); ?>' === ''){
page = parentPage;
// suppression d'un sous-menu depuis le dernier enregistrement de theme.css
$.each(allPage, function(index, value) {
// si la page n'est pas parent on repositionne min-width à auto
if( parentPage.includes( value ) === false ) $('nav li .' + value).css('min-width', 'auto');
});
} else{
page = allPage;
}
$.each(page, function(index, value) {
$('nav li .' + value).css('min-width', '<?php echo $this->getData(['theme', 'menu', 'minWidthTab']); ?>');
$('nav li ul li .'+value).css('width', $('.'+value).css('width'));
$('nav li.' + value).css('text-align', 'left');
});
}
}
}).trigger("resize");
/* Compteur de liens cliqués
* Fonctionne avec download_counter.php
* Les liens comptabilisés doivent avoir la class="clicked_link_count"
@ -597,82 +675,5 @@ $(document).ready(function(){
});
});
<?php } ?>
/* En petit écran, affichage / masquage des items du sous-menu
* ou signalisation que la page est désactivée par ouverture du sous-menu
*/
$(window).on("resize", function() {
if($(window).width() < 800) {
function displaySubPages( parentId ){
var select = "ul#_"+parentId+".navSub";
var select2 = 'nav #menu ul li #' + parentId + ' span.iconSubExistSmallScreen';
if( $(select).css("z-index") === "-1" ) {
$(select).css("z-index","1");
$(select).css("opacity","1");
$(select).css("padding-left","20px");
$(select).css("position","static");
$(select2).removeClass('zwiico-plus').addClass('zwiico-minus');
} else {
$(select).css("z-index","-1");
$(select).css("opacity","0");
$(select).css("position","absolute");
$(select2).removeClass('zwiico-minus').addClass('zwiico-plus');
}
}
$("nav #menu ul li span").click(function() {
// id de la page parent
var parentId = $(this).parents().attr("id");
displaySubPages( parentId);
});
$("nav #menu a.disabled-link").click(function() {
// id de la page parent
var parentId = $(this).parents().parents().attr("id");
displaySubPages( parentId);
});
}
}).trigger("resize");
/* Décalage en petit écran de la bannière ou de la section si le menu burger est fixe et non caché
* n'opère pas sur les pages de configuration du thème
*/
if($(window).width() < 800) {
// Variables du thème
var positionNav = <?php echo json_encode($this->getData(['theme', 'menu', 'position'])); ?>;
var burgerFixed = <?php echo json_encode($this->getData(['theme', 'menu', 'burgerFixed'])); ?>;
var namePage = <?php echo json_encode($this->getUrl(0)); ?>;
if( positionNav !=='hide' && burgerFixed === true && namePage !== 'theme'){
var positionHeader = <?php echo json_encode($this->getData(['theme', 'header', 'position'])); ?>;
var tinyHidden = <?php echo json_encode($this->getData(['theme', 'header', 'tinyHidden'])); ?>;
var homePageOnly = <?php echo json_encode($this->getData(['theme', 'header', 'homePageOnly'])); ?>;
var bannerMenuHeight = $("nav #toggle").css("height");
bannerMenuHeightSection = ( parseInt( bannerMenuHeight.replace("px","") ) + 10 ).toString() + "px";
var burgerOverlay = <?php echo json_encode($this->getData(['theme', 'menu', 'burgerOverlay'])); ?>;
var homePageId = <?php echo json_encode($this->getData(['locale', 'homePageId'])); ?>;
var offsetBanner = "0";
if( burgerOverlay === false) offsetBanner = bannerMenuHeight;
// Si la bannière est visible la décaler
if( tinyHidden === false && ( homePageOnly === false || namePage === homePageId )){
$("#site.container header, header.container").css("padding-top",offsetBanner);
} else {
// sinon décaler la section
$("section").css("padding-top",bannerMenuHeightSection);
}
// Si la bannière est cachée décaler la section
if( positionHeader === 'hide'){
$("section").css("padding-top",bannerMenuHeightSection);
}
}
}
/* Positionnement vertical du bandeau du menu burger si il est fixe et si un utilisateur est connecté
*/
$(window).on("resize", function() {
if($(window).width() < 800) {
<?php if( $this->getData(['theme','menu', 'burgerFixed'])=== true){ ?>
var barHeight = $(" #bar ").css("height");
$(".navfixedburgerconnected").css("top",barHeight);
<?php } ?>
}
}).trigger("resize");
});

View File

@ -1742,6 +1742,9 @@ class common {
$coef = str_replace('em', '', $this->getData(['theme', 'menu', 'fontSize']));
$heightLogo = (int) ($height + $fontsize*$coef - 5); // icônes des menus
$heightLogoBurger = $heightLogo + 5; // icônes dans le bandeau du menu burger
// Pour le décalage du header ou de la section, par core.js.php en petit écran, transmision de la hauteur du bandeau du menu = 2* taille du texte (icône burger) + 2 * padding-topbottom défini par $this->getData(['theme', 'menu', 'height']);
$bannerHeight = 2 * $height + 2 * $fontsize;
?><script>var bannerMenuHeight = (<?php echo $bannerHeight;?>).toString() + "px";var bannerMenuHeightSection= (<?php echo $bannerHeight + 10;?>).toString() + "px"; </script><?php
//Menu burger
$fileIcon1 = './site/file/source/'. $this->getData(['theme', 'menu', 'burgerIcon1']);