diff --git a/modules/calendar/calendar.php b/modules/calendar/calendar.php
index c5d39814d..e6bf701c7 100644
--- a/modules/calendar/calendar.php
+++ b/modules/calendar/calendar.php
@@ -21,7 +21,7 @@ class EF_Calendar extends EF_Module {
var $max_visible_posts_per_date = 4; // total number of posts to be shown per square before 'more' link
private $post_date_cache = array();
- private static $post_li_html_cache_key = 'ef_calendar_post_li_html';
+ private static $post_li_details_cache_key = 'ef_calendar_post_li_html';
/**
* Construct the EF_Calendar class
@@ -856,20 +856,29 @@ function view_calendar() {
* @return str HTML for a single post item
*/
function generate_post_li_html( $post, $post_date, $num = 0 ){
+ $user_can_modify_post = $this->current_user_can_modify_post( $post );
+ $cache_key = $this->get_post_li_cache_key( $post->ID );
- $can_modify = ( $this->current_user_can_modify_post( $post ) ) ? 'can_modify' : 'read_only';
- $cache_key = $post->ID . $can_modify . '_' . get_current_user_id();
- $cache_val = wp_cache_get( $cache_key, self::$post_li_html_cache_key );
- // Because $num is pertinent to the display of the post LI, need to make sure that's what's in cache
+ $cache_val = wp_cache_get( $cache_key, self::$post_li_details_cache_key );
+
+ $post_details = array();
+
if ( is_array( $cache_val ) && $cache_val['num'] == $num ) {
$this->hidden = $cache_val['hidden'];
- return $cache_val['post_li_html'];
+ $post_details = $cache_val['post_details'];
+ } else {
+ $post_details = $this->get_post_information_fields( $post );
+
+ $post_li_cache = array(
+ 'num' => $num,
+ 'post_details' => $post_details,
+ 'hidden' => $this->hidden,
+ );
+
+ wp_cache_set( $cache_key, $post_li_cache, self::$post_li_details_cache_key );
}
- ob_start();
- $post_id = $post->ID;
- $edit_post_link = get_edit_post_link( $post_id );
- $status_object = get_post_status_object( get_post_status( $post_id ) );
+ $status_object = get_post_status_object( get_post_status( $post ) );
$post_classes = array(
'day-item',
@@ -878,7 +887,7 @@ function generate_post_li_html( $post, $post_date, $num = 0 ){
// Only allow the user to drag the post if they have permissions to
// or if it's in an approved post status
// This is checked on the ajax request too.
- if ( $this->current_user_can_modify_post( $post ) && !in_array( $post->post_status, $this->published_statuses ) )
+ if ( $user_can_modify_post && !in_array( $post->post_status, $this->published_statuses ) )
$post_classes[] = 'sortable';
if ( in_array( $post->post_status, $this->published_statuses ) )
@@ -891,8 +900,11 @@ function generate_post_li_html( $post, $post_date, $num = 0 ){
$post_classes[] = 'hidden';
$this->hidden++;
}
+
$post_classes = apply_filters( 'ef_calendar_table_td_li_classes', $post_classes, $post_date, $post->ID );
-
+
+ ob_start();
+
?>
@@ -900,12 +912,62 @@ function generate_post_li_html( $post, $post_date, $num = 0 ){
label ); ?>
- ID ) ); ?>
+
ID ); ?>
- get_inner_information( $this->get_post_information_fields( $post ), $post ); ?>
+
+ current_user_can_modify_post( $post ) ) {
+ // Edit this post
+ $item_actions['edit'] = '
' . __( 'Edit', 'edit-flow' ) . '';
+ // Trash this post
+ $item_actions['trash'] = '
' . __( 'Trash', 'edit-flow' ) . '';
+ // Preview/view this post
+ if ( !in_array( $post->post_status, $this->published_statuses ) ) {
+ $item_actions['view'] = '
' . __( 'Preview', 'edit-flow' ) . '';
+ } elseif ( 'trash' != $post->post_status ) {
+ $item_actions['view'] = '
' . __( 'View', 'edit-flow' ) . '';
+ }
+ //Save metadata
+ $item_actions['save hidden'] = '
' . __( 'Save', 'edit-flow') . '';
+ }
+ // Allow other plugins to add actions
+ $item_actions = apply_filters( 'ef_calendar_item_actions', $item_actions, $post->ID );
+ if ( count( $item_actions ) ) {
+ echo '
';
+ $html = '';
+ foreach ( $item_actions as $class => $item_action ) {
+ $html .= '' . $item_action . ' | ';
+ }
+ echo rtrim( $html, '| ' );
+ echo '
';
+ }
+ ?>
+
@@ -914,85 +976,19 @@ function generate_post_li_html( $post, $post_date, $num = 0 ){
$post_li_html = ob_get_contents();
ob_end_clean();
- $post_li_cache = array(
- 'num' => $num,
- 'post_li_html' => $post_li_html,
- 'hidden' => $this->hidden,
- );
- wp_cache_set( $cache_key, $post_li_cache, self::$post_li_html_cache_key );
-
return $post_li_html;
} // generate_post_li_html()
/**
- * get_inner_information description
- * Functionality for generating the inner html elements on the calendar
- * has been separated out so various ajax functions can reload certain
- * parts of an inner html element.
- * @param array $ef_calendar_item_information_fields
- * @param WP_Post $post
- * @param array $published_statuses
- *
- * @since 0.8
+ * Returns the cache key for the post li cache
+ * @param int $post_id The id of the post
+ *
+ * @return str The cache key
*/
- function get_inner_information( $ef_calendar_item_information_fields, $post ) {
- ?>
- ';
- $html = '';
- foreach ( $item_actions as $class => $item_action ) {
- $html .= '' . $item_action . ' | ';
- }
- echo rtrim( $html, '| ' );
- echo '
';
- }
- ?>
-