Add action open close top dropdown menu

This commit is contained in:
John BOTELLA 2019-03-12 11:49:56 +01:00
parent d8223bfe98
commit ef241f70e7
3 changed files with 150 additions and 32 deletions

View File

@ -1722,6 +1722,9 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
function top_menu_user(user $user, $langs){
global $langs, $conf, $db, $hookmanager, $user;
global $dolibarr_main_authentication, $dolibarr_main_demo;
global $menumanager;
$userImage = $userDropDownImage = '';
if (! empty($user->photo))
@ -1730,10 +1733,70 @@ function top_menu_user(user $user, $langs){
$userDropDownImage = Form::showphoto('userphoto', $user, 0, 0, 0, 'dropdown-user-image', 'small', 0, 1);
}
// login infos
$dropdownBody = '';
if (!empty($user->admin)){
$dropdownBody.= '<br><b>' . $langs->trans("Administrator").'</b>: '.yn($user->admin);
}
if (! empty($user->socid) ) // Add thirdparty for external users
{
$thirdpartystatic = new Societe($db);
$thirdpartystatic->fetch($user->socid);
$companylink = ' '.$thirdpartystatic->getNomUrl(2); // picto only of company
$company=' ('.$langs->trans("Company").': '.$thirdpartystatic->name.')';
}
$type=($user->socid?$langs->trans("External").$company:$langs->trans("Internal"));
$dropdownBody.= '<br><b>' . $langs->trans("Type") . ':</b> ' . $type;
$dropdownBody.= '<br><b>' . $langs->trans("Status").'</b>: '.$user->getLibStatut(0);
$dropdownBody.= '<div id="toplogin-moreinfo" >';
$dropdownBody.= '<br><u>'.$langs->trans("Connection").'</u>';
$dropdownBody.= '<br><b>'.$langs->trans("IPAddress").'</b>: '.$_SERVER["REMOTE_ADDR"];
if (! empty($conf->global->MAIN_MODULE_MULTICOMPANY)) $dropdownBody.= '<br><b>'.$langs->trans("ConnectedOnMultiCompany").':</b> '.$conf->entity.' (user entity '.$user->entity.')';
$dropdownBody.= '<br><b>'.$langs->trans("AuthenticationMode").':</b> '.$_SESSION["dol_authmode"].(empty($dolibarr_main_demo)?'':' (demo)');
$dropdownBody.= '<br><b>'.$langs->trans("ConnectedSince").':</b> '.dol_print_date($user->datelastlogin, "dayhour", 'tzuser');
$dropdownBody.= '<br><b>'.$langs->trans("PreviousConnexion").':</b> '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser');
$dropdownBody.= '<br><b>'.$langs->trans("CurrentTheme").':</b> '.$conf->theme;
$dropdownBody.= '<br><b>'.$langs->trans("CurrentMenuManager").':</b> '.$menumanager->name;
$s=picto_from_langcode($langs->getDefaultLang());
$dropdownBody.= '<br><b>'.$langs->trans("CurrentUserLanguage").':</b> '.($s?$s.' ':'').$langs->getDefaultLang();
$dropdownBody.= '<br><b>'.$langs->trans("Browser").':</b> '.$conf->browser->name.($conf->browser->version?' '.$conf->browser->version:'').' ('.$_SERVER['HTTP_USER_AGENT'].')';
$dropdownBody.= '<br><b>'.$langs->trans("Layout").':</b> '.$conf->browser->layout;
$dropdownBody.= '<br><b>'.$langs->trans("Screen").':</b> '.$_SESSION['dol_screenwidth'].' x '.$_SESSION['dol_screenheight'];
if ($conf->browser->layout == 'phone') $dropdownBody.= '<br><b>'.$langs->trans("Phone").':</b> '.$langs->trans("Yes");
if (! empty($_SESSION["disablemodules"])) $dropdownBody.= '<br><b>'.$langs->trans("DisabledModules").':</b> <br>'.join(', ', explode(',', $_SESSION["disablemodules"]));
// Execute hook
$parameters=array('user'=>$user, 'langs' => $langs);
$result=$hookmanager->executeHooks('printTopRightMenuLoginDropdownBody', $parameters); // Note that $action and $object may have been modified by some hooks
if (is_numeric($result))
{
if ($result == 0){
$dropdownBody.= $hookmanager->resPrint; // add
}
else{
$dropdownBody = $hookmanager->resPrint; // replace
}
}
$logoutLink ='<a accesskey="l" href="'.DOL_URL_ROOT.'/user/logout.php" class="button-top-menu-dropdown" >'.$langs->trans("Logout").'</a>';
$profilLink ='<a accesskey="l" href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="button-top-menu-dropdown" >'.$langs->trans("Card").'</a>';
$profilName = $user->getFullName($langs).' ('.$user->login.')';
if($user->admin){
$profilName = '<i class="far fa-star" title="'.$langs->trans("Administrator").'" ></i> '.$profilName;
}
$btnUser = '
<div class="userimg atoplogin dropdown user user-menu open">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<div id="topmenu-login-dropdown" class="userimg atoplogin dropdown user user-menu">
<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="dropdown-toggle" data-toggle="dropdown">
'.$userImage.'
<span class="hidden-xs">'.($user->firstname ? $user->firstname : $user->login).'</span>
</a>
@ -1741,41 +1804,42 @@ function top_menu_user(user $user, $langs){
<!-- User image -->
<div class="user-header">
'.$userDropDownImage.'
<p>
'.$user->getFullName($langs).'
<small>'.dol_print_date($user->date_creation).'</small>
'.$profilName.'
<br/><small>'.dol_print_date(time()).$user->date_creation.'</small>
</p>
</div>
<!-- Menu Body -->
<div class="user-body">
<div class="row">
<div class="col-xs-4 text-center">
<a href="#">btn01</a>
</div>
<div class="col-xs-4 text-center">
<a href="#">btn02</a>
</div>
<div class="col-xs-4 text-center">
<a href="#">btn03</a>
</div>
</div>
<!-- /.row -->
</div>
<div class="user-body">'.$dropdownBody.'</div>
<!-- Menu Footer-->
<div class="user-footer">
<div class="pull-left">
<a href="#" class="btn btn-default btn-flat">Profile</a>
'.$profilLink.'
</div>
<div class="pull-right">
<a href="#" class="btn btn-default btn-flat">Sign out</a>
'.$logoutLink.'
</div>
</div>
</div>
</div>
<script>
$(document).on("click", function(event) {
if (!$(event.target).closest("#topmenu-login-dropdown").length) {
// Hide the menus.
$("#topmenu-login-dropdown").removeClass("open");
}
});
$("#topmenu-login-dropdown .dropdown-toggle").on("click", function(event) {
event.preventDefault();
$("#topmenu-login-dropdown").toggleClass("open");
});
</script>
';

View File

@ -9,6 +9,7 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
.open>.dropdown-menu {
display: block;
}
.dropdown-menu {
box-shadow: none;
border-color: #eee;
@ -42,15 +43,22 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
* MENU Dropdown
*/
.tmenu .open.dropdown, .login_block .open.dropdown{
background: rgba(0, 0, 0, 0.1);
}
.tmenu .dropdown-menu, .login_block .dropdown-menu {
position: absolute;
right: 0;
left: auto;
line-height:1.3em;
}
.tmenu .dropdown-menu, .login_block .dropdown-menu .user-body {
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
.user-body {
color: #333;
}
.side-nav-vert .user-menu .dropdown-menu {
border-top-right-radius: 0;
border-top-left-radius: 0;
@ -70,17 +78,6 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
text-align: center;
}
.dropdown-menu > li.user-header > img {
z-index: 5;
height: 90px;
width: 90px;
border: 3px solid;
border-color: transparent;
border-color: rgba(255, 255, 255, 0.2);
}
.dropdown-user-image {
border-radius: 50%;
vertical-align: middle;
@ -98,4 +95,52 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
background: rgb(<?php echo $colorbackhmenu1 ?>);
}
.dropdown-menu > .user-footer {
background-color: #f9f9f9;
padding: 10px;
}
.dropdown-menu > .user-footer:after {
clear: both;
}
.dropdown-menu > .user-body {
padding: 15px;
border-bottom: 1px solid #f4f4f4;
border-top: 1px solid #dddddd;
}
.button-top-menu-dropdown {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.dropdown-menu > .user-footer .button-top-menu-dropdown {
color: #666666;
border-radius: 0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
border-width: 1px;
background-color: #f4f4f4;
border-color: #ddd;
}

View File

@ -362,6 +362,9 @@ th .button {
textarea.centpercent {
width: 96%;
}
.small, small {
font-size: 85%;
}
.center {
text-align: center;
margin: 0px auto;
@ -375,6 +378,12 @@ textarea.centpercent {
.justify {
text-align: justify;
}
.pull-left {
float: left!important;
}
.pull-right {
float: right!important;
}
.nowrap {
white-space: <?php print ($dol_optimize_smallscreen?'normal':'nowrap'); ?>;
}