Merge pull request #11986 from atm-john/develop_dropdown_bookmark
NEW : dropdown bookmark and search
This commit is contained in:
commit
ad4aa39ec5
@ -150,3 +150,140 @@ function printBookmarksList($aDb, $aLangs)
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Add area with bookmarks in top menu
|
||||
*
|
||||
* @param DoliDb $aDb Database handler
|
||||
* @param Translate $aLangs Object lang
|
||||
* @return string
|
||||
*/
|
||||
function printDropdownBookmarksList($aDb, $aLangs)
|
||||
{
|
||||
global $conf, $user;
|
||||
|
||||
$db = $aDb;
|
||||
$langs = $aLangs;
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
|
||||
if (! isset($conf->global->BOOKMARKS_SHOW_IN_MENU)) $conf->global->BOOKMARKS_SHOW_IN_MENU=5;
|
||||
|
||||
$langs->load("bookmarks");
|
||||
|
||||
$url= $_SERVER["PHP_SELF"];
|
||||
|
||||
if (! empty($_SERVER["QUERY_STRING"]))
|
||||
{
|
||||
$url.=(dol_escape_htmltag($_SERVER["QUERY_STRING"])?'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]):'');
|
||||
}
|
||||
else
|
||||
{
|
||||
global $sortfield,$sortorder;
|
||||
$tmpurl='';
|
||||
// No urlencode, all param $url will be urlencoded later
|
||||
if ($sortfield) $tmpurl.=($tmpurl?'&':'').'sortfield='.$sortfield;
|
||||
if ($sortorder) $tmpurl.=($tmpurl?'&':'').'sortorder='.$sortorder;
|
||||
if (is_array($_POST))
|
||||
{
|
||||
foreach($_POST as $key => $val)
|
||||
{
|
||||
if (preg_match('/^search_/', $key) && $val != '') $tmpurl.=($tmpurl?'&':'').$key.'='.$val;
|
||||
}
|
||||
}
|
||||
$url.=($tmpurl?'?'.$tmpurl:'');
|
||||
}
|
||||
|
||||
$searchForm = '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n";
|
||||
$searchForm.= '<form id="top-menu-action-bookmark" name="actionbookmark" method="POST" action="" onsubmit="return false" >';
|
||||
$searchForm.= '<input name="bookmark" id="top-bookmark-search-input" class="dropdown-search-input" placeholder="'.$langs->trans('Bookmarks').'" autocomplete="off" >';
|
||||
$searchForm.= '</form>';
|
||||
|
||||
// Url to list bookmark
|
||||
$listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
|
||||
$listbtn.= '<span class="fa fa-list"></span> '.$langs->trans('Bookmarks').'</a>';
|
||||
|
||||
// Url to go on create new bookmark page
|
||||
$newbtn = '';
|
||||
if (! empty($user->rights->bookmark->creer))
|
||||
{
|
||||
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&urlsource='.urlencode($url).'&url='.urlencode($url);
|
||||
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url);
|
||||
$newbtn.= '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.dol_escape_htmltag($urltoadd).'" >';
|
||||
$newbtn.= '<span class="fa fa-star-o"></span> '.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'</a>';
|
||||
}
|
||||
|
||||
|
||||
$bookmarkList='<div id="dropdown-bookmarks-list" >';
|
||||
// Menu with all bookmarks
|
||||
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU))
|
||||
{
|
||||
$sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
|
||||
$sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
|
||||
$sql.= " AND entity IN (".getEntity('bookmarks').")";
|
||||
$sql.= " ORDER BY position";
|
||||
if ($resql = $db->query($sql) )
|
||||
{
|
||||
$i=0;
|
||||
while ($i < $conf->global->BOOKMARKS_SHOW_IN_MENU && $obj = $db->fetch_object($resql))
|
||||
{
|
||||
$bookmarkList.='<a class="dropdown-item bookmark-item" id="bookmark-item-'.$obj->rowid.'" data-id="'.$obj->rowid.'" '.($obj->target == 1?' target="_blank"':'').' href="'.dol_escape_htmltag($obj->url).'" >';
|
||||
$bookmarkList.= dol_escape_htmltag($obj->title);
|
||||
$bookmarkList.='</a>';
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
}
|
||||
$bookmarkList.='</div>';
|
||||
|
||||
$html= '';
|
||||
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) {
|
||||
$html.= '
|
||||
<!-- search input -->
|
||||
<div class="dropdown-header bookmark-header">
|
||||
' . $searchForm . '
|
||||
</div>
|
||||
';
|
||||
}
|
||||
|
||||
$html.= '
|
||||
<!-- Menu Body -->
|
||||
<div class="bookmark-body dropdown-body">
|
||||
'.$bookmarkList.'
|
||||
</div>
|
||||
';
|
||||
|
||||
$html.= '
|
||||
<!-- Menu Footer-->
|
||||
<div class="bookmark-footer">
|
||||
'.$newbtn.$listbtn.'
|
||||
<div style="clear:both;"></div>
|
||||
</div>
|
||||
';
|
||||
|
||||
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) {
|
||||
$html .= '<script>
|
||||
$( document ).on("keyup", "#top-bookmark-search-input", function () {
|
||||
|
||||
var filter = $(this).val(), count = 0;
|
||||
$("#dropdown-bookmarks-list .bookmark-item").each(function () {
|
||||
|
||||
if ($(this).text().search(new RegExp(filter, "i")) < 0) {
|
||||
$(this).addClass("hidden-search-result");
|
||||
} else {
|
||||
$(this).removeClass("hidden-search-result");
|
||||
count++;
|
||||
}
|
||||
});
|
||||
$("#top-bookmark-search-filter-count").text(count);
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
@ -18,3 +18,4 @@ SetHereATitleForLink=Set a name for the bookmark
|
||||
UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://URL) or an internal/relative link (/DOLIBARR_ROOT/htdocs/...)
|
||||
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if the linked page should open in the current tab or a new tab
|
||||
BookmarksManagement=Bookmarks management
|
||||
BookmarksMenuShortCut=Ctrl + shift + m
|
||||
|
||||
@ -1602,6 +1602,10 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
||||
|
||||
print '<div class="login_block usedropdown">'."\n";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Add login user link
|
||||
$toprightmenu.='<div class="login_block_user">';
|
||||
|
||||
@ -1609,6 +1613,17 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
||||
$mode=-1;
|
||||
$toprightmenu.='<div class="inline-block nowrap"><div class="inline-block login_block_elem login_block_elem_name" style="padding: 0px;">';
|
||||
|
||||
if(!empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)){
|
||||
// Add search dropdown
|
||||
$toprightmenu.= top_menu_search($user, $langs);
|
||||
}
|
||||
|
||||
if(!empty($conf->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN)) {
|
||||
// Add bookmark dropdown
|
||||
$toprightmenu .= top_menu_bookmark($user, $langs);
|
||||
}
|
||||
|
||||
// add user dropdown
|
||||
$toprightmenu.= top_menu_user($user, $langs);
|
||||
|
||||
$toprightmenu.='</div></div>';
|
||||
@ -1823,12 +1838,10 @@ function top_menu_user(User $user, Translate $langs)
|
||||
else $appli.=" ".DOL_VERSION;
|
||||
|
||||
$btnUser = '<!-- div for user link -->
|
||||
<div id="topmenu-login-dropdown" class="userimg atoplogin dropdown user user-menu">
|
||||
<div id="topmenu-login-dropdown" class="userimg atoplogin dropdown user user-menu inline-block">
|
||||
<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="dropdown-toggle login-dropdown-a" data-toggle="dropdown">
|
||||
'.$userImage.'
|
||||
<span class="hidden-xs maxwidth200 atoploginusername hideonsmartphone">'.dol_trunc($user->firstname ? $user->firstname : $user->login, 10).'</span>
|
||||
<span class="fa fa-chevron-down login-dropdown-btn" id="dropdown-icon-down"></span>
|
||||
<span class="fa fa-chevron-up login-dropdown-btn hidden" id="dropdown-icon-up"></span>
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
<!-- User image -->
|
||||
@ -1869,16 +1882,12 @@ function top_menu_user(User $user, Translate $langs)
|
||||
if (!$(event.target).closest("#topmenu-login-dropdown").length) {
|
||||
// Hide the menus.
|
||||
$("#topmenu-login-dropdown").removeClass("open");
|
||||
$("#dropdown-icon-down").show(); // use show/hide instead toggle for avoid conflict
|
||||
$("#dropdown-icon-up").hide(); // use show/hide instead toggle for avoid conflict
|
||||
}
|
||||
});
|
||||
|
||||
$("#topmenu-login-dropdown .dropdown-toggle").on("click", function(event) {
|
||||
event.preventDefault();
|
||||
$("#topmenu-login-dropdown").toggleClass("open");
|
||||
$("#dropdown-icon-down").toggle();
|
||||
$("#dropdown-icon-up").toggle();
|
||||
});
|
||||
|
||||
$("#topmenuloginmoreinfo-btn").on("click", function() {
|
||||
@ -1893,6 +1902,203 @@ function top_menu_user(User $user, Translate $langs)
|
||||
return $btnUser;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build the tooltip on top menu bookmark
|
||||
*
|
||||
* @param user $user User object
|
||||
* @param Translate $langs Language object
|
||||
* @return string HTML content
|
||||
*/
|
||||
function top_menu_bookmark(User $user, Translate $langs)
|
||||
{
|
||||
global $langs, $conf, $db, $hookmanager, $user;
|
||||
global $menumanager;
|
||||
$html = '';
|
||||
|
||||
|
||||
|
||||
// Define $bookmarks
|
||||
if (! empty($conf->bookmark->enabled) && $user->rights->bookmark->lire)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/bookmarks/bookmarks.lib.php';
|
||||
$langs->load("bookmarks");
|
||||
|
||||
$html.= '<!-- div for bookmark link -->
|
||||
<div id="topmenu-bookmark-dropdown" class="atoplogin dropdown inline-block">
|
||||
<a class="dropdown-toggle login-dropdown-a" data-toggle="dropdown" href="#" title="'.$langs->trans('Bookmarks').' ('.$langs->trans('BookmarksMenuShortCut').')">
|
||||
<i class="fa fa-star" ></i>
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
'.printDropdownBookmarksList($db, $langs).'
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
|
||||
|
||||
$html .= '
|
||||
<!-- Code to show/hide the user drop-down -->
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$(document).on("click", function(event) {
|
||||
if (!$(event.target).closest("#topmenu-bookmark-dropdown").length) {
|
||||
// Hide the menus.
|
||||
$("#topmenu-bookmark-dropdown").removeClass("open");
|
||||
}
|
||||
});
|
||||
|
||||
$("#topmenu-bookmark-dropdown .dropdown-toggle").on("click", function(event) {
|
||||
openBookMarkDropDown();
|
||||
});
|
||||
|
||||
// Key map shortcut
|
||||
$(document).keydown(function(e){
|
||||
if( e.which === 77 && e.ctrlKey && e.shiftKey ){
|
||||
console.log(\'control + shift + m : trigger open bookmark dropdown\');
|
||||
openBookMarkDropDown();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var openBookMarkDropDown = function() {
|
||||
event.preventDefault();
|
||||
$("#topmenu-bookmark-dropdown").toggleClass("open");
|
||||
$("#top-bookmark-search-input").focus();
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
';
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the tooltip on top menu tsearch
|
||||
*
|
||||
* @param user $user User object
|
||||
* @param Translate $langs Language object
|
||||
* @return string HTML content
|
||||
*/
|
||||
function top_menu_search(User $user, Translate $langs)
|
||||
{
|
||||
global $langs, $conf, $db, $hookmanager, $user;
|
||||
global $menumanager;
|
||||
$html = '';
|
||||
|
||||
$usedbyinclude=1;
|
||||
$arrayresult=null;
|
||||
include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; // This set $arrayresult
|
||||
|
||||
$defaultAction = '';
|
||||
$buttonList='<div class="dropdown-global-search-button-list" >';
|
||||
// Menu with all bookmarks
|
||||
foreach ($arrayresult as $keyItem => $item)
|
||||
{
|
||||
if(empty($defaultAction)){
|
||||
$defaultAction= $item['url'];
|
||||
}
|
||||
$buttonList.='<button class="dropdown-item global-search-item" data-target="'.dol_escape_htmltag($item['url']).'" >';
|
||||
$buttonList.= $item['text'];
|
||||
$buttonList.='</button>';
|
||||
}
|
||||
$buttonList.='</div>';
|
||||
|
||||
|
||||
|
||||
$searchInput = '<input name="sall" id="top-global-search-input" class="dropdown-search-input" placeholder="'.$langs->trans('Search').'" autocomplete="off" >';
|
||||
|
||||
|
||||
$dropDownHtml = '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n";
|
||||
$dropDownHtml.= '<form id="top-menu-action-bookmark" name="actionbookmark" method="POST" action="'.$defaultAction.'" >';
|
||||
|
||||
$dropDownHtml.= '
|
||||
<!-- search input -->
|
||||
<div class="dropdown-header search-dropdown-header">
|
||||
' . $searchInput . '
|
||||
</div>
|
||||
';
|
||||
|
||||
$dropDownHtml.= '
|
||||
<!-- Menu Body -->
|
||||
<div class="dropdown-body search-dropdown-body">
|
||||
'.$buttonList.'
|
||||
</div>
|
||||
';
|
||||
|
||||
$dropDownHtml.= '</form>';
|
||||
|
||||
|
||||
$html.= '<!-- div for Global Search -->
|
||||
<div id="topmenu-global-search-dropdown" class="atoplogin dropdown inline-block">
|
||||
<a class="dropdown-toggle login-dropdown-a" data-toggle="dropdown" href="#" title="'.$langs->trans('Search').' ('.$langs->trans('SearchMenuShortCut').')">
|
||||
<i class="fa fa-search" ></i>
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
'.$dropDownHtml.'
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
$html .= '
|
||||
<!-- Code to show/hide the user drop-down -->
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
|
||||
// prevent submiting form on press ENTER
|
||||
$("#top-global-search-input").keydown(function (e) {
|
||||
if (e.keyCode == 13) {
|
||||
var inputs = $(this).parents("form").eq(0).find(":button");
|
||||
if (inputs[inputs.index(this) + 1] != null) {
|
||||
inputs[inputs.index(this) + 1].focus();
|
||||
}
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// submit form action
|
||||
$(".dropdown-global-search-button-list .global-search-item").on("click", function(event) {
|
||||
$("#top-menu-action-bookmark").attr("action", $(this).data("target"));
|
||||
$("#top-menu-action-bookmark").submit();
|
||||
});
|
||||
|
||||
// close drop down
|
||||
$(document).on("click", function(event) {
|
||||
if (!$(event.target).closest("#topmenu-global-search-dropdown").length) {
|
||||
// Hide the menus.
|
||||
$("#topmenu-global-search-dropdown").removeClass("open");
|
||||
}
|
||||
});
|
||||
|
||||
// Open drop down
|
||||
$("#topmenu-global-search-dropdown .dropdown-toggle").on("click", function(event) {
|
||||
openGlobalSearchDropDown();
|
||||
});
|
||||
|
||||
// Key map shortcut
|
||||
$(document).keydown(function(e){
|
||||
if( e.which === 70 && e.ctrlKey && e.shiftKey ){
|
||||
console.log(\'control + shift + f : trigger open global-search dropdown\');
|
||||
openGlobalSearchDropDown();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var openGlobalSearchDropDown = function() {
|
||||
event.preventDefault();
|
||||
$("#topmenu-global-search-dropdown").toggleClass("open");
|
||||
$("#top-global-search-input").focus();
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
';
|
||||
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show left menu bar
|
||||
*
|
||||
@ -1930,55 +2136,47 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
|
||||
|
||||
if (! is_object($form)) $form=new Form($db);
|
||||
$selected=-1;
|
||||
$usedbyinclude=1;
|
||||
$arrayresult=null;
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; // This set $arrayresult
|
||||
if(empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)) {
|
||||
$usedbyinclude = 1;
|
||||
$arrayresult = null;
|
||||
include DOL_DOCUMENT_ROOT . '/core/ajax/selectsearchbox.php'; // This set $arrayresult
|
||||
|
||||
if ($conf->use_javascript_ajax && empty($conf->global->MAIN_USE_OLD_SEARCH_FORM))
|
||||
{
|
||||
$searchform.=$form->selectArrayFilter('searchselectcombo', $arrayresult, $selected, '', 1, 0, (empty($conf->global->MAIN_SEARCHBOX_CONTENT_LOADED_BEFORE_KEY)?1:0), 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_array($arrayresult))
|
||||
{
|
||||
foreach($arrayresult as $key => $val)
|
||||
{
|
||||
$searchform.=printSearchForm($val['url'], $val['url'], $val['label'], 'maxwidth125', 'sall', $val['shortcut'], 'searchleft'.$key, img_picto('', $val['img'], '', false, 1, 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($conf->use_javascript_ajax && empty($conf->global->MAIN_USE_OLD_SEARCH_FORM)) {
|
||||
$searchform .= $form->selectArrayFilter('searchselectcombo', $arrayresult, $selected, '', 1, 0, (empty($conf->global->MAIN_SEARCHBOX_CONTENT_LOADED_BEFORE_KEY) ? 1 : 0), 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1);
|
||||
} else {
|
||||
if (is_array($arrayresult)) {
|
||||
foreach ($arrayresult as $key => $val) {
|
||||
$searchform .= printSearchForm($val['url'], $val['url'], $val['label'], 'maxwidth125', 'sall', $val['shortcut'], 'searchleft' . $key, img_picto('', $val['img'], '', false, 1, 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Execute hook printSearchForm
|
||||
$parameters=array('searchform'=>$searchform);
|
||||
$reshook=$hookmanager->executeHooks('printSearchForm', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook))
|
||||
{
|
||||
$searchform.=$hookmanager->resPrint;
|
||||
}
|
||||
else $searchform=$hookmanager->resPrint;
|
||||
// Execute hook printSearchForm
|
||||
$parameters = array('searchform' => $searchform);
|
||||
$reshook = $hookmanager->executeHooks('printSearchForm', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook)) {
|
||||
$searchform .= $hookmanager->resPrint;
|
||||
} else $searchform = $hookmanager->resPrint;
|
||||
|
||||
// Force special value for $searchform
|
||||
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) || empty($conf->use_javascript_ajax))
|
||||
{
|
||||
$urltosearch=DOL_URL_ROOT.'/core/search_page.php?showtitlebefore=1';
|
||||
$searchform='<div class="blockvmenuimpair blockvmenusearchphone"><div id="divsearchforms1"><a href="'.$urltosearch.'" accesskey="s" alt="'.dol_escape_htmltag($langs->trans("ShowSearchFields")).'">'.$langs->trans("Search").'...</a></div></div>';
|
||||
}
|
||||
elseif ($conf->use_javascript_ajax && ! empty($conf->global->MAIN_USE_OLD_SEARCH_FORM))
|
||||
{
|
||||
$searchform='<div class="blockvmenuimpair blockvmenusearchphone"><div id="divsearchforms1"><a href="#" alt="'.dol_escape_htmltag($langs->trans("ShowSearchFields")).'">'.$langs->trans("Search").'...</a></div><div id="divsearchforms2" style="display: none">'.$searchform.'</div>';
|
||||
$searchform.='<script>
|
||||
// Force special value for $searchform
|
||||
if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) || empty($conf->use_javascript_ajax)) {
|
||||
$urltosearch = DOL_URL_ROOT . '/core/search_page.php?showtitlebefore=1';
|
||||
$searchform = '<div class="blockvmenuimpair blockvmenusearchphone"><div id="divsearchforms1"><a href="' . $urltosearch . '" accesskey="s" alt="' . dol_escape_htmltag($langs->trans("ShowSearchFields")) . '">' . $langs->trans("Search") . '...</a></div></div>';
|
||||
} elseif ($conf->use_javascript_ajax && !empty($conf->global->MAIN_USE_OLD_SEARCH_FORM)) {
|
||||
$searchform = '<div class="blockvmenuimpair blockvmenusearchphone"><div id="divsearchforms1"><a href="#" alt="' . dol_escape_htmltag($langs->trans("ShowSearchFields")) . '">' . $langs->trans("Search") . '...</a></div><div id="divsearchforms2" style="display: none">' . $searchform . '</div>';
|
||||
$searchform .= '<script>
|
||||
jQuery(document).ready(function () {
|
||||
jQuery("#divsearchforms1").click(function(){
|
||||
jQuery("#divsearchforms2").toggle();
|
||||
});
|
||||
});
|
||||
</script>' . "\n";
|
||||
$searchform.='</div>';
|
||||
}
|
||||
$searchform .= '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
// Define $bookmarks
|
||||
if (! empty($conf->bookmark->enabled) && $user->rights->bookmark->lire)
|
||||
if (! empty($conf->bookmark->enabled) && $user->rights->bookmark->lire && empty($conf->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN))
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/bookmarks/bookmarks.lib.php';
|
||||
$langs->load("bookmarks");
|
||||
|
||||
@ -1,19 +1,17 @@
|
||||
<?php
|
||||
if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
|
||||
/* <style type="text/css" > dont remove this line it's an ide hack */
|
||||
/*
|
||||
* Dropdown
|
||||
*/
|
||||
|
||||
.open>.dropdown-menu{ /*, #topmenu-login-dropdown:hover .dropdown-menu*/
|
||||
.open>.dropdown-menu{
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
box-shadow: none;
|
||||
border-color: #eee;
|
||||
}
|
||||
.dropdown-menu {
|
||||
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
@ -21,7 +19,6 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
display: none;
|
||||
float: left;
|
||||
min-width: 160px;
|
||||
padding: 5px 0;
|
||||
margin: 2px 0 0;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
@ -38,6 +35,34 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
|
||||
|
||||
|
||||
.dropdown-toggle{
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.dropdown-toggle::after {
|
||||
/* font part */
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-size: 0.7em;
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
margin: auto 3px;
|
||||
display: inline-block;
|
||||
content: "\f078";
|
||||
|
||||
-webkit-transition: -webkit-transform .2s ease-in-out;
|
||||
-ms-transition: -ms-transform .2s ease-in-out;
|
||||
transition: transform .2s ease-in-out;
|
||||
}
|
||||
|
||||
.open>.dropdown-toggle::after {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
/*
|
||||
* MENU Dropdown
|
||||
*/
|
||||
@ -75,12 +100,17 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
}
|
||||
|
||||
.side-nav-vert .user-menu .dropdown-menu > .user-header {
|
||||
height: 175px;
|
||||
min-height: 175px;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#topmenu-global-search-dropdown .dropdown-menu{
|
||||
width: 300px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.dropdown-user-image {
|
||||
border-radius: 50%;
|
||||
vertical-align: middle;
|
||||
@ -98,6 +128,12 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
background: rgb(<?php echo $colorbackhmenu1 ?>);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.dropdown-menu .dropdown-header{
|
||||
padding: 5px 10px 10px 10px;
|
||||
}
|
||||
|
||||
.dropdown-menu > .user-footer {
|
||||
background-color: #f9f9f9;
|
||||
padding: 10px;
|
||||
@ -107,14 +143,43 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.dropdown-menu > .user-body {
|
||||
|
||||
.dropdown-menu > .bookmark-footer{
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
|
||||
.dropdown-menu > .user-body, .dropdown-body{
|
||||
padding: 15px;
|
||||
border-bottom: 1px solid #f4f4f4;
|
||||
border-top: 1px solid #dddddd;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#topmenu-login-dropdown{
|
||||
.dropdown-menu > .bookmark-body, .dropdown-body{
|
||||
padding: 10px 0;
|
||||
overflow-y: auto;
|
||||
max-height: 60vh ; /* fallback for browsers without support for calc() */
|
||||
max-height: calc(90vh - 110px) ;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.dropdown-body::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
}
|
||||
.dropdown-body::-webkit-scrollbar-thumb {
|
||||
-webkit-border-radius: 0;
|
||||
border-radius: 0;
|
||||
background: rgb(<?php echo $colorbackhmenu1 ?>);
|
||||
}
|
||||
.dropdown-body::-webkit-scrollbar-track {
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||
-webkit-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
|
||||
#topmenu-login-dropdown, #topmenu-bookmark-dropdown, #topmenu-global-search-dropdown {
|
||||
padding: 0 5px 0 5px;
|
||||
}
|
||||
#topmenu-login-dropdown a:hover{
|
||||
@ -166,3 +231,89 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
background-color: #f4f4f4;
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
.dropdown-menu a.top-menu-dropdown-link {
|
||||
color: rgb(<?php print $colortextlink; ?>) !important;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
display: block;
|
||||
margin: 5px 0px;
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
display: block !important;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
padding: .25rem 1.5rem .25rem 1rem;
|
||||
clear: both;
|
||||
font-weight: 400;
|
||||
color: #212529 !important;
|
||||
text-align: inherit;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.dropdown-item::before {
|
||||
/* font part */
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
margin-right: 5px;
|
||||
display: inline-block;
|
||||
content: "\f0da";
|
||||
color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
|
||||
.dropdown-item.active, .dropdown-item:hover, .dropdown-item:focus {
|
||||
color: #<?php echo $colortextbackhmenu; ?> !important;
|
||||
text-decoration: none;
|
||||
background: rgb(<?php echo $colorbackhmenu1 ?>);
|
||||
}
|
||||
|
||||
/*
|
||||
* SEARCH
|
||||
*/
|
||||
|
||||
.dropdown-search-input {
|
||||
width: 100%;
|
||||
padding: 10px 35px 10px 20px;
|
||||
|
||||
background-color: transparent;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
box-sizing: border-box;
|
||||
|
||||
|
||||
color: #575756;
|
||||
background-color: transparent;
|
||||
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 16px 16px;
|
||||
background-position: 95% center;
|
||||
border-radius: 50px;
|
||||
border: 1px solid #c4c4c2 !important;
|
||||
transition: all 250ms ease-in-out;
|
||||
backface-visibility: hidden;
|
||||
transform-style: preserve-3d;
|
||||
|
||||
}
|
||||
|
||||
.dropdown-search-input::placeholder {
|
||||
color: color(#575756 a(0.8));
|
||||
letter-spacing: 1.5px;
|
||||
}
|
||||
|
||||
.hidden-search-result{
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@ -200,7 +200,11 @@ $heightmenu=48; /* height of top menu, part with image */
|
||||
$heightmenu2=49; /* height of top menu, part with login */
|
||||
$disableimages = 0;
|
||||
$maxwidthloginblock = 180;
|
||||
if (! empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE)) { $disableimages = 1; $maxwidthloginblock = 180; $minwidthtmenu=0; }
|
||||
if (! empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE)) { $disableimages = 1; $maxwidthloginblock = $maxwidthloginblock + 50; $minwidthtmenu=0; }
|
||||
|
||||
|
||||
if(!empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)){ $maxwidthloginblock = $maxwidthloginblock + 55; }
|
||||
if(! empty($conf->bookmark->enabled) && !empty($conf->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN)) { $maxwidthloginblock = $maxwidthloginblock + 55; }
|
||||
|
||||
|
||||
print '/*'."\n";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user