Merge pull request #322 from ThemeBoy/feature-league-tables-bypass-ordering
Feature league tables bypass ordering
This commit is contained in:
@@ -889,4 +889,13 @@ jQuery(document).ready(function($){
|
||||
|
||||
// Trigger box score time converter
|
||||
$('.sp-convert-time-input').change();
|
||||
});
|
||||
|
||||
// Trigger show/hide of team table ordering
|
||||
$('#sp_orderby').change(function(){
|
||||
if ($('#sp_orderby').val() == 'default') {
|
||||
$("#sp_order").hide();
|
||||
}else{
|
||||
$('#sp_order').show();
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -29,6 +29,8 @@ class SP_Meta_Box_Table_Details {
|
||||
$date_to = get_post_meta( $post->ID, 'sp_date_to', true );
|
||||
$date_past = get_post_meta( $post->ID, 'sp_date_past', true );
|
||||
$date_relative = get_post_meta( $post->ID, 'sp_date_relative', true );
|
||||
$orderby = get_post_meta( $post->ID, 'sp_orderby', true );
|
||||
$order = get_post_meta( $post->ID, 'sp_order', true );
|
||||
$event_status = get_post_meta( $post->ID, 'sp_event_status', true );
|
||||
if ( empty( $event_status ) ) {
|
||||
$event_status = array( 'publish', 'future' );
|
||||
@@ -99,6 +101,31 @@ class SP_Meta_Box_Table_Details {
|
||||
<input type="checkbox" name="sp_event_status[]" value="future" <?php echo ( in_array( "future" , $event_status) ) ? 'checked' : false; ?>> Scheduled/Future<br>
|
||||
</p>
|
||||
</div>
|
||||
<p><strong><?php _e( 'Sort by', 'sportspress' ); ?></strong></p>
|
||||
<p>
|
||||
<?php
|
||||
$args = array(
|
||||
'prepend_options' => array(
|
||||
'default' => __( 'Default', 'sportspress' ),
|
||||
'name' => __( 'Name', 'sportspress' ),
|
||||
),
|
||||
'post_type' => array( 'sp_column' ),
|
||||
'name' => 'sp_orderby',
|
||||
'selected' => $orderby,
|
||||
'values' => 'slug',
|
||||
);
|
||||
sp_dropdown_pages( $args );
|
||||
?>
|
||||
</p>
|
||||
<div id="sp_order" <?php echo ( $orderby === 'default' ? 'style="display: none;"' : '' ); ?>>
|
||||
<p><strong><?php _e( 'Sort Order', 'sportspress' ); ?></strong></p>
|
||||
<p>
|
||||
<select name="sp_order">
|
||||
<option value="ASC" <?php selected( 'ASC', $order ); ?>><?php _e( 'Ascending', 'sportspress' ); ?></option>
|
||||
<option value="DESC" <?php selected( 'DESC', $order ); ?>><?php _e( 'Descending', 'sportspress' ); ?></option>
|
||||
</select>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
@@ -117,6 +144,8 @@ class SP_Meta_Box_Table_Details {
|
||||
update_post_meta( $post_id, 'sp_current_season', in_array( 'auto', sp_array_value( $tax_input, 'sp_season' ) ) );
|
||||
update_post_meta( $post_id, 'sp_select', sp_array_value( $_POST, 'sp_select', array() ) );
|
||||
sp_update_post_meta_recursive( $post_id, 'sp_team', sp_array_value( $_POST, 'sp_team', array() ) );
|
||||
update_post_meta( $post_id, 'sp_orderby', sp_array_value( $_POST, 'sp_orderby', array() ) );
|
||||
update_post_meta( $post_id, 'sp_order', sp_array_value( $_POST, 'sp_order', array() ) );
|
||||
update_post_meta( $post_id, 'sp_event_status', sp_array_value( $_POST, 'sp_event_status', array() ) );
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,11 @@ class SP_League_Table extends SP_Secondary_Post {
|
||||
|
||||
/** @var array Teams to check for tiebreakers. */
|
||||
public $tiebreakers = array();
|
||||
|
||||
|
||||
//** @var strings
|
||||
public $orderby;
|
||||
public $orderbyorder;
|
||||
|
||||
/** @var int Show Published events. */
|
||||
public $show_published_events;
|
||||
|
||||
@@ -44,6 +48,8 @@ class SP_League_Table extends SP_Secondary_Post {
|
||||
$usecolumns = get_post_meta( $this->ID, 'sp_columns', true );
|
||||
$adjustments = get_post_meta( $this->ID, 'sp_adjustments', true );
|
||||
$select = get_post_meta( $this->ID, 'sp_select', true );
|
||||
$this->orderby = get_post_meta( $this->ID, 'sp_orderby', true );
|
||||
$this->orderbyorder = get_post_meta( $this->ID, 'sp_order', true );
|
||||
$link_events = get_option( 'sportspress_link_events', 'yes' ) === 'yes' ? true : false;
|
||||
$form_limit = (int) get_option( 'sportspress_form_limit', 5 );
|
||||
|
||||
@@ -53,7 +59,10 @@ class SP_League_Table extends SP_Secondary_Post {
|
||||
$this->date = 0;
|
||||
|
||||
// Apply defaults
|
||||
if ( empty( $this->orderby ) ) $this->orderby = 'default';
|
||||
if ( empty( $this->orderbyorder ) ) $this->orderbyorder = 'ASC';
|
||||
if ( empty( $select ) ) $select = 'auto';
|
||||
|
||||
|
||||
if ( 'range' == $this->date ) {
|
||||
|
||||
@@ -789,6 +798,17 @@ class SP_League_Table extends SP_Secondary_Post {
|
||||
}
|
||||
}
|
||||
|
||||
// Rearrange the table if Default ordering is not selected
|
||||
if ( $this->orderby != 'default' ) {
|
||||
uasort( $merged, array( $this, 'simple_order' ) );
|
||||
// Recalculate position of teams
|
||||
$this->pos = 0;
|
||||
$this->counter = 0;
|
||||
foreach ( $merged as $team_id => $team_columns ) {
|
||||
$merged[ $team_id ]['pos'] = $this->calculate_pos( $team_columns, $team_id, false );
|
||||
}
|
||||
}
|
||||
|
||||
// Rearrange data array to reflect values
|
||||
$data = array();
|
||||
foreach( $merged as $key => $value ):
|
||||
@@ -840,6 +860,30 @@ class SP_League_Table extends SP_Secondary_Post {
|
||||
// Default sort by alphabetical
|
||||
return strcmp( sp_array_value( $a, 'name', '' ), sp_array_value( $b, 'name', '' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort the table by ordering.
|
||||
*
|
||||
* @param array $a
|
||||
* @param array $b
|
||||
* @return int
|
||||
*/
|
||||
public function simple_order( $a, $b ) {
|
||||
|
||||
if ( $this->orderbyorder == 'DESC' ) {
|
||||
if ( $this->orderby == 'name' ){
|
||||
return strcmp( sp_array_value( $b, 'name', '' ), sp_array_value( $a, 'name', '' ) );
|
||||
}else{
|
||||
return (float) $b[ $this->orderby ] - (float) $a[ $this->orderby ];
|
||||
}
|
||||
}else{
|
||||
if ( $this->orderby == 'name' ){
|
||||
return strcmp( sp_array_value( $a, 'name', '' ), sp_array_value( $b, 'name', '' ) );
|
||||
}else{
|
||||
return (float) $a[ $this->orderby ] - (float) $b[ $this->orderby ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find accurate position of teams.
|
||||
|
||||
Reference in New Issue
Block a user