Skip to content

Commit ad021e4

Browse files
committed
Submit the form when setting items per page option so it's visible straight away
git-svn-id: https://develop.svn.wordpress.org/trunk@10987 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 2a9cc5e commit ad021e4

6 files changed

Lines changed: 51 additions & 33 deletions

File tree

wp-admin/admin.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141

4242
update_category_cache();
4343

44+
save_screen_options();
45+
4446
$posts_per_page = get_option('posts_per_page');
4547
$what_to_show = get_option('what_to_show');
4648
$date_format = get_option('date_format');

wp-admin/includes/misc.php

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,4 +318,46 @@ function codepress_footer_js() {
318318
<?php
319319
}
320320

321-
?>
321+
/**
322+
* Saves option for number of rows when listing posts, pages, comments, etc.
323+
*
324+
* @since 2.8
325+
**/
326+
function save_screen_options() {
327+
328+
if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) {
329+
check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' );
330+
331+
if ( !$user = wp_get_current_user() )
332+
return;
333+
$option = $_POST['wp_screen_options']['option'];
334+
$value = $_POST['wp_screen_options']['value'];
335+
336+
if ( !preg_match( '/^[a-z_-]+$/', $option ) )
337+
return;
338+
339+
$option = str_replace('-', '_', $option);
340+
341+
switch ( $option ) {
342+
case 'edit_per_page':
343+
case 'edit_pages_per_page':
344+
case 'edit_comments_per_page':
345+
case 'upload_per_page':
346+
case 'categories_per_page':
347+
case 'edit_tags_per_page':
348+
$value = (int) $value;
349+
if ( $value < 1 || $value > 999 )
350+
return;
351+
break;
352+
default:
353+
$value = apply_filters('set-screen-option', false, $option, $value);
354+
if ( false === $value )
355+
return;
356+
break;
357+
}
358+
359+
update_usermeta($user->ID, $option, $value);
360+
wp_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) );
361+
exit;
362+
}
363+
}

wp-admin/includes/template.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3394,7 +3394,7 @@ function screen_meta($screen) {
33943394
if ( $show_screen ) :
33953395
?>
33963396
<div id="screen-options-wrap" class="hidden">
3397-
<form id="adv-settings" action="" method="get">
3397+
<form id="adv-settings" action="" method="post">
33983398
<h5><?php _e('Show on screen') ?></h5>
33993399
<div class="metabox-prefs">
34003400
<?php
@@ -3559,7 +3559,9 @@ function screen_options($screen) {
35593559
$return = '<h5>' . __('Options') . "</h5>\n";
35603560
$return .= "<div class='screen-options'>\n";
35613561
if ( !empty($per_page_label) )
3562-
$return .= "<label for='$option'>$per_page_label</label> <input type='text' class='screen-per-page' name='$option' id='$option' maxlength='3' value='$per_page' />\n";
3562+
$return .= "<label for='$option'>$per_page_label</label> <input type='text' class='screen-per-page' name='wp_screen_options[value]' id='$option' maxlength='3' value='$per_page' />\n";
3563+
$return .= "<input type='submit' class='button' value='" . __('Apply') . "' />";
3564+
$return .= "<input type='hidden' name='wp_screen_options[option]' value='$option' />";
35633565
$return .= "</div>\n";
35643566
return $return;
35653567
}

wp-admin/js/common.dev.js

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -116,34 +116,6 @@ columns = {
116116

117117
$(document).ready(function(){columns.init();});
118118

119-
screenOptions = {
120-
init : function() {
121-
$('.screen-per-page').change(function() {
122-
var option = this.id, value = parseInt($(this).val(), 10);
123-
if ( isNaN(value) ) {
124-
$(this).val('');
125-
return;
126-
}
127-
screenOptions.save_screen_option(option, value);
128-
}).parents('form').submit(function(e) {
129-
e.preventDefault();
130-
return false;
131-
});
132-
},
133-
134-
save_screen_option : function (option, value) {
135-
$.post(ajaxurl, {
136-
action: 'set-screen-option',
137-
option: option,
138-
value: value,
139-
screenoptionnonce: $('#screenoptionnonce').val(),
140-
page: pagenow
141-
});
142-
}
143-
}
144-
145-
$(document).ready(function(){screenOptions.init();});
146-
147119
})(jQuery);
148120

149121
// stub for doing better warnings

wp-admin/js/common.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wp-includes/script-loader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ function wp_default_scripts( &$scripts ) {
6060

6161
$scripts->add( 'utils', "/wp-admin/js/utils$suffix.js", false, '20090102' );
6262

63-
$scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20090406' );
63+
$scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20090416' );
6464
$scripts->add_data( 'common', 'group', 1 );
6565
$scripts->localize( 'common', 'commonL10n', array(
6666
'warnDelete' => __("You are about to delete the selected items.\n 'Cancel' to stop, 'OK' to delete."),

0 commit comments

Comments
 (0)