Move calendar into its own widget

This commit is contained in:
Brian Miyaji
2014-01-29 18:27:05 +11:00
parent 403be21d34
commit b3270a06b1
11 changed files with 171 additions and 100 deletions

View File

@@ -9,7 +9,7 @@ function sportspress_post_updated_messages( $messages ) {
' <a href="' . esc_url( admin_url( 'edit.php?post_type=' . $typenow ) ) . '">' .
sprintf( __( 'Edit %s', 'sportspress' ), $obj->labels->name ) . '</a>';
elseif ( in_array( $typenow, array( 'sp_event', 'sp_calendar', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' ) ) ):
elseif ( in_array( $typenow, array( 'sp_event', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' ) ) ):
$obj = get_post_type_object( $typenow );
$messages['post'][1] = sprintf( __( '%s updated.', 'sportspress' ), $obj->labels->singular_name ) .

View File

@@ -1,26 +1,79 @@
<?php
function sportspress_activation_hook() {
// Team Manager
remove_role( 'sp_site_admin' );
// League Manager
remove_role( 'sp_league_manager' );
add_role(
'sp_team_manager',
__( 'Team Manager', 'sportspress' ),
'sp_league_manager',
__( 'League Manager', 'sportspress' ),
array(
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'read_sp_players' => true,
'upload_files' => true,
'edit_sp_player' => true,
'edit_sp_players' => true,
'edit_others_sp_players' => true,
'delete_sp_player' => true,
'edit_private_sp_players' => true,
'edit_published_sp_players' => true,
'read_sp_players' => true,
'read_private_sp_players' => true,
'publish_sp_players' => true,
'read_sp_staffs' => true,
'delete_sp_players' => true,
'delete_others_sp_players' => true,
'delete_private_sp_players' => true,
'delete_published_sp_players' => true,
'edit_sp_staff' => true,
'edit_sp_staffs' => true,
'edit_others_sp_staffs' => true,
'delete_sp_staff' => true,
'publish_sp_staffs' => true
'edit_private_sp_staffs' => true,
'edit_published_sp_staffs' => true,
'read_sp_staffs' => true,
'read_private_sp_staffs' => true,
'publish_sp_staffs' => true,
'delete_sp_staffs' => true,
'delete_others_sp_staffs' => true,
'delete_private_sp_staffs' => true,
'delete_published_sp_staffs' => true,
'edit_sp_team' => true,
'edit_sp_teams' => true,
'edit_others_sp_teams' => true,
'edit_private_sp_teams' => true,
'edit_published_sp_teams' => true,
'read_sp_teams' => true,
'read_private_sp_teams' => true,
'publish_sp_teams' => true,
'delete_sp_teams' => true,
'delete_others_sp_teams' => true,
'delete_private_sp_teams' => true,
'delete_published_sp_teams' => true,
'edit_sp_list' => true,
'edit_sp_lists' => true,
'edit_others_sp_lists' => true,
'edit_private_sp_lists' => true,
'edit_published_sp_lists' => true,
'read_sp_lists' => true,
'read_private_sp_lists' => true,
'publish_sp_lists' => true,
'delete_sp_lists' => true,
'delete_others_sp_lists' => true,
'delete_private_sp_lists' => true,
'delete_published_sp_lists' => true,
'edit_sp_table' => true,
'edit_sp_tables' => true,
'edit_private_sp_tables' => true,
'edit_published_sp_tables' => true,
'read_sp_tables' => true,
'read_private_sp_tables' => true,
'publish_sp_tables' => true,
'delete_sp_tables' => true,
'delete_private_sp_tables' => true,
'delete_published_sp_tables' => true,
)
);
@@ -33,16 +86,39 @@ function sportspress_activation_hook() {
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'read_sp_players' => true,
'upload_files' => true,
'edit_sp_player' => true,
'edit_sp_players' => true,
'edit_others_sp_players' => true,
'delete_sp_player' => true,
'edit_private_sp_players' => true,
'edit_published_sp_players' => true,
'read_sp_players' => true,
'read_private_sp_players' => true,
'publish_sp_players' => true,
'read_sp_staffs' => true,
'delete_sp_players' => true,
'delete_private_sp_players' => true,
'delete_published_sp_players' => true,
'edit_sp_staff' => true,
'edit_sp_staffs' => true,
'edit_others_sp_staffs' => true,
'delete_sp_staff' => true,
'publish_sp_staffs' => true
'edit_private_sp_staffs' => true,
'edit_published_sp_staffs' => true,
'read_sp_staffs' => true,
'read_private_sp_staffs' => true,
'publish_sp_staffs' => true,
'delete_sp_staffs' => true,
'delete_private_sp_staffs' => true,
'delete_published_sp_staffs' => true,
'edit_sp_team' => true,
'edit_sp_teams' => true,
'read_sp_teams' => true,
'delete_sp_teams' => true,
'edit_sp_list' => true,
'edit_sp_lists' => true,
'read_sp_lists' => true,
'delete_sp_lists' => true,
)
);
@@ -55,9 +131,12 @@ function sportspress_activation_hook() {
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'read_sp_staffs' => true,
'upload_files' => true,
'edit_sp_staff' => true,
'edit_sp_staffs' => true,
'delete_sp_staff' => true
'read_sp_staffs' => true,
'delete_sp_staffs' => true,
)
);
@@ -70,9 +149,12 @@ function sportspress_activation_hook() {
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'read_sp_players' => true,
'upload_files' => true,
'edit_sp_player' => true,
'edit_sp_players' => true,
'delete_sp_player' => true
'read_sp_players' => true,
'delete_sp_players' => true,
)
);
@@ -82,7 +164,6 @@ function sportspress_activation_hook() {
sportspress_column_post_init();
sportspress_statistic_post_init();
sportspress_event_post_init();
sportspress_calendar_post_init();
sportspress_team_post_init();
sportspress_table_post_init();
sportspress_player_post_init();

View File

@@ -22,15 +22,6 @@ function sportspress_default_event_content( $content ) {
}
add_filter( 'the_content', 'sportspress_default_event_content' );
function sportspress_default_calendar_content( $content ) {
if ( is_singular( 'sp_calendar' ) && in_the_loop() ):
$calendar = sportspress_events_calendar();
$content = $calendar . $content;
endif;
return $content;
}
add_filter( 'the_content', 'sportspress_default_calendar_content' );
function sportspress_default_team_content( $content ) {
if ( is_singular( 'sp_team' ) && in_the_loop() ):
$columns = sportspress_team_columns();

View File

@@ -0,0 +1,15 @@
<?php
/**
* Register all of the default WordPress widgets on startup.
*
* Calls 'widgets_init' action after all of the WordPress widgets have been
* registered.
*
* @since 2.2.0
*/
function sportspress_widgets_init() {
register_widget('SportsPress_Widget_Calendar');
}
add_action('widgets_init', 'sportspress_widgets_init', 1);

View File

@@ -1,53 +0,0 @@
<?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,
'has_archive' => false,
'hierarchical' => false,
'supports' => array( 'title', 'author', 'thumbnail', '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', 'sportspress' ),
'sp_league' => __( 'Leagues', 'sportspress' ),
'sp_season' => __( 'Seasons', 'sportspress' ),
'sp_venue' => __( 'Venues', 'sportspress' ),
'sp_events' => __( 'Events', 'sportspress' ),
'sp_views' => __( 'Views', 'sportspress' ),
);
return $columns;
}
add_filter( 'manage_edit-sp_calendar_columns', 'sportspress_calendar_edit_columns' );
function sportspress_calendar_meta_init( $post ) {
$seasons = get_the_terms( $post->ID, 'sp_season' );
$venues = get_the_terms( $post->ID, 'sp_venue' );
add_meta_box( 'sp_eventsdiv', __( 'Events', 'sportspress' ), 'sportspress_calendar_events_meta', 'sp_calendar', 'normal', 'high' );
}
function sportspress_calendar_events_meta( $post ) {
$seasons = get_the_terms( $post->ID, 'sp_season' );
$data = sportspress_get_calendar_data( $post->ID );
sportspress_edit_calendar_table( $data );
sportspress_nonce();
}

View File

@@ -1,15 +1,9 @@
<?php
if ( !function_exists( 'sportspress_events_calendar' ) ) {
function sportspress_events_calendar( $id = null ) {
if ( ! $id )
$id = get_the_ID();
function sportspress_events_calendar( $initial = true ) {
global $wpdb, $m, $wp_locale, $posts;
$initial = false;
$echo = 1;
// Quick check. If we have no posts at all, abort!
if ( !$posts )
return;
@@ -60,8 +54,9 @@ if ( !function_exists( 'sportspress_events_calendar' ) ) {
/* translators: Calendar caption: 1: month name, 2: 4-digit year */
$calendar_caption = _x('%1$s %2$s', 'calendar caption', 'sportspress');
$calendar_output = '<h4 class="sp-table-caption">' . sprintf($calendar_caption, $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</h4>
$calendar_output = '
<table id="wp-calendar">
<caption>' . sprintf($calendar_caption, $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</caption>
<thead>
<tr>';

View File

@@ -3,7 +3,7 @@ function sportspress_league_term_init() {
$name = __( 'Leagues', 'sportspress' );
$singular_name = __( 'League', 'sportspress' );
$lowercase_name = __( 'league', 'sportspress' );
$object_type = array( 'sp_event', 'sp_calendar', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' );
$object_type = array( 'sp_event', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' );
$labels = sportspress_get_term_labels( $name, $singular_name, $lowercase_name );
$args = array(
'label' => $name,
@@ -15,9 +15,11 @@ function sportspress_league_term_init() {
'rewrite' => array( 'slug' => 'league' ),
);
register_taxonomy( 'sp_league', $object_type, $args );
register_taxonomy_for_object_type( 'sp_league', 'sp_calendar' );
register_taxonomy_for_object_type( 'sp_league', 'sp_event' );
register_taxonomy_for_object_type( 'sp_league', 'sp_team' );
register_taxonomy_for_object_type( 'sp_league', 'sp_table' );
register_taxonomy_for_object_type( 'sp_league', 'sp_player' );
register_taxonomy_for_object_type( 'sp_league', 'sp_list' );
register_taxonomy_for_object_type( 'sp_league', 'sp_staff' );
}
add_action( 'init', 'sportspress_league_term_init' );

View File

@@ -3,7 +3,7 @@ function sportspress_season_term_init() {
$name = __( 'Seasons', 'sportspress' );
$singular_name = __( 'Season', 'sportspress' );
$lowercase_name = __( 'season', 'sportspress' );
$object_type = array( 'sp_event', 'sp_calendar', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' );
$object_type = array( 'sp_event', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' );
$labels = sportspress_get_term_labels( $name, $singular_name, $lowercase_name );
$args = array(
'label' => $name,
@@ -15,9 +15,11 @@ function sportspress_season_term_init() {
'rewrite' => array( 'slug' => 'season' ),
);
register_taxonomy( 'sp_season', $object_type, $args );
register_taxonomy_for_object_type( 'sp_season', 'sp_calendar' );
register_taxonomy_for_object_type( 'sp_season', 'sp_event' );
register_taxonomy_for_object_type( 'sp_season', 'sp_team' );
register_taxonomy_for_object_type( 'sp_season', 'sp_table' );
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' );

View File

@@ -3,7 +3,7 @@ function sportspress_venue_term_init() {
$name = __( 'Venues', 'sportspress' );
$singular_name = __( 'Venue', 'sportspress' );
$lowercase_name = __( 'venue', 'sportspress' );
$object_type = array( 'sp_event', 'sp_calendar', 'attachment' );
$object_type = array( 'sp_event', 'attachment' );
$labels = sportspress_get_term_labels( $name, $singular_name, $lowercase_name );
$args = array(
'label' => $name,
@@ -16,7 +16,6 @@ function sportspress_venue_term_init() {
);
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' );
register_taxonomy_for_object_type( 'sp_venue', 'attachment' );
}
add_action( 'init', 'sportspress_venue_term_init' );

View File

@@ -0,0 +1,36 @@
<?php
class SportsPress_Widget_Calendar extends WP_Widget {
function __construct() {
$widget_ops = array('classname' => 'widget_calendar sp_widget_calendar', 'description' => __( 'A calendar of your site&#8217;s Events.') );
parent::__construct('sp_calendar', __('Events Calendar'), $widget_ops);
}
function widget( $args, $instance ) {
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
echo $before_widget;
if ( $title )
echo $before_title . $title . $after_title;
echo '<div id="calendar_wrap sp_calendar_wrap">';
echo sportspress_events_calendar();
echo '</div>';
echo $after_widget;
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
return $instance;
}
function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
$title = strip_tags($instance['title']);
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
<?php
}
}

View File

@@ -59,7 +59,6 @@ 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';
@@ -72,7 +71,11 @@ require_once dirname( __FILE__ ) . '/admin/terms/season.php';
require_once dirname( __FILE__ ) . '/admin/terms/venue.php';
require_once dirname( __FILE__ ) . '/admin/terms/position.php';
// Widgets
require_once dirname( __FILE__ ) . '/admin/widgets/calendar.php';
// Typical request actions
require_once dirname( __FILE__ ) . '/admin/hooks/widgets-init.php';
require_once dirname( __FILE__ ) . '/admin/hooks/plugins-loaded.php';
require_once dirname( __FILE__ ) . '/admin/hooks/after-setup-theme.php';
require_once dirname( __FILE__ ) . '/admin/hooks/wp-enqueue-scripts.php';