[ XREF Home ] [ Index ]

PHP Cross Reference of WordPress Trunk

Provided by Yoast

title

Body

[close]

/wp-admin/ -> menu-header.php (source)

   1  <?php
   2  /**
   3   * Displays Administration Menu.
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   */
   8  
   9  /**
  10   * The current page.
  11   *
  12   * @global string $self
  13   * @name $self
  14   * @var string
  15   */
  16  $self = preg_replace('|^.*/wp-admin/network/|i', '', $_SERVER['PHP_SELF']);
  17  $self = preg_replace('|^.*/wp-admin/|i', '', $self);
  18  $self = preg_replace('|^.*/plugins/|i', '', $self);
  19  $self = preg_replace('|^.*/mu-plugins/|i', '', $self);
  20  
  21  global $menu, $submenu, $parent_file; //For when admin-header is included from within a function.
  22  $parent_file = apply_filters("parent_file", $parent_file); // For plugins to move submenu tabs around.
  23  
  24  get_admin_page_parent();
  25  
  26  /**
  27   * Display menu.
  28   *
  29   * @access private
  30   * @since 2.7.0
  31   *
  32   * @param array $menu
  33   * @param array $submenu
  34   * @param bool $submenu_as_parent
  35   */
  36  function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
  37      global $self, $parent_file, $submenu_file, $plugin_page, $pagenow, $typenow;
  38  
  39      $menu_setting_increment = -1;
  40      $user_settings = get_all_user_settings();
  41  
  42      $first = true;
  43      // 0 = name, 1 = capability, 2 = file, 3 = class, 4 = id, 5 = icon src
  44      foreach ( $menu as $key => $item ) {
  45          $admin_is_parent = false;
  46          $class = array();
  47          if ( $first ) {
  48              $class[] = 'wp-first-item';
  49              $first = false;
  50          }
  51          if ( !empty($submenu[$item[2]]) ) {
  52              $class[] = 'wp-has-submenu';
  53              $menu_setting_increment++;
  54          }
  55  
  56          if ( ( $parent_file && $item[2] == $parent_file ) || ( empty($typenow) && $self == $item[2] ) ) {
  57              if ( !empty($submenu[$item[2]]) )
  58                  $class[] = 'wp-has-current-submenu wp-menu-open';
  59              else
  60                  $class[] = 'current';
  61          } elseif ( ! empty( $submenu[ $item[2] ] ) && isset( $user_settings[ 'm' . $menu_setting_increment ] ) && 'o' == $user_settings[ 'm' . $menu_setting_increment ] ) {
  62                  $class[] = 'wp-menu-open';
  63          }
  64  
  65          if ( ! empty($item[4]) )
  66              $class[] = $item[4];
  67  
  68          $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
  69          $tabindex = ' tabindex="1"';
  70          $id = ! empty($item[5]) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : '';
  71          $img = '';
  72          if ( ! empty($item[6]) ) {
  73              if ( 'div' === $item[6] )
  74                  $img = '<br />';
  75              else
  76                  $img = '<img src="' . $item[6] . '" alt="" />';
  77          }
  78          $toggle = '<div class="wp-menu-toggle"><br /></div>';
  79          $arrow = '<div class="wp-menu-arrow"><div></div></div>';
  80  
  81          $title = wptexturize($item[0]);
  82  
  83          echo "\n\t<li$class$id>";
  84  
  85          if ( false !== strpos( $class, 'wp-menu-separator' ) ) {
  86              echo '<div class="separator"></div>';
  87          } elseif ( $submenu_as_parent && !empty($submenu[$item[2]]) ) {
  88              $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
  89              $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
  90              $menu_file = $submenu[$item[2]][0][2];
  91              if ( false !== $pos = strpos($menu_file, '?') )
  92                  $menu_file = substr($menu_file, 0, $pos);
  93              if ( ( ('index.php' != $submenu[$item[2]][0][2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") ) || !empty($menu_hook)) {
  94                  $admin_is_parent = true;
  95                  echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu[$item[2]][0][2]}'>$img</a></div>$arrow$toggle<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class$tabindex>$title</a>";
  96              } else {
  97                  echo "\n\t<div class='wp-menu-image'><a href='{$submenu[$item[2]][0][2]}'>$img</a></div>$arrow$toggle<a href='{$submenu[$item[2]][0][2]}'$class$tabindex>$title</a>";
  98              }
  99          } else if ( !empty($item[2]) && current_user_can($item[1]) ) {
 100              $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
 101              $menu_file = $item[2];
 102              if ( false !== $pos = strpos($menu_file, '?') )
 103                  $menu_file = substr($menu_file, 0, $pos);
 104              if ( ('index.php' != $item[2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") || !empty($menu_hook) ) {
 105                  $admin_is_parent = true;
 106                  echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$arrow$toggle<a href='admin.php?page={$item[2]}'$class$tabindex>{$item[0]}</a>";
 107              } else {
 108                  echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>$img</a></div>$arrow$toggle<a href='{$item[2]}'$class$tabindex>{$item[0]}</a>";
 109              }
 110          }
 111  
 112          if ( !empty($submenu[$item[2]]) ) {
 113              echo "\n\t<div class='wp-submenu'><div class='wp-submenu-wrap'>";
 114              echo "<div class='wp-submenu-head'>{$item[0]}</div><ul>";
 115              $first = true;
 116              foreach ( $submenu[$item[2]] as $sub_key => $sub_item ) {
 117                  if ( !current_user_can($sub_item[1]) )
 118                      continue;
 119  
 120                  $class = array();
 121                  if ( $first ) {
 122                      $class[] = 'wp-first-item';
 123                      $first = false;
 124                  }
 125  
 126                  $menu_file = $item[2];
 127  
 128                  if ( false !== $pos = strpos($menu_file, '?') )
 129                      $menu_file = substr($menu_file, 0, $pos);
 130  
 131                  // Handle current for post_type=post|page|foo pages, which won't match $self.
 132                  if ( !empty($typenow) )
 133                      $self_type = $self . '?post_type=' . $typenow;
 134                  else
 135                      $self_type = 'nothing';
 136  
 137                  if ( isset($submenu_file) ) {
 138                      if ( $submenu_file == $sub_item[2] )
 139                          $class[] = 'current';
 140                  // If plugin_page is set the parent must either match the current page or not physically exist.
 141                  // This allows plugin pages with the same hook to exist under different parents.
 142                  } else if ( (isset($plugin_page) && $plugin_page == $sub_item[2] && (!file_exists($menu_file) || ($item[2] == $self) || ($item[2] == $self_type))) || (!isset($plugin_page) && $self == $sub_item[2]) ) {
 143                      $class[] = 'current';
 144                  }
 145  
 146                  $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
 147  
 148                  $menu_hook = get_plugin_page_hook($sub_item[2], $item[2]);
 149                  $sub_file = $sub_item[2];
 150                  if ( false !== $pos = strpos($sub_file, '?') )
 151                      $sub_file = substr($sub_file, 0, $pos);
 152  
 153                  $title = wptexturize($sub_item[0]);
 154  
 155                  if ( ( ('index.php' != $sub_item[2]) && file_exists(WP_PLUGIN_DIR . "/$sub_file") ) || ! empty($menu_hook) ) {
 156                      // If admin.php is the current page or if the parent exists as a file in the plugins or admin dir
 157                      if ( (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/$menu_file") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}")) || file_exists($menu_file) )
 158                          $sub_item_url = add_query_arg( array('page' => $sub_item[2]), $item[2] );
 159                      else
 160                          $sub_item_url = add_query_arg( array('page' => $sub_item[2]), 'admin.php' );
 161                      $sub_item_url = esc_url($sub_item_url);
 162                      echo "<li$class><a href='$sub_item_url'$class$tabindex>$title</a></li>";
 163                  } else {
 164                      echo "<li$class><a href='{$sub_item[2]}'$class$tabindex>$title</a></li>";
 165                  }
 166              }
 167              echo "</ul></div></div>";
 168          }
 169          echo "</li>";
 170      }
 171  
 172      echo '<li id="collapse-menu"><div id="collapse-button"><div></div></div>';
 173      echo '<span>' . esc_html__( 'Collapse menu' ) . '</span>';
 174      echo '</li>';
 175  }
 176  
 177  ?>
 178  
 179  <div id="adminmenuback"></div>
 180  <div id="adminmenuwrap">
 181  <div id="adminmenushadow"></div>
 182  <ul id="adminmenu">
 183  
 184  <?php
 185  
 186  _wp_menu_output( $menu, $submenu );
 187  do_action( 'adminmenu' );
 188  
 189  ?>
 190  </ul>
 191  </div>


Generated: Wed Jun 1 08:30:02 2011 Cross-referenced by PHPXref 0.7
Provided by Yoast and awesome WordPress Hosting