Add option to make tables sortable and responsive

This commit is contained in:
Brian Miyaji
2014-03-22 14:55:34 +11:00
parent 1b6d483b96
commit ce292db5cd
6 changed files with 91 additions and 25 deletions

View File

@@ -51,6 +51,14 @@ class SportsPressPlayerSettingsPage {
'list'
);
add_settings_field(
'players',
__( 'Players', 'sportspress' ),
array( $this, 'players_callback' ),
'sportspress_players',
'list'
);
add_settings_field(
'metrics',
__( 'Metrics', 'sportspress' ),
@@ -82,13 +90,21 @@ class SportsPressPlayerSettingsPage {
}
function list_callback() {
$link_posts = sportspress_array_value( $this->options, 'player_list_link_posts', true );
$responsive = sportspress_array_value( $this->options, 'player_list_responsive', true );
$sortable = sportspress_array_value( $this->options, 'player_list_sortable', true );
?>
<fieldset>
<label for="sportspress_player_list_link_posts">
<input id="sportspress_player_list_link_posts_default" name="sportspress[player_list_link_posts]" type="hidden" value="0">
<input id="sportspress_player_list_link_posts" name="sportspress[player_list_link_posts]" type="checkbox" value="1" <?php checked( $link_posts ); ?>>
<?php _e( 'Display players as links', 'sportspress' ); ?>
<label for="sportspress_player_list_responsive">
<input id="sportspress_player_list_responsive_default" name="sportspress[player_list_responsive]" type="hidden" value="0">
<input id="sportspress_player_list_responsive" name="sportspress[player_list_responsive]" type="checkbox" value="1" <?php checked( $responsive ); ?>>
<?php _e( 'Responsive', 'sportspress' ); ?>
</label>
</fieldset>
<fieldset>
<label for="sportspress_player_list_sortable">
<input id="sportspress_player_list_sortable_default" name="sportspress[player_list_sortable]" type="hidden" value="0">
<input id="sportspress_player_list_sortable" name="sportspress[player_list_sortable]" type="checkbox" value="1" <?php checked( $sortable ); ?>>
<?php _e( 'Sortable', 'sportspress' ); ?>
</label>
</fieldset>
<?php
@@ -107,6 +123,19 @@ class SportsPressPlayerSettingsPage {
<?php
}
function players_callback() {
$link_posts = sportspress_array_value( $this->options, 'player_list_link_posts', true );
?>
<fieldset>
<label for="sportspress_player_list_link_posts">
<input id="sportspress_player_list_link_posts_default" name="sportspress[player_list_link_posts]" type="hidden" value="0">
<input id="sportspress_player_list_link_posts" name="sportspress[player_list_link_posts]" type="checkbox" value="1" <?php checked( $link_posts ); ?>>
<?php _e( 'Display players as links', 'sportspress' ); ?>
</label>
</fieldset>
<?php
}
function metrics_callback() {
$args = array(
'post_type' => 'sp_metric',

View File

@@ -20,10 +20,18 @@ class SportsPressTeamSettingsPage {
'sportspress_teams'
);
add_settings_field(
'table',
__( 'Table', 'sportspress' ),
array( $this, 'table_callback' ),
'sportspress_teams',
'table'
);
add_settings_field(
'teams',
__( 'Teams', 'sportspress' ),
array( $this, 'tables_callback' ),
array( $this, 'teams_callback' ),
'sportspress_teams',
'table'
);
@@ -37,7 +45,28 @@ class SportsPressTeamSettingsPage {
);
}
function tables_callback() {
function table_callback() {
$responsive = sportspress_array_value( $this->options, 'league_table_responsive', true );
$sortable = sportspress_array_value( $this->options, 'league_table_sortable', true );
?>
<fieldset>
<label for="sportspress_league_table_responsive">
<input id="sportspress_league_table_responsive_default" name="sportspress[league_table_responsive]" type="hidden" value="0">
<input id="sportspress_league_table_responsive" name="sportspress[league_table_responsive]" type="checkbox" value="1" <?php checked( $responsive ); ?>>
<?php _e( 'Responsive', 'sportspress' ); ?>
</label>
</fieldset>
<fieldset>
<label for="sportspress_league_table_sortable">
<input id="sportspress_league_table_sortable_default" name="sportspress[league_table_sortable]" type="hidden" value="0">
<input id="sportspress_league_table_sortable" name="sportspress[league_table_sortable]" type="checkbox" value="1" <?php checked( $sortable ); ?>>
<?php _e( 'Sortable', 'sportspress' ); ?>
</label>
</fieldset>
<?php
}
function teams_callback() {
$show_team_logo = sportspress_array_value( $this->options, 'league_table_show_team_logo', false );
$link_posts = sportspress_array_value( $this->options, 'league_table_link_posts', false );
?>

View File

@@ -13,12 +13,14 @@ if ( !function_exists( 'sportspress_league_table' ) ) {
'show_full_table_link' => false,
'show_team_logo' => sportspress_array_value( $sportspress_options, 'league_table_show_team_logo', false ),
'link_posts' => sportspress_array_value( $sportspress_options, 'league_table_link_posts', false ),
'sortable' => sportspress_array_value( $sportspress_options, 'league_table_sortable', true ),
'responsive' => sportspress_array_value( $sportspress_options, 'league_table_responsive', true ),
);
$r = wp_parse_args( $args, $defaults );
$output = '<div class="sp-table-wrapper">' .
'<table class="sp-league-table sp-data-table sp-responsive-table">' . '<thead>' . '<tr>';
'<table class="sp-league-table sp-data-table' . ( $r['responsive'] ? ' sp-responsive-table' : '' ) . ( $r['sortable'] ? ' sp-sortable-table' : '' ) . '">' . '<thead>' . '<tr>';
$data = sportspress_get_league_table_data( $id );

View File

@@ -14,12 +14,14 @@ if ( !function_exists( 'sportspress_player_list' ) ) {
'order' => 'ASC',
'show_all_players_link' => false,
'link_posts' => sportspress_array_value( $sportspress_options, 'player_list_link_posts', true ),
'sortable' => sportspress_array_value( $sportspress_options, 'player_list_sortable', true ),
'responsive' => sportspress_array_value( $sportspress_options, 'player_list_responsive', true ),
);
$r = wp_parse_args( $args, $defaults );
$output = '<div class="sp-table-wrapper">' .
'<table class="sp-player-list sp-data-table sp-responsive-table">' . '<thead>' . '<tr>';
'<table class="sp-player-list sp-data-table' . ( $r['responsive'] ? ' sp-responsive-table' : '' ) . ( $r['sortable'] ? ' sp-sortable-table' : '' ) . '">' . '<thead>' . '<tr>';
$data = sportspress_get_player_list_data( $id );

View File

@@ -24,22 +24,25 @@ function viewport() {
/* Data Tables */
if (viewport().width > 640) {
$(".sp-league-table, .sp-event-statistics, .sp-player-list").dataTable({
"aaSorting": [],
"bAutoWidth": false,
"bFilter": false,
"bInfo": false,
"bPaginate": false,
"bSort": true,
"oLanguage": {
"oAria": {
"sSortAscending": "",
"sSortDescending": ""
}
},
"aoColumnDefs": [
{ "sType": "numeric", "aTargets": [ 0 ] },
]
$(".sp-league-table, .sp-event-statistics, .sp-player-list").each(function() {
sort = $(this).hasClass("sp-sortable-table");
$(this).dataTable({
"aaSorting": [],
"bAutoWidth": false,
"bFilter": false,
"bInfo": false,
"bPaginate": false,
"bSort": sort,
"oLanguage": {
"oAria": {
"sSortAscending": "",
"sSortDescending": ""
}
},
"aoColumnDefs": [
{ "sType": "numeric", "aTargets": [ 0 ] },
]
});
});
}

View File

@@ -158,6 +158,7 @@ SportsPress is currently in beta and is undergoing testing. We are still activel
* Feature - Display full event results on hover over main team result in admin.
* Feature - Add option to choose delimiter to use between team names in event titles.
* Tweak - Adjust text options to modify front-end only.
* Fix - Responsive league table output and styling.
= 0.6 =
* Feature - New events shortcodes: countdown, events-calendar, and events-list.