Esempio n. 1
0
/**
 *  Show an HTML header + a BODY + The top menu bar
 *
 *  @param      string	$head    			Lines in the HEAD
 *  @param      string	$title   			Title of web page
 *  @param      string	$target  			Target to use in menu links (Example: '' or '_top')
 *	@param		int		$disablejs			Do not output links to js (Ex: qd fonction utilisee par sous formulaire Ajax)
 *	@param		int		$disablehead		Do not output head section
 *	@param		array	$arrayofjs			Array of js files to add in header
 *	@param		array	$arrayofcss			Array of css files to add in header
 *  @param		string	$morequerystring	Query string to add to the link "print" to get same parameters (use only if autodetect fails)
 *  @param      string	$helppagename    	Name of wiki page for help ('' by default).
 * 				     		                Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage
 * 									                   For other external page: http://server/url
 *  @return		void
 */
function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead = 0, $arrayofjs = '', $arrayofcss = '', $morequerystring = '', $helppagename = '')
{
    global $user, $conf, $langs, $db;
    global $dolibarr_main_authentication, $dolibarr_main_demo;
    global $hookmanager, $menumanager;
    // Instantiate hooks of thirdparty module
    $hookmanager->initHooks(array('toprightmenu'));
    $toprightmenu = '';
    // For backward compatibility with old modules
    if (empty($conf->headerdone)) {
        top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss);
    }
    print '<body id="mainbody">' . "\n";
    if ($conf->use_javascript_ajax) {
        if (empty($conf->dol_use_jmobile) && !empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) {
            print '<script type="text/javascript">
				jQuery(document).ready(function () {
					jQuery("body").layout(layoutSettings);
				});
				var layoutSettings = {
					name: "mainlayout",
					defaults: {
						useStateCookie: true,
						size: "auto",
						resizable: false,
						//paneClass: "none",
						//resizerClass: "resizer",
						//togglerClass: "toggler",
						//buttonClass: "button",
						//contentSelector: ".content",
						//contentIgnoreSelector: "span",
						togglerTip_open: "Close This Pane",
						togglerTip_closed: "Open This Pane",
						resizerTip:	"Resize This Pane",
						fxSpeed: "fast"
					},
					west: {
						paneClass: "leftContent",
						//spacing_closed:	14,
						//togglerLength_closed: 14,
						//togglerAlign_closed: "auto",
						//togglerLength_open: 0,
						//	effect defaults - overridden on some panes
						//slideTrigger_open:	"mouseover",
						initClosed:	' . (empty($conf->dol_optimize_smallscreen) ? 'false' : 'true') . ',
						fxName:	"drop",
						fxSpeed: "fast",
						fxSettings: { easing: "" }
					},
					north: {
						paneClass: "none",
						resizerClass: "none",
						togglerClass: "none",
						spacing_open: 0,
						togglerLength_open:	0,
						togglerLength_closed: -1,
						slidable: false,
						fxName:	"none",
						fxSpeed: "fast"
					},
					center: {
						paneSelector: "#mainContent"
					}
				}
			</script>' . "\n";
        }
        // Raven.js for client-side Sentry logging support
        if (array_key_exists('mod_syslog_sentry', $conf->loghandlers) && !empty($conf->global->SYSLOG_SENTRY_DSN)) {
            // Filter out secret key
            $dsn = parse_url($conf->global->SYSLOG_SENTRY_DSN);
            $public_dsn = $dsn['scheme'] . '://' . $dsn['user'] . '@' . $dsn['host'] . $dsn['path'];
            print '<script type="text/javascript">' . "\n";
            print "Raven.config('" . $public_dsn . "').install()\n";
            print "Raven.setUserContext({username: '******'})\n";
            print "Raven.setTagsContext({version: '" . DOL_VERSION . "'})\n";
            print "</script>\n";
        }
    }
    /*
     * Top menu
     */
    print "\n" . '<!-- Start top horizontal -->' . "\n";
    if (empty($conf->dol_use_jmobile) && !empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) {
        print '<div class="ui-layout-north"> <!-- Begin top layout -->' . "\n";
    }
    if (empty($conf->dol_hide_topmenu)) {
        print '<div class="side-nav-vert"><div id="id-top">';
        // Show menu entries
        print '<div id="tmenu_tooltip' . (empty($conf->global->MAIN_MENU_INVERT) ? '' : 'invert') . '" class="tmenu">' . "\n";
        $menumanager->atarget = $target;
        $menumanager->showmenu('top');
        // This contains a \n
        print "</div>\n";
        //$form=new Form($db);
        // Define link to login card
        $appli = constant('DOL_APPLICATION_TITLE');
        if (!empty($conf->global->MAIN_APPLICATION_TITLE)) {
            $appli = $conf->global->MAIN_APPLICATION_TITLE;
            if (preg_match('/\\d\\.\\d/', $appli)) {
                if (!preg_match('/' . preg_quote(DOL_VERSION) . '/', $appli)) {
                    $appli .= " (" . DOL_VERSION . ")";
                }
                // If new title contains a version that is different than core
            } else {
                $appli .= " " . DOL_VERSION;
            }
        } else {
            $appli .= " " . DOL_VERSION;
        }
        if (!empty($conf->global->MAIN_FEATURES_LEVEL)) {
            $appli .= "<br>" . $langs->trans("LevelOfFeature") . ': ' . $conf->global->MAIN_FEATURES_LEVEL;
        }
        $logouttext = '';
        $logouthtmltext = $appli . '<br>';
        if ($_SESSION["dol_authmode"] != 'forceuser' && $_SESSION["dol_authmode"] != 'http') {
            $logouthtmltext .= $langs->trans("Logout") . '<br>';
            $logouttext .= '<a href="' . DOL_URL_ROOT . '/user/logout.php">';
            $logouttext .= img_picto($langs->trans('Logout') . ":" . $langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1);
            $logouttext .= '</a>';
        } else {
            $logouthtmltext .= $langs->trans("NoLogoutProcessWithAuthMode", $_SESSION["dol_authmode"]);
            $logouttext .= img_picto($langs->trans('Logout') . ":" . $langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1);
        }
        print '<div class="login_block">' . "\n";
        // Add login user link
        $toprightmenu .= '<div class="login_block_user">';
        // Login name with photo and tooltip
        $mode = -1;
        $toprightmenu .= '<div class="inline-block nowrap"><div class="inline-block login_block_elem login_block_elem_name" style="padding: 0px;">';
        $toprightmenu .= $user->getNomUrl($mode, '', true, 0, 11, 0, $user->firstname ? 'firstname' : -1, 'atoplogin');
        $toprightmenu .= '</div></div>';
        $toprightmenu .= '</div>';
        $toprightmenu .= '<div class="login_block_other">';
        // Execute hook printTopRightMenu (hooks should output string like '<div class="login"><a href="">mylink</a></div>')
        $parameters = array();
        $result = $hookmanager->executeHooks('printTopRightMenu', $parameters);
        // Note that $action and $object may have been modified by some hooks
        if (is_numeric($result)) {
            if (empty($result)) {
                $toprightmenu .= $hookmanager->resPrint;
            } else {
                $toprightmenu = $hookmanager->resPrint;
            }
            // replace
        } else {
            $toprightmenu .= $result;
        }
        // For backward compatibility
        // Link to print main content area
        if (empty($conf->global->MAIN_PRINT_DISABLELINK) && empty($conf->browser->phone)) {
            $qs = $_SERVER["QUERY_STRING"];
            $qs .= ($qs && $morequerystring ? '&' : '') . $morequerystring;
            $text = '<a href="' . $_SERVER["PHP_SELF"] . '?' . $qs . ($qs ? '&' : '') . 'optioncss=print" target="_blank">';
            $text .= img_picto(":" . $langs->trans("PrintContentArea"), 'printer_top.png', 'class="printer"');
            $text .= '</a>';
            $toprightmenu .= Form::textwithtooltip('', $langs->trans("PrintContentArea"), 2, 1, $text, 'login_block_elem', 2);
        }
        // Link to Dolibarr wiki pages
        if (empty($conf->global->MAIN_HELP_DISABLELINK)) {
            $langs->load("help");
            $helpbaseurl = '';
            $helppage = '';
            $mode = '';
            if (empty($helppagename)) {
                $helppagename = 'EN:User_documentation|FR:Documentation_utilisateur|ES:Documentación_usuarios';
            }
            // Get helpbaseurl, helppage and mode from helppagename and langs
            $arrayres = getHelpParamFor($helppagename, $langs);
            $helpbaseurl = $arrayres['helpbaseurl'];
            $helppage = $arrayres['helppage'];
            $mode = $arrayres['mode'];
            // Link to help pages
            if ($helpbaseurl && $helppage) {
                $text = '';
                $title = '';
                //$text.='<div id="blockvmenuhelpwiki" class="blockvmenuhelp">';
                $title .= $langs->trans($mode == 'wiki' ? 'GoToWikiHelpPage' : 'GoToHelpPage');
                if ($mode == 'wiki') {
                    $title .= ' - ' . $langs->trans("PageWiki") . ' &quot;' . dol_escape_htmltag(strtr($helppage, '_', ' ')) . '&quot;';
                }
                $text .= '<a class="help" target="_blank" href="';
                if ($mode == 'wiki') {
                    $text .= sprintf($helpbaseurl, urlencode(html_entity_decode($helppage)));
                } else {
                    $text .= sprintf($helpbaseurl, $helppage);
                }
                $text .= '">';
                $text .= img_picto('', 'helpdoc_top') . ' ';
                //$toprightmenu.=$langs->trans($mode == 'wiki' ? 'OnlineHelp': 'Help');
                //if ($mode == 'wiki') $text.=' ('.dol_trunc(strtr($helppage,'_',' '),8).')';
                $text .= '</a>';
                //$toprightmenu.='</div>'."\n";
                $toprightmenu .= Form::textwithtooltip('', $title, 2, 1, $text, 'login_block_elem', 2);
            }
        }
        // Logout link
        $toprightmenu .= Form::textwithtooltip('', $logouthtmltext, 2, 1, $logouttext, 'login_block_elem', 2);
        $toprightmenu .= '</div>';
        print $toprightmenu;
        print "</div>\n";
        print '</div></div>';
        //unset($form);
    }
    if (empty($conf->dol_use_jmobile) && !empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) {
        print "</div><!-- End top layout -->\n";
    }
    print '<div style="clear: both;"></div>';
    print "<!-- End top horizontal menu -->\n\n";
    if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) {
        print '<div id="id-container">';
    }
}
Esempio n. 2
0
/**
 *  Show left menu bar
 *
 *  @param  array	$menu_array_before 	       	Table of menu entries to show before entries of menu handler
 *  @param  string	$helppagename    	       	Name of wiki page for help ('' by default).
 * 				     		                   	Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage
 * 									         		       For other external page: http://server/url
 *  @param  string	$moresearchform             Search Form Permanent Supplemental
 *  @param  array	$menu_array_after           Table of menu entries to show after entries of menu handler
 *  @param  int		$leftmenuwithoutmainarea    Must be set to 1. 0 by default for backward compatibility with old modules.
 *  @param  string	$title                      Title of web page
 *  @return	void
 */
function left_menu($menu_array_before, $helppagename = '', $moresearchform = '', $menu_array_after = '', $leftmenuwithoutmainarea = 0, $title = '')
{
    global $user, $conf, $langs, $db;
    global $hookmanager, $menumanager;
    $searchform = '';
    $bookmarks = '';
    if (empty($conf->dol_hide_leftmenu)) {
        // Instantiate hooks of thirdparty module
        $hookmanager->initHooks(array('searchform', 'leftblock'));
        if (empty($conf->dol_use_jmobile) && !empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) {
            print "\n" . '<!-- Begin left layout -->' . "\n" . '<div class="ui-layout-west">' . "\n";
        } else {
            print "\n" . '<!-- Begin id-left -->' . "\n" . '<div class="side-nav"><div id="id-left">' . "\n";
        }
        print "\n";
        // Define $searchform
        if ((!empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) || !empty($conf->fournisseur->enabled)) && !empty($conf->global->MAIN_SEARCHFORM_SOCIETE) && $user->rights->societe->lire) {
            $langs->load("companies");
            $searchform .= printSearchForm(DOL_URL_ROOT . '/societe/list.php', DOL_URL_ROOT . '/societe/list.php', $langs->trans("ThirdParties"), 'soc', 'socname', 'T', 'searchleftt', img_object('', 'company'));
        }
        if (!empty($conf->societe->enabled) && !empty($conf->global->MAIN_SEARCHFORM_CONTACT) && $user->rights->societe->lire) {
            $langs->load("companies");
            $searchform .= printSearchForm(DOL_URL_ROOT . '/contact/list.php', DOL_URL_ROOT . '/contact/list.php', $langs->trans("Contacts"), 'contact', 'contactname', '', 'searchleftc', img_object('', 'contact'));
        }
        if ((!empty($conf->product->enabled) && $user->rights->produit->lire || !empty($conf->service->enabled) && $user->rights->service->lire) && !empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE)) {
            $langs->load("products");
            $searchform .= printSearchForm(DOL_URL_ROOT . '/product/list.php', DOL_URL_ROOT . '/product/list.php', $langs->trans("Products") . "/" . $langs->trans("Services"), 'products', 'sall', 'P', 'searchleftp', img_object('', 'product'));
        }
        if ((!empty($conf->product->enabled) && $user->rights->produit->lire || !empty($conf->service->enabled) && $user->rights->service->lire) && !empty($conf->fournisseur->enabled) && !empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER)) {
            $langs->load("products");
            $searchform .= printSearchForm(DOL_URL_ROOT . '/fourn/product/list.php', DOL_URL_ROOT . '/fourn/product/list.php', $langs->trans("SupplierRef"), 'products', 'srefsupplier', '', 'searchlefts', img_object('', 'product'));
        }
        if (!empty($conf->adherent->enabled) && !empty($conf->global->MAIN_SEARCHFORM_ADHERENT) && $user->rights->adherent->lire) {
            $langs->load("members");
            $searchform .= printSearchForm(DOL_URL_ROOT . '/adherents/list.php', DOL_URL_ROOT . '/adherents/list.php', $langs->trans("Members"), 'member', 'sall', 'M', 'searchleftm', img_object('', 'user'));
        }
        if (!empty($conf->projet->enabled) && !empty($conf->global->MAIN_SEARCHFORM_PROJECT) && $user->rights->projet->lire) {
            $langs->load("members");
            $searchform .= printSearchForm(DOL_URL_ROOT . '/projet/list.php', DOL_URL_ROOT . '/projet/list.php', $langs->trans("Projects"), 'project', 'search_all', 'M', 'searchleftproj', img_object('', 'projectpub'));
        }
        // Execute hook printSearchForm
        $parameters = array();
        $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;
        }
        // Define $bookmarks
        if (!empty($conf->bookmark->enabled) && $user->rights->bookmark->lire) {
            include_once DOL_DOCUMENT_ROOT . '/bookmarks/bookmarks.lib.php';
            $langs->load("bookmarks");
            $bookmarks = printBookmarksList($db, $langs);
        }
        // Left column
        print '<!-- Begin left menu -->' . "\n";
        print '<div class="vmenu">' . "\n\n";
        $menumanager->menu_array = $menu_array_before;
        $menumanager->menu_array_after = $menu_array_after;
        $menumanager->showmenu('left');
        // output menu_array and menu found in database
        // Show other forms
        if ($searchform) {
            print "\n";
            print "<!-- Begin SearchForm -->\n";
            print '<div id="blockvmenusearch" class="blockvmenusearch">' . "\n";
            print $searchform;
            print '</div>' . "\n";
            print "<!-- End SearchForm -->\n";
        }
        // More search form
        if ($moresearchform) {
            print $moresearchform;
        }
        // Bookmarks
        if ($bookmarks) {
            print "\n";
            print "<!-- Begin Bookmarks -->\n";
            print '<div id="blockvmenubookmarks" class="blockvmenubookmarks">' . "\n";
            print $bookmarks;
            print '</div>' . "\n";
            print "<!-- End Bookmarks -->\n";
        }
        print "\n";
        print "<!-- Begin Help Block-->\n";
        print '<div id="blockvmenuhelp" class="blockvmenuhelp">' . "\n";
        //Dolibarr version
        $doliurl = 'http://www.dolibarr.org';
        //local communities
        if (preg_match('/fr/i', $langs->defaultlang)) {
            $doliurl = 'http://www.dolibarr.fr';
        }
        if (preg_match('/es/i', $langs->defaultlang)) {
            $doliurl = 'http://www.dolibarr.es';
        }
        if (preg_match('/de/i', $langs->defaultlang)) {
            $doliurl = 'http://www.dolibarr.de';
        }
        if (preg_match('/it/i', $langs->defaultlang)) {
            $doliurl = 'http://www.dolibarr.it';
        }
        if (preg_match('/gr/i', $langs->defaultlang)) {
            $doliurl = 'http://www.dolibarr.gr';
        }
        $appli = 'Dolibarr';
        if (!empty($conf->global->MAIN_APPLICATION_TITLE)) {
            $appli = $conf->global->MAIN_APPLICATION_TITLE;
            $doliurl = '';
            if (preg_match('/\\d\\.\\d/', $appli)) {
                if (!preg_match('/' . preg_quote(DOL_VERSION) . '/', $appli)) {
                    $appli .= " (" . DOL_VERSION . ")";
                }
                // If new title contains a version that is different than core
            } else {
                $appli .= " " . DOL_VERSION;
            }
        } else {
            $appli .= " " . DOL_VERSION;
        }
        print '<div id="blockvmenuhelpapp" class="blockvmenuhelp">';
        if ($doliurl) {
            print '<a class="help" target="_blank" href="' . $doliurl . '">';
        }
        print $appli;
        if ($doliurl) {
            print '</a>';
        }
        print '</div>' . "\n";
        // Link to Dolibarr wiki pages
        if ($helppagename && empty($conf->global->MAIN_HELP_DISABLELINK)) {
            $langs->load("help");
            $helpbaseurl = '';
            $helppage = '';
            $mode = '';
            // Get helpbaseurl, helppage and mode from helppagename and langs
            $arrayres = getHelpParamFor($helppagename, $langs);
            $helpbaseurl = $arrayres['helpbaseurl'];
            $helppage = $arrayres['helppage'];
            $mode = $arrayres['mode'];
            // Link to help pages
            if ($helpbaseurl && $helppage) {
                print '<div id="blockvmenuhelpwiki" class="blockvmenuhelp">';
                print '<a class="help" target="_blank" title="' . $langs->trans($mode == 'wiki' ? 'GoToWikiHelpPage' : 'GoToHelpPage');
                if ($mode == 'wiki') {
                    print ' - ' . $langs->trans("PageWiki") . ' &quot;' . dol_escape_htmltag(strtr($helppage, '_', ' ')) . '&quot;';
                }
                print '" href="';
                if ($mode == 'wiki') {
                    print sprintf($helpbaseurl, urlencode(html_entity_decode($helppage)));
                } else {
                    print sprintf($helpbaseurl, $helppage);
                }
                print '">';
                print img_picto('', 'helpdoc') . ' ';
                print $langs->trans($mode == 'wiki' ? 'OnlineHelp' : 'Help');
                //if ($mode == 'wiki') print ' ('.dol_trunc(strtr($helppage,'_',' '),8).')';
                print '</a>';
                print '</div>' . "\n";
            }
        }
        // Link to bugtrack
        if (!empty($conf->global->MAIN_BUGTRACK_ENABLELINK)) {
            require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
            $bugbaseurl = 'https://github.com/Dolibarr/dolibarr/issues/new';
            $bugbaseurl .= '?title=';
            $bugbaseurl .= urlencode("Bug: ");
            $bugbaseurl .= '&body=';
            $bugbaseurl .= urlencode("# Environment\n");
            $bugbaseurl .= urlencode("- **Version**: " . DOL_VERSION . "\n");
            $bugbaseurl .= urlencode("- **OS**: " . php_uname('s') . "\n");
            $bugbaseurl .= urlencode("- **Web server**: " . $_SERVER["SERVER_SOFTWARE"] . "\n");
            $bugbaseurl .= urlencode("- **PHP**: " . php_sapi_name() . ' ' . phpversion() . "\n");
            $bugbaseurl .= urlencode("- **Database**: " . $db::LABEL . ' ' . $db->getVersion() . "\n");
            $bugbaseurl .= urlencode("- **URL**: " . $_SERVER["REQUEST_URI"] . "\n");
            $bugbaseurl .= urlencode("\n");
            $bugbaseurl .= urlencode("# Report\n");
            print '<p id="blockvmenuhelpbugreport" class="blockvmenuhelp">';
            print '<a class="help" target="_blank" href="' . $bugbaseurl . '">' . $langs->trans("FindBug") . '</a>';
            print '</p>';
        }
        print "</div>\n";
        print "<!-- End Help Block-->\n";
        print "\n";
        print "</div>\n";
        print "<!-- End left menu -->\n";
        print "\n";
        // Execute hook printLeftBlock
        $parameters = array();
        $reshook = $hookmanager->executeHooks('printLeftBlock', $parameters);
        // Note that $action and $object may have been modified by some hooks
        print $hookmanager->resPrint;
        if (empty($conf->dol_use_jmobile) && !empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) {
            print '</div> <!-- End left layout -->' . "\n";
        } else {
            print '</div></div> <!-- end id-left -->';
        }
        // End div id="id-left"
    }
    print "\n";
    print '<!-- Begin right area -->' . "\n";
    if (empty($leftmenuwithoutmainarea)) {
        main_area($title);
    }
}
Esempio n. 3
0
/**
 *  Show left menu bar
 *  @param      menu_array_before 	       Table of menu entries to show before entries of menu handler
 *  @param      helppagename    	       Name of wiki page for help ('' by default).
 * 				                           Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage
 * 									                  For other external page: http://server/url
 *  @param      moresearchform             Search Form Permanent Supplemental
 *  @param      menu_array_after           Table of menu entries to show after entries of menu handler
 *  @param      leftmenuwithoutmainarea    Must be set to 1. 0 by default for backward compatibility with old modules.
 *  @param      title                      Title of web page
 */
function left_menu($menu_array_before, $helppagename = '', $moresearchform = '', $menu_array_after = '', $leftmenuwithoutmainarea = 0, $title = '')
{
    global $user, $conf, $langs, $db;
    $searchform = '';
    $bookmarks = '';
    if ($conf->use_javascript_ajax && $conf->global->MAIN_MENU_USE_JQUERY_LAYOUT) {
        print "\n" . '<div class="ui-layout-west"> <!-- Begin left layout -->' . "\n";
    } else {
        print '<td class="vmenu" valign="top">';
    }
    print "\n";
    // Instantiate hooks of thirdparty module
    if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) {
        require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php';
        $object = new CommonObject($db);
        $object->callHooks(array('searchform', 'leftblock'));
    }
    // Define $searchform
    if ($conf->societe->enabled && $conf->global->MAIN_SEARCHFORM_SOCIETE && $user->rights->societe->lire) {
        $langs->load("companies");
        $searchform .= printSearchForm(DOL_URL_ROOT . '/societe/societe.php', DOL_URL_ROOT . '/societe/societe.php', img_object('', 'company') . ' ' . $langs->trans("ThirdParties"), 'soc', 'socname');
    }
    if ($conf->societe->enabled && $conf->global->MAIN_SEARCHFORM_CONTACT && $user->rights->societe->lire) {
        $langs->load("companies");
        $searchform .= printSearchForm(DOL_URL_ROOT . '/contact/index.php', DOL_URL_ROOT . '/contact/index.php', img_object('', 'contact') . ' ' . $langs->trans("Contacts"), 'contact', 'contactname');
    }
    if (($conf->product->enabled && $user->rights->produit->lire || $conf->service->enabled && $user->rights->service->lire) && $conf->global->MAIN_SEARCHFORM_PRODUITSERVICE) {
        $langs->load("products");
        $searchform .= printSearchForm(DOL_URL_ROOT . '/product/liste.php', DOL_URL_ROOT . '/product/liste.php', img_object('', 'product') . ' ' . $langs->trans("Products") . "/" . $langs->trans("Services"), 'products', 'sall');
    }
    if ($conf->adherent->enabled && $conf->global->MAIN_SEARCHFORM_ADHERENT && $user->rights->adherent->lire) {
        $langs->load("members");
        $searchform .= printSearchForm(DOL_URL_ROOT . '/adherents/liste.php', DOL_URL_ROOT . '/adherents/liste.php', img_object('', 'user') . ' ' . $langs->trans("Members"), 'member', 'sall');
    }
    // Search form hook for external modules
    if (!empty($object->hooks)) {
        $searchform .= '<!-- Begin search form hook area -->' . "\n";
        foreach ($object->hooks as $hook) {
            if ($hook['type'] == 'searchform' && !empty($hook['modules'])) {
                foreach ($hook['modules'] as $module) {
                    if (method_exists($module, 'printSearchForm')) {
                        $searchform .= $module->printSearchForm();
                    }
                }
            }
        }
        $searchform .= "\n" . '<!-- End of search form hook area -->' . "\n";
    }
    // Define $bookmarks
    if ($conf->bookmark->enabled && $user->rights->bookmark->lire) {
        include_once DOL_DOCUMENT_ROOT . '/bookmarks/bookmarks.lib.php';
        $langs->load("bookmarks");
        $bookmarks = printBookmarksList($db, $langs);
    }
    $left_menu = isset($conf->browser->phone) ? $conf->smart_menu : $conf->top_menu;
    if (GETPOST('menu')) {
        $left_menu = GETPOST('menu');
    }
    // menu=eldy_backoffice.php
    // Load the left menu manager
    $result = dol_include_once("/includes/menus/standard/" . $left_menu);
    if (!$result) {
        $left_menu = 'eldy_backoffice.php';
        include_once DOL_DOCUMENT_ROOT . "/includes/menus/standard/" . $left_menu;
    }
    // Left column
    print '<!-- Begin left area - menu ' . $left_menu . ' -->' . "\n";
    print '<div class="vmenu">' . "\n";
    $menuleft = new MenuLeft($db, $menu_array_before, $menu_array_after);
    $menuleft->showmenu();
    // output menu_array and menu found in database
    // Show other forms
    if ($searchform) {
        print "\n";
        print "<!-- Begin SearchForm -->\n";
        print '<div id="blockvmenusearch" class="blockvmenusearch">' . "\n";
        print $searchform;
        print '</div>' . "\n";
        print "<!-- End SearchForm -->\n";
    }
    // More search form
    if ($moresearchform) {
        print $moresearchform;
    }
    // Bookmarks
    if ($bookmarks) {
        print "\n";
        print "<!-- Begin Bookmarks -->\n";
        print '<div id="blockvmenubookmarks" class="blockvmenubookmarks">' . "\n";
        print $bookmarks;
        print '</div>' . "\n";
        print "<!-- End Bookmarks -->\n";
    }
    // Link to Dolibarr wiki pages
    if ($helppagename && empty($conf->global->MAIN_HELP_DISABLELINK)) {
        $langs->load("help");
        $helpbaseurl = '';
        $helppage = '';
        $mode = '';
        // Get helpbaseurl, helppage and mode from helppagename and langs
        $arrayres = getHelpParamFor($helppagename, $langs);
        $helpbaseurl = $arrayres['helpbaseurl'];
        $helppage = $arrayres['helppage'];
        $mode = $arrayres['mode'];
        // Link to help pages
        if ($helpbaseurl && $helppage) {
            print '<div id="blockvmenuhelp" class="blockvmenuhelp">';
            print '<a class="help" target="_blank" title="' . $langs->trans($mode == 'wiki' ? 'GoToWikiHelpPage' : 'GoToHelpPage');
            if ($mode == 'wiki') {
                print ' - ' . $langs->trans("PageWiki") . ' &quot;' . dol_escape_htmltag(strtr($helppage, '_', ' ')) . '&quot;';
            }
            print '" href="';
            print sprintf($helpbaseurl, urlencode(html_entity_decode($helppage)));
            print '">';
            print img_picto('', DOL_URL_ROOT . '/theme/common/helpdoc.png', '', 1) . ' ';
            print $langs->trans($mode == 'wiki' ? 'OnlineHelp' : 'Help');
            //if ($mode == 'wiki') print ' ('.dol_trunc(strtr($helppage,'_',' '),8).')';
            print '</a>';
            print '</div>';
        }
    }
    // Link to bugtrack
    if (!empty($conf->global->MAIN_SHOW_BUGTRACK_LINK)) {
        $bugbaseurl = 'http://savannah.nongnu.org/bugs/?';
        $bugbaseurl .= 'func=additem&group=dolibarr&privacy=1&';
        $bugbaseurl .= "&details=";
        $bugbaseurl .= urlencode("\n\n\n\n\n-------------\n");
        $bugbaseurl .= urlencode($langs->trans("Version") . ": " . DOL_VERSION . "\n");
        $bugbaseurl .= urlencode($langs->trans("Server") . ": " . $_SERVER["SERVER_SOFTWARE"] . "\n");
        $bugbaseurl .= urlencode($langs->trans("Url") . ": " . $_SERVER["REQUEST_URI"] . "\n");
        print '<div class="help"><a class="help" target="_blank" href="' . $bugbaseurl . '">' . $langs->trans("FindBug") . '</a></div>';
    }
    print "\n";
    print "</div>\n";
    print "<!-- End left vertical menu -->\n";
    print "\n";
    // Left block hook for external modules
    if (!empty($object->hooks)) {
        print '<!-- Begin left block hook area -->' . "\n";
        foreach ($object->hooks as $hook) {
            if ($hook['type'] == 'leftblock' && !empty($hook['modules'])) {
                foreach ($hook['modules'] as $module) {
                    if (method_exists($module, 'printLeftBlock')) {
                        $module->printLeftBlock();
                    }
                }
            }
        }
        print "\n" . '<!-- End of left block hook area -->' . "\n";
    }
    if ($conf->use_javascript_ajax && $conf->global->MAIN_MENU_USE_JQUERY_LAYOUT) {
        print '</div> <!-- End left layout -->' . "\n";
    } else {
        print '</td>';
    }
    print "\n";
    print '<!-- End of left area -->' . "\n";
    print "\n";
    print '<!-- Begin right area -->' . "\n";
    if (empty($leftmenuwithoutmainarea)) {
        main_area($title);
    }
}