From 309de4c823215f7801e322a7a9fc465499399737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 15 Jan 2025 11:54:08 +0100 Subject: [PATCH] wip --- core/class/layout.class.php | 229 +++++++++++++++++------------------- core/core.js.php | 25 ++-- core/core.php | 4 +- core/module/theme/theme.php | 11 +- 4 files changed, 134 insertions(+), 135 deletions(-) diff --git a/core/class/layout.class.php b/core/class/layout.class.php index b8aacf4..7491d04 100644 --- a/core/class/layout.class.php +++ b/core/class/layout.class.php @@ -495,9 +495,11 @@ class layout extends common */ public function showMenu() { - // Met en forme les items du menu - $itemsLeft = $this->formatMenu(); - + // Met en forme les items du menu si affiché + $itemsLeft = ''; + if ($this->getData(['theme', 'menu', 'hidePages'])) { + $itemsLeft = $this->formatMenu(); + } // Menu extra $itemsRight = $this->formatMenu(true); @@ -527,7 +529,7 @@ class layout extends common $this->getData(['theme', 'menu', 'userReport']) === true && self::$siteContent !== 'home' // Pas de statistiques pour les espaces ouverts - && $this->getData(['course', self::$siteContent, 'enrolment']) >= 1 + && $this->getData(['course', self::$siteContent, 'enrolment']) >= 1 ) { $href = ''; switch ($this->getUser('group')) { @@ -624,35 +626,94 @@ class layout extends common { $items = ''; $currentPageId = $this->getData(['page', $this->getUrl(0)]) ? $this->getUrl(0) : $this->getUrl(2); - // La liste des pages n'est générée si le thème ne l'autorise pas sauf pour la page home. - if ( - self::$siteContent === 'home' - || ( - self::$siteContent !== 'home' - && $this->getData(['theme', 'menu', 'hidePages']) === true - ) - ) { - foreach ($this->getHierarchy() as $parentPageId => $childrenPageIds) { - // Menu extra ou standard - if ( - // Absence de la position extra, la page est toujours affichée à gauche. - ($this->getData(['page', $parentPageId, 'extraPosition']) !== NULL || $extra === true) - && - $this->getData(['page', $parentPageId, 'extraPosition']) !== $extra - ) { - continue; - } + foreach ($this->getHierarchy() as $parentPageId => $childrenPageIds) { + // Menu extra ou standard + + if ( + // Absence de la position extra, la page est toujours affichée à gauche. + ($this->getData(['page', $parentPageId, 'extraPosition']) !== NULL || $extra === true) + && + $this->getData(['page', $parentPageId, 'extraPosition']) !== $extra + ) { + continue; + } + // Propriétés de l'item + $active = ($parentPageId === $currentPageId or in_array($currentPageId, $childrenPageIds)) ? 'active ' : ''; + $targetBlank = $this->getData(['page', $parentPageId, 'targetBlank']) ? ' target="_blank"' : ''; + // Mise en page de l'item + $items .= '
  • '; + + if ( + ($this->getData(['page', $parentPageId, 'disable']) === true + and $this->isConnected() === false + ) or ($this->getData(['page', $parentPageId, 'disable']) === true + and $this->isConnected() === true + and $this->getUser('group') < self::GROUP_EDITOR + ) + ) { + $pageUrl = ($this->getData(['config', 'homePageId']) === $this->getUrl(0)) ? helper::baseUrl(false) : helper::baseUrl() . $this->getUrl(0); + $items .= ''; + } else { + $pageUrl = ($this->getData(['config', 'homePageId']) === $parentPageId) ? helper::baseUrl(false) : helper::baseUrl() . $parentPageId; + $items .= ''; + } + + switch ($this->getData(['page', $parentPageId, 'typeMenu'])) { + case '': + $items .= $this->getData(['page', $parentPageId, 'shortTitle']); + break; + case 'text': + $items .= $this->getData(['page', $parentPageId, 'shortTitle']); + break; + case 'icon': + if ($this->getData(['page', $parentPageId, 'iconUrl']) != "") { + $items .= '' . $this->getData(['page', $parentPageId, 'shortTitle']) . ''; + } else { + $items .= $this->getData(['page', $parentPageId, 'shortTitle']); + } + break; + case 'icontitle': + if ($this->getData(['page', $parentPageId, 'iconUrl']) != "") { + $items .= '' . $this->getData(['page', $parentPageId, 'titlshortTitlee']) . ''; + } else { + $items .= $this->getData(['page', $parentPageId, 'shortTitle']); + } + break; + } + // Cas où les pages enfants enfant sont toutes masquées dans le menu + // ne pas afficher de symbole lorsqu'il n'y a rien à afficher + $totalChild = 0; + $disableChild = 0; + foreach ($childrenPageIds as $childKey) { + $totalChild += 1; + } + if ( + $childrenPageIds && $disableChild !== $totalChild && + $this->getdata(['page', $parentPageId, 'hideMenuChildren']) === false + ) { + $items .= template::ico('down', ['margin' => 'left']); + } + // ------------------------------------------------ + $items .= ''; + if ( + $this->getdata(['page', $parentPageId, 'hideMenuChildren']) === true || + empty($childrenPageIds) + ) { + continue; + } + $items .= ''; } - return ($items); } diff --git a/core/core.js.php b/core/core.js.php index 392a3f4..a06b4b6 100644 --- a/core/core.js.php +++ b/core/core.js.php @@ -369,24 +369,25 @@ core.start = function () { } } }).trigger("resize"); + /** - * Masque les pages du menu si demandé dans la configuration du thème du menu + * Masque les pages du menu si demandé dans la configuration du thème du menu sauf dans home */ // Option active var hidePages = "getData(['theme', 'menu', 'hidePages'])?>"; - // Récupérer les valeurs de dimensions - var padding = "getData(['theme', 'menu', 'height'])?>"; - var firstPadding = parseFloat(padding.split(" ")[0]); // Convertir la première valeur en nombre - var fontSize = parseFloat("getData(['theme', 'text', 'fontSize'])?>"); // Taille du texte - var menuFontSize = parseFloat("getData(['theme', 'menu', 'fontSize'])?>"); // Taille du menu - - // Convertir menuFontSize en pixels - var menuFontSizeInPx = menuFontSize * fontSize; - - // Calculer la hauteur totale - var totalHeight = firstPadding + fontSize + menuFontSizeInPx; if (hidePages == 1) { + // Récupérer les valeurs de dimensions + var padding = "getData(['theme', 'menu', 'height'])?>"; + var firstPadding = parseFloat(padding.split(" ")[0]); // Convertir la première valeur en nombre + var fontSize = parseFloat("getData(['theme', 'text', 'fontSize'])?>"); // Taille du texte + var menuFontSize = parseFloat("getData(['theme', 'menu', 'fontSize'])?>"); // Taille du menu + + // Convertir menuFontSize en pixels + var menuFontSizeInPx = menuFontSize * fontSize; + + // Calculer la hauteur totale + var totalHeight = firstPadding + fontSize + menuFontSizeInPx; $("#menuLeft").css({ "visibility": "hidden", "overflow": "hidden", diff --git a/core/core.php b/core/core.php index b190e81..9ed0e32 100644 --- a/core/core.php +++ b/core/core.php @@ -1010,7 +1010,9 @@ class common /** * Accède à l'utilisateur connecté - * @param int $key Clé de la valeur + * @param string $key Clé de la valeur + * @param mixed $perm1 + * @param mixed $perm2 * @return string|null */ public function getUser($key, $perm1 = null, $perm2 = null) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index d28dbe6..37bbeb0 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -604,7 +604,9 @@ class theme extends common ] ]); // Active le rapport des consultations si options active dans le thème - $this->setData(['course', self::$siteContent, 'report', true]); + if (self::$siteContent !== 'home') { + $this->setData(['course', self::$siteContent, 'report', true]); + } // Valeurs en sortie $this->addOutput([ 'notification' => helper::translate('Modifications enregistrées'), @@ -681,14 +683,14 @@ class theme extends common 'value' => template::ico('pencil'), //'disabled' => !empty($fontUsed[$fontId]) ]) - : '', + : '', $type !== 'websafe' ? template::button('themeFontDelete' . $fontId, [ 'class' => 'themeFontDelete buttonRed', 'href' => helper::baseUrl() . $this->getUrl(0) . '/fontDelete/' . $type . '/' . $fontId, 'value' => template::ico('cancel'), 'disabled' => !empty($fontUsed[$fontId]) ]) - : '' + : '' ]; } } @@ -1015,7 +1017,8 @@ class theme extends common 'notification' => $data['notification'], 'state' => $data['success'], 'view' => 'manage' - ]);; + ]); + ; } }