Changeset 34122
- Timestamp:
- 09/14/2015 05:09:58 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/admin-bar.php
r33213 r34122 180 180 $user_id = get_current_user_id(); 181 181 $current_user = wp_get_current_user(); 182 $profile_url = get_edit_profile_url( $user_id );183 182 184 183 if ( ! $user_id ) 185 184 return; 185 186 if ( current_user_can( 'read' ) ) { 187 $profile_url = get_edit_profile_url( $user_id ); 188 } elseif ( is_multisite() ) { 189 $profile_url = get_dashboard_url( $user_id, 'profile.php' ); 190 } else { 191 $profile_url = false; 192 } 186 193 187 194 $avatar = get_avatar( $user_id, 26 ); … … 210 217 $user_id = get_current_user_id(); 211 218 $current_user = wp_get_current_user(); 212 $profile_url = get_edit_profile_url( $user_id );213 219 214 220 if ( ! $user_id ) 215 221 return; 222 223 if ( current_user_can( 'read' ) ) { 224 $profile_url = get_edit_profile_url( $user_id ); 225 } elseif ( is_multisite() ) { 226 $profile_url = get_dashboard_url( $user_id, 'profile.php' ); 227 } else { 228 $profile_url = false; 229 } 216 230 217 231 $wp_admin_bar->add_group( array( … … 235 249 ), 236 250 ) ); 237 $wp_admin_bar->add_menu( array( 238 'parent' => 'user-actions', 239 'id' => 'edit-profile', 240 'title' => __( 'Edit My Profile' ), 241 'href' => $profile_url, 242 ) ); 251 252 if ( false !== $profile_url ) { 253 $wp_admin_bar->add_menu( array( 254 'parent' => 'user-actions', 255 'id' => 'edit-profile', 256 'title' => __( 'Edit My Profile' ), 257 'href' => $profile_url, 258 ) ); 259 } 260 243 261 $wp_admin_bar->add_menu( array( 244 262 'parent' => 'user-actions', … … 282 300 'id' => 'site-name', 283 301 'title' => $title, 284 'href' => is_admin() ? home_url( '/' ) : admin_url(),302 'href' => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(), 285 303 ) ); 286 304 … … 305 323 } 306 324 307 } else {325 } else if ( current_user_can( 'read' ) ) { 308 326 // We're on the front end, link to the Dashboard. 309 327 $wp_admin_bar->add_menu( array( -
trunk/src/wp-includes/css/admin-bar.css
r34011 r34122 28 28 } 29 29 30 #wpadminbar .ab-empty-item { 31 cursor: default; 32 } 33 34 #wpadminbar .ab-empty-item, 30 35 #wpadminbar a.ab-item, 31 36 #wpadminbar > #wp-toolbar span.ab-label, … … 452 457 } 453 458 459 #wpadminbar #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, 454 460 #wpadminbar #wp-admin-bar-my-account.with-avatar > a img { 455 461 width: auto; … … 465 471 } 466 472 473 #wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, 467 474 #wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > a img { 468 475 width: auto; -
trunk/tests/phpunit/tests/adminbar.php
r25002 r34122 16 16 parent::setUp(); 17 17 $this->current_user = get_current_user_id(); 18 wp_set_current_user( $this->factory->user->create( array( 'role' => 'editor' ) ) );19 18 } 20 19 … … 28 27 */ 29 28 function test_content_post_type() { 29 wp_set_current_user( $this->factory->user->create( array( 'role' => 'editor' ) ) ); 30 30 31 register_post_type( 'content', array( 'show_in_admin_bar' => true ) ); 31 32 … … 45 46 */ 46 47 function test_merging_existing_meta_values() { 48 wp_set_current_user( $this->factory->user->create( array( 'role' => 'editor' ) ) ); 49 47 50 $admin_bar = new WP_Admin_Bar; 48 51 … … 62 65 $this->assertEquals( array( 'class' => 'test-class', 'some-meta' => 'value' ), $node->meta ); 63 66 } 67 68 /** 69 * @ticket 25162 70 */ 71 public function test_admin_bar_contains_correct_links_for_users_with_no_role() { 72 if ( is_multisite() ) { 73 $this->markTestSkipped( 'Test does not run in multisite' ); 74 } 75 76 $nobody = $this->factory->user->create( array( 'role' => '' ) ); 77 $this->assertFalse( user_can( $nobody, 'read' ) ); 78 79 wp_set_current_user( $nobody ); 80 81 $wp_admin_bar = $this->get_standard_admin_bar(); 82 83 $node_site_name = $wp_admin_bar->get_node( 'site-name' ); 84 $node_my_account = $wp_admin_bar->get_node( 'my-account' ); 85 $node_user_info = $wp_admin_bar->get_node( 'user-info' ); 86 $node_edit_profile = $wp_admin_bar->get_node( 'edit-profile' ); 87 88 // Site menu points to the home page instead of the admin URL 89 $this->assertEquals( home_url( '/' ), $node_site_name->href ); 90 91 // No profile links as the user doesn't have any permissions on the site 92 $this->assertFalse( $node_my_account->href ); 93 $this->assertFalse( $node_user_info->href ); 94 $this->assertNull( $node_edit_profile ); 95 96 } 97 98 /** 99 * @ticket 25162 100 */ 101 public function test_admin_bar_contains_correct_links_for_users_with_role() { 102 if ( is_multisite() ) { 103 $this->markTestSkipped( 'Test does not run in multisite' ); 104 } 105 106 $editor = $this->factory->user->create( array( 'role' => 'editor' ) ); 107 $this->assertTrue( user_can( $editor, 'read' ) ); 108 109 wp_set_current_user( $editor ); 110 111 $wp_admin_bar = $this->get_standard_admin_bar(); 112 113 $node_site_name = $wp_admin_bar->get_node( 'site-name' ); 114 $node_my_account = $wp_admin_bar->get_node( 'my-account' ); 115 $node_user_info = $wp_admin_bar->get_node( 'user-info' ); 116 $node_edit_profile = $wp_admin_bar->get_node( 'edit-profile' ); 117 118 // Site menu points to the admin URL 119 $this->assertEquals( admin_url( '/' ), $node_site_name->href ); 120 121 $profile_url = admin_url( 'profile.php' ); 122 123 // Profile URLs point to profile.php 124 $this->assertEquals( $profile_url, $node_my_account->href ); 125 $this->assertEquals( $profile_url, $node_user_info->href ); 126 $this->assertEquals( $profile_url, $node_edit_profile->href ); 127 128 } 129 130 /** 131 * @ticket 25162 132 * @group multisite 133 */ 134 public function test_admin_bar_contains_correct_links_for_users_with_no_role_on_blog() { 135 if ( ! is_multisite() ) { 136 $this->markTestSkipped( 'Test only runs in multisite' ); 137 } 138 139 $admin = $this->factory->user->create( array( 'role' => 'administrator' ) ); 140 $editor = $this->factory->user->create( array( 'role' => 'editor' ) ); 141 142 $this->assertTrue( user_can( $admin, 'read' ) ); 143 $this->assertTrue( user_can( $editor, 'read' ) ); 144 145 $new_blog_id = $this->factory->blog->create( array( 146 'user_id' => $admin, 147 ) ); 148 149 $this->assertTrue( is_user_member_of_blog( $admin, $new_blog_id ) ); 150 $this->assertFalse( is_user_member_of_blog( $editor, $new_blog_id ) ); 151 152 wp_set_current_user( $editor ); 153 154 switch_to_blog( $new_blog_id ); 155 156 $wp_admin_bar = $this->get_standard_admin_bar(); 157 158 $node_site_name = $wp_admin_bar->get_node( 'site-name' ); 159 $node_my_account = $wp_admin_bar->get_node( 'my-account' ); 160 $node_user_info = $wp_admin_bar->get_node( 'user-info' ); 161 $node_edit_profile = $wp_admin_bar->get_node( 'edit-profile' ); 162 163 // get primary blog 164 $primary = get_active_blog_for_user( $editor ); 165 $this->assertInternalType( 'object', $primary ); 166 167 // No Site menu as the user isn't a member of this blog 168 $this->assertNull( $node_site_name ); 169 170 $primary_profile_url = get_admin_url( $primary->blog_id, 'profile.php' ); 171 172 // Ensure the user's primary blog is not the same as the main site 173 $this->assertNotEquals( $primary_profile_url, admin_url( 'profile.php' ) ); 174 175 // Profile URLs should go to the user's primary blog 176 $this->assertEquals( $primary_profile_url, $node_my_account->href ); 177 $this->assertEquals( $primary_profile_url, $node_user_info->href ); 178 $this->assertEquals( $primary_profile_url, $node_edit_profile->href ); 179 180 restore_current_blog(); 181 182 } 183 184 /** 185 * @ticket 25162 186 * @group multisite 187 */ 188 public function test_admin_bar_contains_correct_links_for_users_with_no_role_on_network() { 189 if ( ! is_multisite() ) { 190 $this->markTestSkipped( 'Test only runs in multisite' ); 191 } 192 193 $admin = $this->factory->user->create( array( 'role' => 'administrator' ) ); 194 $nobody = $this->factory->user->create( array( 'role' => '' ) ); 195 196 $this->assertTrue( user_can( $admin, 'read' ) ); 197 $this->assertFalse( user_can( $nobody, 'read' ) ); 198 199 $new_blog_id = $this->factory->blog->create( array( 200 'user_id' => $admin, 201 ) ); 202 203 $this->assertTrue( is_user_member_of_blog( $admin, $new_blog_id ) ); 204 $this->assertFalse( is_user_member_of_blog( $nobody, $new_blog_id ) ); 205 $this->assertTrue( is_user_member_of_blog( $nobody, get_current_blog_id() ) ); 206 207 // Remove `$nobody` from the current blog, so they're not a member of any blog 208 $removed = remove_user_from_blog( $nobody, get_current_blog_id() ); 209 210 $this->assertTrue( $removed ); 211 $this->assertFalse( is_user_member_of_blog( $nobody, get_current_blog_id() ) ); 212 213 wp_set_current_user( $nobody ); 214 215 switch_to_blog( $new_blog_id ); 216 217 $wp_admin_bar = $this->get_standard_admin_bar(); 218 219 $node_site_name = $wp_admin_bar->get_node( 'site-name' ); 220 $node_my_account = $wp_admin_bar->get_node( 'my-account' ); 221 $node_user_info = $wp_admin_bar->get_node( 'user-info' ); 222 $node_edit_profile = $wp_admin_bar->get_node( 'edit-profile' ); 223 224 // get primary blog 225 $primary = get_active_blog_for_user( $nobody ); 226 $this->assertNull( $primary ); 227 228 // No Site menu as the user isn't a member of this site 229 $this->assertNull( $node_site_name ); 230 231 $user_profile_url = user_admin_url( 'profile.php' ); 232 233 $this->assertNotEquals( $user_profile_url, admin_url( 'profile.php' ) ); 234 235 // Profile URLs should go to the user's primary blog 236 $this->assertEquals( $user_profile_url, $node_my_account->href ); 237 $this->assertEquals( $user_profile_url, $node_user_info->href ); 238 $this->assertEquals( $user_profile_url, $node_edit_profile->href ); 239 240 restore_current_blog(); 241 242 } 243 244 protected function get_standard_admin_bar() { 245 global $wp_admin_bar; 246 247 _wp_admin_bar_init(); 248 249 $this->assertTrue( is_admin_bar_showing() ); 250 $this->assertInstanceOf( 'WP_Admin_Bar', $wp_admin_bar ); 251 252 do_action_ref_array( 'admin_bar_menu', array( &$wp_admin_bar ) ); 253 254 return $wp_admin_bar; 255 } 256 64 257 }
Note: See TracChangeset
for help on using the changeset viewer.