Version Description
- Fix page count display always showing "0" on non-hierarchical post types (Showing 1-X of X)
- Fix hidden menu order not updating after sort (causing Quick Edit to reset order when used right after sorting)
- "Move" cursor only set if JavaScript enabled
- Added further directions in the plug-in description (some users were confused about how to use it)
- Basic compatibility with 3.1 RC (prevent clashes with post list sorting)
Download this release
Release Info
Developer | jakemgold |
Plugin | Simple Page Ordering |
Version | 0.9 |
Comparing to | |
See all releases |
Code changes from version 0.8.4 to 0.9
- readme.txt +11 -4
- simple-page-ordering.php +23 -18
- spo-ordering.js +14 -3
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Simple Page Ordering ===
|
2 |
-
Contributors:
|
3 |
-
Donate link: http://www.
|
4 |
Tags: order, re-order, ordering, pages, page, manage, menu_order, hierarchical, ajax, drag-and-drop, admin
|
5 |
Requires at least: 3.0.1
|
6 |
-
Tested up to: 3.
|
7 |
-
Stable tag: 0.
|
8 |
|
9 |
Order your pages and other hierarchical post types with simple drag and drop. Also adds a drop down to change items per page.
|
10 |
|
@@ -48,6 +48,13 @@ folder to the `/wp-content/plugins/` directory
|
|
48 |
|
49 |
== Changelog ==
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
= 0.8.4 =
|
52 |
* Loosened constraints on drag and drop to ease dropping into top and bottom position
|
53 |
* Fixed row background staying "white" after dropping into a new position
|
1 |
=== Simple Page Ordering ===
|
2 |
+
Contributors: Jake Goldman (C. Murray Consulting)
|
3 |
+
Donate link: http://www.thinkoomph.com/plugins-modules/wordpress-page-order-plugin/
|
4 |
Tags: order, re-order, ordering, pages, page, manage, menu_order, hierarchical, ajax, drag-and-drop, admin
|
5 |
Requires at least: 3.0.1
|
6 |
+
Tested up to: 3.1
|
7 |
+
Stable tag: 0.9
|
8 |
|
9 |
Order your pages and other hierarchical post types with simple drag and drop. Also adds a drop down to change items per page.
|
10 |
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
+
= 0.9 =
|
52 |
+
* Fix page count display always showing "0" on non-hierarchical post types (Showing 1-X of X)
|
53 |
+
* Fix hidden menu order not updating after sort (causing Quick Edit to reset order when used right after sorting)
|
54 |
+
* "Move" cursor only set if JavaScript enabled
|
55 |
+
* Added further directions in the plug-in description (some users were confused about how to use it)
|
56 |
+
* Basic compatibility with 3.1 RC (prevent clashes with post list sorting)
|
57 |
+
|
58 |
= 0.8.4 =
|
59 |
* Loosened constraints on drag and drop to ease dropping into top and bottom position
|
60 |
* Fixed row background staying "white" after dropping into a new position
|
simple-page-ordering.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
Plugin Name: Simple Page Ordering
|
4 |
-
Plugin URI: http://www.
|
5 |
-
Description: Order your pages and
|
6 |
-
Version: 0.
|
7 |
-
Author:
|
8 |
-
Author URI: http://www.
|
9 |
|
10 |
Plugin: Copyright 2009 C. Murray Consulting (email : jake@cmurrayconsulting.com)
|
11 |
|
@@ -33,15 +33,15 @@ add_filter( 'edit_posts_per_page', 'spo_edit_posts_per_page', 10, 2 );
|
|
33 |
function spo_edit_posts_per_page( $per_page, $post_type )
|
34 |
{
|
35 |
if ( !current_user_can('edit_others_pages') ) // check permission
|
36 |
-
return;
|
37 |
|
38 |
$post_type_object = get_post_type_object( $post_type );
|
39 |
if ( !$post_type_object->hierarchical ) // only hierarchical post types apply
|
40 |
-
return;
|
41 |
|
42 |
add_action( 'restrict_manage_posts', 'spo_posts_per_page_filter' ); // posts per page drop down UI
|
43 |
-
add_action( 'admin_print_styles', 'spo_admin_styles' ); // special styles (move cursor)
|
44 |
-
wp_enqueue_script( 'spo-ordering', plugin_dir_url( __FILE__ ) . '/spo-ordering.js', array('jquery-ui-sortable'), '0.
|
45 |
add_filter( 'contextual_help', 'spo_contextual_help' );
|
46 |
|
47 |
if ( isset( $_GET['spo'] ) && is_numeric( $_GET['spo'] ) && ( $_GET['spo'] == -1 || ($_GET['spo']%10) == 0 ) ) :
|
@@ -66,10 +66,10 @@ function spo_posts_per_page_filter()
|
|
66 |
|
67 |
$spo = isset($_GET['spo']) ? (int)$_GET['spo'] : $per_page;
|
68 |
?>
|
69 |
-
<select name="spo" style="width:
|
70 |
<option<?php selected( $spo, -1 ); ?> value="-1"><?php _e('Show all'); ?></option>
|
71 |
<?php for( $i=10;$i<=100;$i+=10 ) : ?>
|
72 |
-
<option<?php selected( $spo, $i ); ?> value="<?php echo $i ?>"><?php echo $i; ?> <?php _e('per page'); ?></option>
|
73 |
<?php endfor; ?>
|
74 |
</select>
|
75 |
<?php
|
@@ -78,17 +78,17 @@ function spo_posts_per_page_filter()
|
|
78 |
/**
|
79 |
* styling and help
|
80 |
*/
|
81 |
-
|
82 |
function spo_admin_styles() {
|
83 |
-
echo '<style type="text/css"
|
84 |
}
|
85 |
|
86 |
function spo_contextual_help( $help )
|
87 |
{
|
88 |
return $help . '
|
89 |
-
<p><strong>Simple Page Ordering</strong></p>
|
90 |
|
91 |
-
<p><a href="http://www.
|
92 |
|
93 |
<p>To reposition an item, simply drag and drop the row by "clicking and holding" it anywhere (outside of the links and form controls) and moving it to its new position.</p>
|
94 |
|
@@ -116,6 +116,7 @@ function spo_do_page_ordering()
|
|
116 |
|
117 |
$previd = isset($_POST['previd']) ? $_POST['previd'] : false;
|
118 |
$nextid = isset($_POST['nextid']) ? $_POST['nextid'] : false;
|
|
|
119 |
|
120 |
if ( $previd ) {
|
121 |
|
@@ -127,6 +128,7 @@ function spo_do_page_ordering()
|
|
127 |
if ( $sibling->ID == $previd ) {
|
128 |
$menu_order = $sibling->menu_order + 1;
|
129 |
wp_update_post(array( 'ID' => $post->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
|
|
130 |
continue;
|
131 |
}
|
132 |
|
@@ -138,10 +140,11 @@ function spo_do_page_ordering()
|
|
138 |
if ( isset($menu_order) ) {
|
139 |
$menu_order++;
|
140 |
wp_update_post(array( 'ID' => $sibling->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
141 |
-
|
|
|
142 |
|
143 |
endforeach;
|
144 |
-
|
145 |
}
|
146 |
|
147 |
if ( !isset($menu_order) && $nextid ) {
|
@@ -154,6 +157,7 @@ function spo_do_page_ordering()
|
|
154 |
if ( $sibling->ID == $nextid ) {
|
155 |
$menu_order = $sibling->menu_order - 1;
|
156 |
wp_update_post(array( 'ID' => $post->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
|
|
157 |
continue;
|
158 |
}
|
159 |
|
@@ -165,6 +169,7 @@ function spo_do_page_ordering()
|
|
165 |
if ( isset($menu_order) ) {
|
166 |
$menu_order--;
|
167 |
wp_update_post(array( 'ID' => $sibling->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
|
|
168 |
}
|
169 |
|
170 |
endforeach;
|
@@ -176,5 +181,5 @@ function spo_do_page_ordering()
|
|
176 |
if ( !empty($children) )
|
177 |
die('children');
|
178 |
|
179 |
-
die();
|
180 |
}
|
1 |
<?php
|
2 |
/**
|
3 |
Plugin Name: Simple Page Ordering
|
4 |
+
Plugin URI: http://www.thinkoomph.com/plugins-modules/wordpress-page-order-plugin/
|
5 |
+
Description: Order your pages and hierarchical post types using drag and drop on the built in page list. Also adds a filter for items to show per page. For further instructions, open the "Help" tab on the Pages screen.
|
6 |
+
Version: 0.9
|
7 |
+
Author: Jake Goldman (Oomph, Inc)
|
8 |
+
Author URI: http://www.thinkoomph.com
|
9 |
|
10 |
Plugin: Copyright 2009 C. Murray Consulting (email : jake@cmurrayconsulting.com)
|
11 |
|
33 |
function spo_edit_posts_per_page( $per_page, $post_type )
|
34 |
{
|
35 |
if ( !current_user_can('edit_others_pages') ) // check permission
|
36 |
+
return $per_page;
|
37 |
|
38 |
$post_type_object = get_post_type_object( $post_type );
|
39 |
if ( !$post_type_object->hierarchical ) // only hierarchical post types apply
|
40 |
+
return $per_page;
|
41 |
|
42 |
add_action( 'restrict_manage_posts', 'spo_posts_per_page_filter' ); // posts per page drop down UI
|
43 |
+
add_action( 'admin_print_styles', 'spo_admin_styles' ); // special styles (move cursor)
|
44 |
+
wp_enqueue_script( 'spo-ordering', plugin_dir_url( __FILE__ ) . '/spo-ordering.js', array('jquery-ui-sortable'), '0.9', true );
|
45 |
add_filter( 'contextual_help', 'spo_contextual_help' );
|
46 |
|
47 |
if ( isset( $_GET['spo'] ) && is_numeric( $_GET['spo'] ) && ( $_GET['spo'] == -1 || ($_GET['spo']%10) == 0 ) ) :
|
66 |
|
67 |
$spo = isset($_GET['spo']) ? (int)$_GET['spo'] : $per_page;
|
68 |
?>
|
69 |
+
<select name="spo" style="width: 110px;">
|
70 |
<option<?php selected( $spo, -1 ); ?> value="-1"><?php _e('Show all'); ?></option>
|
71 |
<?php for( $i=10;$i<=100;$i+=10 ) : ?>
|
72 |
+
<option<?php selected( $spo, $i ); ?> value="<?php echo $i; ?>"><?php echo $i; ?> <?php _e('per page'); ?></option>
|
73 |
<?php endfor; ?>
|
74 |
</select>
|
75 |
<?php
|
78 |
/**
|
79 |
* styling and help
|
80 |
*/
|
81 |
+
|
82 |
function spo_admin_styles() {
|
83 |
+
echo '<style type="text/css">.js table.widefat tbody th, .js table.widefat tbody td { cursor: move; }</style>';
|
84 |
}
|
85 |
|
86 |
function spo_contextual_help( $help )
|
87 |
{
|
88 |
return $help . '
|
89 |
+
<p><strong>'. __( 'Simple Page Ordering' ) . '</strong></p>
|
90 |
|
91 |
+
<p><a href="http://www.thinkoomph.com/plugins-modules/wordpress-page-order-plugin/" target="_blank">Simple Page Ordering</a> is a plug-in by <a href="http://www.jakegoldman.net" target="_blank">Jake Goldman</a> (<a href="http://www.thinkoomph.com" target="_blank">Oomph, Inc</a>) that allows you to order pages and other hierarchical post types with drag and drop.</p>
|
92 |
|
93 |
<p>To reposition an item, simply drag and drop the row by "clicking and holding" it anywhere (outside of the links and form controls) and moving it to its new position.</p>
|
94 |
|
116 |
|
117 |
$previd = isset($_POST['previd']) ? $_POST['previd'] : false;
|
118 |
$nextid = isset($_POST['nextid']) ? $_POST['nextid'] : false;
|
119 |
+
$new_pos = array(); // store new positions for ajax
|
120 |
|
121 |
if ( $previd ) {
|
122 |
|
128 |
if ( $sibling->ID == $previd ) {
|
129 |
$menu_order = $sibling->menu_order + 1;
|
130 |
wp_update_post(array( 'ID' => $post->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
131 |
+
$new_pos[$post->ID] = $menu_order;
|
132 |
continue;
|
133 |
}
|
134 |
|
140 |
if ( isset($menu_order) ) {
|
141 |
$menu_order++;
|
142 |
wp_update_post(array( 'ID' => $sibling->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
143 |
+
$new_pos[$sibling->ID] = $menu_order;
|
144 |
+
}
|
145 |
|
146 |
endforeach;
|
147 |
+
|
148 |
}
|
149 |
|
150 |
if ( !isset($menu_order) && $nextid ) {
|
157 |
if ( $sibling->ID == $nextid ) {
|
158 |
$menu_order = $sibling->menu_order - 1;
|
159 |
wp_update_post(array( 'ID' => $post->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
160 |
+
$new_pos[$post->ID] = $menu_order;
|
161 |
continue;
|
162 |
}
|
163 |
|
169 |
if ( isset($menu_order) ) {
|
170 |
$menu_order--;
|
171 |
wp_update_post(array( 'ID' => $sibling->ID, 'menu_order' => $menu_order )); // update the actual moved post to 1 after prev
|
172 |
+
$new_pos[$sibling->ID] = $menu_order;
|
173 |
}
|
174 |
|
175 |
endforeach;
|
181 |
if ( !empty($children) )
|
182 |
die('children');
|
183 |
|
184 |
+
die( json_encode($new_pos) );
|
185 |
}
|
spo-ordering.js
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
jQuery("table.widefat tbody").sortable({
|
2 |
cursor: 'move',
|
3 |
axis: 'y',
|
@@ -9,12 +11,12 @@ jQuery("table.widefat tbody").sortable({
|
|
9 |
},
|
10 |
start: function(event, ui) {
|
11 |
if ( ! ui.item.hasClass('alternate') ) ui.item.css( 'background-color', '#ffffff' );
|
12 |
-
ui.item.children('td,
|
13 |
ui.item.css( 'outline', '1px solid #dfdfdf' );
|
14 |
},
|
15 |
stop: function(event, ui) {
|
16 |
ui.item.removeAttr('style');
|
17 |
-
ui.item.children('td,
|
18 |
},
|
19 |
update: function(event, ui) {
|
20 |
if ( ui.item.hasClass('inline-editor') ) {
|
@@ -22,6 +24,11 @@ jQuery("table.widefat tbody").sortable({
|
|
22 |
alert( 'Please close the quick editor before reordering this item.' );
|
23 |
return;
|
24 |
}
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
var postid = ui.item.find('.check-column input').val(); // this post id
|
27 |
var postparent = ui.item.find('.post_parent').html(); // post parent
|
@@ -56,7 +63,11 @@ jQuery("table.widefat tbody").sortable({
|
|
56 |
// go do the sorting stuff via ajax
|
57 |
jQuery.post( ajaxurl, { action: 'simple_page_ordering', id: postid, previd: prevpostid, nextid: nextpostid }, function(response){
|
58 |
if ( response == 'children' ) window.location.reload();
|
59 |
-
else
|
|
|
|
|
|
|
|
|
60 |
});
|
61 |
|
62 |
// fix cell colors
|
1 |
+
jQuery('table.widefat tbody th, table.widefat tbody td').css('cursor','move');
|
2 |
+
|
3 |
jQuery("table.widefat tbody").sortable({
|
4 |
cursor: 'move',
|
5 |
axis: 'y',
|
11 |
},
|
12 |
start: function(event, ui) {
|
13 |
if ( ! ui.item.hasClass('alternate') ) ui.item.css( 'background-color', '#ffffff' );
|
14 |
+
ui.item.children('td,th').css('border','none');
|
15 |
ui.item.css( 'outline', '1px solid #dfdfdf' );
|
16 |
},
|
17 |
stop: function(event, ui) {
|
18 |
ui.item.removeAttr('style');
|
19 |
+
ui.item.children('td,th').removeAttr('style');
|
20 |
},
|
21 |
update: function(event, ui) {
|
22 |
if ( ui.item.hasClass('inline-editor') ) {
|
24 |
alert( 'Please close the quick editor before reordering this item.' );
|
25 |
return;
|
26 |
}
|
27 |
+
if ( jQuery('table.widefat th.sorted').length > 0 ) {
|
28 |
+
jQuery("table.widefat tbody").sortable('cancel');
|
29 |
+
alert( 'Please return the list to the default, menu order sorting before ordering items.' );
|
30 |
+
return;
|
31 |
+
}
|
32 |
|
33 |
var postid = ui.item.find('.check-column input').val(); // this post id
|
34 |
var postparent = ui.item.find('.post_parent').html(); // post parent
|
63 |
// go do the sorting stuff via ajax
|
64 |
jQuery.post( ajaxurl, { action: 'simple_page_ordering', id: postid, previd: prevpostid, nextid: nextpostid }, function(response){
|
65 |
if ( response == 'children' ) window.location.reload();
|
66 |
+
else {
|
67 |
+
var changes = jQuery.parseJSON(response);
|
68 |
+
jQuery.each(changes, function(key,value) { jQuery('#inline_'+key+' .menu_order').html(value); });
|
69 |
+
ui.item.find('.check-column input').show().siblings('img').remove();
|
70 |
+
}
|
71 |
});
|
72 |
|
73 |
// fix cell colors
|