Add per-league statistics editor to team

This commit is contained in:
Takumi
2013-07-31 00:39:12 +10:00
parent 156afd5e79
commit b355a7bb4c
5 changed files with 73 additions and 19 deletions

View File

@@ -76,6 +76,8 @@ function sp_event_stats_meta( $post ) {
$limit = get_option( 'sp_event_team_count' );
$teams = array_pad( array_slice( (array)get_post_meta( $post->ID, 'sp_team', false ), 0, $limit ), $limit, 0 );
$stats = (array)get_post_meta( $post->ID, 'sp_stats', true );
// Teams
foreach ( $teams as $key => $value ):
$players = sp_array_between( (array)get_post_meta( $post->ID, 'sp_player', false ), 0, $key );
$data = sp_array_combine( $players, sp_array_value( $stats, $value, array() ) );
@@ -86,7 +88,7 @@ function sp_event_stats_meta( $post ) {
</div>
<?php
endforeach;
sp_post_adder( 'sp_player' );
}
function sp_event_edit_columns() {

View File

@@ -46,7 +46,7 @@ if ( !function_exists( 'sp_array_combine' ) ) {
function sp_array_combine( $keys = array(), $values = array() ) {
$output = array();
foreach ( $keys as $key ):
if ( array_key_exists( $key, $values ) )
if ( is_array( $values ) && array_key_exists( $key, $values ) )
$output[ $key ] = $values[ $key ];
else
$output[ $key ] = array();
@@ -127,9 +127,11 @@ if ( !function_exists( 'sp_the_posts' ) ) {
if ( ! isset( $post_id ) )
global $post_id;
$ids = get_post_meta( $post_id, $meta, false );
if ( ( $key = array_search( 0, $ids ) ) !== false )
unset( $ids[ $key ] );
$i = 0;
$count = count( $ids );
if ( isset( $ids ) && $ids && is_array( $ids ) ):
if ( isset( $ids ) && $ids && is_array( $ids ) && !empty( $ids ) ):
foreach ( $ids as $id ):
if ( !$id ) continue;
if ( !empty( $before ) ):
@@ -145,7 +147,10 @@ if ( !function_exists( 'sp_the_posts' ) ) {
edit_post_link( get_the_title( $parent ), '', '', $parent );
echo $delimiter;
endforeach;
edit_post_link( get_the_title( $id ), '', '', $id );
$title = get_the_title( $id );
if ( empty( $title ) )
$title = __( '(no title)' );
edit_post_link( $title, '', '', $id );
if ( !empty( $after ) ):
if ( is_array( $after ) && array_key_exists( $i, $after ) )
echo ' - ' . $after[ $i ];
@@ -188,7 +193,12 @@ if ( !function_exists( 'sp_post_checklist' ) ) {
<?php echo str_repeat( '<ul><li>', sizeof( $parents ) ); ?>
<label class="selectit">
<input type="checkbox" value="<?php echo $post->ID; ?>" name="sportspress[<?php echo $meta; ?>]<?php if ( isset( $index ) ) echo '[' . $index . ']'; ?>[]"<?php if ( in_array( $post->ID, $selected ) ) echo ' checked="checked"'; ?>>
<?php echo $post->post_title; ?>
<?php
$title = $post->post_title;
if ( empty( $title ) )
$title = __( '(no title)' );
echo $title;
?>
</label>
<?php echo str_repeat( '</li></ul>', sizeof( $parents ) ); ?>
</li>
@@ -202,7 +212,8 @@ if ( !function_exists( 'sp_post_checklist' ) ) {
}
if ( !function_exists( 'sp_data_table' ) ) {
function sp_data_table( $data = array(), $index = 0, $columns = array( 'Name' ), $total = true, $auto = true ) {
function sp_data_table( $data = array(), $index = 0, $columns = array( 'Name' ), $total = true, $auto = true, $rowtype = 'post' ) {
global $pagenow;
if ( !is_array( $data ) )
$data = array();
?>
@@ -222,20 +233,32 @@ if ( !function_exists( 'sp_data_table' ) ) {
$i = 0;
foreach ( $data as $key => $values ):
if ( !$key ) continue;
$is_auto = array_key_exists( 'auto', $values ) ? (int)$values[ 'auto' ] : 0;
$is_auto = array_key_exists( 'auto', $values ) ? (int)$values[ 'auto' ] : $pagenow == 'post-new.php';
?>
<tr class="sp-post<?php
if ( $i % 2 == 0 )
echo ' alternate';
?>">
<td><?php echo get_the_title( $key ); ?></td>
<tr class="sp-post<?php if ( $i % 2 == 0 ) echo ' alternate'; ?>">
<td>
<?php
switch( $rowtype ):
case 'post':
$title = get_the_title( $key );
break;
default:
$term = get_term( $key, $rowtype );
$title = $term->name;;
break;
endswitch;
if ( empty( $title ) )
$title = __( '(no title)' );
echo $title;
?>
</td>
<?php for ( $j = 0; $j < sizeof( $columns ) - 1; $j ++ ):
if ( array_key_exists( $j, $values ) )
$value = (int)$values[ $j ];
else
$value = 0;
?>
<td><input type="text" name="sportspress[sp_stats][<?php echo $index; ?>][<?php echo $key; ?>][]" value="<?php echo $value; ?>"<?php if ( $is_auto ) echo ' readonly="readonly"'; ?> /></td>
<td><input type="text" name="sportspress[sp_stats][<?php echo $index; ?>][<?php echo $key; ?>][]" value="<?php echo $value; ?>" /></td>
<?php endfor; ?>
<?php if ( $auto ): ?>
<td><input type="checkbox" name="sportspress[sp_stats][<?php echo $index; ?>][<?php echo $key; ?>][auto]" value="1"<?php if ( $is_auto ) echo ' checked="checked"'; ?> /></td>
@@ -247,7 +270,7 @@ if ( !function_exists( 'sp_data_table' ) ) {
if ( $total ):
$values = array_key_exists( 0, $data ) ? $data[0] : array();
if ( $auto )
$is_auto = array_key_exists( 'auto', $values ) ? (int)$values[ 'auto' ] : 0;
$is_auto = array_key_exists( 'auto', $values ) ? (int)$values[ 'auto' ] : $pagenow == 'post-new.php';
else
$is_auto = $i;
?>
@@ -262,7 +285,7 @@ if ( !function_exists( 'sp_data_table' ) ) {
else
$value = 0;
?>
<td><input type="text" name="sportspress[sp_stats][<?php echo $index; ?>][0][]" value="<?php echo $value; ?>"<?php if ( $is_auto ) echo ' readonly="readonly"'; ?> /></td>
<td><input type="text" name="sportspress[sp_stats][<?php echo $index; ?>][0][]" value="<?php echo $value; ?>" /></td>
<?php endfor; ?>
<?php if ( $auto ): ?>
<td><input type="checkbox" name="sportspress[sp_stats][<?php echo $index; ?>][0][auto]" value="1"<?php if ( $is_auto ) echo ' checked="checked"'; ?> /></td>

View File

@@ -36,16 +36,24 @@ function sp_player_stats_meta( $post ) {
$teams = (array)get_post_meta( $post->ID, 'sp_team', false );
$leagues = (array)get_the_terms( $post->ID, 'sp_league' );
$stats = (array)get_post_meta( $post->ID, 'sp_stats', true );
// Overall
$data = sp_array_combine( $teams, sp_array_value( $stats, 0, array() ) );
?>
<p><strong><?php _e( 'Overall', 'sportspress' ); ?></strong></p>
<?php sp_data_table( $data, 0, array( 'Team', 'Played', 'Goals', 'Assists', 'Yellow Cards', 'Red Cards' ) ); ?>
<?php
// Leagues
foreach ( $leagues as $league ):
if ( !$league ) continue;
$data = sp_array_combine( $teams, sp_array_value( $stats, $league->term_id, array() ) );
?>
<div>
<p><strong><?php echo $league->name; ?></strong></p>
<?php sp_data_table( $data, $league->term_id, array( 'Team', 'Played', 'Goals', 'Assists', 'Yellow Cards', 'Red Cards' ) ); ?>
</div>
<p><strong><?php echo $league->name; ?></strong></p>
<?php sp_data_table( $data, $league->term_id, array( 'Team', 'Played', 'Goals', 'Assists', 'Yellow Cards', 'Red Cards' ) ); ?>
<?php
endforeach;
}
function sp_player_profile_meta( $post ) {

View File

@@ -33,6 +33,9 @@ jQuery(document).ready(function($){
}
})
// Activate checkboxes
$('.sp-data-table tr input[type=checkbox]').change();
// Change title
$('.sp-title-generator select').change(function() {
title = $('.sp-title-generator select[value!=0]').map(function(){

View File

@@ -21,6 +21,7 @@ function sp_team_meta_init() {
add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', 'sp_team', 'side', 'high' );
remove_meta_box( 'postimagediv', 'sp_team', 'side' );
add_meta_box( 'postimagediv', __( 'Logo', 'sportspress' ), 'post_thumbnail_meta_box', 'sp_team', 'side', 'high' );
add_meta_box( 'sp_statsdiv', __( 'Statistics', 'sportspress' ), 'sp_team_stats_meta', 'sp_team', 'normal', 'high' );
}
function sp_team_edit_columns() {
@@ -34,4 +35,21 @@ function sp_team_edit_columns() {
return $columns;
}
add_filter( 'manage_edit-sp_team_columns', 'sp_team_edit_columns' );
function sp_team_stats_meta( $post ) {
$leagues = (array)get_the_terms( $post->ID, 'sp_league' );
$stats = (array)get_post_meta( $post->ID, 'sp_stats', true );
$keys = array( 0 );
foreach ( $leagues as $key => $value ):
if ( is_object( $value ) && property_exists( $value, 'term_id' ) )
$keys[] = $value->term_id;
endforeach;
$data = sp_array_combine( $keys, sp_array_value( $stats, 0, array() ) );
?>
<?php sp_data_table( $data, 0, array( 'Team', 'Played', 'Goals', 'Assists', 'Yellow Cards', 'Red Cards' ), true, true, 'sp_league' );
sp_nonce();
}
?>