Make WordPress Core


Ignore:
Timestamp:
06/18/2008 01:55:39 AM (18 years ago)
Author:
mdawaffe
Message:

crazyhorse: first pass at menu positioning - will break some things. Menu reorganization to come

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/crazyhorse/wp-admin/menu-header.php

    r8049 r8115  
    77get_admin_page_parent();
    88
    9 // We're going to do this loop three times
    10 ?>
     9function _wp_menu_output( &$menu, &$submenu, $submenu_as_parent = true ) {
     10        global $self, $parent_file, $submenu_file;
    1111
    12 <ul id="dashmenu">
    13 <?php
    14 foreach ( $menu as $key => $item ) {
    15         if ( 3 < $key ) // get each menu item before 3
    16                 continue;
    17         $class = '';
    18         // 0 = name, 1 = capability, 2 = file
    19         if (( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file))) $class = ' class="current"';
     12        foreach ( $menu as $key => $item ) {
     13                $class = array();
     14                // 0 = name, 1 = capability, 2 = file
     15                if ( !empty($submenu[$item[2]]) )
     16                        $class[] = 'wp-has-submenu';
     17                if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file) ) || ( $parent_file && $item[2] == $parent_file ) ) {
     18                        if ( !empty($submenu[$item[2]]) )
     19                                $class[] = 'wp-has-current-submenu';
     20                        else
     21                                $class[] = 'current';
     22                }
     23                $class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
    2024
    21         if ( !empty($submenu[$item[2]]) ) {
    22                 $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    23                 $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    24                 if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    25                         echo "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    26                 else
    27                         echo "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    28         } else if ( current_user_can($item[1]) ) {
    29                 $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    30                 if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    31                         echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    32                 else
    33                         echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
    34         }
    35 }
    36 do_action( 'dashmenu' );
    37 ?>
    38 </ul>
     25                echo "\n\t<li$class>";
    3926
    40 <ul id="adminmenu">
    41 <?php
    42 foreach ( $menu as $key => $item ) {
    43         if ( 5 > $key || $key > 25 ) // get each menu item before 3
    44                 continue;
     27                if ( $submenu_as_parent && !empty($submenu[$item[2]]) ) {
     28                        $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
     29                        $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
     30                        if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
     31                                echo "<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
     32                        else
     33                                echo "\n\t<a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
     34                } else if ( current_user_can($item[1]) ) {
     35                        $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
     36                        if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
     37                                echo "\n\t<a href='admin.php?page={$item[2]}'$class>{$item[0]}</a>";
     38                        else
     39                                echo "\n\t<a href='{$item[2]}'$class>{$item[0]}</a>";
     40                }
    4541
    46         $class = '';
     42                if ( !empty($submenu[$item[2]]) ) {
     43                        echo "\n\t<ul class='wp-submenu'>";
     44                        foreach ( $submenu[$item[2]] as $sub_key => $sub_item ) {
     45                                if ( !current_user_can($sub_item[1]) )
     46                                        continue;
    4747
    48         // 0 = name, 1 = capability, 2 = file
    49         if (( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file))) $class = ' class="current"';
     48                                if ( isset($submenu_file) ) {
     49                                        if ( $submenu_file == $sub_item[2] )
     50                                                $class = ' class="current"';
     51                                        else
     52                                                $class = '';
     53                                } else if ( (isset($plugin_page) && $plugin_page == $sub_item[2]) || (!isset($plugin_page) && $self == $sub_item[2]) ) {
     54                                        $class = ' class="current"';
     55                                } else {
     56                                        $class = '';
     57                                }
    5058
    51         if ( !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 "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    56                 else
    57                         echo "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    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<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    62                 else
    63                         echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
     59                                $menu_hook = get_plugin_page_hook($sub_item[2], $parent_file);
     60
     61                                if ( file_exists(WP_PLUGIN_DIR . "/{$sub_item[2]}") || ! empty($menu_hook) ) {
     62                                        if ( 'admin.php' == $pagenow )
     63                                                echo "\n\t\t<li$class><a href='admin.php?page={$sub_item[2]}'$class>{$sub_item[0]}</a></li>";
     64                                        else
     65                                                echo "\n\t\t<li$class><a href='{$parent_file}?page={$sub_item[2]}'$class>{$sub_item[0]}</a></li>";
     66                                } else {
     67                                        echo "\n\t\t<li$class><a href='{$sub_item[2]}'$class>{$sub_item[0]}</a></li>";
     68                                }
     69                        }
     70                        echo "\n\t</ul>";
     71                }
     72                echo "</li>";
    6473        }
    6574}
    6675
    67 foreach ( $menu as $key => $item ) {
    68         if ( $key < 41 ) // there is a more efficient way to do this!
    69                 continue;
     76?>
    7077
    71         $class = '';
     78<ul id="dashmenu" class="wp-menu">
    7279
    73         // 0 = name, 1 = capability, 2 = file
    74         if (( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file))) $class = ' class="current"';
     80<?php
    7581
    76         if ( !empty($submenu[$item[2]]) ) {
    77                 $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    78                 $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    79                 if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    80                         echo "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    81                 else
    82                         echo "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    83         } else if ( current_user_can($item[1]) ) {
    84                 $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    85                 if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    86                         echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    87                 else
    88                         echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
    89         }
    90 }
     82_wp_menu_output( $top_menu, $top_submenu, false );
     83do_action( 'dashmenu' );
    9184
    92 do_action( 'adminmenu' );
    9385?>
     86
     87
    9488</ul>
    9589
    96 <ul id="sidemenu">
     90<ul id="adminmenu" class="wp-menu">
     91
    9792<?php
    98 $side_items = array();
    99 foreach ( $menu as $key => $item ) {
    100         if ( 26 > $key || $key > 40 )
    101                 continue;
    10293
    103         $class = '';
     94_wp_menu_output( $menu, $submenu );
     95do_action( 'adminmenu' );
    10496
    105         // 0 = name, 1 = capability, 2 = file
    106         if (( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file))) $class = ' class="current"';
     97?>
    10798
    108         if ( !empty($submenu[$item[2]]) ) {
    109                 $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    110                 $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    111                 if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    112                         $side_items[] = "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
    113                 else
    114                         $side_items[] = "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
    115         } else if ( current_user_can($item[1]) ) {
    116                 $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    117                 if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    118                         $side_items[] = "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a>";
    119                 else
    120                         $side_items[] = "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a>";
    121         }
    122 }
    123 echo implode(' </li>', $side_items) . '</li>';
    124 unset($side_items);
    125 do_action( 'sidemenu' );
    126 ?>
     99
    127100</ul>
    128101
    129 
    130102<?php
    131 // Sub-menu
    132 if ( isset($submenu["$parent_file"]) ) :
    133 ?>
    134 <ul id="submenu">
    135 <?php
    136 foreach ($submenu["$parent_file"] as $item) :
    137          if ( !current_user_can($item[1]) )
    138                  continue;
    139 
    140 if ( isset($submenu_file) ) {
    141         if ( $submenu_file == $item[2] ) $class = ' class="current"';
    142         else $class = '';
    143 } else if ( (isset($plugin_page) && $plugin_page == $item[2]) || (!isset($plugin_page) && $self == $item[2]) ) $class = ' class="current"';
    144 else $class = '';
    145 
    146 $menu_hook = get_plugin_page_hook($item[2], $parent_file);
    147 
    148 if (file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || ! empty($menu_hook)) {
    149         if ( 'admin.php' == $pagenow )
    150                 echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    151         else
    152                 echo "\n\t<li><a href='{$parent_file}?page={$item[2]}'$class>{$item[0]}</a></li>";
    153  } else {
    154         echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
    155  }
    156 endforeach;
    157 ?>
    158 
    159 </ul>
    160 <?php
    161 else :
    162 ?>
    163 <div id="minisub"></div>
    164 <?php
    165 
    166 endif;
    167103
    168104do_action('admin_notices');
Note: See TracChangeset for help on using the changeset viewer.