Changeset 4097

Show
Ignore:
Timestamp:
08/15/06 21:03:11 (2 years ago)
Author:
ryan
Message:

More menu fixes. #2257

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/admin-functions.php

    r4093 r4097  
    13391339    global $menu; 
    13401340    global $submenu; 
    1341     global $menu_nopriv; 
     1341    global $_wp_menu_nopriv; 
     1342    global $_wp_submenu_nopriv; 
    13421343    global $plugin_page; 
    13431344 
    13441345    $parent = get_admin_page_parent(); 
    1345      
    1346     if ( isset($menu_nopriv[$pagenow]) ) 
     1346 
     1347    if ( isset($_wp_submenu_nopriv[$parent][$pagenow]) ) 
    13471348        return false; 
    13481349 
    1349     if ( isset($plugin_page) && isset($menu_nopriv[$plugin_page]) ) 
     1350    if ( isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$plugin_page]) ) 
    13501351        return false; 
    13511352     
    13521353    if ( empty($parent) ) 
    1353         return true; 
     1354        return false; 
    13541355 
    13551356    if (isset ($submenu[$parent])) { 
     
    13651366 
    13661367    foreach ($menu as $menu_array) { 
    1367         //echo "parent array: " . $menu_array[2]; 
    13681368        if ($menu_array[2] == $parent) { 
    13691369            if (current_user_can($menu_array[1])) 
     
    14301430    global $pagenow; 
    14311431    global $plugin_page; 
    1432     global $real_parent_file; 
     1432    global $_wp_real_parent_file; 
     1433    global $_wp_menu_nopriv; 
     1434    global $_wp_submenu_nopriv; 
    14331435 
    14341436    if ( !empty ($parent_file) ) { 
    1435         if ( isset($real_parent_file[$parent_file]) ) 
    1436             $parent_file = $real_parent_file[$parent_file]; 
     1437        if ( isset($_wp_real_parent_file[$parent_file]) ) 
     1438            $parent_file = $_wp_real_parent_file[$parent_file]; 
    14371439 
    14381440        return $parent_file; 
     
    14431445            if ($parent_menu[2] == $plugin_page) { 
    14441446                $parent_file = $plugin_page; 
    1445                 if ( isset($real_parent_file[$parent_file]) ) 
    1446                     $parent_file = $real_parent_file[$parent_file]; 
    1447                      
     1447                if ( isset($_wp_real_parent_file[$parent_file]) ) 
     1448                    $parent_file = $_wp_real_parent_file[$parent_file]; 
    14481449                return $parent_file; 
    14491450            } 
    14501451        } 
     1452        if ( isset($_wp_menu_nopriv[$plugin_page]) ) { 
     1453            $parent_file = $plugin_page; 
     1454            if ( isset($_wp_real_parent_file[$parent_file]) ) 
     1455                    $parent_file = $_wp_real_parent_file[$parent_file]; 
     1456            return $parent_file; 
     1457        }            
     1458    } 
     1459 
     1460    if ( isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page]) ) { 
     1461        $parent_file = $pagenow; 
     1462        if ( isset($_wp_real_parent_file[$parent_file]) ) 
     1463            $parent_file = $_wp_real_parent_file[$parent_file]; 
     1464        return $parent_file;         
    14511465    } 
    14521466 
    14531467    foreach (array_keys($submenu) as $parent) { 
    14541468        foreach ($submenu[$parent] as $submenu_array) { 
    1455             if ( isset($real_parent_file[$parent]) ) 
    1456                 $parent = $real_parent_file[$parent]; 
     1469            if ( isset($_wp_real_parent_file[$parent]) ) 
     1470                $parent = $_wp_real_parent_file[$parent]; 
    14571471            if ($submenu_array[2] == $pagenow) { 
    14581472                $parent_file = $parent; 
     
    14891503    global $submenu; 
    14901504    global $menu; 
    1491     global $real_parent_file; 
    1492     global $menu_nopriv; 
     1505    global $_wp_real_parent_file; 
     1506    global $_wp_submenu_nopriv; 
     1507    global $_wp_menu_nopriv; 
    14931508 
    14941509    $file = plugin_basename($file); 
    1495     //echo "Adding $parent $file $access_level<br />"; 
     1510 
     1511    $parent = plugin_basename($parent); 
     1512    if ( isset($_wp_real_parent_file[$parent]) ) 
     1513        $parent = $_wp_real_parent_file[$parent]; 
     1514 
    14961515    if ( !current_user_can($access_level) ) { 
    1497         $menu_nopriv[$file] = true; 
     1516        $_wp_submenu_nopriv[$parent][$file] = true; 
    14981517        return false; 
    14991518    } 
    1500  
    1501     $parent = plugin_basename($parent); 
    1502     if ( isset($real_parent_file[$parent]) ) 
    1503         $parent = $real_parent_file[$parent]; 
    15041519 
    15051520    // If the parent doesn't already have a submenu, add a link to the parent 
     
    15071522    // parent file someone is trying to link back to the parent manually.  In 
    15081523    // this case, don't automatically add a link back to avoid duplication. 
    1509     if (!isset ($submenu[$parent]) && $file != $parent) { 
     1524    if (!isset ($submenu[$parent]) && $file != $parent  ) { 
    15101525        foreach ($menu as $parent_menu) { 
    1511             if ($parent_menu[2] == $parent) { 
     1526            if ( $parent_menu[2] == $parent && current_user_can($parent_menu[1]) ) { 
    15121527                $submenu[$parent][] = $parent_menu; 
    15131528            } 
  • trunk/wp-admin/index.php

    r3954 r4097  
    22require_once('admin.php');  
    33$title = __('Dashboard');  
     4$parent_file = 'index.php'; 
    45require_once('admin-header.php'); 
    56require_once (ABSPATH . WPINC . '/rss.php'); 
  • trunk/wp-admin/menu.php

    r4093 r4097  
    4444 
    4545if ( current_user_can('edit_users') ) { 
    46     $real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php. 
     46    $_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php. 
    4747    $submenu['users.php'][5] = array(__('Authors &amp; Users'), 'edit_users', 'users.php'); 
    4848    $submenu['users.php'][10] = array(__('Your Profile'), 'read', 'profile.php'); 
     
    7474    foreach ($sub as $index => $data) { 
    7575        if ( ! current_user_can($data[1]) ) { 
    76             $menu_nopriv[$data[2]] = true; 
    7776            unset($submenu[$parent][$index]); 
    7877        } 
     
    9695    // make the first submenu the new parent. 
    9796    if ( $new_parent != $old_parent ) { 
    98         $real_parent_file[$old_parent] = $new_parent; 
     97        $_wp_real_parent_file[$old_parent] = $new_parent; 
    9998        $menu[$id][2] = $new_parent; 
    10099         
     
    103102            unset($submenu[$old_parent][$index]); 
    104103        } 
    105         unset($submenu[$old_parent]);    
     104        unset($submenu[$old_parent]); 
     105        $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; 
    106106    } 
    107107} 
     
    110110 
    111111// Remove menus that have no accessible submenus and require privs that the user does not have. 
     112// Run re-parent loop again. 
    112113foreach ( $menu as $id => $data ) { 
    113114    // If submenu is empty... 
     
    115116        // And user doesn't have privs, remove menu. 
    116117        if ( ! current_user_can($data[1]) ) { 
    117             $menu_nopriv[$data[2]] = true; 
     118            $_wp_menu_nopriv[$data[2]] = true; 
    118119            unset($menu[$id]); 
    119120        } 
    120     }  
     121    } else { 
     122    /*  $subs = $submenu[$data[2]]; 
     123        $first_sub = array_shift($subs); 
     124        $old_parent = $data[2]; 
     125        $new_parent = $first_sub[2]; 
     126        // If the first submenu is not the same as the assigned parent, 
     127        // make the first submenu the new parent. 
     128        if ( $new_parent != $old_parent ) { 
     129            $_wp_real_parent_file[$old_parent] = $new_parent; 
     130            $menu[$id][2] = $new_parent; 
     131         
     132            foreach ($submenu[$old_parent] as $index => $data) { 
     133                $submenu[$new_parent][$index] = $submenu[$old_parent][$index]; 
     134                unset($submenu[$old_parent][$index]); 
     135            } 
     136            unset($submenu[$old_parent]); 
     137            $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; 
     138        } */ 
     139    } 
    121140} 
    122141