Ticket #13662: 13662.diff
| File 13662.diff, 6.1 KB (added by duck_, 2 years ago) |
|---|
-
wp-admin/menu-header.php
45 45 $class[] = 'wp-first-item'; 46 46 $first = false; 47 47 } 48 if ( !empty($submenu[$item[2]]) ) 48 49 if ( !empty($submenu[$item[2]]) ) { 50 $submenu_items = $submenu[$item[2]]; 49 51 $class[] = 'wp-has-submenu'; 52 } 50 53 51 54 if ( ( $parent_file && $item[2] == $parent_file ) || ( empty($typenow) && $self == $item[2] ) ) { 52 if ( !empty($submenu[$item[2]]) ) 53 $class[] = 'wp-has-current-submenu wp-menu-open'; 54 else 55 $class[] = 'current'; 55 $class[] = !empty($submenu_items) ? 'wp-has-current-submenu wp-menu-open' : 'current'; 56 56 } 57 57 58 58 if ( ! empty($item[4]) ) … … 63 63 $id = ! empty($item[5]) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : ''; 64 64 $img = ''; 65 65 if ( ! empty($item[6]) ) { 66 if ( 'div' === $item[6] ) 67 $img = '<br />'; 68 else 69 $img = '<img src="' . $item[6] . '" alt="" />'; 66 $img = ('div' === $item[6]) ? '<br />' : '<img src="' . $item[6] . '" alt="" />'; 70 67 } 71 68 $toggle = '<div class="wp-menu-toggle"><br /></div>'; 72 69 … … 76 73 77 74 if ( false !== strpos($class, 'wp-menu-separator') ) { 78 75 echo '<a class="separator" href="?unfoldmenu=1"><br /></a>'; 79 } elseif ( $submenu_as_parent && !empty($submenu [$item[2]]) ) {80 $submenu [$item[2]] = array_values($submenu[$item[2]]); // Re-index.81 $menu_hook = get_plugin_page_hook($submenu [$item[2]][0][2], $item[2]);82 $menu_file = $submenu [$item[2]][0][2];83 if ( false !== $pos = strpos($menu_file, '?') )76 } elseif ( $submenu_as_parent && !empty($submenu_items) ) { 77 $submenu_items = array_values($submenu_items); // Re-index. 78 $menu_hook = get_plugin_page_hook($submenu_items[0][2], $item[2]); 79 $menu_file = $submenu_items[0][2]; 80 if ( false !== ($pos = strpos($menu_file, '?')) ) 84 81 $menu_file = substr($menu_file, 0, $pos); 85 if ( ( ('index.php' != $submenu[$item[2]][0][2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") ) || !empty($menu_hook)) {82 if ( !empty($menu_hook) || ( ('index.php' != $submenu_items[0][2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") ) ) { 86 83 $admin_is_parent = true; 87 echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu [$item[2]][0][2]}'>$img</a></div>$toggle<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class$tabindex>$title</a>";84 echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}'>$img</a></div>$toggle<a href='admin.php?page={$submenu_items[0][2]}'$class$tabindex>$title</a>"; 88 85 } else { 89 echo "\n\t<div class='wp-menu-image'><a href='{$submenu [$item[2]][0][2]}'>$img</a></div>$toggle<a href='{$submenu[$item[2]][0][2]}'$class$tabindex>$title</a>";86 echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}'>$img</a></div>$toggle<a href='{$submenu_items[0][2]}'$class$tabindex>$title</a>"; 90 87 } 91 88 } else if ( current_user_can($item[1]) ) { 92 89 $menu_hook = get_plugin_page_hook($item[2], 'admin.php'); 93 90 $menu_file = $item[2]; 94 if ( false !== $pos = strpos($menu_file, '?') )91 if ( false !== ($pos = strpos($menu_file, '?')) ) 95 92 $menu_file = substr($menu_file, 0, $pos); 96 if ( ('index.php' != $item[2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") || !empty($menu_hook) ) {93 if ( !empty($menu_hook) || ('index.php' != $item[2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") ) { 97 94 $admin_is_parent = true; 98 95 echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$toggle<a href='admin.php?page={$item[2]}'$class$tabindex>{$item[0]}</a>"; 99 96 } else { … … 101 98 } 102 99 } 103 100 104 if ( !empty($submenu [$item[2]]) ) {101 if ( !empty($submenu_items) ) { 105 102 echo "\n\t<div class='wp-submenu'><div class='wp-submenu-head'>{$item[0]}</div><ul>"; 106 103 $first = true; 107 foreach ( $submenu [$item[2]]as $sub_key => $sub_item ) {104 foreach ( $submenu_items as $sub_key => $sub_item ) { 108 105 if ( !current_user_can($sub_item[1]) ) 109 106 continue; 110 107 … … 115 112 } 116 113 117 114 $menu_file = $item[2]; 118 119 if ( false !== $pos = strpos($menu_file, '?') ) 115 if ( false !== ($pos = strpos($menu_file, '?')) ) 120 116 $menu_file = substr($menu_file, 0, $pos); 121 117 122 118 // Handle current for post_type=post|page|foo pages, which won't match $self. 123 if ( !empty($typenow) ) 124 $self_type = $self . '?post_type=' . $typenow; 125 else 126 $self_type = 'nothing'; 119 $self_type = ( !empty($typenow) ) ? $self . '?post_type=' . $typenow : 'nothing'; 127 120 128 121 if ( isset($submenu_file) ) { 129 122 if ( $submenu_file == $sub_item[2] ) 130 123 $class[] = 'current'; 131 124 // If plugin_page is set the parent must either match the current page or not physically exist. 132 125 // This allows plugin pages with the same hook to exist under different parents. 133 } else if ( (isset($plugin_page) && $plugin_page == $sub_item[2] && (!file_exists($menu_file) || ($item[2] == $self) || ($item[2] == $self_type))) || (!isset($plugin_page) && $self == $sub_item[2]) ) { 126 } else if ( 127 ( ! isset($plugin_page) && $self == $sub_item[2] ) || 128 ( isset($plugin_page) && $plugin_page == $sub_item[2] && (($item[2] == $self_type) || ($item[2] == $self) || file_exists($menu_file) === false) ) 129 ) { 134 130 $class[] = 'current'; 135 131 } 136 132 … … 138 134 139 135 $menu_hook = get_plugin_page_hook($sub_item[2], $item[2]); 140 136 $sub_file = $sub_item[2]; 141 if ( false !== $pos = strpos($sub_file, '?') )137 if ( false !== ($pos = strpos($sub_file, '?')) ) 142 138 $sub_file = substr($sub_file, 0, $pos); 143 139 144 140 $title = wptexturize($sub_item[0]); 145 141 146 if ( ( ('index.php' != $sub_item[2]) && file_exists(WP_PLUGIN_DIR . "/$sub_file") ) || ! empty($menu_hook) ) {142 if ( ! empty($menu_hook) || ( ('index.php' != $sub_item[2]) && file_exists(WP_PLUGIN_DIR . "/$sub_file") ) ) { 147 143 // If admin.php is the current page or if the parent exists as a file in the plugins or admin dir 148 144 if ( (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/$menu_file") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}")) || file_exists($menu_file) ) 149 145 $sub_item_url = add_query_arg( array('page' => $sub_item[2]), $item[2] );
