Nav Menus: blur/Focus behavior for Create Menu and Add Custom Links. Route "return" presses in each of those areas to proper button press. Better create/save logic on the PHP side.

git-svn-id: http://svn.automattic.com/wordpress/trunk@13739 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
markjaquith 2010-03-17 19:57:08 +00:00
parent c1654c4751
commit 6786e3ddb3
4 changed files with 111 additions and 75 deletions

View File

@ -86,8 +86,8 @@ function wp_nav_menu_manage_menu_metabox( $object, $menu ) { ?>
*/
function wp_nav_menu_create_metabox() { ?>
<p>
<input type="text" name="create-menu-name" id="create-menu-name" class="regular-text" value="" />
<input type="submit" name="create-menu" id="create-menu" class="button" value="<?php esc_attr_e('Create Menu'); ?>" />
<input type="text" name="create-menu-name" id="create-menu-name" class="regular-text" value="<?php esc_attr_e( 'Menu name' ); ?>" />
<input type="submit" name="create-menu-button" id="create-menu-button" class="button" value="<?php esc_attr_e('Create Menu'); ?>" />
</p>
<?php
}

View File

@ -386,6 +386,39 @@ jQuery(document).ready(function($){
return wp_update_post_data();
});
// Handle some return keypresses
$('#create-menu-name').keypress(function(e){
if ( 13 == e.keyCode ) {
$('#create-menu-button').click();
return false;
}
});
$('#custom-menu-item-url, #custom-menu-item-name').keypress(function(e){
if ( 13 == e.keyCode ) {
$('#add-custom-links a.button').click();
return false;
}
}).focus(function(){
if ( $(this).val() == $(this).attr('defaultValue') && $(this).attr('id') != 'custom-menu-item-url' ) {
$(this).val('');
}
}).blur(function(){
if ( $(this).val() == '' ) {
$(this).val($(this).attr('defaultValue'));
}
});
$('#create-menu-name').focus(function(){
if ( $(this).val() == $(this).attr('defaultValue') ) {
$(this).val('');
}
}).blur(function(){
if ( $(this).val() == '' ) {
$(this).val($(this).attr('defaultValue'));
}
});
// close postboxes that should be closed
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
@ -446,11 +479,12 @@ jQuery(document).ready(function($){
// Create a new link then add it to the menu
$('#add-custom-links .add-to-menu a').click(function(e){
var link_url = jQuery(e.currentTarget).parent().parent().find('#custom-menu-item-url').val();
var link_name = jQuery(e.currentTarget).parent().parent().find('#custom-menu-item-name').val();
// Add link to menu
wp_add_item_to_menu( 0, '', 'custom', navMenuL10n.custom, 0, link_name, link_url, '', '', '_self', '', '' );
if ( $('#custom-menu-item-url').val() == $('#custom-menu-item-url').attr('defaultValue') )
return; // Do not allow "http://" submissions to go through
wp_add_item_to_menu( 0, '', 'custom', navMenuL10n.custom, 0, $('#custom-menu-item-name').val(), $('#custom-menu-item-url').val(), '', '', '_self', '', '' );
$('#custom-menu-item-name').val($('#custom-menu-item-name').attr('defaultValue'));
$('#custom-menu-item-url' ).val($('#custom-menu-item-url' ).attr('defaultValue')).focus();
});
});

File diff suppressed because one or more lines are too long

View File

@ -67,7 +67,7 @@ switch ( $action ) {
check_admin_referer( 'update-nav_menu' );
// Add Menu
if ( isset($_POST['create-menu']) ) {
if ( isset($_POST['create-menu-button']) ) {
if ( current_theme_supports('nav-menus') ) {
$add_nav_menu = esc_html( $_POST['create-menu-name'] );
@ -86,7 +86,8 @@ switch ( $action ) {
}
unset($add_nav_menu);
}
} elseif ( isset($_POST['menu-name']) ) {
} else {
if ( isset($_POST['menu-name']) ) {
$old_nav_menu = get_term( $nav_menu_selected_id, 'nav_menu', ARRAY_A );
$args = array( 'name' => $_POST['menu-name'], 'slug' => null, 'description' => $old_nav_menu['description'], 'parent' => $old_nav_menu['parent'], );
$new_nav_menu = wp_update_term( $nav_menu_selected_id, 'nav_menu', $args );
@ -158,6 +159,7 @@ switch ( $action ) {
}
$messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('The menu has been updated.') . '</p></div>';
}
}
break;
}