From 3650836f09552b7780aef91c2b9dc0c5d51b7378 Mon Sep 17 00:00:00 2001 From: azaozz Date: Fri, 17 Apr 2009 12:46:53 +0000 Subject: [PATCH] Submit the form when setting items per page option so it's visible straight away git-svn-id: http://svn.automattic.com/wordpress/trunk@10987 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/admin.php | 2 ++ wp-admin/includes/misc.php | 44 +++++++++++++++++++++++++++++++++- wp-admin/includes/template.php | 6 +++-- wp-admin/js/common.dev.js | 28 ---------------------- wp-admin/js/common.js | 2 +- wp-includes/script-loader.php | 2 +- 6 files changed, 51 insertions(+), 33 deletions(-) diff --git a/wp-admin/admin.php b/wp-admin/admin.php index c88a1d4b7..95a734615 100644 --- a/wp-admin/admin.php +++ b/wp-admin/admin.php @@ -41,6 +41,8 @@ nocache_headers(); update_category_cache(); +save_screen_options(); + $posts_per_page = get_option('posts_per_page'); $what_to_show = get_option('what_to_show'); $date_format = get_option('date_format'); diff --git a/wp-admin/includes/misc.php b/wp-admin/includes/misc.php index 0420143fd..a461bf3c5 100644 --- a/wp-admin/includes/misc.php +++ b/wp-admin/includes/misc.php @@ -318,4 +318,46 @@ jQuery('#template').submit(function(){ +/** + * Saves option for number of rows when listing posts, pages, comments, etc. + * + * @since 2.8 +**/ +function save_screen_options() { + + if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) { + check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' ); + + if ( !$user = wp_get_current_user() ) + return; + $option = $_POST['wp_screen_options']['option']; + $value = $_POST['wp_screen_options']['value']; + + if ( !preg_match( '/^[a-z_-]+$/', $option ) ) + return; + + $option = str_replace('-', '_', $option); + + switch ( $option ) { + case 'edit_per_page': + case 'edit_pages_per_page': + case 'edit_comments_per_page': + case 'upload_per_page': + case 'categories_per_page': + case 'edit_tags_per_page': + $value = (int) $value; + if ( $value < 1 || $value > 999 ) + return; + break; + default: + $value = apply_filters('set-screen-option', false, $option, $value); + if ( false === $value ) + return; + break; + } + + update_usermeta($user->ID, $option, $value); + wp_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) ); + exit; + } +} diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php index 23926fff0..52d5858db 100644 --- a/wp-admin/includes/template.php +++ b/wp-admin/includes/template.php @@ -3394,7 +3394,7 @@ function screen_meta($screen) { if ( $show_screen ) : ?>