Add secondary flag to admin bar. fixes #19136.
git-svn-id: http://svn.automattic.com/wordpress/trunk@19230 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
a57f6b0271
commit
4de1815c67
|
@ -91,46 +91,40 @@ function wp_admin_bar_wp_menu( $wp_admin_bar ) {
|
|||
) );
|
||||
}
|
||||
|
||||
// Add secondary menu.
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'wp-logo',
|
||||
'id' => 'wp-logo-secondary',
|
||||
'title' => ' ',
|
||||
'meta' => array(
|
||||
'class' => 'secondary',
|
||||
),
|
||||
) );
|
||||
|
||||
// Add WordPress.org link
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'wp-logo-secondary',
|
||||
'id' => 'wporg',
|
||||
'title' => __('WordPress.org'),
|
||||
'href' => __('http://wordpress.org'),
|
||||
'parent' => 'wp-logo',
|
||||
'secondary' => true,
|
||||
'id' => 'wporg',
|
||||
'title' => __('WordPress.org'),
|
||||
'href' => __('http://wordpress.org'),
|
||||
) );
|
||||
|
||||
// Add codex link
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'wp-logo-secondary',
|
||||
'id' => 'documentation',
|
||||
'title' => __('Documentation'),
|
||||
'href' => __('http://codex.wordpress.org'),
|
||||
'parent' => 'wp-logo',
|
||||
'secondary' => true,
|
||||
'id' => 'documentation',
|
||||
'title' => __('Documentation'),
|
||||
'href' => __('http://codex.wordpress.org'),
|
||||
) );
|
||||
|
||||
// Add forums link
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'wp-logo-secondary',
|
||||
'id' => 'support-forums',
|
||||
'title' => __('Support Forums'),
|
||||
'href' => __('http://wordpress.org/support/'),
|
||||
'parent' => 'wp-logo',
|
||||
'secondary' => true,
|
||||
'id' => 'support-forums',
|
||||
'title' => __('Support Forums'),
|
||||
'href' => __('http://wordpress.org/support/'),
|
||||
) );
|
||||
|
||||
// Add feedback link
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'wp-logo-secondary',
|
||||
'id' => 'feedback',
|
||||
'title' => __('Feedback'),
|
||||
'href' => __('http://wordpress.org/support/forum/requests-and-feedback'),
|
||||
'parent' => 'wp-logo',
|
||||
'secondary' => true,
|
||||
'id' => 'feedback',
|
||||
'title' => __('Feedback'),
|
||||
'href' => __('http://wordpress.org/support/forum/requests-and-feedback'),
|
||||
) );
|
||||
}
|
||||
|
||||
|
@ -150,17 +144,15 @@ function wp_admin_bar_my_account_menu( $wp_admin_bar ) {
|
|||
/* Add the 'My Account' menu */
|
||||
$avatar = get_avatar( $user_id, 28 );
|
||||
$howdy = sprintf( __('Howdy, %1$s'), $user_identity );
|
||||
$class = 'opposite';
|
||||
|
||||
if ( ! empty( $avatar ) )
|
||||
$class .= ' with-avatar';
|
||||
$class = empty( $avatar ) ? '' : 'with-avatar';
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'my-account',
|
||||
'title' => $howdy . $avatar,
|
||||
'href' => $profile_url,
|
||||
'meta' => array(
|
||||
'class' => $class,
|
||||
'id' => 'my-account',
|
||||
'secondary' => true,
|
||||
'title' => $howdy . $avatar,
|
||||
'href' => $profile_url,
|
||||
'meta' => array(
|
||||
'class' => $class,
|
||||
),
|
||||
) );
|
||||
|
||||
|
@ -322,17 +314,6 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
|
|||
) );
|
||||
}
|
||||
|
||||
if ( $wp_admin_bar->user->blogs ) {
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'my-sites',
|
||||
'id' => 'my-sites-secondary',
|
||||
'title' => ' ',
|
||||
'meta' => array(
|
||||
'class' => 'secondary',
|
||||
),
|
||||
) );
|
||||
}
|
||||
|
||||
// Add blog links
|
||||
$blue_wp_logo_url = includes_url('images/wpmini-blue.png');
|
||||
|
||||
|
@ -345,10 +326,11 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
|
|||
$menu_id = 'blog-' . $blog->userblog_id;
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'my-sites-secondary',
|
||||
'id' => $menu_id,
|
||||
'title' => $blavatar . $blogname,
|
||||
'href' => get_admin_url( $blog->userblog_id ),
|
||||
'parent' => 'my-sites',
|
||||
'secondary' => true,
|
||||
'id' => $menu_id,
|
||||
'title' => $blavatar . $blogname,
|
||||
'href' => get_admin_url( $blog->userblog_id ),
|
||||
) );
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
|
@ -473,23 +455,23 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) {
|
|||
* @since 3.1.0
|
||||
*/
|
||||
function wp_admin_bar_new_content_menu( $wp_admin_bar ) {
|
||||
$primary = $secondary = array();
|
||||
$actions = array();
|
||||
|
||||
$cpts = (array) get_post_types( array( 'show_in_admin_bar' => true ), 'objects' );
|
||||
|
||||
if ( isset( $cpts['post'] ) && current_user_can( $cpts['post']->cap->edit_posts ) ) {
|
||||
$primary[ 'post-new.php' ] = array( $cpts['post']->labels->name_admin_bar, 'new-post' );
|
||||
$actions[ 'post-new.php' ] = array( $cpts['post']->labels->name_admin_bar, 'new-post' );
|
||||
unset( $cpts['post'] );
|
||||
}
|
||||
|
||||
if ( current_user_can( 'upload_files' ) )
|
||||
$primary[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' );
|
||||
$actions[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' );
|
||||
|
||||
if ( current_user_can( 'manage_links' ) )
|
||||
$primary[ 'link-add.php' ] = array( _x( 'Link', 'add new from admin bar' ), 'new-link' );
|
||||
$actions[ 'link-add.php' ] = array( _x( 'Link', 'add new from admin bar' ), 'new-link' );
|
||||
|
||||
if ( isset( $cpts['page'] ) && current_user_can( $cpts['page']->cap->edit_posts ) ) {
|
||||
$primary[ 'post-new.php?post_type=page' ] = array( $cpts['page']->labels->name_admin_bar, 'new-page' );
|
||||
$actions[ 'post-new.php?post_type=page' ] = array( $cpts['page']->labels->name_admin_bar, 'new-page' );
|
||||
unset( $cpts['page'] );
|
||||
}
|
||||
|
||||
|
@ -499,47 +481,32 @@ function wp_admin_bar_new_content_menu( $wp_admin_bar ) {
|
|||
continue;
|
||||
|
||||
$key = 'post-new.php?post_type=' . $cpt->name;
|
||||
$primary[ $key ] = array( $cpt->labels->name_admin_bar, 'new-' . $cpt->name );
|
||||
$actions[ $key ] = array( $cpt->labels->name_admin_bar, 'new-' . $cpt->name );
|
||||
}
|
||||
|
||||
if ( current_user_can( 'create_users' ) || current_user_can( 'promote_users' ) )
|
||||
$secondary[ 'user-new.php' ] = array( _x( 'User', 'add new from admin bar' ), 'new-user' );
|
||||
$actions[ 'user-new.php' ] = array( _x( 'User', 'add new from admin bar' ), 'new-user', true );
|
||||
|
||||
if ( ! $primary && ! $secondary )
|
||||
if ( ! $actions )
|
||||
return;
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'new-content',
|
||||
'title' => _x( 'Add New', 'admin bar menu group label' ),
|
||||
'href' => admin_url( current( array_keys( $primary ) ) ),
|
||||
'href' => admin_url( current( array_keys( $actions ) ) ),
|
||||
) );
|
||||
|
||||
$items = array(
|
||||
'new-content' => $primary,
|
||||
'new-content-secondary' => $secondary,
|
||||
);
|
||||
foreach ( $actions as $link => $action ) {
|
||||
list( $title, $id ) = $action;
|
||||
$secondary = ! empty( $action[2] );
|
||||
|
||||
foreach ( $items as $parent => $actions ) {
|
||||
|
||||
if ( ! empty( $actions ) && $parent == 'new-content-secondary' ) {
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'new-content',
|
||||
'id' => 'new-content-secondary',
|
||||
'title' => ' ',
|
||||
'meta' => array(
|
||||
'class' => 'secondary',
|
||||
),
|
||||
) );
|
||||
}
|
||||
|
||||
foreach ( $actions as $link => $action ) {
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => $parent,
|
||||
'id' => $action[1],
|
||||
'title' => $action[0],
|
||||
'href' => admin_url( $link )
|
||||
) );
|
||||
}
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'parent' => 'new-content',
|
||||
'secondary' => $secondary,
|
||||
'id' => $id,
|
||||
'title' => $title,
|
||||
'href' => admin_url( $link )
|
||||
) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,11 @@ class WP_Admin_Bar {
|
|||
$this->proto = 'https://';
|
||||
|
||||
$this->user = new stdClass;
|
||||
$this->root = new stdClass;
|
||||
$this->root->children = (object) array(
|
||||
'primary' => array(),
|
||||
'secondary' => array(),
|
||||
);
|
||||
|
||||
if ( is_user_logged_in() ) {
|
||||
/* Populate settings we need for the menu based on the current user. */
|
||||
|
@ -59,11 +64,12 @@ class WP_Admin_Bar {
|
|||
* Add a node to the menu.
|
||||
*
|
||||
* @param array $args - The arguments for each node.
|
||||
* - id - string - The ID of the item.
|
||||
* - title - string - The title of the node.
|
||||
* - parent - string - The ID of the parent node. Optional.
|
||||
* - href - string - The link for the item. Optional.
|
||||
* - meta - array - Meta data including the following keys: html, class, onclick, target, title.
|
||||
* - id - string - The ID of the item.
|
||||
* - title - string - The title of the node.
|
||||
* - parent - string - The ID of the parent node. Optional.
|
||||
* - href - string - The link for the item. Optional.
|
||||
* - secondary - boolean - If the item should be part of a secondary menu. Optional. Default false.
|
||||
* - meta - array - Meta data including the following keys: html, class, onclick, target, title.
|
||||
*/
|
||||
public function add_node( $args ) {
|
||||
// Shim for old method signature: add_node( $parent_id, $menu_obj, $args )
|
||||
|
@ -80,11 +86,12 @@ class WP_Admin_Bar {
|
|||
}
|
||||
|
||||
$defaults = array(
|
||||
'id' => false,
|
||||
'title' => false,
|
||||
'parent' => false,
|
||||
'href' => false,
|
||||
'meta' => array(),
|
||||
'id' => false,
|
||||
'title' => false,
|
||||
'parent' => false,
|
||||
'href' => false,
|
||||
'secondary' => false,
|
||||
'meta' => array(),
|
||||
);
|
||||
|
||||
// If the node already exists, keep any data that isn't provided.
|
||||
|
@ -92,6 +99,10 @@ class WP_Admin_Bar {
|
|||
$defaults = (array) $this->nodes[ $args['id'] ];
|
||||
|
||||
$args = wp_parse_args( $args, $defaults );
|
||||
$args['children'] = (object) array(
|
||||
'primary' => array(),
|
||||
'secondary' => array(),
|
||||
);
|
||||
|
||||
$this->nodes[ $args['id'] ] = (object) $args;
|
||||
}
|
||||
|
@ -106,19 +117,20 @@ class WP_Admin_Bar {
|
|||
|
||||
// Handle root menu items
|
||||
if ( empty( $node->parent ) ) {
|
||||
$this->root[] = $node;
|
||||
continue;
|
||||
}
|
||||
$parent = $this->root;
|
||||
|
||||
// If the parent node isn't registered, ignore the node.
|
||||
if ( ! isset( $this->nodes[ $node->parent ] ) )
|
||||
} elseif ( ! isset( $this->nodes[ $node->parent ] ) ) {
|
||||
continue;
|
||||
|
||||
$parent = $this->nodes[ $node->parent ];
|
||||
if ( ! isset( $parent->children ) )
|
||||
$parent->children = array();
|
||||
} else {
|
||||
$parent = $this->nodes[ $node->parent ];
|
||||
}
|
||||
|
||||
$parent->children[] = $node;
|
||||
if ( $node->secondary )
|
||||
$parent->children->secondary[] = $node;
|
||||
else
|
||||
$parent->children->primary[] = $node;
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -126,10 +138,19 @@ class WP_Admin_Bar {
|
|||
<div class="quicklinks">
|
||||
<ul class="ab-top-menu"><?php
|
||||
|
||||
foreach ( $this->root as $node ) {
|
||||
foreach ( $this->root->children->primary as $node ) {
|
||||
$this->recursive_render( $node );
|
||||
}
|
||||
|
||||
if ( ! empty( $this->root->children->secondary ) ):
|
||||
?><ul class="top-secondary"><?php
|
||||
|
||||
foreach ( $this->root->children->secondary as $node ) {
|
||||
$this->recursive_render( $node );
|
||||
}
|
||||
|
||||
?></ul><?php
|
||||
endif;
|
||||
?></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -138,7 +159,7 @@ class WP_Admin_Bar {
|
|||
}
|
||||
|
||||
function recursive_render( $node ) {
|
||||
$is_parent = ! empty( $node->children );
|
||||
$is_parent = ! empty( $node->children->primary );
|
||||
|
||||
$menuclass = $is_parent ? 'menupop' : '';
|
||||
if ( ! empty( $node->meta['class'] ) )
|
||||
|
@ -173,16 +194,22 @@ class WP_Admin_Bar {
|
|||
|
||||
?></a>
|
||||
|
||||
<?php if ( $is_parent ) : ?>
|
||||
<ul><?php
|
||||
|
||||
// Render children.
|
||||
foreach ( $node->children as $child_node ) {
|
||||
<?php
|
||||
if ( $is_parent ) :
|
||||
?><ul><?php
|
||||
foreach ( $node->children->primary as $child_node ) {
|
||||
$this->recursive_render( $child_node );
|
||||
}
|
||||
|
||||
?></ul>
|
||||
<?php endif;
|
||||
if ( ! empty( $node->children->secondary ) ):
|
||||
?><ul class="sub-secondary"><?php
|
||||
foreach ( $node->children->secondary as $child_node ) {
|
||||
$this->recursive_render( $child_node );
|
||||
}
|
||||
?></ul><?php
|
||||
endif;
|
||||
?></ul><?php
|
||||
endif;
|
||||
|
||||
if ( ! empty( $node->meta['html'] ) )
|
||||
echo $node->meta['html'];
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -78,12 +78,13 @@
|
|||
border-right: 1px solid #333;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks > ul > li.opposite {
|
||||
#wpadminbar .quicklinks .top-secondary > li {
|
||||
border-left: 1px solid #333;
|
||||
border-right: 0;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks > ul > li.opposite > a {
|
||||
#wpadminbar .quicklinks .top-secondary > li > a {
|
||||
border-left: 1px solid #555;
|
||||
border-right: 0;
|
||||
}
|
||||
|
@ -117,7 +118,7 @@
|
|||
border-color: #dfdfdf;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks .opposite.menupop ul {
|
||||
#wpadminbar .quicklinks .top-secondary .menupop ul {
|
||||
right: 0;
|
||||
margin: 0 -1px 0 0;
|
||||
}
|
||||
|
@ -166,8 +167,8 @@
|
|||
border-width: 1px;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks .opposite.menupop li:hover > ul,
|
||||
#wpadminbar .quicklinks .opposite.menupop li.hover > ul {
|
||||
#wpadminbar .quicklinks .top-secondary .menupop li:hover > ul,
|
||||
#wpadminbar .quicklinks .top-secondary .menupop li.hover > ul {
|
||||
margin-left: 0;
|
||||
left: inherit;
|
||||
right: 100%;
|
||||
|
@ -232,37 +233,30 @@
|
|||
padding: 0 1.5em 0 0;
|
||||
}
|
||||
|
||||
#wpadminbar .opposite.menupop li a > span {
|
||||
#wpadminbar .top-secondary .menupop li a > span {
|
||||
background-position: -28px -31px;
|
||||
padding: 0 0 0 1.5em;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks .menupop .secondary {
|
||||
background: #eee;
|
||||
margin: 6px 0 -6px;
|
||||
border-top: 1px solid #dfdfdf;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks .menupop .secondary > a {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks .menupop li.secondary > ul,
|
||||
#wpadminbar .quicklinks .opposite.menupop li.secondary > ul {
|
||||
#wpadminbar .quicklinks .menupop ul.sub-secondary {
|
||||
display: block;
|
||||
position: relative;
|
||||
right: auto;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
|
||||
background: #eee;
|
||||
margin: 6px 0 -6px;
|
||||
border-top: 1px solid #dfdfdf;
|
||||
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#wpadminbar .quicklinks .menupop li.secondary > ul > li:hover,
|
||||
#wpadminbar .quicklinks .menupop li.secondary > ul > li.hover,
|
||||
#wpadminbar .quicklinks .menupop li.secondary > ul > li a:focus {
|
||||
#wpadminbar .quicklinks .menupop .sub-secondary > li:hover,
|
||||
#wpadminbar .quicklinks .menupop .sub-secondary > li.hover,
|
||||
#wpadminbar .quicklinks .menupop .sub-secondary > li a:focus {
|
||||
background: #dfdfdf;
|
||||
}
|
||||
|
||||
|
@ -283,7 +277,7 @@
|
|||
color: #000;
|
||||
}
|
||||
|
||||
#wpadminbar li.opposite {
|
||||
#wpadminbar .top-secondary {
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
|
|
@ -452,7 +452,7 @@ function wp_default_styles( &$styles ) {
|
|||
$styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.3u1' );
|
||||
$styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
|
||||
$styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' );
|
||||
$styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array(), '20111108a' );
|
||||
$styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array(), '20111109' );
|
||||
$styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css", array(), '20111107' );
|
||||
$styles->add( 'editor-buttons', "/wp-includes/css/editor-buttons$suffix.css", array(), '20111107' );
|
||||
$styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css", array(), '20111017' );
|
||||
|
|
Loading…
Reference in New Issue