X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/177fd6fefd2e3d5a0ea6591c71d660cabdb3c1a4..refs/tags/wordpress-3.1.1:/wp-admin/includes/dashboard.php
diff --git a/wp-admin/includes/dashboard.php b/wp-admin/includes/dashboard.php
index 9ce9db91..2b10928b 100644
--- a/wp-admin/includes/dashboard.php
+++ b/wp-admin/includes/dashboard.php
@@ -1,85 +1,91 @@
'WordPress Dashboard',
- 'id' => 'wp_dashboard',
- 'before_widget' => "\t
\n\n",
- 'before_title' => "\t\t\t\n\n"
- ) );
+ // Right Now
+ if ( is_blog_admin() && current_user_can('edit_posts') )
+ wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );
-
- /* Register Widgets and Controls */
+ if ( is_network_admin() )
+ wp_add_dashboard_widget( 'network_dashboard_right_now', __( 'Right Now' ), 'wp_network_dashboard_right_now' );
// Recent Comments Widget
- if ( current_user_can( 'moderate_comments' ) && $mod_comments = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '0'") ) {
- $notice = sprintf( __ngettext( '%d comment awaiting moderation', '%d comments awaiting moderation', $mod_comments ), $mod_comments );
- $notice = "$notice";
- } else {
- $notice = '';
+ if ( is_blog_admin() && current_user_can('moderate_comments') ) {
+ if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) {
+ $update = true;
+ $widget_options['dashboard_recent_comments'] = array(
+ 'items' => 5,
+ );
+ }
+ $recent_comments_title = __( 'Recent Comments' );
+ wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' );
}
- wp_register_sidebar_widget( 'dashboard_recent_comments', __( 'Recent Comments' ), 'wp_dashboard_recent_comments',
- array( 'all_link' => 'edit-comments.php', 'notice' => $notice, 'width' => 'half' )
- );
// Incoming Links Widget
- if ( !isset( $widget_options['dashboard_incoming_links'] ) ) {
- $update = true;
- $widget_options['dashboard_incoming_links'] = array(
- 'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?hl=en&scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
- 'url' => apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?hl=en&scoring=d&ie=utf-8&num=10&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
- 'items' => 5,
- 'show_date' => 0
- );
+ if ( is_blog_admin() && current_user_can('publish_posts') ) {
+ if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {
+ $update = true;
+ $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;
+ $widget_options['dashboard_incoming_links'] = array(
+ 'home' => get_option('home'),
+ 'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
+ 'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
+ 'items' => $num_items,
+ 'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false
+ );
+ }
+ wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );
}
- wp_register_sidebar_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_empty',
- array( 'all_link' => $widget_options['dashboard_incoming_links']['link'], 'feed_link' => $widget_options['dashboard_incoming_links']['url'], 'width' => 'half' ),
- 'wp_dashboard_cached_rss_widget', 'wp_dashboard_incoming_links_output'
- );
- wp_register_widget_control( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_rss_control', array(),
- array( 'widget_id' => 'dashboard_incoming_links', 'form_inputs' => array( 'title' => false, 'show_summary' => false, 'show_author' => false ) )
- );
-
// WP Plugins Widget
- wp_register_sidebar_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_empty',
- array( 'all_link' => 'http://wordpress.org/extend/plugins/', 'feed_link' => 'http://wordpress.org/extend/plugins/rss/topics/', 'width' => 'half' ),
- 'wp_dashboard_cached_rss_widget', 'wp_dashboard_plugins_output',
- array( 'http://wordpress.org/extend/plugins/rss/browse/popular/', 'http://wordpress.org/extend/plugins/rss/browse/new/', 'http://wordpress.org/extend/plugins/rss/browse/updated/' )
- );
+ if ( ( ! is_multisite() && is_blog_admin() && current_user_can( 'install_plugins' ) ) || ( is_network_admin() && current_user_can( 'manage_network_plugins' ) && current_user_can( 'install_plugins' ) ) )
+ wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' );
+
+ // QuickPress Widget
+ if ( is_blog_admin() && current_user_can('edit_posts') )
+ wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' );
+
+ // Recent Drafts
+ if ( is_blog_admin() && current_user_can('edit_posts') )
+ wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' );
// Primary feed (Dev Blog) Widget
if ( !isset( $widget_options['dashboard_primary'] ) ) {
$update = true;
$widget_options['dashboard_primary'] = array(
- 'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/development/' ) ),
- 'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/development/feed/' ) ),
- 'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Development Blog' ) ),
+ 'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ),
+ 'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' ) ),
+ 'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ),
'items' => 2,
'show_summary' => 1,
'show_author' => 0,
- 'show_date' => 1
+ 'show_date' => 1,
);
}
- wp_register_sidebar_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_empty',
- array( 'all_link' => $widget_options['dashboard_primary']['link'], 'feed_link' => $widget_options['dashboard_primary']['url'], 'width' => 'half', 'class' => 'widget_rss' ),
- 'wp_dashboard_cached_rss_widget', 'wp_dashboard_rss_output'
- );
- wp_register_widget_control( 'dashboard_primary', __( 'Primary Feed' ), 'wp_dashboard_rss_control', array(),
- array( 'widget_id' => 'dashboard_primary' )
- );
-
+ wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' );
// Secondary Feed (Planet) Widget
if ( !isset( $widget_options['dashboard_secondary'] ) ) {
@@ -88,60 +94,31 @@ function wp_dashboard_setup() {
'link' => apply_filters( 'dashboard_secondary_link', __( 'http://planet.wordpress.org/' ) ),
'url' => apply_filters( 'dashboard_secondary_feed', __( 'http://planet.wordpress.org/feed/' ) ),
'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ),
- 'items' => 15
+ 'items' => 5,
+ 'show_summary' => 0,
+ 'show_author' => 0,
+ 'show_date' => 0,
);
}
- wp_register_sidebar_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_empty',
- array( 'all_link' => $widget_options['dashboard_secondary']['link'], 'feed_link' => $widget_options['dashboard_secondary']['url'], 'width' => 'full' ),
- 'wp_dashboard_cached_rss_widget', 'wp_dashboard_secondary_output'
- );
- wp_register_widget_control( 'dashboard_secondary', __( 'Secondary Feed' ), 'wp_dashboard_rss_control', array(),
- array( 'widget_id' => 'dashboard_secondary', 'form_inputs' => array( 'show_summary' => false, 'show_author' => false, 'show_date' => false ) )
- );
-
-
- /* Dashboard Widget Template
- wp_register_sidebar_widget( $widget_id (unique slug) , $widget_title, $output_callback,
- array(
- 'all_link' => full url for "See All" link,
- 'feed_link' => full url for "RSS" link,
- 'width' => 'fourth', 'third', 'half', 'full' (defaults to 'half'),
- 'height' => 'single', 'double' (defaults to 'single'),
- ),
- $wp_dashboard_empty_callback (only needed if using 'wp_dashboard_empty' as your $output_callback),
- $arg, $arg, $arg... (further args passed to callbacks)
- );
-
- // optional: if you want users to be able to edit the settings of your widget, you need to register a widget_control
- wp_register_widget_control( $widget_id, $widget_control_title, $control_output_callback,
- array(), // leave an empty array here: oddity in widget code
- array(
- 'widget_id' => $widget_id, // Yes - again. This is required: oddity in widget code
- 'arg' => an arg to pass to the $control_output_callback,
- 'another' => another arg to pass to the $control_output_callback,
- ...
- )
- );
- */
+ wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' );
// Hook to register new widgets
- do_action( 'wp_dashboard_setup' );
-
- // Hard code the sidebar's widgets and order
- $dashboard_widgets = array();
- $dashboard_widgets[] = 'dashboard_recent_comments';
- $dashboard_widgets[] = 'dashboard_incoming_links';
- $dashboard_widgets[] = 'dashboard_primary';
- if ( current_user_can( 'activate_plugins' ) )
- $dashboard_widgets[] = 'dashboard_plugins';
- $dashboard_widgets[] = 'dashboard_secondary';
-
// Filter widget order
- $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', $dashboard_widgets );
-
- $wp_dashboard_sidebars = array( 'wp_dashboard' => $dashboard_widgets, 'array_version' => 3.5 );
+ if ( is_network_admin() ) {
+ do_action( 'wp_network_dashboard_setup' );
+ $dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() );
+ } elseif ( is_user_admin() ) {
+ do_action( 'wp_user_dashboard_setup' );
+ $dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() );
+ } else {
+ do_action( 'wp_dashboard_setup' );
+ $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() );
+ }
- add_filter( 'dynamic_sidebar_params', 'wp_dashboard_dynamic_sidebar_params' );
+ foreach ( $dashboard_widgets as $widget_id ) {
+ $name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " " . __('View all') . '';
+ wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] );
+ }
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) {
ob_start(); // hack - but the same hack wp-admin/widgets.php uses
@@ -153,296 +130,891 @@ function wp_dashboard_setup() {
if ( $update )
update_option( 'dashboard_widget_options', $widget_options );
+
+ do_action('do_meta_boxes', $screen->id, 'normal', '');
+ do_action('do_meta_boxes', $screen->id, 'side', '');
}
-// Echoes out the dashboard
-function wp_dashboard() {
- echo "\n\n\n";
+ if ( is_blog_admin () )
+ $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary');
+ else if (is_network_admin() )
+ $side_widgets = array('dashboard_primary', 'dashboard_secondary');
+ else
+ $side_widgets = array();
+
+ $location = 'normal';
+ if ( in_array($widget_id, $side_widgets) )
+ $location = 'side';
+ add_meta_box( $widget_id, $widget_name , $callback, $screen->id, $location, 'core' );
}
-// Makes sidebar_widgets option reflect the dashboard settings
-function wp_dashboard_sidebars_widgets() { // hackery
- return $GLOBALS['wp_dashboard_sidebars'];
+function _wp_dashboard_control_callback( $dashboard, $meta_box ) {
+ echo '';
}
-// Modifies sidbar params on the fly to set up ids, class names, titles for each widget (called once per widget)
-// Switches widget to edit mode if $_GET['edit']
-function wp_dashboard_dynamic_sidebar_params( $params ) {
- global $wp_registered_widgets, $wp_registered_widget_controls;
-
- $sidebar_defaults = array('widget_id' => 0, 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '');
- extract( $sidebar_defaults, EXTR_PREFIX_ALL, 'sidebar' );
- extract( $params[0], EXTR_PREFIX_ALL, 'sidebar' );
-
- if ( !isset($wp_registered_widgets[$sidebar_widget_id]) || !is_array($wp_registered_widgets[$sidebar_widget_id]) ) {
- return $params;
- }
- $widget_defaults = array('id' => '', 'width' => '', 'height' => '', 'class' => '', 'feed_link' => '', 'all_link' => '', 'notice' => false, 'error' => false);
- extract( $widget_defaults, EXTR_PREFIX_ALL, 'widget' );
- extract( $wp_registered_widgets[$sidebar_widget_id], EXTR_PREFIX_ALL, 'widget' );
-
- $the_classes = array();
- if ( in_array($widget_width, array( 'third', 'fourth', 'full' ) ) )
- $the_classes[] = $widget_width;
-
- if ( 'double' == $widget_height )
- $the_classes[] = 'double';
-
- if ( $widget_class )
- $the_classes[] = $widget_class;
-
- // Add classes to the widget holder
- if ( $the_classes )
- $sidebar_before_widget = str_replace( "
+
+
+
+';
+ echo "\n\t".'' . __('Content') . '
'."\n\t".'';
+ echo "\n\t".'';
+
+ // Posts
+ $num = number_format_i18n( $num_posts->publish );
+ $text = _n( 'Post', 'Posts', intval($num_posts->publish) );
+ if ( current_user_can( 'edit_posts' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo '
';
+ /* TODO: Show status breakdown on hover
+ if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds. Don't show if !current_user_can
+ $post_type_texts[] = ''.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).'';
+ }
+ if ( $can_edit_posts && !empty($num_posts->draft) ) {
+ $post_type_texts[] = ''.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).'';
+ }
+ if ( $can_edit_posts && !empty($num_posts->future) ) {
+ $post_type_texts[] = ''.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).'';
+ }
+ if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) {
+ $pending_text = sprintf( _n( 'There is %2$s post pending your review.', 'There are %2$s posts pending your review.', $num_posts->pending ), 'edit.php?post_status=pending', number_format_i18n( $num_posts->pending ) );
+ } else {
+ $pending_text = '';
+ }
+ */
+
+ // Pages
+ $num = number_format_i18n( $num_pages->publish );
+ $text = _n( 'Page', 'Pages', $num_pages->publish );
+ if ( current_user_can( 'edit_pages' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo '
';
+
+ // Categories
+ $num = number_format_i18n( $num_cats );
+ $text = _n( 'Category', 'Categories', $num_cats );
+ if ( current_user_can( 'manage_categories' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo '
';
+
+ // Tags
+ $num = number_format_i18n( $num_tags );
+ $text = _n( 'Tag', 'Tags', $num_tags );
+ if ( current_user_can( 'manage_categories' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo "
";
+ do_action('right_now_content_table_end');
+ echo "\n\t
\n\t";
+
+
+ echo "\n\t".'';
+ echo "\n\t".'
' . __('Discussion') . '
'."\n\t".'
';
+ echo "\n\t".'';
+
+ // Total Comments
+ $num = '' . number_format_i18n($num_comm->total_comments) . '';
+ $text = _n( 'Comment', 'Comments', $num_comm->total_comments );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = '' . $num . '';
+ $text = '' . $text . '';
+ }
+ echo '';
+ echo '';
+
+ echo '
';
+
+ // Approved Comments
+ $num = '' . number_format_i18n($num_comm->approved) . '';
+ $text = _nx( 'Approved', 'Approved', $num_comm->approved, 'Right Now' );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo "
\n\t";
+
+ // Pending Comments
+ $num = '' . number_format_i18n($num_comm->moderated) . '';
+ $text = _n( 'Pending', 'Pending', $num_comm->moderated );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo "
\n\t";
+
+ // Spam Comments
+ $num = number_format_i18n($num_comm->spam);
+ $text = _nx( 'Spam', 'Spam', $num_comm->spam, 'comment' );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = "$num";
+ $text = "$text";
+ }
+ echo '' . $num . ' | ';
+ echo '' . $text . ' | ';
+
+ echo "
";
+ do_action('right_now_table_end');
+ do_action('right_now_discussion_table_end');
+ echo "\n\t
\n\t
";
+
+ echo "\n\t".'';
+ $ct = current_theme_info();
+
+ echo "\n\t
";
+ if ( !empty($wp_registered_sidebars) ) {
+ $sidebars_widgets = wp_get_sidebars_widgets();
+ $num_widgets = 0;
+ foreach ( (array) $sidebars_widgets as $k => $v ) {
+ if ( 'wp_inactive_widgets' == $k )
+ continue;
+ if ( is_array($v) )
+ $num_widgets = $num_widgets + count($v);
+ }
+ $num = number_format_i18n( $num_widgets );
+
+ $switch_themes = $ct->title;
+ if ( current_user_can( 'switch_themes') ) {
+ echo '' . __('Change Theme') . '';
+ $switch_themes = '' . $switch_themes . '';
+ }
+ if ( current_user_can( 'edit_theme_options' ) ) {
+ printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num);
+ } else {
+ printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num);
+ }
+ } else {
+ if ( current_user_can( 'switch_themes' ) ) {
+ echo '' . __('Change Theme') . '';
+ printf( __('Theme %1$s'), $ct->title );
} else {
- $links[] = '' . __( 'Edit' ) . '';
+ printf( __('Theme %1$s'), $ct->title );
}
}
+ echo '
';
- if ( $widget_feed_link )
- $links[] = '
' . __( 'RSS' ) . '';
+ update_right_now_message();
- $links = apply_filters( "wp_dashboard_widget_links_$widget_id", $links );
+ echo "\n\t".'
';
+ do_action( 'rightnow_end' );
+ do_action( 'activity_box_end' );
+}
+
+function wp_network_dashboard_right_now() {
+ $actions = array();
+ if ( current_user_can('create_sites') )
+ $actions['create-site'] = '' . __( 'Create a New Site' ) . '';
+ if ( current_user_can('create_users') )
+ $actions['create-user'] = '' . __( 'Create a New User' ) . '';
+
+ $c_users = get_user_count();
+ $c_blogs = get_blog_count();
- // Add links to widget's title bar
- if ( $links ) {
- $sidebar_before_title .= '';
- $sidebar_after_title = '' . join( ' | ', $links ) . "
$sidebar_after_title";
+ $user_text = sprintf( _n( '%s user', '%s users', $c_users ), number_format_i18n( $c_users ) );
+ $blog_text = sprintf( _n( '%s site', '%s sites', $c_blogs ), number_format_i18n( $c_blogs ) );
+
+ $sentence = sprintf( __( 'You have %1$s and %2$s.' ), $blog_text, $user_text );
+
+ if ( $actions ) {
+ echo '';
+ foreach ( $actions as $class => $action ) {
+ $actions[ $class ] = "\t- $action";
+ }
+ echo implode( " |
\n", $actions ) . "\n";
+ echo '
';
}
+?>
+
+
+
+
+
+
+
+
+$widget_notice\n\n";
+function wp_dashboard_quick_press_output() {
+ global $post_ID;
- if ( $widget_error )
- $sidebar_after_title .= "\t\t\t$widget_error
\n\n";
+ $drafts = false;
+ if ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['action'] ) && 0 === strpos( $_POST['action'], 'post-quickpress' ) && (int) $_POST['post_ID'] ) {
+ $view = get_permalink( $_POST['post_ID'] );
+ $edit = esc_url( get_edit_post_link( $_POST['post_ID'] ) );
+ if ( 'post-quickpress-publish' == $_POST['action'] ) {
+ if ( current_user_can('publish_posts') )
+ printf( '', esc_url( $view ), $edit );
+ else
+ printf( '', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
+ } else {
+ printf( '', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit );
+ $drafts_query = new WP_Query( array(
+ 'post_type' => 'post',
+ 'post_status' => 'draft',
+ 'author' => $GLOBALS['current_user']->ID,
+ 'posts_per_page' => 1,
+ 'orderby' => 'modified',
+ 'order' => 'DESC'
+ ) );
+
+ if ( $drafts_query->posts )
+ $drafts =& $drafts_query->posts;
+ }
+ printf('' . __('You can also try %s, easy blogging from anywhere on the Web.') . '
', '' . __('Press This') . '' );
+ $_REQUEST = array(); // hack for get_default_post_to_edit()
+ }
- $sidebar_after_title .= "\t\t\t\n\n";
+ /* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */
+ $last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID
+ if ( $last_post_id ) {
+ $post = get_post( $last_post_id );
+ if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore
+ $post = get_default_post_to_edit('post', true);
+ update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID
+ } else {
+ $post->post_title = ''; // Remove the auto draft title
+ }
+ } else {
+ $post = get_default_post_to_edit('post', true);
+ update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID
+ }
- $sidebar_after_widget .= "\t\t\t
\n\n";
+ $post_ID = (int) $post->ID;
+?>
- foreach( array_keys( $params[0] ) as $key )
- $$key = ${'sidebar_' . $key};
+
- $params[0] = compact( array_keys( $params[0] ) );
+' . __( 'Loading…' ) . '' . __('This widget requires JavaScript.') . '
';
}
+function wp_dashboard_recent_drafts( $drafts = false ) {
+ if ( !$drafts ) {
+ $drafts_query = new WP_Query( array(
+ 'post_type' => 'post',
+ 'post_status' => 'draft',
+ 'author' => $GLOBALS['current_user']->ID,
+ 'posts_per_page' => 5,
+ 'orderby' => 'modified',
+ 'order' => 'DESC'
+ ) );
+ $drafts =& $drafts_query->posts;
+ }
-/* Dashboard Widgets */
+ if ( $drafts && is_array( $drafts ) ) {
+ $list = array();
+ foreach ( $drafts as $draft ) {
+ $url = get_edit_post_link( $draft->ID );
+ $title = _draft_or_post_title( $draft->ID );
+ $item = "" . esc_html($title) . " " . get_the_time( get_option( 'date_format' ), $draft ) . '
';
+ if ( $the_content = preg_split( '#\s#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) )
+ $item .= '' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '…' : '' ) . '
';
+ $list[] = $item;
+ }
+?>
+
+
+get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) {
- if ( $comments_query->have_comments() ) {
- while ( $comments_query->have_comments() ) { $comments_query->the_comment();
+ foreach ( $possible as $comment ) {
+ if ( count( $comments ) >= $total_items )
+ break;
+ if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) )
+ $comments[] = $comment;
+ }
- $comment_post_url = get_permalink( $comment->comment_post_ID );
- $comment_post_title = get_the_title( $comment->comment_post_ID );
- $comment_post_link = "$comment_post_title";
- $comment_link = '';
- $comment_meta = sprintf( __( 'From %1$s on %2$s %3$s' ), get_comment_author(), $comment_post_link, $comment_link );
+ $start = $start + 50;
+ }
- if ( $is_first ) : $is_first = false;
+ if ( $comments ) :
?>
- “”
-
+
+
+
+
+
-
+
+
comment_post_ID );
+ $comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID ));
+ $comment_post_link = "$comment_post_title";
+ $comment_link = '';
+
+ $actions_string = '';
+ if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) {
+ // preorder it: Approve | Reply | Edit | Spam | Trash
+ $actions = array(
+ 'approve' => '', 'unapprove' => '',
+ 'reply' => '',
+ 'edit' => '',
+ 'spam' => '',
+ 'trash' => '', 'delete' => ''
+ );
+
+ $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
+ $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) );
+
+ $approve_url = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" );
+ $unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" );
+ $spam_url = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
+ $trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
+ $delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
+
+ $actions['approve'] = "';
+ $actions['unapprove'] = "';
+ $actions['edit'] = "". __('Edit') . '';
+ $actions['reply'] = '' . __('Reply') . '';
+ $actions['spam'] = "';
+ if ( !EMPTY_TRASH_DAYS )
+ $actions['delete'] = "';
+ else
+ $actions['trash'] = "';
+
+ $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment );
+
+ $i = 0;
+ foreach ( $actions as $action => $link ) {
+ ++$i;
+ ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
+
+ // Reply and quickedit need a hide-if-no-js span
+ if ( 'reply' == $action || 'quickedit' == $action )
+ $action .= ' hide-if-no-js';
+
+ $actions_string .= "$sep$link";
}
+ }
- if ( $comments_query->comment_count > 1 ) : ?>
-
+?>
+
+
+ foreach ( $comments as $comment ) + _wp_dashboard_recent_comments_row( $comment ); +?> + +