123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- <?php
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * Header for the navigation panel
- *
- * @package PhpMyAdmin-Navigation
- */
- if (! defined('PHPMYADMIN')) {
- exit;
- }
- /**
- * This class renders the logo, links, server selection and recent tables,
- * which are then displayed at the top of the naviagtion panel
- *
- * @package PhpMyAdmin-Navigation
- */
- class PMA_NavigationHeader
- {
- /**
- * Renders the navigation
- *
- * @return void
- */
- public function getDisplay()
- {
- if (empty($GLOBALS['url_query'])) {
- $GLOBALS['url_query'] = PMA_generate_common_url();
- }
- $link_url = PMA_generate_common_url(
- array(
- 'ajax_request' => true
- )
- );
- $class = ' class="list_container';
- if ($GLOBALS['cfg']['NavigationTreePointerEnable']) {
- $class .= ' highlight';
- }
- $class .= '"';
- $buffer = '<div id="pma_navigation">';
- $buffer .= '<div id="pma_navigation_resizer"></div>';
- $buffer .= '<div id="pma_navigation_collapser"></div>';
- $buffer .= '<div id="pma_navigation_content">';
- $buffer .= '<div id="pma_navigation_header">';
- $buffer .= sprintf(
- '<a class="hide navigation_url" href="navigation.php%s"></a>',
- $link_url
- );
- $buffer .= $this->_logo();
- $buffer .= $this->_links();
- $buffer .= $this->_serverChoice();
- $buffer .= $this->_recent();
- $buffer .= PMA_Util::getImage(
- 'ajax_clock_small.gif',
- __('Loading'),
- array('style' => 'visibility: hidden;', 'class' => 'throbber')
- );
- $buffer .= '</div>'; // pma_navigation_header
- $buffer .= '<div id="pma_navigation_tree"' . $class . '>';
- return $buffer;
- }
- /**
- * Create the code for displaying the phpMyAdmin
- * logo based on configuration settings
- *
- * @return string HTML code for the logo
- */
- private function _logo()
- {
- $retval = '<!-- LOGO START -->';
- // display Logo, depending on $GLOBALS['cfg']['NavigationDisplayLogo']
- if ($GLOBALS['cfg']['NavigationDisplayLogo']) {
- $logo = 'phpMyAdmin';
- if (@file_exists($GLOBALS['pmaThemeImage'] . 'logo_left.png')) {
- $logo = '<img src="' . $GLOBALS['pmaThemeImage'] . 'logo_left.png" '
- . 'alt="' . $logo . '" id="imgpmalogo" />';
- } elseif (@file_exists($GLOBALS['pmaThemeImage'] . 'pma_logo2.png')) {
- $logo = '<img src="' . $GLOBALS['pmaThemeImage'] . 'pma_logo2.png" '
- . 'alt="' . $logo . '" id="imgpmalogo" />';
- }
- $retval .= '<div id="pmalogo">';
- if ($GLOBALS['cfg']['NavigationLogoLink']) {
- $logo_link = trim(htmlspecialchars($GLOBALS['cfg']['NavigationLogoLink']));
- $parsed = parse_url($logo_link);
- /* Allow only links with http/https */
- if (! isset($parsed['scheme']) || ! in_array(strtolower($parsed['scheme']), array('http', 'https'))) {
- $logo_link = 'index.php';
- }
- $retval .= ' <a href="' . $logo_link;
- switch ($GLOBALS['cfg']['NavigationLogoLinkWindow']) {
- case 'new':
- $retval .= '" target="_blank"';
- break;
- case 'main':
- // do not add our parameters for an external link
- if (substr(strtolower($GLOBALS['cfg']['NavigationLogoLink']), 0, 4) !== '://') {
- $retval .= '?' . $GLOBALS['url_query'] . '"';
- } else {
- $retval .= '" target="_blank"';
- }
- }
- $retval .= '>';
- $retval .= $logo;
- $retval .= '</a>';
- } else {
- $retval .= $logo;
- }
- $retval .= '</div>';
- }
- $retval .= '<!-- LOGO END -->';
- return $retval;
- }
- /**
- * Renders a single link for the top of the navigation panel
- *
- * @param string $link The url for the link
- * @param bool $showText Whether to show the text or to
- * only use it for title attributes
- * @param string $text The text to display and use for title attributes
- * @param bool $showIcon Whether to show the icon
- * @param string $icon The filename of the icon to show
- * @param string $linkId Value to use for the ID attribute
- * @param string $disableAjax Whether to disable ajax page loading for this link
- * @param string $linkTarget The name of the target frame for the link
- *
- * @return string HTML code for one link
- */
- private function _getLink(
- $link,
- $showText,
- $text,
- $showIcon,
- $icon,
- $linkId = '',
- $disableAjax = false,
- $linkTarget = ''
- ) {
- $retval = '<a href="' . $link . '"';
- if (! empty($linkId)) {
- $retval .= ' id="' . $linkId . '"';
- }
- if (! empty($linkTarget)) {
- $retval .= ' target="' . $linkTarget . '"';
- }
- if ($disableAjax) {
- $retval .= ' class="disableAjax"';
- }
- $retval .= ' title="' . $text . '">';
- if ($showIcon) {
- $retval .= PMA_Util::getImage(
- $icon,
- $text
- );
- }
- if ($showText) {
- $retval .= $text;
- }
- $retval .= '</a>';
- if ($showText) {
- $retval .= '<br />';
- }
- return $retval;
- }
- /**
- * Creates the code for displaying the links
- * at the top of the navigation frame
- *
- * @return string HTML code for the links
- */
- private function _links()
- {
- // always iconic
- $showIcon = true;
- $showText = false;
- $retval = '<!-- LINKS START -->';
- $retval .= '<div id="leftframelinks">';
- $retval .= $this->_getLink(
- 'index.php?' . PMA_generate_common_url(),
- $showText,
- __('Home'),
- $showIcon,
- 'b_home.png'
- );
- // if we have chosen server
- if ($GLOBALS['server'] != 0) {
- // Logout for advanced authentication
- if ($GLOBALS['cfg']['Server']['auth_type'] != 'config') {
- $link = 'index.php?' . $GLOBALS['url_query'];
- $link .= '&old_usr=' . urlencode($GLOBALS['PHP_AUTH_USER']);
- $retval .= $this->_getLink(
- $link,
- $showText,
- __('Log out'),
- $showIcon,
- 's_loggoff.png',
- '',
- true
- );
- }
- $link = 'querywindow.php?';
- $link .= PMA_generate_common_url($GLOBALS['db'], $GLOBALS['table']);
- $link .= '&no_js=true';
- $retval .= $this->_getLink(
- $link,
- $showText,
- __('Query window'),
- $showIcon,
- 'b_selboard.png',
- 'pma_open_querywindow',
- true
- );
- }
- $retval .= $this->_getLink(
- PMA_Util::getDocuLink('index'),
- $showText,
- __('phpMyAdmin documentation'),
- $showIcon,
- 'b_docs.png',
- '',
- false,
- 'documentation'
- );
- if ($showIcon) {
- $retval .= PMA_Util::showMySQLDocu('', '', true);
- }
- if ($showText) {
- // PMA_showMySQLDocu always spits out an icon,
- // we just replace it with some perl regexp.
- $link = preg_replace(
- '/<img[^>]+>/i',
- __('Documentation'),
- PMA_Util::showMySQLDocu('', '', true)
- );
- $retval .= $link;
- $retval .= '<br />';
- }
- $retval .= $this->_getLink(
- '#',
- $showText,
- __('Reload navigation frame'),
- $showIcon,
- 's_reload.png',
- 'pma_navigation_reload'
- );
- $retval .= '</div>';
- $retval .= '<!-- LINKS ENDS -->';
- return $retval;
- }
- /**
- * Displays the MySQL servers choice form
- *
- * @return string HTML code for the MySQL servers choice
- */
- private function _serverChoice()
- {
- $retval = '';
- if ($GLOBALS['cfg']['NavigationDisplayServers']
- && count($GLOBALS['cfg']['Servers']) > 1
- ) {
- include_once './libraries/select_server.lib.php';
- $retval .= '<!-- SERVER CHOICE START -->';
- $retval .= '<div id="serverChoice">';
- $retval .= PMA_selectServer(true, true);
- $retval .= '</div>';
- $retval .= '<!-- SERVER CHOICE END -->';
- }
- return $retval;
- }
- /**
- * Displays a drop-down choice of most recently used tables
- *
- * @return string HTML code for the Recent tables
- */
- private function _recent()
- {
- $retval = '';
- // display recently used tables
- if ($GLOBALS['cfg']['NumRecentTables'] > 0) {
- $retval .= '<!-- RECENT START -->';
- $retval .= '<div id="recentTableList">';
- $retval .= '<form method="post" ';
- $retval .= 'action="' . $GLOBALS['cfg']['DefaultTabTable'] . '">';
- $retval .= PMA_generate_common_hidden_inputs(
- array(
- 'db' => '',
- 'table' => '',
- 'server' => $GLOBALS['server']
- )
- );
- $retval .= PMA_RecentTable::getInstance()->getHtmlSelect();
- $retval .= '</form>';
- $retval .= '</div>';
- $retval .= '<!-- RECENT END -->';
- }
- return $retval;
- }
- }
- ?>
|