[ Index ]

PHP Cross Reference of WordPress

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      $first = true;
  40      // 0 = name, 1 = capability, 2 = file, 3 = class, 4 = id, 5 = icon src
  41      foreach ( $menu as $key => $item ) {
  42          $admin_is_parent = false;
  43          $class = array();
  44          $aria_attributes = 'tabindex="1"';
  45  
  46          if ( $first ) {
  47              $class[] = 'wp-first-item';
  48              $first = false;
  49          }
  50  
  51          $submenu_items = false;
  52          if ( ! empty( $submenu[$item[2]] ) ) {
  53              $class[] = 'wp-has-submenu';
  54              $submenu_items = $submenu[$item[2]];
  55          }
  56  
  57          if ( ( $parent_file && $item[2] == $parent_file ) || ( empty($typenow) && $self == $item[2] ) ) {
  58              $class[] = ! empty( $submenu_items ) ? 'wp-has-current-submenu wp-menu-open' : 'current';
  59          } else {
  60              $class[] = 'wp-not-current-submenu';
  61              if ( ! empty( $submenu_items ) )
  62                  $aria_attributes .= ' aria-haspopup="true"';
  63          }
  64  
  65          if ( ! empty( $item[4] ) )
  66              $class[] = $item[4];
  67  
  68          $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
  69          $id = ! empty( $item[5] ) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : '';
  70          $img = '';
  71          if ( ! empty( $item[6] ) )
  72              $img = ( 'div' === $item[6] ) ? '<br />' : '<img src="' . $item[6] . '" alt="" />';
  73          $arrow = '<div class="wp-menu-arrow"><div></div></div>';
  74  
  75          $title = wptexturize( $item[0] );
  76          $aria_label = esc_attr( strip_tags( $item[0] ) ); // strip the comment/plugins/updates bubbles spans but keep the pending number if any
  77  
  78          echo "\n\t<li$class$id>";
  79  
  80          if ( false !== strpos( $class, 'wp-menu-separator' ) ) {
  81              echo '<div class="separator"></div>';
  82          } elseif ( $submenu_as_parent && ! empty( $submenu_items ) ) {
  83              $submenu_items = array_values( $submenu_items );  // Re-index.
  84              $menu_hook = get_plugin_page_hook( $submenu_items[0][2], $item[2] );
  85              $menu_file = $submenu_items[0][2];
  86              if ( false !== ( $pos = strpos( $menu_file, '?' ) ) )
  87                  $menu_file = substr( $menu_file, 0, $pos );
  88              if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
  89                  $admin_is_parent = true;
  90                  echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
  91              } else {
  92                  echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
  93              }
  94          } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) {
  95              $menu_hook = get_plugin_page_hook( $item[2], 'admin.php' );
  96              $menu_file = $item[2];
  97              if ( false !== ( $pos = strpos( $menu_file, '?' ) ) )
  98                  $menu_file = substr( $menu_file, 0, $pos );
  99              if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
 100                  $admin_is_parent = true;
 101                  echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class $aria_attributes>{$item[0]}</a>";
 102              } else {
 103                  echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$item[2]}'$class $aria_attributes>{$item[0]}</a>";
 104              }
 105          }
 106  
 107          if ( ! empty( $submenu_items ) ) {
 108              echo "\n\t<div class='wp-submenu'><div class='wp-submenu-wrap'>";
 109              echo "<div class='wp-submenu-head'>{$item[0]}</div><ul>";
 110              $first = true;
 111              foreach ( $submenu_items as $sub_key => $sub_item ) {
 112                  if ( ! current_user_can( $sub_item[1] ) )
 113                      continue;
 114  
 115                  $aria_attributes = 'tabindex="1"';
 116                  $class = array();
 117                  if ( $first ) {
 118                      $class[] = 'wp-first-item';
 119                      $first = false;
 120                  }
 121  
 122                  $menu_file = $item[2];
 123  
 124                  if ( false !== ( $pos = strpos( $menu_file, '?' ) ) )
 125                      $menu_file = substr( $menu_file, 0, $pos );
 126  
 127                  // Handle current for post_type=post|page|foo pages, which won't match $self.
 128                  $self_type = ! empty( $typenow ) ? $self . '?post_type=' . $typenow : 'nothing';
 129  
 130                  if ( isset( $submenu_file ) ) {
 131                      if ( $submenu_file == $sub_item[2] )
 132                          $class[] = 'current';
 133                  // If plugin_page is set the parent must either match the current page or not physically exist.
 134                  // This allows plugin pages with the same hook to exist under different parents.
 135                  } else if (
 136                      ( ! isset( $plugin_page ) && $self == $sub_item[2] ) ||
 137                      ( isset( $plugin_page ) && $plugin_page == $sub_item[2] && ( $item[2] == $self_type || $item[2] == $self || file_exists($menu_file) === false ) )
 138                  ) {
 139                      $class[] = 'current';
 140                  }
 141  
 142                  $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
 143  
 144                  $menu_hook = get_plugin_page_hook($sub_item[2], $item[2]);
 145                  $sub_file = $sub_item[2];
 146                  if ( false !== ( $pos = strpos( $sub_file, '?' ) ) )
 147                      $sub_file = substr($sub_file, 0, $pos);
 148  
 149                  $title = wptexturize($sub_item[0]);
 150  
 151                  if ( ! empty( $menu_hook ) || ( ('index.php' != $sub_item[2]) && file_exists( WP_PLUGIN_DIR . "/$sub_file" ) ) ) {
 152                      // If admin.php is the current page or if the parent exists as a file in the plugins or admin dir
 153                      if ( (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/$menu_file") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}")) || file_exists($menu_file) )
 154                          $sub_item_url = add_query_arg( array('page' => $sub_item[2]), $item[2] );
 155                      else
 156                          $sub_item_url = add_query_arg( array('page' => $sub_item[2]), 'admin.php' );
 157  
 158                      $sub_item_url = esc_url( $sub_item_url );
 159                      echo "<li$class><a href='$sub_item_url'$class $aria_attributes>$title</a></li>";
 160                  } else {
 161                      echo "<li$class><a href='{$sub_item[2]}'$class $aria_attributes>$title</a></li>";
 162                  }
 163              }
 164              echo "</ul></div></div>";
 165          }
 166          echo "</li>";
 167      }
 168  
 169      echo '<li id="collapse-menu" class="hide-if-no-js"><div id="collapse-button"><div></div></div>';
 170      echo '<span>' . esc_html__( 'Collapse menu' ) . '</span>';
 171      echo '</li>';
 172  }
 173  
 174  ?>
 175  
 176  <div id="adminmenuback"></div>
 177  <div id="adminmenuwrap">
 178  <div id="adminmenushadow"></div>
 179  <ul id="adminmenu" role="navigation">
 180  
 181  <?php
 182  
 183  _wp_menu_output( $menu, $submenu );
 184  do_action( 'adminmenu' );
 185  
 186  ?>
 187  </ul>
 188  </div>


Generated: Fri May 25 03:56:23 2012 Hosted by follow the white rabbit.