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.