function gen_reseller_menu(&$tpl) { global $sql, $cfg; $tpl->assign(array('TR_MENU_GENERAL_INFORMATION' => tr('General information'), 'TR_MENU_CHANGE_PASSWORD' => tr('Change password'), 'TR_MENU_CHANGE_PERSONAL_DATA' => tr('Change personal data'), 'TR_MENU_HOSTING_PLANS' => tr('Manage hosting plans'), 'TR_MENU_ADD_HOSTING' => tr('Add hosting plan'), 'TR_MENU_MANAGE_USERS' => tr('Manage users'), 'TR_MENU_ADD_USER' => tr('Add user'), 'TR_MENU_E_MAIL_SETUP' => tr('Email setup'), 'TR_MENU_CIRCULAR' => tr('Email marketing'), 'TR_MENU_MANAGE_DOMAINS' => tr('Manage domains'), 'TR_MENU_DOMAIN_ALIAS' => tr('Domain alias'), 'TR_MENU_SUBDOMAINS' => tr('Subdomains'), 'TR_MENU_DOMAIN_STATISTICS' => tr('Domain statistics'), 'TR_MENU_QUESTIONS_AND_COMMENTS' => tr('Support system'), 'TR_MENU_NEW_TICKET' => tr('New ticket'), 'TR_MENU_LAYOUT_SETTINGS' => tr('Layout settings'), 'TR_MENU_LOGOUT' => tr('Logout'), 'TR_MENU_OVERVIEW' => tr('Overview'), 'TR_MENU_LANGUAGE' => tr('Language'), 'SUPPORT_SYSTEM_PATH' => $cfg['VHCS_SUPPORT_SYSTEM_PATH'], 'SUPPORT_SYSTEM_TARGET' => $cfg['VHCS_SUPPORT_SYSTEM_TARGET'], 'TR_MENU_ORDERS' => tr('Manage Orders'), 'TR_MENU_ORDER_SETTINGS' => tr('Order settings'), 'TR_MENU_ORDER_EMAIL' => tr('Order email setup'), 'TR_MENU_LOSTPW_EMAIL' => tr('Lostpw email setup'))); $query = <<<SQL_QUERY select * from custom_menus where menu_level = 'reseller' or menu_level = 'all' SQL_QUERY; $rs = exec_query($sql, $query, array()); if ($rs->RecordCount() == 0) { $tpl->assign('CUSTOM_BUTTONS', ''); } else { global $i; $i = 100; while (!$rs->EOF) { $menu_name = $rs->fields['menu_name']; $menu_link = get_menu_vars($rs->fields['menu_link']); $menu_target = $rs->fields['menu_target']; if ($menu_target === '') { $menu_target = ""; } else { $menu_target = "target=\"" . $menu_target . "\""; } $tpl->assign(array('BUTTON_LINK' => $menu_link, 'BUTTON_NAME' => $menu_name, 'BUTTON_TARGET' => $menu_target, 'BUTTON_ID' => $i)); $tpl->parse('CUSTOM_BUTTONS', '.custom_buttons'); $rs->MoveNext(); $i++; } // end while } // end else $support_system = $cfg['VHCS_SUPPORT_SYSTEM']; if ($support_system == 'no') { $tpl->assign('SUPPORT_SYSTEM', ''); } }
function gen_client_menu(&$tpl) { global $sql, $cfg; $tpl->assign(array('TR_MENU_GENERAL_INFORMATION' => tr('General information'), 'TR_MENU_CHANGE_PASSWORD' => tr('Change password'), 'TR_MENU_CHANGE_PERSONAL_DATA' => tr('Change personal data'), 'TR_MENU_MANAGE_DOMAINS' => tr('Manage domains'), 'TR_MENU_ADD_SUBDOMAIN' => tr('Add subdomain'), 'TR_MENU_MANAGE_USERS' => tr('Email and FTP accounts'), 'TR_MENU_ADD_MAIL_USER' => tr('Add mail user'), 'TR_MENU_ADD_FTP_USER' => tr('Add FTP user'), 'TR_MENU_MANAGE_SQL' => tr('Manage SQL'), 'TR_MENU_ERROR_PAGES' => tr('Error pages'), 'TR_MENU_ADD_SQL_DATABASE' => tr('Add SQL database'), 'TR_MENU_DOMAIN_STATISTICS' => tr('Domain statistics'), 'TR_MENU_DAILY_BACKUP' => tr('Daily backup'), 'TR_MENU_QUESTIONS_AND_COMMENTS' => tr('Support system'), 'TR_MENU_NEW_TICKET' => tr('New ticket'), 'TR_MENU_LOGOUT' => tr('Logout'), 'PHP_MY_ADMIN' => tr('PhpMyAdmin'), 'TR_WEBMAIL' => tr('Webmail'), 'TR_FILEMANAGER' => tr('Filemanager'), 'TR_MENU_WEBTOOLS' => tr('Webtools'), 'TR_HTACCESS' => tr('Protected areas'), 'TR_AWSTATS' => tr('Webstatistics'), 'TR_MENU_OVERVIEW' => tr('Overview'), 'TR_MENU_EMAIL_ACCOUNTS' => tr('Email Accounts'), 'TR_MENU_FTP_ACCOUNTS' => tr('FTP Accounts'), 'TR_MENU_LANGUAGE' => tr('Language'), 'TR_MENU_CATCH_ALL_MAIL' => tr('Catch all'), 'TR_MENU_ADD_ALIAS' => tr('Add alias'), 'TR_MENU_UPDATE_HP' => tr('Update hosting packet'), 'SUPPORT_SYSTEM_PATH' => $cfg['VHCS_SUPPORT_SYSTEM_PATH'], 'SUPPORT_SYSTEM_TARGET' => $cfg['VHCS_SUPPORT_SYSTEM_TARGET'], 'WEBMAIL_PATH' => $cfg['WEBMAIL_PATH'], 'WEBMAIL_TARGET' => $cfg['WEBMAIL_TARGET'], 'PMA_PATH' => $cfg['PMA_PATH'], 'PMA_TARGET' => $cfg['PMA_TARGET'], 'FILEMANAGER_PATH' => $cfg['FILEMANAGER_PATH'], 'FILEMANAGER_TARGET' => $cfg['FILEMANAGER_TARGET'])); $query = <<<SQL_QUERY select * from custom_menus where menu_level = 'user' or menu_level = 'all' SQL_QUERY; $rs = exec_query($sql, $query, array()); if ($rs->RecordCount() == 0) { $tpl->assign('CUSTOM_BUTTONS', ''); } else { global $i; $i = 100; while (!$rs->EOF) { $menu_name = $rs->fields['menu_name']; $menu_link = get_menu_vars($rs->fields['menu_link']); $menu_target = $rs->fields['menu_target']; if ($menu_target === '') { $menu_target = ""; } else { $menu_target = "target=\"" . $menu_target . "\""; } $tpl->assign(array('BUTTON_LINK' => $menu_link, 'BUTTON_NAME' => $menu_name, 'BUTTON_TARGET' => $menu_target, 'BUTTON_ID' => $i)); $tpl->parse('CUSTOM_BUTTONS', '.custom_buttons'); $rs->MoveNext(); $i++; } // end while } // end else $support_system = $cfg['VHCS_SUPPORT_SYSTEM']; if ($support_system == 'no') { $tpl->assign('SUPPORT_SYSTEM', ''); } }
/** * Helper function to generate navigation * * @throws iMSCP_Exception * @param iMSCP_pTemplate $tpl iMSCP_pTemplate instance * @return void */ function generateNavigation($tpl) { iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onBeforeGenerateNavigation, array('templateEngine' => $tpl)); /** @var $cfg iMSCP_Config_Handler_File */ $cfg = iMSCP_Registry::get('config'); $tpl->define_dynamic(array('main_menu' => 'layout', 'main_menu_block' => 'main_menu', 'menu' => 'layout', 'left_menu_block' => 'menu', 'breadcrumbs' => 'layout', 'breadcrumb_block' => 'breadcrumbs')); generateLoggedFrom($tpl); /** @var $navigation Zend_Navigation */ $navigation = iMSCP_Registry::get('navigation'); // Dynamic links (only at customer level) if ($_SESSION['user_type'] == 'user') { $domainProperties = get_domain_default_props($_SESSION['user_id']); $tpl->assign('WEBSTATS_PATH', 'http://' . decode_idna($domainProperties['domain_name']) . '/stats'); if (customerHasFeature('mail')) { $webmails = getWebmailList(); if (!empty($webmails)) { $page1 = $navigation->findOneBy('class', 'email'); $page2 = $navigation->findOneBy('class', 'webtools'); foreach ($webmails as $webmail) { $page = array('label' => tr('%s webmail', $webmail), 'uri' => '/' . ($webmail == 'Roundcube' ? 'webmail' : strtolower($webmail)), 'target' => '_blank'); $page1->addPage($page); $page2->addPage($page); } } } } // Dynamic links (All levels) $tpl->assign(array('SUPPORT_SYSTEM_PATH' => 'ticket_system.php', 'SUPPORT_SYSTEM_TARGET' => '_self')); // Remove support system page if feature is globally disabled if (!$cfg['IMSCP_SUPPORT_SYSTEM']) { $navigation->removePage($navigation->findOneBy('class', 'support')); } // Custom menus if (null != ($customMenus = getCustomMenus($_SESSION['user_type']))) { foreach ($customMenus as $customMenu) { $navigation->addPage(array('order' => $customMenu['menu_order'], 'label' => tohtml($customMenu['menu_name']), 'uri' => get_menu_vars($customMenu['menu_link']), 'target' => !empty($customMenu['menu_target']) ? tohtml($customMenu['menu_target']) : '_self', 'class' => 'custom_link')); } } /** @var $activePage Zend_Navigation_Page_Uri */ foreach ($navigation->findAllBy('uri', $_SERVER['SCRIPT_NAME']) as $activePage) { $activePage->setActive(); } if (!empty($_GET)) { $query = '?' . http_build_query($_GET); } else { $query = ''; } /** @var $page Zend_Navigation_Page */ foreach ($navigation as $page) { if (null !== ($callbacks = $page->get('privilege_callback'))) { $callbacks = isset($callbacks['name']) ? array($callbacks) : $callbacks; foreach ($callbacks as $callback) { if (is_callable($callback['name'])) { if (!call_user_func_array($callback['name'], isset($callback['param']) ? (array) $callback['param'] : array())) { continue 2; } } else { $name = is_array($callback['name']) ? $callback['name'][1] : $callback['name']; throw new iMSCP_Exception(sprintf('Privileges callback is not callable: %s', $name)); } } } if ($page->isVisible()) { $tpl->assign(array('HREF' => $page->getHref(), 'CLASS' => $page->getClass() . ($_SESSION['show_main_menu_labels'] ? ' show_labels' : ''), 'IS_ACTIVE_CLASS' => $page->isActive(true) ? 'active' : 'dummy', 'TARGET' => $page->getTarget() ? tohtml($page->getTarget()) : '_self', 'MAIN_MENU_LABEL_TOOLTIP' => tohtml($page->getLabel(), 'htmlAttr'), 'MAIN_MENU_LABEL' => $_SESSION['show_main_menu_labels'] ? tohtml($page->getLabel()) : '')); // Add page to main menu $tpl->parse('MAIN_MENU_BLOCK', '.main_menu_block'); if ($page->isActive(true)) { $tpl->assign(array('TR_SECTION_TITLE' => tohtml($page->getLabel()), 'SECTION_TITLE_CLASS' => $page->getClass())); // Add page to breadcrumb $tpl->assign('BREADCRUMB_LABEL', tohtml($page->getLabel())); $tpl->parse('BREADCRUMB_BLOCK', '.breadcrumb_block'); if ($page->hasPages()) { $iterator = new RecursiveIteratorIterator($page, RecursiveIteratorIterator::SELF_FIRST); /** @var $subpage Zend_Navigation_Page_Uri */ foreach ($iterator as $subpage) { if (null !== ($callbacks = $subpage->get('privilege_callback'))) { $callbacks = isset($callbacks['name']) ? array($callbacks) : $callbacks; foreach ($callbacks as $callback) { if (is_callable($callback['name'])) { if (!call_user_func_array($callback['name'], isset($callback['param']) ? (array) $callback['param'] : array())) { continue 2; } } else { $name = is_array($callback['name']) ? $callback['name'][1] : $callback['name']; throw new iMSCP_Exception(sprintf('Privileges callback is not callable: %s', $name)); } } } $tpl->assign(array('HREF' => $subpage->getHref(), 'IS_ACTIVE_CLASS' => $subpage->isActive(true) ? 'active' : 'dummy', 'LEFT_MENU_LABEL' => tohtml($subpage->getLabel()), 'TARGET' => $subpage->getTarget() ? $subpage->getTarget() : '_self')); if ($subpage->isVisible()) { // Add subpage to left menu $tpl->parse('LEFT_MENU_BLOCK', '.left_menu_block'); } if ($subpage->isActive(true)) { $tpl->assign(array('TR_TITLE' => $subpage->get('dynamic_title') ? $subpage->get('dynamic_title') : tohtml($subpage->getLabel()), 'TITLE_CLASS' => $subpage->get('title_class'))); if (!$subpage->hasPages()) { $tpl->assign('HREF', $subpage->getHref() . "{$query}"); } // ad subpage to breadcrumbs if (null != ($label = $subpage->get('dynamic_title'))) { $tpl->assign('MENU_LABEL_TOOLTIP', tohtml($label)); } else { $tpl->assign('BREADCRUMB_LABEL', tohtml($subpage->getLabel())); } $tpl->parse('BREADCRUMB_BLOCK', '.breadcrumb_block'); } } $tpl->parse('MENU', 'menu'); } else { $tpl->assign('MENU', ''); } } } } $tpl->parse('MAIN_MENU', 'main_menu'); $tpl->parse('BREADCRUMBS', 'breadcrumbs'); $tpl->parse('MENU', 'menu'); // Static variables $tpl->assign(array('TR_MENU_LOGOUT' => tr('Logout'), 'VERSION' => isset($cfg['Version']) && $cfg['Version'] != '' ? $cfg['Version'] : tohtml(tr('Unknown')), 'BUILDDATE' => isset($cfg['BuildDate']) && $cfg['BuildDate'] != '' ? $cfg['BuildDate'] : tohtml(tr('Unavailable')), 'CODENAME' => isset($cfg['CodeName']) && $cfg['CodeName'] != '' ? $cfg['CodeName'] : tohtml(tr('Unknown')))); iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onAfterGenerateNavigation, array('templateEngine' => $tpl)); }