-// 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( "<div class='dashboard-widget-holder ", "<div class='dashboard-widget-holder " . join( ' ', $the_classes ) . ' ', $sidebar_before_widget );
-
- $links = array();
- if ( $widget_all_link )
- $links[] = '<a href="' . clean_url( $widget_all_link ) . '">' . __( 'See All' ) . '</a>';
-
- $content_class = 'dashboard-widget-content';
- if ( current_user_can( 'edit_dashboard' ) && isset($wp_registered_widget_controls[$widget_id]) && is_callable($wp_registered_widget_controls[$widget_id]['callback']) ) {
- // Switch this widget to edit mode
- if ( isset($_GET['edit']) && $_GET['edit'] == $widget_id ) {
- $content_class .= ' dashboard-widget-control';
- $wp_registered_widgets[$widget_id]['callback'] = 'wp_dashboard_empty';
- $sidebar_widget_name = $wp_registered_widget_controls[$widget_id]['name'];
- $params[1] = 'wp_dashboard_trigger_widget_control';
- $sidebar_before_widget .= '<form action="' . remove_query_arg( 'edit' ) . '" method="post">';
- $sidebar_after_widget = "<div class='dashboard-widget-submit'><input type='hidden' name='sidebar' value='wp_dashboard' /><input type='hidden' name='widget_id' value='$widget_id' /><input type='submit' value='" . __( 'Save' ) . "' /></div></form>$sidebar_after_widget";
- $links[] = '<a href="' . remove_query_arg( 'edit' ) . '">' . __( 'Cancel' ) . '</a>';
+/**
+ * Displays the dashboard.
+ *
+ * @since 2.5.0
+ */
+function wp_dashboard() {
+ global $screen_layout_columns;
+
+ $screen = get_current_screen();
+
+ $hide2 = $hide3 = $hide4 = '';
+ switch ( $screen_layout_columns ) {
+ case 4:
+ $width = 'width:24.5%;';
+ break;
+ case 3:
+ $width = 'width:32.67%;';
+ $hide4 = 'display:none;';
+ break;
+ case 2:
+ $width = 'width:49%;';
+ $hide3 = $hide4 = 'display:none;';
+ break;
+ default:
+ $width = 'width:98%;';
+ $hide2 = $hide3 = $hide4 = 'display:none;';
+ }
+?>
+<div id="dashboard-widgets" class="metabox-holder">
+<?php
+ echo "\t<div class='postbox-container' style='$width'>\n";
+ do_meta_boxes( $screen->id, 'normal', '' );
+
+ echo "\t</div><div class='postbox-container' style='{$hide2}$width'>\n";
+ do_meta_boxes( $screen->id, 'side', '' );
+
+ echo "\t</div><div class='postbox-container' style='{$hide3}$width'>\n";
+ do_meta_boxes( $screen->id, 'column3', '' );
+
+ echo "\t</div><div class='postbox-container' style='{$hide4}$width'>\n";
+ do_meta_boxes( $screen->id, 'column4', '' );
+?>
+</div></div>
+
+<form style="display:none" method="get" action="">
+ <p>
+<?php
+ wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
+?>
+ </p>
+</form>
+
+<?php
+}
+
+/* Dashboard Widgets */
+
+function wp_dashboard_right_now() {
+ global $wp_registered_sidebars;
+
+ $num_posts = wp_count_posts( 'post' );
+ $num_pages = wp_count_posts( 'page' );
+
+ $num_cats = wp_count_terms('category');
+
+ $num_tags = wp_count_terms('post_tag');
+
+ $num_comm = wp_count_comments( );
+
+ echo "\n\t".'<div class="table table_content">';
+ echo "\n\t".'<p class="sub">' . __('Content') . '</p>'."\n\t".'<table>';
+ echo "\n\t".'<tr class="first">';
+
+ // Posts
+ $num = number_format_i18n( $num_posts->publish );
+ $text = _n( 'Post', 'Posts', intval($num_posts->publish) );
+ if ( current_user_can( 'edit_posts' ) ) {
+ $num = "<a href='edit.php'>$num</a>";
+ $text = "<a href='edit.php'>$text</a>";
+ }
+ echo '<td class="first b b-posts">' . $num . '</td>';
+ echo '<td class="t posts">' . $text . '</td>';
+
+ echo '</tr><tr>';
+ /* 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[] = '<a href="edit-pages.php">'.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).'</a>';
+ }
+ if ( $can_edit_posts && !empty($num_posts->draft) ) {
+ $post_type_texts[] = '<a href="edit.php?post_status=draft">'.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).'</a>';
+ }
+ if ( $can_edit_posts && !empty($num_posts->future) ) {
+ $post_type_texts[] = '<a href="edit.php?post_status=future">'.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).'</a>';
+ }
+ if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) {
+ $pending_text = sprintf( _n( 'There is <a href="%1$s">%2$s post</a> pending your review.', 'There are <a href="%1$s">%2$s posts</a> 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 = "<a href='edit.php?post_type=page'>$num</a>";
+ $text = "<a href='edit.php?post_type=page'>$text</a>";
+ }
+ echo '<td class="first b b_pages">' . $num . '</td>';
+ echo '<td class="t pages">' . $text . '</td>';
+
+ echo '</tr><tr>';
+
+ // Categories
+ $num = number_format_i18n( $num_cats );
+ $text = _n( 'Category', 'Categories', $num_cats );
+ if ( current_user_can( 'manage_categories' ) ) {
+ $num = "<a href='edit-tags.php?taxonomy=category'>$num</a>";
+ $text = "<a href='edit-tags.php?taxonomy=category'>$text</a>";
+ }
+ echo '<td class="first b b-cats">' . $num . '</td>';
+ echo '<td class="t cats">' . $text . '</td>';
+
+ echo '</tr><tr>';
+
+ // Tags
+ $num = number_format_i18n( $num_tags );
+ $text = _n( 'Tag', 'Tags', $num_tags );
+ if ( current_user_can( 'manage_categories' ) ) {
+ $num = "<a href='edit-tags.php'>$num</a>";
+ $text = "<a href='edit-tags.php'>$text</a>";
+ }
+ echo '<td class="first b b-tags">' . $num . '</td>';
+ echo '<td class="t tags">' . $text . '</td>';
+
+ echo "</tr>";
+ do_action('right_now_content_table_end');
+ echo "\n\t</table>\n\t</div>";
+
+
+ echo "\n\t".'<div class="table table_discussion">';
+ echo "\n\t".'<p class="sub">' . __('Discussion') . '</p>'."\n\t".'<table>';
+ echo "\n\t".'<tr class="first">';
+
+ // Total Comments
+ $num = '<span class="total-count">' . number_format_i18n($num_comm->total_comments) . '</span>';
+ $text = _n( 'Comment', 'Comments', $num_comm->total_comments );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = '<a href="edit-comments.php">' . $num . '</a>';
+ $text = '<a href="edit-comments.php">' . $text . '</a>';
+ }
+ echo '<td class="b b-comments">' . $num . '</td>';
+ echo '<td class="last t comments">' . $text . '</td>';
+
+ echo '</tr><tr>';
+
+ // Approved Comments
+ $num = '<span class="approved-count">' . number_format_i18n($num_comm->approved) . '</span>';
+ $text = _nx( 'Approved', 'Approved', $num_comm->approved, 'Right Now' );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = "<a href='edit-comments.php?comment_status=approved'>$num</a>";
+ $text = "<a class='approved' href='edit-comments.php?comment_status=approved'>$text</a>";
+ }
+ echo '<td class="b b_approved">' . $num . '</td>';
+ echo '<td class="last t">' . $text . '</td>';
+
+ echo "</tr>\n\t<tr>";
+
+ // Pending Comments
+ $num = '<span class="pending-count">' . number_format_i18n($num_comm->moderated) . '</span>';
+ $text = _n( 'Pending', 'Pending', $num_comm->moderated );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = "<a href='edit-comments.php?comment_status=moderated'>$num</a>";
+ $text = "<a class='waiting' href='edit-comments.php?comment_status=moderated'>$text</a>";
+ }
+ echo '<td class="b b-waiting">' . $num . '</td>';
+ echo '<td class="last t">' . $text . '</td>';
+
+ echo "</tr>\n\t<tr>";
+
+ // Spam Comments
+ $num = number_format_i18n($num_comm->spam);
+ $text = _nx( 'Spam', 'Spam', $num_comm->spam, 'comment' );
+ if ( current_user_can( 'moderate_comments' ) ) {
+ $num = "<a href='edit-comments.php?comment_status=spam'><span class='spam-count'>$num</span></a>";
+ $text = "<a class='spam' href='edit-comments.php?comment_status=spam'>$text</a>";
+ }
+ echo '<td class="b b-spam">' . $num . '</td>';
+ echo '<td class="last t">' . $text . '</td>';
+
+ echo "</tr>";
+ do_action('right_now_table_end');
+ do_action('right_now_discussion_table_end');
+ echo "\n\t</table>\n\t</div>";
+
+ echo "\n\t".'<div class="versions">';
+ $ct = current_theme_info();
+
+ echo "\n\t<p>";
+ 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 '<a href="themes.php" class="button rbutton">' . __('Change Theme') . '</a>';
+ $switch_themes = '<a href="themes.php">' . $switch_themes . '</a>';
+ }
+ if ( current_user_can( 'edit_theme_options' ) ) {
+ printf(_n('Theme <span class="b">%1$s</span> with <span class="b"><a href="widgets.php">%2$s Widget</a></span>', 'Theme <span class="b">%1$s</span> with <span class="b"><a href="widgets.php">%2$s Widgets</a></span>', $num_widgets), $switch_themes, $num);
+ } else {
+ printf(_n('Theme <span class="b">%1$s</span> with <span class="b">%2$s Widget</span>', 'Theme <span class="b">%1$s</span> with <span class="b">%2$s Widgets</span>', $num_widgets), $switch_themes, $num);
+ }
+ } else {
+ if ( current_user_can( 'switch_themes' ) ) {
+ echo '<a href="themes.php" class="button rbutton">' . __('Change Theme') . '</a>';
+ printf( __('Theme <span class="b"><a href="themes.php">%1$s</a></span>'), $ct->title );