Menu et user

This commit is contained in:
Deltacms 2022-11-22 08:40:39 +01:00
parent a6b109be62
commit e989bc9f1d
7 changed files with 95 additions and 27 deletions

View File

@ -6,9 +6,11 @@
- Adaptation des modules de page à ce nouveau groupe avec des actions autorisées limitées,
- Nouvelle option dans l'édition d'une page, permissions : sélection du groupe requis pour modifier la page,
- Modules Gallery et Slider, sélection du dossier : seuls les dossiers incluant au moins une image sont proposés et exclusion de certains dossiers
- Affichage du menu : modifications de l'ordre pages, icônes login ou membre, drapeaux suivant l'alignement du contenu ou en menu burger
- Nettoyage : suppression de fichiers inutiles (2.5Mo),
- Corrections :
- Affichage du sous-menu avec un alignement du contenu à droite : il y avait un décalage du site quand les pages situées à la droite du menu possédaient des pages enfants.
- Affichage du menu : quand le menu comprenait de nombreux items certains pouvaient être masqués dans une fenêtre de taille moyenne.
## Version 4.3.08 de Deltacms
- Modifications :

View File

@ -548,5 +548,19 @@ $(document).ready(function(){
});
});
});
/*
* Largeur du sous-menu égale à la largeur de l'onglet parent sauf en petit écran
*/
$(window).on("resize", function() {
if( $(window).width() > 768 ){
$.each(parentPage, function(index, value) {
$('.navSub .'+value).css('width', $('.'+value).css('width'));
});
}
}).trigger("resize");
});

View File

@ -1612,14 +1612,24 @@ class common {
// Met en forme les items du menu
$itemsLeft = '';
$currentPageId = $this->getData(['page', $this->getUrl(0)]) ? $this->getUrl(0) : $this->getUrl(2);
?> <script> var parentPage=[]; </script>
<?php
foreach($this->getHierarchy() as $parentPageId => $childrenPageIds) {
// Passer les entrées masquées
// Propriétés de l'item
$active = ($parentPageId === $currentPageId OR in_array($currentPageId, $childrenPageIds)) ? 'active ' : '';
$targetBlank = $this->getData(['page', $parentPageId, 'targetBlank']) ? ' target="_blank"' : '';
// Si c'est une page parent, on passe son id à core.js.php pour adampter la largeur du sous-menu à la largeur de l'onglet de la page parent
if( $childrenPageIds !== [] ){ ?>
<script> parentPage.push('<?php echo $parentPageId; ?>'); </script>
<?php }
// Mise en page de l'item
$itemsLeft .= '<li>';
if ( ( $this->getData(['page',$parentPageId,'disable']) === true
AND $this->getUser('password') !== $this->getInput('DELTA_USER_PASSWORD')
) OR (
@ -1762,6 +1772,8 @@ class common {
}
// Lien de connexion
$itemsRight = '';
$space1Menu = '<li id="menuSpace"> </li>';
$space2Menu = '<li id="menuSpace"> </li>';
if(
(
$this->getData(['theme', 'menu', 'loginLink'])
@ -1770,7 +1782,7 @@ class common {
OR $this->getUrl(0) === 'theme'
) {
$itemsRight .= '<li id="menuLoginLink" ' .
($this->getUrl(0) === 'theme' ? 'class="displayNone"' : '') .
($this->getUrl(0) === 'theme' ? 'class="displayNone"' : 'class="smallScreenInline"') .
'><a href="' . helper::baseUrl() . 'user/login/' .
strip_tags(str_replace('/', '_', $this->getUrl())) .
'">' . template::ico('login') .'</a></li>';
@ -1785,12 +1797,32 @@ class common {
$itemsRight .= '<li><a href="' . helper::baseUrl() . 'user/edit/' . $this->getUser('id'). '/' . $_SESSION['csrf'] . '" data-tippy-content="'.$text['core']['showmenu'][1].'">' . template::ico('user', 'right') . '</a></li>';
$itemsRight .= '<li><a id="barLogout" href="' . helper::baseUrl() . 'user/logout" data-tippy-content="'.$text['core']['showmenu'][2].'">' . template::ico('logout') . '</a></li>';
}
// Retourne les items du menu
echo '<ul class="navMain" id="menuLeft">' . $itemsLeft . '</ul><ul class="navMain" id="menuRight">' . $itemsRight;
if ($this->getData(['config', 'i18n', 'enable']) === true) {
// Retourne les items du menu suivant l'alignement du contenu
// Les drapeaux d'abord en petit écran
echo '<ul class="smallScreenFlags">';
if($this->getData(['config', 'i18n', 'enable']) === true) {
echo $this->showi18n();
}
echo '</ul>';
if( $this->getData(['theme', 'menu', 'textAlign']) === 'right'){
if( $itemsRight === '') $space1Menu ='';
echo '<ul class="navMain" id="menuLeft">' . $itemsLeft . $space1Menu . $itemsRight ;
if($this->getData(['config', 'i18n', 'enable']) === true) {
if( $itemsRight === '') echo $space2Menu;
echo $this->showi18n();
}
}
else{
if( $itemsRight === '') $space1Menu ='';
echo '<ul class="navMain" id="menuLeft">' . $itemsRight . $space1Menu . $itemsLeft ;
if($this->getData(['config', 'i18n', 'enable']) === true) {
echo $space2Menu;
echo $this->showi18n();
}
}
echo '</ul>';
}
/**
@ -2183,7 +2215,7 @@ class common {
$select = ' class="i18nFlag flag" ';
}
echo '<li>';
echo '<li class="smallScreenInline">';
echo '<a href="' . helper::baseUrl() . 'translate/i18n/' . $key . '/' . $this->getData(['config', 'i18n',$key]) . '/' . $this->getUrl(0) . '"><img ' . $select . ' alt="' . $value . '" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $key . '.png"/></a>';
echo '</li>';
}

View File

@ -566,18 +566,18 @@ nav ul {
nav li {
display: inline-block;
position: relative;
max-width: 25vmin;
/*max-width: 30vmin;*/
}
@media screen and (max-width: 768px) {
nav li {
max-width: 50vmin;
/*max-width: 50vmin;*/
} }
nav li ul {
display: block;
position: absolute;
width: inherit;
/*width: inherit;*/
z-index: -1;
opacity: 0;
transition: .3s ease-out;
@ -589,6 +589,10 @@ nav li ul li {
text-align: left;
}
nav .navSub a{
text-align: left;
}
nav li:hover ul {
z-index: 8;
opacity: 1;
@ -605,6 +609,7 @@ nav a:hover {
/* Barre de menu */
/*
#menuLeft {
display: inline-flex;
}
@ -613,8 +618,13 @@ nav a:hover {
display: inline-flex ;
float: right;
}
*/
/* fin barre de menu */
#menuSpace {
width: 80px;
}
nav::after {
content: " ";
clear: both;
@ -628,6 +638,9 @@ nav::before {
}
@media screen and (min-width: 769px) {
.smallScreenFlags{
display : none;
}
nav #menu {
display: block;
}
@ -667,7 +680,7 @@ nav::before {
opacity: 1;
position: static;
min-width: inherit;
width: auto;
padding-left: 20px;
}
/* Taille du menu hamburger */
@ -734,17 +747,25 @@ li .menuSideChild {
*/
@media screen and (max-width:1024px){
@media screen and (max-width:768px){
.smallScreenFlags{
display : inline-block;
position: relative;
left : 10px;
}
.smallScreenInline{
display: inline-block;
}
.i18nFlag {
width: 100%;
padding: 5px;
width: 25px;
margin-left: 5px;
}
.i18nFlagSelected {
width: 130%;
padding: 5px;
width: 30px;
margin-left: 5px;
}
}

View File

@ -136,12 +136,12 @@ $text['core_user']['login'][4] = 'Only an administrator can log in during mainte
$text['core_user']['login'][5] = 'Successful connection';
$text['core_user']['login'][6] = 'Welcome ';
$text['core_user']['login'][7] = 'Incorrect captcha, username or password';
$text['core_user']['login'][8] = 'Password error';
$text['core_user']['login'][9] = 'Captcha error';
//$text['core_user']['login'][8] = 'Password error';
//$text['core_user']['login'][9] = 'Captcha error';
$text['core_user']['login'][10] = 'Account locked ';
$text['core_user']['login'][11] = 'Connection';
$text['core_user']['login'][12] = '';
$text['core_user']['login'][13] = ' Fill in the Captcha ';
//$text['core_user']['login'][12] = '';
//$text['core_user']['login'][13] = ' Fill in the Captcha ';
$text['core_user']['logout'][0] = 'Successfully disconnected';
$text['core_user']['reset'][0] = 'Incorrect';
$text['core_user']['reset'][1] = 'New password registered';

View File

@ -136,12 +136,12 @@ $text['core_user']['login'][4] = 'Seul un administrateur peut se connecter lors
$text['core_user']['login'][5] = 'Connexion réussie';
$text['core_user']['login'][6] = 'Bienvenue ';
$text['core_user']['login'][7] = 'Captcha, identifiant ou mot de passe incorrects';
$text['core_user']['login'][8] = 'Erreur de mot de passe';
$text['core_user']['login'][9] = 'Erreur de captcha';
//$text['core_user']['login'][8] = 'Erreur de mot de passe';
//$text['core_user']['login'][9] = 'Erreur de captcha';
$text['core_user']['login'][10] = 'Accès bloqué ';
$text['core_user']['login'][11] = 'Connexion';
$text['core_user']['login'][12] = '';
$text['core_user']['login'][13] = ' Renseignez le Captcha ';
//$text['core_user']['login'][12] = '';
//$text['core_user']['login'][13] = ' Renseignez le Captcha ';
$text['core_user']['logout'][0] = 'Déconnexion réussie';
$text['core_user']['reset'][0] = 'Incorrect';
$text['core_user']['reset'][1] = 'Nouveau mot de passe enregistré';

View File

@ -524,11 +524,10 @@ class user extends common {
'state' => true
]);
}
// Sinon notification d'échec
// Sinon notification d'échec et captcha addition
} else {
$notification = $text['core_user']['login'][7];
if( $detectBot = 'bot' ) $notification = $text['core_user']['login'][13];
$logStatus = $captcha === true ? $text['core_user']['login'][8] : $text['core_user']['login'][9];
$_SESSION['humanBot']='bot';
// Cas 1 le nombre de connexions est inférieur aux tentatives autorisées : incrément compteur d'échec
if ($this->getData(['user',$userId,'connectFail']) < $this->getData(['config', 'connect', 'attempt'])) {
$this->setData(['user',$userId,'connectFail',$this->getdata(['user',$userId,'connectFail']) + 1 ]);