Add Calendars (sp_calendar) and Venues (sp_venue)

This commit is contained in:
Brian Miyaji
2014-01-09 17:10:42 +11:00
parent c6df9ebca0
commit 40b6cc6840
12 changed files with 295 additions and 137 deletions

View File

@@ -1,130 +0,0 @@
<?php
function sportspress_admin_init() {
$installed = get_option( 'sportspress_installed', false );
// General settings
register_setting(
'sportspress_general',
'sportspress',
'sportspress_validate'
);
add_settings_section(
'general',
'',
'',
'sportspress_general'
);
add_settings_field(
'sport',
__( 'Sport', 'sportspress' ),
'sportspress_sport_callback',
'sportspress_general',
'general'
);
// Event Settings
register_setting(
'sportspress_events',
'sportspress',
'sportspress_validate'
);
add_settings_section(
'events',
'',
'',
'sportspress_events'
);
add_settings_field(
'sport',
__( 'Sport', 'sportspress' ),
'sportspress_sport_callback',
'sportspress_events',
'events'
);
}
add_action( 'admin_init', 'sportspress_admin_init', 1 );
function sportspress_validate( $input ) {
$options = get_option( 'sportspress' );
// Do nothing if sport is the same as currently selected
if ( sportspress_array_value( $options, 'sport', null ) == sportspress_array_value( $input, 'sport', null ) )
return $input;
// Get sports presets
global $sportspress_sports;
// Get array of post types to insert
$post_groups = sportspress_array_value( sportspress_array_value( $sportspress_sports, sportspress_array_value( $input, 'sport', null ), array() ), 'posts', array() );
// Loop through each post type
foreach( $post_groups as $post_type => $posts ):
$args = array(
'post_type' => $post_type,
'numberposts' => -1,
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'sp_preset',
'value' => 1
)
)
);
// Delete posts
$old_posts = get_posts( $args );
foreach( $old_posts as $post ):
wp_delete_post( $post->ID, true);
endforeach;
// Add posts
foreach( $posts as $index => $post ):
// Make sure post doesn't overlap
if ( ! get_page_by_path( $post['post_name'], OBJECT, $post_type ) ):
// Translate post title
$post['post_title'] = __( $post['post_title'], 'sportspress' );
// Set post type
$post['post_type'] = $post_type;
// Increment menu order by 2 and publish post
$post['menu_order'] = $index * 2 + 2;
$post['post_status'] = 'publish';
$id = wp_insert_post( $post );
// Flag as preset
update_post_meta( $id, 'sp_preset', 1 );
// Update meta
if ( array_key_exists( 'meta', $post ) ):
foreach ( $post['meta'] as $key => $value ):
update_post_meta( $id, $key, $value );
endforeach;
endif;
endif;
endforeach;
endforeach;
return $input;
}

View File

@@ -11,7 +11,10 @@ function sportspress_manage_posts_custom_column( $column, $post_id ) {
case 'sp_team':
$post_type = get_post_type( $post );
$teams = get_post_meta ( $post_id, 'sp_team', false );
if ( $post_type == 'sp_event' ):
if ( empty( $teams ) ):
echo '—';
break;
elseif ( $post_type == 'sp_event' ):
$results = get_post_meta( $post_id, 'sp_results', true );
foreach( $teams as $team_id ):
if ( ! $team_id ) continue;
@@ -69,6 +72,9 @@ function sportspress_manage_posts_custom_column( $column, $post_id ) {
case 'sp_season':
echo get_the_terms ( $post_id, 'sp_season' ) ? the_terms( $post_id, 'sp_season' ) : '—';
break;
case 'sp_venue':
echo get_the_terms ( $post_id, 'sp_venue' ) ? the_terms( $post_id, 'sp_venue' ) : '—';
break;
case 'sp_sponsor':
echo get_the_terms ( $post_id, 'sp_sponsor' ) ? the_terms( $post_id, 'sp_sponsor' ) : '—';
break;

View File

@@ -1,7 +1,11 @@
<?php
function sportspress_sanitize_title( $title ) {
if ( isset( $_POST ) && array_key_exists( 'taxonomy', $_POST ) ):
return $title;
if ( isset( $_POST ) && array_key_exists( 'post_type', $_POST ) && in_array( $_POST['post_type'], array( 'sp_result', 'sp_outcome', 'sp_column', 'sp_statistic' ) ) ):
elseif ( isset( $_POST ) && array_key_exists( 'post_type', $_POST ) && in_array( $_POST['post_type'], array( 'sp_result', 'sp_outcome', 'sp_column', 'sp_statistic' ) ) ):
$key = $_POST['sp_key'];
@@ -22,4 +26,4 @@ function sportspress_sanitize_title( $title ) {
return $title;
}
add_filter( 'sanitize_title', 'sportspress_sanitize_title' );
//add_filter( 'sanitize_title', 'sportspress_sanitize_title' );

View File

@@ -0,0 +1,75 @@
<?php
function sportspress_calendar_post_init() {
$name = __( 'Calendars', 'sportspress' );
$singular_name = __( 'Calendar', 'sportspress' );
$lowercase_name = __( 'calendars', 'sportspress' );
$labels = sportspress_get_post_labels( $name, $singular_name, $lowercase_name, true );
$args = array(
'label' => $name,
'labels' => $labels,
'public' => true,
'hierarchical' => false,
'supports' => array( 'title', 'author', 'excerpt' ),
'register_meta_box_cb' => 'sportspress_calendar_meta_init',
'rewrite' => array( 'slug' => get_option( 'sp_calendar_slug', 'calendars' ) ),
'show_in_menu' => 'edit.php?post_type=sp_event',
'show_in_admin_bar' => true,
// 'capability_type' => 'sp_calendar'
);
register_post_type( 'sp_calendar', $args );
}
add_action( 'init', 'sportspress_calendar_post_init' );
function sportspress_calendar_edit_columns() {
$columns = array(
'cb' => '<input type="checkbox" />',
'title' => __( 'Title' ),
'sp_team' => __( 'Teams', 'sportspress' ),
'sp_season' => __( 'Seasons', 'sportspress' ),
);
return $columns;
}
add_filter( 'manage_edit-sp_calendar_columns', 'sportspress_calendar_edit_columns' );
function sportspress_calendar_meta_init( $post ) {
$teams = (array)get_post_meta( $post->ID, 'sp_team', false );
add_meta_box( 'sp_teamdiv', __( 'Teams', 'sportspress' ), 'sportspress_calendar_team_meta', 'sp_calendar', 'side', 'high' );
if ( $teams && $teams != array(0) ):
add_meta_box( 'sp_columnsdiv', __( 'League Table', 'sportspress' ), 'sportspress_calendar_columns_meta', 'sp_calendar', 'normal', 'high' );
endif;
}
function sportspress_calendar_team_meta( $post, $test ) {
$league_id = sportspress_get_the_term_id( $post->ID, 'sp_season', 0 );
?>
<div>
<p class="sp-tab-select">
<?php
$args = array(
'taxonomy' => 'sp_season',
'name' => 'sp_season',
'selected' => $league_id,
'value' => 'term_id'
);
sportspress_dropdown_taxonomies( $args );
?>
</p>
<?php
sportspress_post_checklist( $post->ID, 'sp_team', 'block', 'sp_season' );
sportspress_post_adder( 'sp_team' );
?>
</div>
<?php
sportspress_nonce();
}
function sportspress_calendar_columns_meta( $post ) {
// list( $columns, $data, $placeholders, $merged ) = sportspress_get_league_calendar_data( $post->ID, true );
// sportspress_edit_league_calendar( $columns, $data, $placeholders );
sportspress_nonce();
}

View File

@@ -142,6 +142,7 @@ function sportspress_event_edit_columns() {
'title' => __( 'Event', 'sportspress' ),
'sp_team' => __( 'Teams', 'sportspress' ),
'sp_season' => __( 'Seasons', 'sportspress' ),
'sp_venue' => __( 'Venues', 'sportspress' ),
'sp_kickoff' => __( 'Kick-off', 'sportspress' )
);
return $columns;

View File

@@ -35,6 +35,7 @@ add_filter( 'manage_edit-sp_list_columns', 'sportspress_list_edit_columns' );
function sportspress_list_meta_init( $post ) {
$players = (array)get_post_meta( $post->ID, 'sp_player', false );
remove_meta_box( 'sp_seasondiv', 'sp_list', 'side' );
add_meta_box( 'sp_playerdiv', __( 'Players', 'sportspress' ), 'sportspress_list_player_meta', 'sp_list', 'side', 'high' );
if ( $players && $players != array(0) ):
@@ -47,6 +48,7 @@ function sportspress_list_player_meta( $post ) {
$team_id = get_post_meta( $post->ID, 'sp_team', true );
?>
<div>
<p><strong><?php _e( 'Season', 'sportspress' ); ?></strong></p>
<p class="sp-tab-select">
<?php
$args = array(
@@ -58,6 +60,7 @@ function sportspress_list_player_meta( $post ) {
sportspress_dropdown_taxonomies( $args );
?>
</p>
<p><strong><?php _e( 'Team', 'sportspress' ); ?></strong></p>
<p class="sp-tab-select">
<?php
$args = array(
@@ -68,6 +71,7 @@ function sportspress_list_player_meta( $post ) {
wp_dropdown_pages( $args );
?>
</p>
<p><strong><?php _e( 'Players', 'sportspress' ); ?></strong></p>
<?php
sportspress_post_checklist( $post->ID, 'sp_player', 'block', 'sp_team' );
sportspress_post_adder( 'sp_player' );

View File

@@ -34,6 +34,7 @@ add_filter( 'manage_edit-sp_table_columns', 'sportspress_table_edit_columns' );
function sportspress_table_meta_init( $post ) {
$teams = (array)get_post_meta( $post->ID, 'sp_team', false );
remove_meta_box( 'sp_seasondiv', 'sp_table', 'side' );
add_meta_box( 'sp_teamdiv', __( 'Teams', 'sportspress' ), 'sportspress_table_team_meta', 'sp_table', 'side', 'high' );
if ( $teams && $teams != array(0) ):

View File

@@ -55,3 +55,131 @@ function sportspress_event_stats_callback() {
function sportspress_player_stats_callback() {
sportspress_render_option_field( 'sportspress_stats', 'player', 'textarea' );
}
function sportspress_settings_init() {
$installed = get_option( 'sportspress_installed', false );
// General settings
register_setting(
'sportspress_general',
'sportspress',
'sportspress_validate'
);
add_settings_section(
'general',
'',
'',
'sportspress_general'
);
add_settings_field(
'sport',
__( 'Sport', 'sportspress' ),
'sportspress_sport_callback',
'sportspress_general',
'general'
);
// Event Settings
register_setting(
'sportspress_events',
'sportspress',
'sportspress_validate'
);
add_settings_section(
'events',
'',
'',
'sportspress_events'
);
add_settings_field(
'sport',
__( 'Sport', 'sportspress' ),
'sportspress_sport_callback',
'sportspress_events',
'events'
);
}
add_action( 'admin_init', 'sportspress_settings_init', 1 );
function sportspress_validate( $input ) {
$options = get_option( 'sportspress' );
// Do nothing if sport is the same as currently selected
if ( sportspress_array_value( $options, 'sport', null ) == sportspress_array_value( $input, 'sport', null ) )
return $input;
// Get sports presets
global $sportspress_sports;
// Get array of post types to insert
$post_groups = sportspress_array_value( sportspress_array_value( $sportspress_sports, sportspress_array_value( $input, 'sport', null ), array() ), 'posts', array() );
// Loop through each post type
foreach( $post_groups as $post_type => $posts ):
$args = array(
'post_type' => $post_type,
'numberposts' => -1,
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'sp_preset',
'value' => 1
)
)
);
// Delete posts
$old_posts = get_posts( $args );
foreach( $old_posts as $post ):
wp_delete_post( $post->ID, true);
endforeach;
// Add posts
foreach( $posts as $index => $post ):
// Make sure post doesn't overlap
if ( ! get_page_by_path( $post['post_name'], OBJECT, $post_type ) ):
// Translate post title
$post['post_title'] = __( $post['post_title'], 'sportspress' );
// Set post type
$post['post_type'] = $post_type;
// Increment menu order by 2 and publish post
$post['menu_order'] = $index * 2 + 2;
$post['post_status'] = 'publish';
$id = wp_insert_post( $post );
// Flag as preset
update_post_meta( $id, 'sp_preset', 1 );
// Update meta
if ( array_key_exists( 'meta', $post ) ):
foreach ( $post['meta'] as $key => $value ):
update_post_meta( $id, $key, $value );
endforeach;
endif;
endif;
endforeach;
endforeach;
return $input;
}

View File

@@ -3,19 +3,21 @@ function sportspress_season_term_init() {
$name = __( 'Seasons', 'sportspress' );
$singular_name = __( 'Season', 'sportspress' );
$lowercase_name = __( 'season', 'sportspress' );
$object_type = array( 'sp_team', 'sp_event', 'sp_player', 'sp_staff' );
$object_type = array( 'sp_event', 'sp_calendar', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' );
$labels = sportspress_get_term_labels( $name, $singular_name, $lowercase_name );
$args = array(
'label' => $name,
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'rewrite' => array( 'slug' => 'league' )
'rewrite' => array( 'slug' => 'season' )
);
register_taxonomy( 'sp_season', $object_type, $args );
register_taxonomy_for_object_type( 'sp_season', 'sp_team' );
register_taxonomy_for_object_type( 'sp_season', 'sp_event' );
register_taxonomy_for_object_type( 'sp_season', 'sp_calendar' );
register_taxonomy_for_object_type( 'sp_season', 'sp_team' );
register_taxonomy_for_object_type( 'sp_season', 'sp_player' );
register_taxonomy_for_object_type( 'sp_season', 'sp_list' );
register_taxonomy_for_object_type( 'sp_season', 'sp_staff' );
}
add_action( 'init', 'sportspress_season_term_init' );

58
admin/terms/venue.php Normal file
View File

@@ -0,0 +1,58 @@
<?php
function sportspress_venue_term_init() {
$name = __( 'Venues', 'sportspress' );
$singular_name = __( 'Venue', 'sportspress' );
$lowercase_name = __( 'venue', 'sportspress' );
$object_type = array( 'sp_event', 'sp_calendar' );
$labels = sportspress_get_term_labels( $name, $singular_name, $lowercase_name );
$args = array(
'label' => $name,
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'rewrite' => array( 'slug' => 'venue' )
);
register_taxonomy( 'sp_venue', $object_type, $args );
register_taxonomy_for_object_type( 'sp_venue', 'sp_event' );
register_taxonomy_for_object_type( 'sp_venue', 'sp_calendar' );
}
add_action( 'init', 'sportspress_venue_term_init' );
function sportspress_venue_edit_form_fields( $term ) {
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" ); ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="term_meta[sp_address]"><?php _e( 'Address', 'sportspress' ); ?></label></th>
<td>
<input type="text" name="term_meta[sp_address]" id="term_meta[sp_address]" value="<?php echo esc_attr( $term_meta['sp_address'] ) ? esc_attr( $term_meta['sp_address'] ) : ''; ?>">
</td>
</tr>
<?php
}
add_action( 'sp_venue_edit_form_fields', 'sportspress_venue_edit_form_fields', 10, 2 );
function sportspress_venue_add_form_fields() {
?>
<div class="form-field">
<label for="term_meta[sp_address]"><?php _e( 'Address', 'sportspress' ); ?></label>
<input type="text" name="term_meta[sp_address]" id="term_meta[sp_address]" value="">
</div>
<?php
}
add_action( 'sp_venue_add_form_fields', 'sportspress_venue_add_form_fields', 10, 2 );
function sportspress_save_venue_meta( $term_id ) {
if ( isset( $_POST['term_meta'] ) ) {
$t_id = $term_id;
$term_meta = get_option( "taxonomy_$t_id" );
$cat_keys = array_keys( $_POST['term_meta'] );
foreach ( $cat_keys as $key ) {
if ( isset ( $_POST['term_meta'][ $key ] ) ) {
$term_meta[$key] = $_POST['term_meta'][ $key ];
}
}
update_option( "taxonomy_$t_id", $term_meta );
}
}
add_action( 'edited_sp_venue', 'sportspress_save_venue_meta', 10, 2 );
add_action( 'create_sp_venue', 'sportspress_save_venue_meta', 10, 2 );

View File

@@ -26,4 +26,12 @@ table.widefat th.column-sp_logo,
table.widefat td.column-sp_logo {
width: 32px;
text-align: center;
}
#sp_venue-adder h4,
#sp_team-adder h4,
#sp_season-adder h4,
#sp_player-adder h4,
#sp_position-adder h4 {
margin: 10px 0;
}

View File

@@ -44,6 +44,7 @@ require_once dirname( __FILE__ ) . '/admin/post-types/metric.php';
require_once dirname( __FILE__ ) . '/admin/post-types/result.php';
require_once dirname( __FILE__ ) . '/admin/post-types/outcome.php';
require_once dirname( __FILE__ ) . '/admin/post-types/event.php';
require_once dirname( __FILE__ ) . '/admin/post-types/calendar.php';
require_once dirname( __FILE__ ) . '/admin/post-types/team.php';
require_once dirname( __FILE__ ) . '/admin/post-types/table.php';
require_once dirname( __FILE__ ) . '/admin/post-types/player.php';
@@ -52,6 +53,7 @@ require_once dirname( __FILE__ ) . '/admin/post-types/staff.php';
// Terms
require_once dirname( __FILE__ ) . '/admin/terms/season.php';
require_once dirname( __FILE__ ) . '/admin/terms/venue.php';
require_once dirname( __FILE__ ) . '/admin/terms/position.php';
// Presets
@@ -78,7 +80,6 @@ require_once dirname( __FILE__ ) . '/admin/hooks/wp-enqueue-scripts.php';
// Admin request actions
require_once dirname( __FILE__ ) . '/admin/hooks/admin-menu.php';
require_once dirname( __FILE__ ) . '/admin/hooks/admin-init.php';
require_once dirname( __FILE__ ) . '/admin/hooks/admin-enqueue-scripts.php';
require_once dirname( __FILE__ ) . '/admin/hooks/admin-head.php';