root/trunk/wp-admin/menu-header.php

Revision 8735, 3.6 kB (checked in by ryan, 3 days ago)

Menu fixes. see #7552

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
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/|i', '', $_SERVER['PHP_SELF']);
17 $self = preg_replace('|^.*/plugins/|i', '', $self);
18
19 global $menu, $submenu, $parent_file; //For when admin-header is included from within a function.
20
21 get_admin_page_parent();
22
23 function _wp_menu_output( &$menu, &$submenu, $submenu_as_parent = true ) {
24     global $self, $parent_file, $submenu_file, $plugin_page, $pagenow;
25
26     $first = true;
27     // 0 = name, 1 = capability, 2 = file, 3 = class
28     foreach ( $menu as $key => $item ) {
29         $class = array();
30         if ( $first ) {
31             $class[] = 'wp-first-item';
32             $first = false;
33         }
34         if ( !empty($submenu[$item[2]]) )
35             $class[] = 'wp-has-submenu';
36
37         if ( ( $parent_file && $item[2] == $parent_file ) || strcmp($self, $item[2]) == 0 ) {
38             if ( !empty($submenu[$item[2]]) )
39                 $class[] = 'wp-has-current-submenu wp-menu-open';
40             else
41                 $class[] = 'current';
42         }
43
44         if ( isset($item[3]) )
45             $class[] = $item[3];
46
47         $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
48
49         echo "\n\t<li$class>";
50
51         if ( $submenu_as_parent && !empty($submenu[$item[2]]) ) {
52             $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
53             $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
54             if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
55                 echo "<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
56             else
57                 echo "\n\t<a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
58         } else if ( current_user_can($item[1]) ) {
59             $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
60             if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
61                 echo "\n\t<a href='admin.php?page={$item[2]}'$class>{$item[0]}</a>";
62             else
63                 echo "\n\t<a href='{$item[2]}'$class>{$item[0]}</a>";
64         }
65
66         if ( !empty($submenu[$item[2]]) ) {
67             echo "\n\t<ul class='wp-submenu'>";
68             $first = true;
69             foreach ( $submenu[$item[2]] as $sub_key => $sub_item ) {
70                 if ( !current_user_can($sub_item[1]) )
71                     continue;
72
73                 $class = array();
74                 if ( $first ) {
75                     $class[] = 'wp-first-item';
76                     $first = false;
77                 }
78                 if ( isset($submenu_file) ) {
79                     if ( $submenu_file == $sub_item[2] )
80                         $class[] = 'current';
81                 } else if ( (isset($plugin_page) && $plugin_page == $sub_item[2]) || (!isset($plugin_page) && $self == $sub_item[2]) ) {
82                     $class[] = 'current';
83                 }
84
85                 $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
86
87                 $menu_hook = get_plugin_page_hook($sub_item[2], $item[2]);
88
89                 if ( file_exists(WP_PLUGIN_DIR . "/{$sub_item[2]}") || ! empty($menu_hook) ) {
90                     if ( 'admin.php' == $pagenow || !file_exists(WP_PLUGIN_DIR . "/$parent_file") )
91                         echo "\n\t\t<li$class><a href='admin.php?page={$sub_item[2]}'$class>{$sub_item[0]}</a></li>";
92                     else
93                         echo "\n\t\t<li$class><a href='{$item[2]}?page={$sub_item[2]}'$class>{$sub_item[0]}</a></li>";
94                 } else {
95                     echo "\n\t\t<li$class><a href='{$sub_item[2]}'$class>{$sub_item[0]}</a></li>";
96                 }
97             }
98             echo "\n\t</ul>";
99         }
100         echo "</li>";
101     }
102 }
103
104 ?>
105
106 <ul id="dashmenu" class="wp-menu">
107
108 <?php
109
110 _wp_menu_output( $top_menu, $top_submenu, false );
111 do_action( 'dashmenu' );
112
113 ?>
114
115
116 </ul>
117
118
119 <ul id="adminmenu" class="wp-menu">
120
121 <li class="write-new-button"><a class="button-secondary" href="post-new.php"><?php _e( 'Write New Post' ); ?></a></li>
122
123 <?php
124
125 _wp_menu_output( $menu, $submenu );
126 do_action( 'adminmenu' );
127
128 ?>
129
130
131 </ul>
132
133 <?php
134
135 do_action('admin_notices');
136
137 ?>
138
Note: See TracBrowser for help on using the browser.