Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/code/class-i-order-terms.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
class I_Order_Terms
{
const PLUGIN_NAME = 'I Order Terms';
const PLUGIN_VERSION = '1.5.0';
const PLUGIN_VERSION = '1.5.2';
const WP_MIN_VERSION = '3.5';
const PLUGIN_BASENAME = 'i-order-terms/i-order-terms.php';
const PLUGIN_OPTIONS_PAGE = 'iorderterms_general';
Expand All @@ -27,12 +27,12 @@ class I_Order_Terms
/** @var string Plugin URL */
private $plugin_url;

/** @var array List of notices for admin users */
private $notices = array();
/** @var array Taxonomies list */
private $taxonomies = array();
/** @var array Taxonomies that require custom sorting */
private $taxonomies_registered = array();
/** @var string[] List of notices for admin users */
private $notices = [];
/** @var string[] Taxonomies list */
private $taxonomies = [];
/** @var string[] Taxonomies that require custom sorting */
private $taxonomies_registered = [];


/**
Expand Down Expand Up @@ -230,7 +230,7 @@ public function terms_clauses( $clauses, $taxonomies, $args )
// default sorting is to use custom order
if ( isset( $args['orderby'] ) && $args['orderby'] !== 'name' ) return $clauses;

// accept only single taxonomy queries & only if taxonomy is registered for custom sorting
// accept only single taxonomy queries and only if taxonomy is registered for custom sorting
if ( /* count( $taxonomies ) !== 1 || */ !in_array( $taxonomies[0], $this->taxonomies ) ) return $clauses;

// user sorting by a column
Expand Down
2 changes: 1 addition & 1 deletion src/i-order-terms.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: I Order Terms
* Plugin URI: https://wordpress.org/plugins/i-order-terms/
* Description: Allows theme developers to add order/sort functionality for categories, tags and terms.
* Version: 1.5.0
* Version: 1.5.2
* Requires at least: 3.5
* Requires PHP: 5.6
* Author: Igor Jerosimic
Expand Down
87 changes: 46 additions & 41 deletions src/js/admin-i-order-terms.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,25 @@
* @author Igor Jerosimic
*/

// inspired by Simple Page Ordering plugin ( https://wordpress.org/plugins/simple-page-ordering/ )
// Inspired by the Simple Page Ordering plugin ( https://wordpress.org/plugins/simple-page-ordering/ )
jQuery(document).ready(function($)
{
"use strict";

function get_term_id(el)
/**
* Get term ID from element.
* @param el
* @returns {number|undefined}
*/
function getTermId(el)
{
var ret;

if (el.length) {
ret = parseInt(el.find('.check-column input').val(), 10);

if (!ret) {
// try to find term ID by other means
// Try to find the term ID by other means
ret = parseInt(el.attr('id').replace('tag-', ''), 10);
}

Expand Down Expand Up @@ -53,69 +58,69 @@ jQuery(document).ready(function($)


var $term = ui.item,
$term_prev = $term.prev(),
$term_next = $term.next(),
$checker_holder = $term.find('.check-column'),
$termPrev = $term.prev(),
$termNext = $term.next(),
$checkerHolder = $term.find('.check-column'),
$checker = $term.find('.check-column input'),

taxonomy = $taxonomy[0].value,
term_id = get_term_id($term),
// term_parent_id = parseInt($term.find('.parent').text(), 10),
prev_term_id = get_term_id($term_prev),
next_term_id = get_term_id($term_next),
prev_term_parent_id,
next_term_parent_id;
termId = getTermId($term),
// termParentId = parseInt($term.find('.parent').text(), 10),
prevTermId = getTermId($termPrev),
nextTermId = getTermId($termNext),
prevTermParentId,
nextTermParentId;


// get parent ID's
if ($term_prev.length && prev_term_id !== undefined) {
prev_term_parent_id = parseInt($term_prev.find('.parent').text(), 10);
// Get parent ID's
if ($termPrev.length && prevTermId !== undefined) {
prevTermParentId = parseInt($termPrev.find('.parent').text(), 10);
}
if ($term_next.length && next_term_id !== undefined) {
next_term_parent_id = parseInt($term_next.find('.parent').text(), 10);
if ($termNext.length && nextTermId !== undefined) {
nextTermParentId = parseInt($termNext.find('.parent').text(), 10);
}


// at least one of prev/next should be present
// At least one of prev/next should be present
// don't allow moving items in between its own children
if ((prev_term_id === undefined && next_term_id === undefined) ||
(prev_term_parent_id === term_id) ||
(next_term_parent_id === term_id)
if ((prevTermId === undefined && nextTermId === undefined) ||
(prevTermParentId === termId) ||
(nextTermParentId === termId)
) {
$sort.sortable('cancel');
return;
}


// disable new reorder until ajax returns
// Disable new reorder until ajax returns
$sort.sortable('disable');


// show spinner
// Show spinner
if ($checker.length) {
//$checker.hide().after('<img src="images/wpspin_light-2x.gif" width="16" height="16" style="margin-left:8px;" alt="" />');
$checker.hide().after('<span class="spinner" style="display:block;"></span>');
} else {
//$checker_holder.append('<img src="images/wpspin_light-2x.gif" width="16" height="16" style="margin-left:8px;" alt="" />');
$checker_holder.prepend('<span class="spinner" style="display:block;"></span>');
//$checkerHolder.append('<img src="images/wpspin_light-2x.gif" width="16" height="16" style="margin-left:8px;" alt="" />');
$checkerHolder.prepend('<span class="spinner" style="display:block;"></span>');
}


// force terms reload to avoid badly positioned children (visually)
var force_reload = (next_term_id === undefined && next_term_parent_id === prev_term_id);
// Force terms reload to avoid badly positioned children (visually)
var forceReload = (nextTermId === undefined && nextTermParentId === prevTermId);


// send sort cmd via ajax
// Send sort cmd via ajax
var data = {
action: 'i-order-terms',
nonce: (iOrderTerms && iOrderTerms.nonce) ? iOrderTerms.nonce : '',
term_id: term_id,
term_prev_id: prev_term_id,
term_next_id: next_term_id,
term_id: termId,
term_prev_id: prevTermId,
term_next_id: nextTermId,
taxonomy: taxonomy,
force_reload: force_reload
force_reload: forceReload
};
$.post(ajaxurl, data, function(response) {
$.post(ajaxurl, data, function (response) {
var $ajaxResponse = $('#ajax-response');
$ajaxResponse.empty();

Expand All @@ -137,22 +142,22 @@ jQuery(document).ready(function($)
console.error(response.message);
}

// remove spinner
// Remove spinner
if ($checker.length) {
//$checker.show().siblings('img').remove();
$checker.show().siblings('.spinner').remove();
} else {
//$checker_holder.children('img').remove();
$checker_holder.children('.spinner').remove();
//$checkerHolder.children('img').remove();
$checkerHolder.children('.spinner').remove();
}

// enable sorting again
// Enable sorting again
$sort.sortable('enable');
}, 'json');


// fix table row colors
$('table.wp-list-table > tbody > tr').each(function(index, el) {
// Fix table row colors
$('table.wp-list-table > tbody > tr').each(function (index, el) {
if (index % 2 === 0) {
$(el).addClass('alternate');
} else {
Expand All @@ -163,8 +168,8 @@ jQuery(document).ready(function($)
});


// catch add-tag ajax calls
$(document).ajaxSuccess(function(event, xhr, settings) {
// Catch add-tag ajax calls
$(document).ajaxSuccess(function (event, xhr, settings) {
if (settings.data && settings.data.indexOf('action=add-tag') !== -1 && xhr.responseText && xhr.responseText.indexOf('wp_error') === -1) {
$sort.sortable('refresh');
}
Expand Down
6 changes: 5 additions & 1 deletion src/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Tags: sort, order, terms, taxonomy
Requires PHP: 5.6
Requires at least: 3.5
Tested up to: 6.8
Stable tag: 1.5.0
Stable tag: 1.5.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Expand Down Expand Up @@ -79,6 +79,8 @@ Please make sure to include plugin version when reporting bugs.
2. Settings section where you can select which taxonomy should be sortable.

== Changelog ==
= 1.5.2 =
* Fixed version label
= 1.5.1 =
* Add nonce for AJAX requests to prevent CSRF attacks
* Force AJAX message as text content
Expand All @@ -104,6 +106,8 @@ Please make sure to include plugin version when reporting bugs.
* Initial release

== Upgrade Notice ==
= 1.5.2 =
* Fixed version label
= 1.5.1 =
* Add nonce for AJAX requests to prevent CSRF attacks
* Force AJAX message as text content
Expand Down
Loading