WordPress.org

Make WordPress Core

Ticket #7552: 7552.dashboard-1.diff

File 7552.dashboard-1.diff, 63.0 KB (added by mdawaffe, 7 years ago)

switch to meta_box API (mostly backward compatible), draggable dashboard, recent comments dashboard widget improvement

  • wp-includes/script-loader.php

     
    279279                ) ); 
    280280 
    281281                $scripts->add( 'settings-box', '/wp-admin/js/settings-box.js', array( 'jquery' ), '20080925' ); 
     282 
     283                $scripts->add( 'dashboard', '/wp-admin/js/dashboard.js', array( 'jquery', 'admin-comments', 'postbox', 'settings-box' ), '20081008' ); 
    282284        } 
    283285} 
    284286 
     
    309311 
    310312        $rtl_styles = array( 'global', 'colors', 'dashboard', 'ie', 'install', 'login', 'media', 'theme-editor', 'upload', 'widgets', 'press-this', 'press-this-ie' ); 
    311313 
    312         $styles->add( 'wp-admin', '/wp-admin/wp-admin.css', array(), '20081001' ); 
     314        $styles->add( 'wp-admin', '/wp-admin/wp-admin.css', array(), '20081008' ); 
    313315        $styles->add_data( 'wp-admin', 'rtl', '/wp-admin/rtl.css' ); 
    314316 
    315317        $styles->add( 'ie', '/wp-admin/css/ie.css' ); 
     
    322324        $styles->add( 'global', '/wp-admin/css/global.css', array(), '20081001' ); 
    323325        $styles->add( 'media', '/wp-admin/css/media.css', array(), '20080709' ); 
    324326        $styles->add( 'widgets', '/wp-admin/css/widgets.css' ); 
    325         $styles->add( 'dashboard', '/wp-admin/css/dashboard.css', array(), '20081001' ); 
     327        $styles->add( 'dashboard', '/wp-admin/css/dashboard.css', array(), '20081008' ); 
    326328        $styles->add( 'install', '/wp-admin/css/install.css', array(), '20080708' ); 
    327329        $styles->add( 'theme-editor', '/wp-admin/css/theme-editor.css' ); 
    328330        $styles->add( 'press-this', '/wp-admin/css/press-this.css', array(), '20080922' ); 
     
    427429add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' ); 
    428430 
    429431add_action( 'wp_default_styles', 'wp_default_styles' ); 
    430 add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 ); 
     432add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 ); 
     433 No newline at end of file 
  • wp-admin/admin-ajax.php

     
    465465        $comment = get_comment($comment_id); 
    466466        if ( ! $comment ) die('1'); 
    467467 
    468         $mode = ( isset($_POST['mode']) && 'single' == $_POST['mode'] ) ? 'single' : 'detail'; 
     468        $modes = array( 'single', 'detail', 'dashboard' ); 
     469        $mode = isset($_POST['mode']) && in_array( $_POST['mode'], $modes ) ? $_POST['mode'] : 'detail'; 
    469470        $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; 
    470471        $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0; 
    471472 
     
    475476        $x = new WP_Ajax_Response(); 
    476477 
    477478        ob_start(); 
    478                 _wp_comment_row( $comment->comment_ID, $mode, false, $checkbox ); 
     479                if ( 'dashboard' == $mode ) { 
     480                        require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); 
     481                        _wp_dashboard_recent_comments_row( $comment, false ); 
     482                } else { 
     483                        _wp_comment_row( $comment->comment_ID, $mode, false, $checkbox ); 
     484                } 
    479485                $comment_list_item = ob_get_contents(); 
    480486        ob_end_clean(); 
    481487 
  • wp-admin/wp-admin.css

     
    12221222        clear: left; 
    12231223} 
    12241224 
    1225 #poststuff h3 { 
     1225#poststuff h3, .metabox-holder h3 { 
    12261226        font-size: 14px; 
    12271227        font-weight: bold; 
    12281228        padding: 7px; 
    12291229        margin: 0 0 10px; 
    12301230} 
    12311231 
    1232 #poststuff .postbox, #poststuff .stuffbox { 
     1232.metabox-holder .postbox, #poststuff .postbox, #poststuff .stuffbox { 
    12331233        padding: 2px; 
    12341234        margin-bottom: 20px; 
    12351235        border-width: 1px; 
     
    13681368        vertical-align: middle; 
    13691369} 
    13701370 
    1371 #poststuff .togbox { 
     1371.metabox-holder .togbox, #poststuff .togbox { 
    13721372        background-position: -10px 16px; 
    13731373        background-repeat: no-repeat; 
    13741374        display: block; 
     
    13881388        border-bottom-left-radius: 3px; 
    13891389} 
    13901390 
    1391 #poststuff .closed .inside { 
     1391.metabox-holder .closed .inside, #poststuff .closed .inside { 
    13921392        display: none; 
    13931393} 
    13941394 
    1395 #poststuff .closed h3 { 
     1395.metabox-holder .closed h3, #poststuff .closed h3 { 
    13961396        margin: 0; 
    13971397} 
    13981398 
    1399 #poststuff .closed .togbox { 
     1399.metabox-holder .closed .togbox, #poststuff .closed .togbox { 
    14001400        background-position: 4px 15px; 
    14011401} 
    14021402 
     
    21252125        margin: 0 5px 0 2px; 
    21262126} 
    21272127 
     2128.metabox-prefs label a { 
     2129        display: none; 
     2130} 
    21282131 
    21292132/* Inline Editor */ 
    21302133.inline-editor { 
  • wp-admin/includes/post.php

     
    819819 * @return unknown 
    820820 */ 
    821821function postbox_classes( $id, $page ) { 
     822        if ( isset( $_GET['edit'] ) && $_GET['edit'] == $id ) 
     823                return ''; 
    822824        $current_user = wp_get_current_user(); 
    823825        if ( $closed = get_usermeta( $current_user->ID, 'closedpostboxes_'.$page ) ) { 
    824826                if ( !is_array( $closed ) ) return ''; 
  • wp-admin/includes/dashboard.php

     
    1414 * @since unknown 
    1515 */ 
    1616function wp_dashboard_setup() { 
    17         global $wpdb, $wp_dashboard_sidebars; 
     17        global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks; 
     18        $wp_dashboard_control_callbacks = array(); 
     19 
    1820        $update = false; 
    1921        $widget_options = get_option( 'dashboard_widget_options' ); 
    2022        if ( !$widget_options || !is_array($widget_options) ) 
    2123                $widget_options = array(); 
    2224 
    23  
    24         /* Register WP Dashboard Dynamic Sidebar */ 
    25         register_sidebar( array( 
    26                 'name' => 'WordPress Dashboard', 
    27                 'id' => 'wp_dashboard', 
    28                 'before_widget' => "\t<div class='dashboard-widget-holder %2\$s' id='%1\$s'>\n\n\t\t<div class='dashboard-widget'>\n\n", 
    29                 'after_widget' => "\t\t</div>\n\n\t</div>\n\n", 
    30                 'before_title' => "\t\t\t<h3 class='dashboard-widget-title'>", 
    31                 'after_title' => "</h3>\n\n" 
    32         ) ); 
    33  
    34  
    3525        /* Register Widgets and Controls */ 
    3626 
    3727        // Recent Comments Widget 
    38         $mod_comments = wp_count_comments(); 
    39         $mod_comments = $mod_comments->moderated; 
    40         if ( current_user_can( 'moderate_comments' ) && $mod_comments ) { 
    41                 $notice = sprintf( __ngettext( '%d comment awaiting moderation', '%d comments awaiting moderation', $mod_comments ), $mod_comments ); 
    42                 $notice = "<a href='edit-comments.php?comment_status=moderated'>$notice</a>"; 
    43         } else { 
    44                 $notice = ''; 
    45         } 
    46         wp_register_sidebar_widget( 'dashboard_recent_comments', __( 'Recent Comments' ), 'wp_dashboard_recent_comments', 
    47                 array( 'all_link' => 'edit-comments.php', 'notice' => $notice, 'width' => 'half' ) 
    48         ); 
     28        wp_add_dashboard_widget( 'dashboard_recent_comments', __( 'Recent Comments' ), 'wp_dashboard_recent_comments' ); 
    4929 
    50  
    5130        // QuickPress Widget 
    52         if ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['action'] ) && 0 === strpos( $_POST['action'], 'post-quickpress' ) ) { 
    53                 $view = get_permalink( $_POST['post_ID'] ); 
    54                 $edit = clean_url( get_edit_post_link( $_POST['post_ID'] ) ); 
    55                 if ( 'post-quickpress-publish' == $_POST['action'] ) 
    56                         $notice = sprintf( __( 'Post Published. <a href="%s">View post</a> | <a href="%s">Edit post</a>' ), clean_url( $view ), $edit ); 
    57                 else 
    58                         $notice = sprintf( __( 'Draft Saved. <a href="%s">Preview post</a> | <a href="%s">Edit post</a>' ), clean_url( add_query_arg( 'preview', 1, $view ) ), $edit ); 
    59         } else { 
    60                 $notice = ''; 
    61         } 
    62         wp_register_sidebar_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press', 
    63                 array( 'all_link' => array( 'edit.php?post_status=draft', __('View All Drafts') ), 'width' => 'half', 'height' => 'double', 'notice' => $notice ) 
    64         ); 
    65         wp_register_widget_control( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_empty_control', 
    66                 array( 'widget_id' => 'dashboard_quick_press' ) 
    67         ); 
     31        wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press', 'wp_dashboard_empty_control' ); 
    6832 
     33        // Recent Drafts 
     34        wp_add_dashboard_widget( 'dashboard_recent_drafts', __( 'Recent Drafts' ), 'wp_dashboard_recent_drafts' ); 
     35 
    6936        // Incoming Links Widget 
    7037        if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) { 
    7138                $update = true; 
     
    7744                        'show_date' => 0 
    7845                ); 
    7946        } 
    80         wp_register_sidebar_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_empty', 
    81                 array( 'all_link' => $widget_options['dashboard_incoming_links']['link'], 'feed_link' => $widget_options['dashboard_incoming_links']['url'], 'width' => 'half' ), 
    82                 'wp_dashboard_cached_rss_widget', 'wp_dashboard_incoming_links_output' 
    83         ); 
    84         wp_register_widget_control( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_rss_control', array(), 
    85                 array( 'widget_id' => 'dashboard_incoming_links', 'form_inputs' => array( 'title' => false, 'show_summary' => false, 'show_author' => false ) ) 
    86         ); 
     47        wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' ); 
    8748 
    88  
    8949        // WP Plugins Widget 
    90         wp_register_sidebar_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_empty', 
    91                 array( 'all_link' => 'http://wordpress.org/extend/plugins/', 'feed_link' => 'http://wordpress.org/extend/plugins/rss/topics/', 'width' => 'half' ), 
    92                 'wp_dashboard_cached_rss_widget', 'wp_dashboard_plugins_output', 
    93                 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/' ) 
    94         ); 
     50        if ( current_user_can( 'activate_plugins' ) ) 
     51                wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' ); 
    9552 
    9653        // Primary feed (Dev Blog) Widget 
    9754        if ( !isset( $widget_options['dashboard_primary'] ) ) { 
     
    10663                        'show_date' => 1 
    10764                ); 
    10865        } 
    109         wp_register_sidebar_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_empty', 
    110                 array( 'all_link' => $widget_options['dashboard_primary']['link'], 'feed_link' => $widget_options['dashboard_primary']['url'], 'width' => 'half', 'class' => 'widget_rss' ), 
    111                 'wp_dashboard_cached_rss_widget', 'wp_dashboard_rss_output' 
    112         ); 
    113         wp_register_widget_control( 'dashboard_primary', __( 'Primary Feed' ), 'wp_dashboard_rss_control', array(), 
    114                 array( 'widget_id' => 'dashboard_primary' ) 
    115         ); 
     66        wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' ); 
    11667 
    117  
    11868        // Secondary Feed (Planet) Widget 
    11969        if ( !isset( $widget_options['dashboard_secondary'] ) ) { 
    12070                $update = true; 
     
    12575                        'items' => 15 
    12676                ); 
    12777        } 
    128         wp_register_sidebar_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_empty', 
    129                 array( 'all_link' => $widget_options['dashboard_secondary']['link'], 'feed_link' => $widget_options['dashboard_secondary']['url'], 'width' => 'full' ), 
    130                 'wp_dashboard_cached_rss_widget', 'wp_dashboard_secondary_output' 
    131         ); 
    132         wp_register_widget_control( 'dashboard_secondary', __( 'Secondary Feed' ), 'wp_dashboard_rss_control', array(), 
    133                 array( 'widget_id' => 'dashboard_secondary', 'form_inputs' => array( 'show_summary' => false, 'show_author' => false, 'show_date' => false ) ) 
    134         ); 
     78        wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' ); 
    13579 
    136  
    137                 /* Dashboard Widget Template 
    138                 wp_register_sidebar_widget( $widget_id (unique slug) , $widget_title, $output_callback, 
    139                         array( 
    140                                 'all_link'  => full url for "View All" link, 
    141                                 'feed_link' => full url for "RSS" link, 
    142                                 'width'     => 'fourth', 'third', 'half', 'full' (defaults to 'half'), 
    143                                 'height'    => 'single', 'double' (defaults to 'single'), 
    144                         ), 
    145                         $wp_dashboard_empty_callback (only needed if using 'wp_dashboard_empty' as your $output_callback), 
    146                         $arg, $arg, $arg... (further args passed to callbacks) 
    147                 ); 
    148  
    149                 // optional: if you want users to be able to edit the settings of your widget, you need to register a widget_control 
    150                 wp_register_widget_control( $widget_id, $widget_control_title, $control_output_callback, 
    151                         array(), // leave an empty array here: oddity in widget code 
    152                         array( 
    153                                 'widget_id' => $widget_id, // Yes - again.  This is required: oddity in widget code 
    154                                 'arg'       => an arg to pass to the $control_output_callback, 
    155                                 'another'   => another arg to pass to the $control_output_callback, 
    156                                 ... 
    157                         ) 
    158                 ); 
    159                 */ 
    160  
    16180        // Hook to register new widgets 
    16281        do_action( 'wp_dashboard_setup' ); 
    16382 
    164         // Hard code the sidebar's widgets and order 
    165         $dashboard_widgets = array(); 
    166         $dashboard_widgets[] = 'dashboard_quick_press'; 
    167         $dashboard_widgets[] = 'dashboard_recent_comments'; 
    168 /* 
    169         $dashboard_widgets[] = 'dashboard_incoming_links'; 
    170         $dashboard_widgets[] = 'dashboard_primary'; 
    171         if ( current_user_can( 'activate_plugins' ) ) 
    172                 $dashboard_widgets[] = 'dashboard_plugins'; 
    173 */ 
    174         $dashboard_widgets[] = 'dashboard_secondary'; 
    175  
    17683        // Filter widget order 
    177         $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', $dashboard_widgets ); 
    178         if ( in_array( 'dashboard_quick_press', $dashboard_widgets ) ) { 
    179 //              add_action( 'admin_head', 'wp_teeny_mce' ); 
    180                 add_action( 'admin_head', 'wp_dashboard_quick_press_js' ); 
    181         } 
     84        $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() ); 
    18285 
    183         $wp_dashboard_sidebars = array( 'wp_dashboard' => $dashboard_widgets, 'array_version' => 3.5 ); 
    184  
    185         add_filter( 'dynamic_sidebar_params', 'wp_dashboard_dynamic_sidebar_params' ); 
    186  
    18786        if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) { 
    18887                ob_start(); // hack - but the same hack wp-admin/widgets.php uses 
    18988                wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); 
     
    19493 
    19594        if ( $update ) 
    19695                update_option( 'dashboard_widget_options', $widget_options ); 
     96 
     97        foreach ( $dashboard_widgets as $widget_id ) 
     98                wp_add_dashboard_widget( $widget_id, $wp_registered_widgets[$widget_id]['name'], $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] ); 
    19799} 
    198100 
    199 /** 
    200  * Displays the dashboard. 
    201  * 
    202  * @since unknown 
    203  */ 
    204 function wp_dashboard() { 
    205         echo "<div id='dashboard-widgets'>\n\n"; 
     101function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) { 
     102        global $wp_dashboard_control_callbacks; 
     103        if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { 
     104                $wp_dashboard_control_callbacks[$widget_id] = $control_callback; 
     105                if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { 
     106                        list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); 
     107                        $widget_name .= ' <a href="' . clean_url( $url ) . '">' . __( 'Cancel' ) . '</a>'; 
     108                        add_meta_box( $widget_id, $widget_name, '_wp_dashboard_control_callback', 'dashboard', 'normal', 'core' ); 
     109                        return; 
     110                } 
     111                list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 ); 
     112                $widget_name .= ' <a href="' . clean_url( "$url#$widget_id" ) . '" class="open-box">' . __( 'Edit' ) . '</a>'; 
     113        } 
     114        add_meta_box( $widget_id, $widget_name , $callback, 'dashboard', 'normal', 'core' ); 
     115} 
    206116 
    207         // We're already filtering dynamic_sidebar_params obove 
    208         add_filter( 'option_sidebars_widgets', 'wp_dashboard_sidebars_widgets' ); // here there be hackery 
    209         dynamic_sidebar( 'wp_dashboard' ); 
    210         remove_filter( 'option_sidebars_widgets', 'wp_dashboard_sidebars_widgets' ); 
     117function _wp_dashboard_control_callback( $dashboard, $meta_box ) { 
     118        echo '<form action="" method="post">'; 
     119        wp_dashboard_trigger_widget_control( $meta_box['id'] ); 
     120        echo "<p class='submit'><input type='hidden' name='widget_id' value='$meta_box[id]' /><input type='submit' value='" . __( 'Sumbit' ) . "' /></p>"; 
    211121 
    212         echo "<br class='clear' />\n</div>\n\n\n"; 
     122        echo '</form>';  
    213123} 
    214124 
    215125/** 
    216  * Makes sidebar_widgets option reflect the dashboard settings. 
     126 * Displays the dashboard. 
    217127 * 
    218128 * @since unknown 
    219  * 
    220  * @return array WordPress Dashboard Widgets list. 
    221129 */ 
    222 function wp_dashboard_sidebars_widgets() { // hackery 
    223         return $GLOBALS['wp_dashboard_sidebars']; 
    224 } 
     130function wp_dashboard() { 
     131        echo "<div id='dashboard-widgets' class='metabox-holder'>\n\n"; 
    225132 
    226 // Modifies sidbar params on the fly to set up ids, class names, titles for each widget (called once per widget) 
    227 // Switches widget to edit mode if $_GET['edit'] 
    228 /** 
    229  * {@internal Missing Short Description}} 
    230  * 
    231  * @since unknown 
    232  * 
    233  * @param unknown_type $params 
    234  * @return unknown 
    235  */ 
    236 function wp_dashboard_dynamic_sidebar_params( $params ) { 
    237         global $wp_registered_widgets, $wp_registered_widget_controls; 
     133        echo "<div id='side-info-column' class='inner-sidebar'>\n\n"; 
     134        $class = do_meta_boxes( 'dashboard', 'side', '' ) ? ' class="has-sidebar"' : ''; 
     135        echo "</div>\n\n"; 
    238136 
    239         $sidebar_defaults = array('widget_id' => 0, 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => ''); 
    240         extract( $sidebar_defaults, EXTR_PREFIX_ALL, 'sidebar' ); 
    241         extract( $params[0], EXTR_PREFIX_ALL, 'sidebar' ); 
     137        echo "<div id='post-body'$class>\n\n"; 
     138        echo "<div id='dashboard-widgets-main-content' class='has-sidebar-content'>\n\n"; 
     139        do_meta_boxes( 'dashboard', 'normal', '' ); 
     140        echo "</div>\n\n"; 
     141        echo "</div>\n\n"; 
    242142 
    243         if ( !isset($wp_registered_widgets[$sidebar_widget_id]) || !is_array($wp_registered_widgets[$sidebar_widget_id]) ) { 
    244                 return $params; 
    245         } 
    246         $widget_defaults = array('id' => '', 'width' => '', 'height' => '', 'class' => '', 'feed_link' => '', 'all_link' => '', 'notice' => false, 'error' => false); 
    247         extract( $widget_defaults, EXTR_PREFIX_ALL, 'widget' ); 
    248         extract( $wp_registered_widgets[$sidebar_widget_id], EXTR_PREFIX_ALL, 'widget' ); 
     143        echo "<form style='display: none' method='get' action=''>\n<p>\n"; 
     144        wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); 
     145        wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); 
     146        echo "</p>\n</form>\n"; 
     147} 
    249148 
    250         $the_classes = array(); 
    251         if ( in_array($widget_width, array( 'third', 'fourth', 'full' ) ) ) 
    252                 $the_classes[] = $widget_width; 
     149/* Dashboard Widgets */ 
    253150 
    254         if ( 'double' == $widget_height ) 
    255                 $the_classes[] = 'double'; 
    256  
    257         if ( $widget_class ) 
    258                 $the_classes[] = $widget_class; 
    259  
    260         // Add classes to the widget holder 
    261         if ( $the_classes ) 
    262                 $sidebar_before_widget = str_replace( "<div class='dashboard-widget-holder ", "<div class='dashboard-widget-holder " . join( ' ', $the_classes ) . ' ', $sidebar_before_widget ); 
    263  
    264         $top_links = $bottom_links = array(); 
    265         if ( $widget_all_link ) { 
    266                 $widget_all_link = (array) $widget_all_link; 
    267                 $bottom_links[] = '<a href="' . clean_url( $widget_all_link[0] ) . '">' . ( isset($widget_all_link[1]) ? $widget_all_link[1] : __( 'View All' ) ) . '</a>'; 
    268         } 
    269  
    270         $content_class = 'dashboard-widget-content'; 
    271         if ( current_user_can( 'edit_dashboard' ) && isset($wp_registered_widget_controls[$widget_id]) && is_callable($wp_registered_widget_controls[$widget_id]['callback']) ) { 
    272                 // Switch this widget to edit mode 
    273                 if ( isset($_GET['edit']) && $_GET['edit'] == $widget_id ) { 
    274                         $content_class .= ' dashboard-widget-control'; 
    275                         $wp_registered_widgets[$widget_id]['callback'] = 'wp_dashboard_empty'; 
    276                         $sidebar_widget_name = $wp_registered_widget_controls[$widget_id]['name']; 
    277                         $params[1] = 'wp_dashboard_trigger_widget_control'; 
    278                         $sidebar_before_widget .= '<form action="' . clean_url(remove_query_arg( 'edit' ))  . '" method="post">'; 
    279                         $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"; 
    280                         $top_links[] = '<a href="' . clean_url(remove_query_arg( 'edit' )) . '">' . __( 'Cancel' ) . '</a>'; 
     151function wp_dashboard_quick_press( $dashboard, $meta_box ) { 
     152        $drafts = false; 
     153        if ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['action'] ) && 0 === strpos( $_POST['action'], 'post-quickpress' ) ) { 
     154                $view = get_permalink( $_POST['post_ID'] ); 
     155                $edit = clean_url( get_edit_post_link( $_POST['post_ID'] ) ); 
     156                if ( 'post-quickpress-publish' == $_POST['action'] ) { 
     157                        printf( __( 'Post Published. <a href="%s">View post</a> | <a href="%s">Edit post</a>' ), clean_url( $view ), $edit ); 
    281158                } else { 
    282                         $top_links[] = '<a href="' . clean_url(add_query_arg( 'edit', $widget_id )) . "#$widget_id" . '">' . __( 'Edit' ) . '</a>'; 
     159                        printf( __( 'Draft Saved. <a href="%s">Preview post</a> | <a href="%s">Edit post</a>' ), clean_url( add_query_arg( 'preview', 1, $view ) ), $edit ); 
     160                        $drafts_query = new WP_Query( array( 
     161                                'post_type' => 'post', 
     162                                'what_to_show' => 'posts', 
     163                                'post_status' => 'draft', 
     164                                'author' => $GLOBALS['current_user']->ID, 
     165                                'posts_per_page' => 1, 
     166                                'orderby' => 'modified', 
     167                                'order' => 'DESC' 
     168                        ) ); 
     169                 
     170                        if ( $drafts_query->posts ) 
     171                                $drafts =& $drafts_query->posts; 
    283172                } 
     173                $_REQUEST = array(); // hack for get_default_post_to_edit() 
    284174        } 
    285175 
    286         if ( $widget_feed_link ) 
    287                 $bottom_links[] = '<img class="rss-icon" src="' . includes_url('images/rss.png') . '" alt="' . __( 'rss icon' ) . '" /> <a href="' . clean_url( $widget_feed_link ) . '">' . __( 'RSS' ) . '</a>'; 
    288  
    289         $bottom_links = apply_filters( "wp_dashboard_widget_links_$widget_id", $bottom_links ); 
    290  
    291         // Could have put this in widget-content.  Doesn't really matter 
    292         if ( $widget_notice ) 
    293                 $sidebar_after_title .= "\t\t\t<div class='dashboard-widget-notice'>$widget_notice</div>\n\n"; 
    294  
    295         if ( $widget_error ) 
    296                 $sidebar_after_title .= "\t\t\t<div class='dashboard-widget-error'>$widget_error</div>\n\n"; 
    297  
    298         $sidebar_after_title .= "\t\t\t<div class='$content_class'>\n\n"; 
    299  
    300         // Add links to widget's title bar 
    301         if ( $top_links ) { 
    302                 $sidebar_before_title .= '<span>'; 
    303                 $sidebar_after_title   = '</span><small>' . join( '&nbsp;|&nbsp;', $top_links ) . "</small><br class='clear' />$sidebar_after_title"; 
    304         } 
    305  
    306         // Add links to bottom of widget 
    307         if ( $bottom_links ) 
    308                 $sidebar_after_widget .= "<p class='dashboard-widget-links'>" . join( ' | ', $bottom_links ) . "</p>"; 
    309  
    310         $sidebar_after_widget .= "\t\t\t</div>\n\n"; 
    311  
    312         foreach( array_keys( $params[0] ) as $key ) 
    313                 $$key = ${'sidebar_' . $key}; 
    314  
    315         $params[0] = compact( array_keys( $params[0] ) ); 
    316  
    317         return $params; 
    318 } 
    319  
    320  
    321 /* Dashboard Widgets */ 
    322  
    323 function wp_dashboard_quick_press( $sidebar_args ) { 
    324         extract( $sidebar_args, EXTR_SKIP ); 
    325  
    326         echo $before_widget; 
    327  
    328         echo $before_title; 
    329         echo $widget_name; 
    330         echo $after_title; 
    331  
    332         if ( ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) ) && 'post-quickpress-save-cont' === $_POST['action'] ) { 
    333                 $post = get_post_to_edit( $_POST['post_ID'] ); 
    334         } else { 
    335                 $_REQUEST = array(); // hack 
    336                 $post = get_default_post_to_edit(); 
    337         } 
     176        $post = get_default_post_to_edit(); 
    338177?> 
    339178 
    340179        <form name="post" action="<?php echo clean_url( admin_url( 'post.php' ) ); ?>" method="post" id="quick-press"> 
    341                 <h3 id="quick-post-title"><label for="title"><?php _e('Title') ?></label></h3> 
     180                <h4 id="quick-post-title"><label for="title"><?php _e('Title') ?></label></h4> 
    342181                <div class="input-text-wrap"> 
    343182                        <input type="text" name="post_title" id="title" autocomplete="off" value="<?php echo attribute_escape( $post->post_title ); ?>" /> 
    344183                </div> 
    345184 
    346                 <h3><label for="content"><?php _e('Post') ?></label></h3> 
     185                <h4><label for="content"><?php _e('Post') ?></label></h4> 
    347186                <div class="textarea-wrap"> 
    348187                        <textarea name="content" id="quickpress-content" class="mceEditor" rows="3" cols="15"><?php echo $post->post_content; ?></textarea> 
    349188                </div> 
    350189 
    351                 <h3><label for="tags-input"><?php _e('Tags') ?></label></h3> 
     190                <h4><label for="tags-input"><?php _e('Tags') ?></label></h4> 
    352191                <div class="input-text-wrap"> 
    353192                        <input type="text" name="tags_input" id="tags-input" value="<?php echo get_tags_to_edit( $post->ID ); ?>" /> 
    354193                </div> 
     
    358197                        <input type="hidden" name="action" id="quickpost-action" value="post-quickpress-save" /> 
    359198                        <input type="hidden" name="quickpress_post_ID" value="<?php echo (int) $post->ID; ?>" /> 
    360199                        <?php wp_nonce_field('add-post'); ?> 
    361                         <input type="submit" name="save" id="save-post" class="button" value="<?php _e('Save'); ?>" /> 
    362                         <input type="submit" name="save-cont" id="save-cont" class="button" value="<?php _e('Save and Continue'); ?>" /> 
    363                         <input type="submit" name="publish" id="publish" accesskey="p" class="button button-highlighted" value="<?php _e('Publish'); ?>" /> 
     200                        <input type="submit" name="save" id="save-post" class="button alignleft" value="<?php _e('Save Draft'); ?>" /> 
     201                        <input type="submit" name="publish" id="publish" accesskey="p" class="button button-highlighted alignright" value="<?php _e('Publish'); ?>" /> 
     202                        <br class="clear" /> 
    364203                </p> 
    365204 
     205        </form> 
     206 
    366207<?php 
    367         $drafts_query = new WP_Query( array( 
    368                 'post_type' => 'post', 
    369                 'what_to_show' => 'posts', 
    370                 'post_status' => 'draft', 
    371                 'author' => $GLOBALS['current_user']->ID, 
    372                 'posts_per_page' => 5, 
    373                 'orderby' => 'modified', 
    374                 'order' => 'DESC' 
    375         ) ); 
     208        if ( $drafts ) 
     209                wp_dashboard_recent_drafts( $drafts ); 
     210} 
    376211 
    377         if ( $drafts_query->posts ) : 
     212function wp_dashboard_recent_drafts( $drafts = false ) { 
     213        if ( !$drafts ) { 
     214                $drafts_query = new WP_Query( array( 
     215                        'post_type' => 'post', 
     216                        'what_to_show' => 'posts', 
     217                        'post_status' => 'draft', 
     218                        'author' => $GLOBALS['current_user']->ID, 
     219                        'posts_per_page' => 5, 
     220                        'orderby' => 'modified', 
     221                        'order' => 'DESC' 
     222                ) ); 
     223                $drafts =& $drafts_query->posts; 
     224        } 
     225 
     226        if ( $drafts && is_array( $drafts ) ) : 
    378227                $list = array(); 
    379                 foreach ( $drafts_query->posts as $draft ) { 
     228                foreach ( $drafts as $draft ) { 
    380229                        $url = get_edit_post_link( $draft->ID ); 
    381230                        $title = _draft_or_post_title( $draft->ID ); 
    382231                        $list[] = "<a href='$url' title='" . sprintf( __( 'Edit "%s"' ), attribute_escape( $title ) ) . "'>$title</a>"; 
    383232                } 
    384233?> 
     234        <ul> 
     235                <li><?php echo join( "</li>\n<li>", $list ); ?></li> 
     236        </ul> 
    385237 
    386                 <h3><?php _e('Recent Drafts'); ?></h3> 
    387                 <p id='recent-drafts'> 
    388                         <?php echo join( ', ', $list ); ?> 
    389                 </p> 
    390  
    391238<?php 
    392239 
    393240        endif; // drafts 
     241} 
    394242 
     243/** 
     244 * Display recent comments dashboard widget content. 
     245 * 
     246 * @since unknown 
     247 */ 
     248function wp_dashboard_recent_comments() { 
     249        list($comments, $total) = _wp_get_comment_list( '', false, 0, 5 ); 
     250 
     251        if ( $comments ) : 
    395252?> 
    396253 
    397         </form> 
     254                <p class="view-all"><a href="edit-comments.php"><?php _e( 'View All Comments' ); ?></a></p> 
     255                <div id="the-comment-list" class="list:comment"> 
    398256 
    399257<?php 
     258                foreach ( $comments as $comment ) 
     259                        _wp_dashboard_recent_comments_row( $comment ); 
     260?> 
    400261 
    401         echo $after_widget; 
    402 } 
     262                </div> 
    403263 
    404 function wp_dashboard_quick_press_js() { 
     264<?php 
     265                wp_comment_reply( -1, false, 'dashboard', false ); 
     266 
     267        else : 
    405268?> 
    406269 
    407 <script type="text/javascript"> 
    408 /* <![CDATA[ */ 
    409 var quickPressLoad = function($) { 
    410         var act = $('#quickpost-action'); 
    411         var t = $('#quick-press').submit( function() { 
    412                 if ( 'post-quickpress-save-cont' == act.val() ) { 
    413                         return true; 
    414                 } 
     270        <p><?php _e( 'No comments yet.' ); ?></p> 
    415271 
    416                 var head = $('#dashboard_quick_press div.dashboard-widget').children( 'div').hide().end().find('h3 small'); 
    417                 head.prepend( '<img src="images/loading.gif" style="margin: 0 6px 0 0; vertical-align: middle" />' ); 
     272<?php 
     273        endif; // $comments; 
     274} 
    418275 
    419                 if ( 'post' == act.val() ) { act.val( 'post-quickpress-publish' ); } 
     276function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) { 
     277        static $date = false; 
     278        static $today = false; 
     279        static $yesterday = false; 
    420280 
    421                 if ( 'undefined' != typeof tinyMCE ) { 
    422                         tinyMCE.get('quickpress-content').save(); 
    423                         tinyMCE.get('quickpress-content').remove(); 
     281        $GLOBALS['comment'] =& $comment; 
     282 
     283        if ( $show_date ) { 
     284                if ( !$today ) 
     285                        $today = gmdate( get_option( 'date_format' ), time() + get_option( 'gmt_offset' ) ); 
     286                if ( !$yesterday ) 
     287                        $yesterday = gmdate( get_option( 'date_format' ), strtotime( 'yesterday' ) + get_option( 'gmt_offset' ) ); 
     288                $wordy_dates = array( $today => __( 'Today' ), $yesterday => __( 'Yesterday' ) ); 
     289         
     290                $comment_date = gmdate( get_option( 'date_format' ), strtotime( $comment->comment_date ) + get_option( 'gmt_offset' ) ); 
     291                if ( $comment_date != $date ) { 
     292                        $date = $comment_date; 
     293                        echo '<h4>' . ( isset( $wordy_dates[$date] ) ? $wordy_dates[$date] : $date ) . ":</h4>\n"; 
    424294                } 
     295        } 
    425296 
    426                 $('#dashboard_quick_press').load( t.attr( 'action' ) + ' #dashboard_quick_press > *', t.serializeArray(), function() { 
    427                         if ( 'undefined' != typeof wpTeenyMCEInit && $.isFunction( wpTeenyMCEInit ) ) { wpTeenyMCEInit(); } 
    428                         quickPressLoad($); 
    429                 } ); 
    430                 return false; 
    431         } ); 
     297        $comment_post_url = get_permalink( $comment->comment_post_ID ); 
     298        $comment_post_title = get_the_title( $comment->comment_post_ID ); 
     299        $comment_post_link = "<a href='$comment_post_url'>$comment_post_title</a>"; 
     300        $comment_link = '<a class="comment-link" href="' . get_comment_link() . '">#</a>'; 
    432301 
    433         $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } ); 
    434         $('#save-cont').click( function() { act.val( 'post-quickpress-save-cont' ); t.attr( 'action', 'post.php' ); } ); 
    435 }; 
    436 jQuery( quickPressLoad ); 
    437 /* ]]> */ 
    438 </script> 
    439 <?php 
    440 } 
     302        $delete_url = clean_url( wp_nonce_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) ); 
     303        $approve_url = clean_url( wp_nonce_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "approve-comment_$comment->comment_ID" ) ); 
     304        $unapprove_url = clean_url( wp_nonce_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "unapprove-comment_$comment->comment_ID" ) ); 
     305        $spam_url = clean_url( wp_nonce_url( "comment.php?action=deletecomment&dt=spam&p=$comment->comment_post_ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) ); 
    441306 
    442 /** 
    443  * Display recent comments dashboard widget content. 
    444  * 
    445  * @since unknown 
    446  * 
    447  * @param unknown_type $sidebar_args 
    448  */ 
    449 function wp_dashboard_recent_comments( $sidebar_args ) { 
    450         global $comment; 
    451         extract( $sidebar_args, EXTR_SKIP ); 
     307        $actions = array(); 
    452308 
    453         echo $before_widget; 
     309        if ( current_user_can('edit_post', $comment->comment_post_ID) ) { 
     310                $actions['approve'] = "<a href='$approve_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=approved vim-a' title='" . __( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>'; 
     311                $actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . __( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>'; 
     312                $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . __('Edit comment') . "'>". __('Edit') . '</a>'; 
     313                $actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . __( 'Mark this comment as spam' ) . "'>" . __( 'Spam' ) . '</a>'; 
     314                $actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID delete vim-d vim-destructive'>" . __('Delete') . '</a>'; 
     315                $actions['reply'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\');return false;" class="vim-r" title="'.__('Reply to this comment').'" href="#">' . __('Reply') . '</a>'; 
    454316 
    455         echo $before_title; 
    456         echo $widget_name; 
    457         echo $after_title; 
     317                $actions = apply_filters( 'comment_row_actions', $actions, $comment ); 
    458318 
    459         $lambda = create_function( '', 'return 5;' ); 
    460         add_filter( 'option_posts_per_rss', $lambda ); // hack - comments query doesn't accept per_page parameter 
    461         $comments_query = new WP_Query(array('feed' => 'rss2', 'withcomments' => 1)); 
    462         remove_filter( 'option_posts_per_rss', $lambda ); 
     319                $i = 0; 
     320                $actions_string = ''; 
     321                foreach ( $actions as $action => $link ) { 
     322                        ++$i; 
     323                        ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; 
    463324 
    464         $is_first = true; 
     325                        // Reply and quickedit need a hide-if-no-js span 
     326                        if ( 'reply' == $action || 'quickedit' == $action ) 
     327                                $action .= ' hide-if-no-js'; 
    465328 
    466         if ( $comments_query->have_comments() ) { 
    467                 while ( $comments_query->have_comments() ) { $comments_query->the_comment(); 
     329                        $actions_string .= "<span class='$action'>$sep$link</span>"; 
     330                } 
     331        } 
    468332 
    469                         $comment_post_url = get_permalink( $comment->comment_post_ID ); 
    470                         $comment_post_title = get_the_title( $comment->comment_post_ID ); 
    471                         $comment_post_link = "<a href='$comment_post_url'>$comment_post_title</a>"; 
    472                         $comment_link = '<a class="comment-link" href="' . get_comment_link() . '">#</a>'; 
    473                         $comment_meta = sprintf( __( 'From <strong>%1$s</strong> on %2$s %3$s' ), get_comment_author(), $comment_post_link, $comment_link ); 
    474  
    475                         if ( $is_first ) : $is_first = false; 
    476333?> 
    477                                 <blockquote><p>&#8220;<?php comment_excerpt(); ?>&#8221;</p></blockquote> 
    478                                 <p class='comment-meta'><?php echo $comment_meta; ?></p> 
    479 <?php 
    480                                 if ( $comments_query->comment_count > 1 ) : ?> 
    481                                 <ul id="dashboard-comments-list"> 
    482 <?php 
    483                                 endif; // comment_count 
    484                         else : // is_first 
    485 ?> 
    486334 
    487                                         <li class='comment-meta'><?php echo $comment_meta; ?></li> 
    488 <?php 
    489                         endif; // is_first 
    490                 } 
     335                <div id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status() ) ); ?>> 
     336                        <?php if ( !$comment->comment_type || 'comment' == $comment->comment_type ) : ?> 
    491337 
    492                 if ( $comments_query->comment_count > 1 ) : ?> 
    493                                 </ul> 
    494 <?php 
    495                 endif; // comment_count; 
     338                        <?php echo get_avatar( $comment, 32 ); ?> 
     339                        <span class="comment-meta"><?php printf( __( '%1$s in response to %2$s:' ), '<cite>' . get_comment_author() . '</cite>', $comment_post_link ); ?></span> 
    496340 
    497         } 
     341                        <?php 
     342                        else : 
     343                                switch ( $comment->comment_type ) : 
     344                                case 'pingback' : 
     345                                        $type = __( 'Pingback' ); 
     346                                        break; 
     347                                case 'trackback' : 
     348                                        $type = __( 'Trackback' ); 
     349                                        break; 
     350                                default : 
     351                                        $type = ucwords( $comment->comment_type ); 
     352                                endswitch; 
     353                                $type = wp_specialchars( $type ); 
     354                        ?> 
    498355 
    499         echo $after_widget; 
     356                        <span class="comment-meta"><?php printf( __( '%3$s on %2$s: %1$s' ), '<cite>' . get_comment_author() . '</cite>', $comment_post_link, "<strong>$type</strong>" ); ?></span> 
     357 
     358                        <?php endif; // comment_type ?> 
     359                        <blockquote><p><?php comment_excerpt(); ?></p></blockquote> 
     360                        <p class="comment-actions"><?php echo $actions_string; ?></p> 
     361                </div> 
     362<?php 
    500363} 
    501364 
     365function wp_dashboard_incoming_links() { 
     366        wp_dashboard_cached_rss_widget( 'dashboard_incoming_links', 'wp_dashboard_incoming_links_output' ); 
     367} 
     368 
    502369/** 
    503370 * Display incoming links dashboard widget content. 
    504371 * 
    505  * $sidebar_args are handled by wp_dashboard_empty(). 
    506  * 
    507372 * @since unknown 
    508373 */ 
    509374function wp_dashboard_incoming_links_output() { 
     
    565430        } 
    566431} 
    567432 
     433function wp_dashboard_incoming_links_control() { 
     434        wp_dashboard_rss_control( 'dashboard_incoming_links', array( 'title' => false, 'show_summary' => false, 'show_author' => false ) ); 
     435} 
     436 
     437function wp_dashboard_primary() { 
     438        wp_dashboard_cached_rss_widget( 'dashboard_primary', 'wp_dashboard_rss_output' ); 
     439} 
     440 
     441function wp_dashboard_primary_control() { 
     442        wp_dashboard_rss_control( 'dashboard_primary' ); 
     443} 
     444 
    568445/** 
    569446 * {@internal Missing Short Description}} 
    570447 * 
    571  * $sidebar_args are handled by wp_dashboard_empty(). 
    572  * 
    573448 * @since unknown 
    574449 * 
    575450 * @param int $widget_id 
     
    579454        wp_widget_rss_output( $widgets[$widget_id] ); 
    580455} 
    581456 
     457function wp_dashboard_secondary() { 
     458        wp_dashboard_cached_rss_widget( 'dashboard_secondary', 'wp_dashboard_secondary_output' ); 
     459} 
     460 
     461function wp_dashboard_secondary_control() { 
     462        wp_dashboard_rss_control( 'dashboard_secondary', array( 'show_summary' => false, 'show_author' => false, 'show_date' => false ) ); 
     463} 
     464 
    582465/** 
    583466 * Display secondary dashboard RSS widget feed. 
    584467 * 
    585  * $sidebar_args are handled by wp_dashboard_empty(). 
    586  * 
    587468 * @since unknown 
    588469 * 
    589470 * @return unknown 
     
    609490        echo "</ul>\n<br class='clear' />\n"; 
    610491} 
    611492 
     493function wp_dashboard_plugins() { 
     494        wp_dashboard_cached_rss_widget( 'dashboard_plugins', 'wp_dashboard_plugins_output', array( 
     495                'http://wordpress.org/extend/plugins/rss/browse/popular/', 
     496                'http://wordpress.org/extend/plugins/rss/browse/new/', 
     497                'http://wordpress.org/extend/plugins/rss/browse/updated/' 
     498        ) ); 
     499} 
     500 
    612501/** 
    613502 * Display plugins most popular, newest plugins, and recently updated widget text. 
    614503 * 
    615  * $sidebar_args are handled by wp_dashboard_empty(). 
    616  * 
    617504 * @since unknown 
    618505 */ 
    619506function wp_dashboard_plugins_output() { 
     
    713600        return true; 
    714601} 
    715602 
    716 /** 
    717  * Empty widget used for JS/AJAX created output. 
    718  * 
    719  * Callback inserts content between before_widget and after_widget. Used when 
    720  * widget is in edit mode. Can also be used for custom widgets. 
    721  * 
    722  * @since unknown 
    723  * 
    724  * @param array $sidebar_args 
    725  * @param callback $callback Optional. Only used in edit mode. 
    726  */ 
    727 function wp_dashboard_empty( $sidebar_args, $callback = false ) { 
    728         extract( $sidebar_args, EXTR_SKIP ); 
     603/* Dashboard Widgets Controls */ 
    729604 
    730         echo $before_widget; 
    731  
    732         echo $before_title; 
    733         echo $widget_name; 
    734         echo $after_title; 
    735  
    736         // When in edit mode, the callback passed to this function is the widget_control callback 
    737         if ( $callback && is_callable( $callback ) ) { 
    738                 $args = array_slice( func_get_args(), 2 ); 
    739                 array_unshift( $args, $widget_id ); 
    740                 call_user_func_array( $callback, $args ); 
    741         } 
    742  
    743         echo $after_widget; 
    744 } 
    745  
    746 /* Dashboard Widgets Controls. See also wp_dashboard_empty() */ 
    747  
    748605// Temp 
    749606function wp_dashboard_empty_control() { 
    750607        echo "This feature isn't enabled in this prototype."; 
     
    759616 * @param int $widget_control_id Registered Widget ID. 
    760617 */ 
    761618function wp_dashboard_trigger_widget_control( $widget_control_id = false ) { 
    762         global $wp_registered_widget_controls; 
    763         if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_registered_widget_controls[$widget_control_id]) && is_callable($wp_registered_widget_controls[$widget_control_id]['callback']) ) 
    764                 call_user_func_array( $wp_registered_widget_controls[$widget_control_id]['callback'], $wp_registered_widget_controls[$widget_control_id]['params'] ); 
     619        global $wp_dashboard_control_callbacks; 
     620         
     621        if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id]) ) { 
     622                call_user_func( $wp_dashboard_control_callbacks[$widget_control_id], '', array( 'id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id] ) ); 
     623        } 
    765624} 
    766625 
    767626/** 
     
    772631 * 
    773632 * @since unknown 
    774633 * 
    775  * @param array $args Expects 'widget_id' and 'form_inputs'. 
    776  * @return bool|null False if no widget_id is given. Null on success. 
     634 * @param string widget_id 
     635 * @param array form_inputs 
    777636 */ 
    778 function wp_dashboard_rss_control( $args ) { 
    779         extract( $args ); 
    780         if ( !$widget_id ) 
    781                 return false; 
    782  
     637function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) { 
    783638        if ( !$widget_options = get_option( 'dashboard_widget_options' ) ) 
    784639                $widget_options = array(); 
    785640 
  • wp-admin/includes/template.php

     
    20582058 * @param unknown_type $checkbox 
    20592059 * @param unknown_type $mode 
    20602060 */ 
    2061 function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single') { 
     2061function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', $table_row = true) { 
    20622062        global $current_user; 
    20632063 
    20642064        // allow plugin to replace the popup content 
     
    20692069                return; 
    20702070        } 
    20712071?> 
    2072 <form method="get" action=""><table style="display:none;"><tbody id="com-reply"> 
    2073         <tr id="replyrow"><td colspan="6"> 
     2072<form method="get" action=""> 
     2073<?php if ( $table_row ) : ?> 
     2074<table style="display:none;"><tbody id="com-reply"><tr id="replyrow"><td colspan="6"> 
     2075<?php else : ?> 
     2076<div id="com-reply" style="display:none;"><div id="replyrow"> 
     2077<?php endif; ?> 
    20742078        <div id="replyhead" style="display:none;"><?php _e('Reply to Comment'); ?></div> 
    20752079 
    20762080        <div id="edithead" style="display:none;"> 
     
    21142118        <input type="hidden" name="mode" id="mode" value="<?php echo $mode; ?>" /> 
    21152119        <?php wp_nonce_field( 'replyto-comment', '_ajax_nonce', false ); ?> 
    21162120        <?php wp_comment_form_unfiltered_html_nonce(); ?> 
    2117         </td></tr> 
    2118 </tbody></table></form> 
     2121<?php if ( $table_row ) : ?> 
     2122</td></tr></tbody></table></form> 
     2123<?php else : ?> 
     2124</div></div> 
     2125<?php endif; ?> 
    21192126<?php 
    21202127} 
    21212128 
     
    26432650 * @param unknown_type $page 
    26442651 * @param unknown_type $context 
    26452652 * @param unknown_type $object 
    2646  * @return unknown 
     2653 * @return int number of meta_boxes 
    26472654 */ 
    26482655function do_meta_boxes($page, $context, $object) { 
    26492656        global $wp_meta_boxes; 
  • wp-admin/post.php

     
    8686case 'post': 
    8787case 'post-quickpress-publish': 
    8888case 'post-quickpress-save': 
    89 case 'post-quickpress-save-cont': 
    9089        check_admin_referer('add-post'); 
    9190 
    9291        if ( 'post-quickpress-publish' == $action ) 
     
    104103                $post_ID = 'postajaxpost' == $action ? edit_post() : write_post(); 
    105104        } 
    106105 
    107         if ( 'post-quickpress-save-cont' != $action && 0 === strpos( $action, 'post-quickpress' ) ) { 
     106        if ( 0 === strpos( $action, 'post-quickpress' ) ) { 
    108107                $_POST['post_ID'] = $post_ID; 
    109108                // output the quickpress dashboard widget 
    110109                require_once(ABSPATH . 'wp-admin/includes/dashboard.php'); 
    111                 add_filter( 'wp_dashboard_widgets', create_function( '$a', 'return array( "dashboard_quick_press" );' ) ); 
    112                 wp_dashboard_setup(); 
    113                 wp_dashboard(); 
     110                wp_dashboard_quick_press(); 
    114111                exit; 
    115112        } 
    116113 
  • wp-admin/js/dashboard.js

     
     1jQuery( function($) { 
     2 
     3// close postboxes that should be closed 
     4jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed'); 
     5 
     6// These widgets are sometimes populated via ajax 
     7var ajaxWidgets = [ 
     8        'dashboard_incoming_links', 
     9        'dashboard_primary', 
     10        'dashboard_secondary', 
     11        'dashboard_plugins' 
     12]; 
     13 
     14var ajaxPopulateWidgets = function() { 
     15        $.each( ajaxWidgets, function() { 
     16                var e = jQuery('#' + this + ':visible div.inside').find('.widget-loading'); 
     17                if ( e.size() ) { e.parent().load('index-extra.php?jax=' + this); } 
     18        } ); 
     19}; 
     20ajaxPopulateWidgets(); 
     21 
     22postboxes.add_postbox_toggles('dashboard', { onShow: ajaxPopulateWidgets } ); 
     23 
     24/* QuickPress */ 
     25var quickPressLoad = function() { 
     26        var act = $('#quickpost-action'); 
     27        var t = $('#quick-press').submit( function() { 
     28                $('#dashboard_quick_press h3').append( '<img src="images/loading.gif" style="margin: 0 6px 0 0; vertical-align: middle" />' ); 
     29 
     30                if ( 'post' == act.val() ) { 
     31                        act.val( 'post-quickpress-publish' ); 
     32                } 
     33 
     34                $('#dashboard_quick_press div.inside').load( t.attr( 'action' ), t.serializeArray(), function() { 
     35                        $('#dashboard_quick_press h3 img').remove(); 
     36                        $('#dashboard_quick_press ul').find('li').each( function() { 
     37                                $('#dashboard_recent_drafts ul').prepend( this ); 
     38                        } ).end().remove(); 
     39                        quickPressLoad(); 
     40                } ); 
     41                return false; 
     42        } ); 
     43 
     44        $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } ); 
     45}; 
     46quickPressLoad(); 
     47 
     48} ); 
  • wp-admin/js/postbox.js

     
    1  
    21(function($) { 
    32        postboxes = { 
    4                 add_postbox_toggles : function(page) { 
     3                add_postbox_toggles : function(page,args) { 
    54                        $('.postbox h3').before('<a class="togbox">+</a> '); 
    65                        $('.postbox h3, .postbox a.togbox').click( function() { 
    76                                $($(this).parent().get(0)).toggleClass('closed'); 
    87                                postboxes.save_state(page); 
    98                        }); 
     9                        $('.postbox h3 a').click( function(e) { 
     10                                e.stopPropagation(); 
     11                        } ); 
    1012 
    1113                        $('.hide-postbox-tog').click( function() { 
    1214                                var box = jQuery(this).val(); 
    13                                 var show = jQuery(this).attr('checked'); 
    14                                 if ( show ) { 
     15                                if ( jQuery(this).attr('checked') ) { 
    1516                                        jQuery('#' + box).show(); 
     17                                        if ( $.isFunction( postboxes.onShow ) ) { 
     18                                                postboxes.onShow( box ); 
     19                                        } 
    1620                                } else { 
    1721                                        jQuery('#' + box).hide(); 
    1822                                } 
     
    2630                        } 
    2731                        $('#wpbody-content').css( 'overflow', 'hidden' ); 
    2832                         
    29                         this.init(page); 
     33                        this.init(page,args); 
    3034                }, 
    3135 
    3236                expandSidebar : function( doIt ) { 
     
    3943                        } 
    4044                }, 
    4145 
    42                 init : function(page) { 
     46                init : function(page,args) { 
     47                        $.extend( this, args || {} ); 
    4348                        jQuery('.meta-box-sortables').sortable( { 
    4449                                connectWith: [ '.meta-box-sortables' ], 
    4550                                items: '> .postbox', 
     
    8388                                closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(), 
    8489                                page: page 
    8590                        }); 
    86                 } 
     91                }, 
     92 
     93                /* Callbacks */ 
     94                onShow : false 
    8795        }; 
    8896 
    8997        $(document).ready(function(){postboxes.expandSidebar();}); 
  • wp-admin/edit-page-form.php

     
    347347 
    348348--> 
    349349 
    350 <div id="poststuff"> 
     350<div id="poststuff" class="metabox-holder"> 
    351351 
    352352<div id="side-info-column" class="inner-sidebar"> 
    353353 
  • wp-admin/index.php

     
    1414 
    1515wp_dashboard_setup(); 
    1616 
    17 /** 
    18  * Display dashboard widget custom JavaScript. 
    19  * 
    20  * @since unknown 
    21  */ 
    22 function index_js() { 
    23 ?> 
    24 <script type="text/javascript"> 
    25 jQuery(function($) { 
    26         var ajaxWidgets = { 
    27                 dashboard_incoming_links: 'incominglinks', 
    28                 dashboard_primary: 'devnews', 
    29                 dashboard_secondary: 'planetnews', 
    30                 dashboard_plugins: 'plugins' 
    31         }; 
    32         $.each( ajaxWidgets, function(i,a) { 
    33                 var e = jQuery('#' + i + ' div.dashboard-widget-content').not('.dashboard-widget-control').find('.widget-loading'); 
    34                 if ( e.size() ) { e.parent().load('index-extra.php?jax=' + a); } 
    35         } ); 
    36 }); 
    37 </script> 
    38 <?php 
    39 } 
    40 add_action( 'admin_head', 'index_js' ); 
    41  
    42 wp_enqueue_script( 'jquery' ); 
     17wp_enqueue_script( 'dashboard' ); 
    4318wp_enqueue_script( 'plugin-install' ); 
    4419wp_admin_css( 'dashboard' ); 
    4520wp_admin_css( 'plugin-install' ); 
     
    5227$today = current_time('mysql', 1); 
    5328?> 
    5429 
     30<div id="edit-settings-wrap" class="hidden"> 
     31<h5><?php _e('Show on screen') ?></h5> 
     32<form id="adv-settings" action="" method="get"> 
     33<div class="metabox-prefs"> 
     34<?php meta_box_prefs('dashboard') ?> 
     35<br class="clear" /> 
     36</div></form> 
     37</div> 
     38 
    5539<div class="wrap"> 
    5640<div id="dashboard-widgets-wrap"> 
    5741 
  • wp-admin/edit-link-form.php

     
    309309wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); 
    310310wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?> 
    311311 
    312 <div id="poststuff"> 
     312<div id="poststuff" class="metabox-holder"> 
    313313 
    314314<div id="side-info-column" class="inner-sidebar"> 
    315315<?php  
  • wp-admin/edit-form-comment.php

     
    1919<?php wp_nonce_field('update-comment_' . $comment->comment_ID) ?> 
    2020<div class="wrap"> 
    2121 
    22 <div id="poststuff"> 
     22<div id="poststuff" class="metabox-holder"> 
    2323<input type="hidden" name="user_ID" value="<?php echo (int) $user_ID ?>" /> 
    2424<input type="hidden" name="action" value='<?php echo $form_action . $form_extra ?>' /> 
    2525<?php 
  • wp-admin/edit-form-advanced.php

     
    445445 
    446446<?php echo $form_extra ?> 
    447447 
    448 <div id="poststuff"> 
     448<div id="poststuff" class="metabox-holder"> 
    449449 
    450450<div id="side-info" style="display: none;"><?php // TODO ?> 
    451451 
  • wp-admin/admin-header.php

     
    8080        $breadcrumb = '<a href="index.php">' . __('Dashboard') . '</a> &rsaquo; ' . $title; 
    8181} 
    8282 
    83 $settings_pages = array( 'categories.php', 'edit.php', 'edit-comments.php', 'edit-form-advanced.php', 'edit-link-categories.php', 'edit-link-form.php', 'edit-page-form.php', 'edit-tags.php', 'link-manager.php', 'upload.php', 'users.php', 'edit-pages.php', 'post-new.php', 'post.php', 'page-new.php', 'page.php' ); 
     83$settings_pages = array( 'categories.php', 'edit.php', 'edit-comments.php', 'edit-form-advanced.php', 'edit-link-categories.php', 'edit-link-form.php', 'edit-page-form.php', 'edit-tags.php', 'link-manager.php', 'upload.php', 'users.php', 'edit-pages.php', 'post-new.php', 'post.php', 'page-new.php', 'page.php', 'index.php' ); 
    8484?> 
    8585 
    8686<img id="logo50" src="images/logo50.png" alt="" /> <h1><?php if ( '' == get_bloginfo('name', 'display') ) echo '&nbsp;'; else echo get_bloginfo('name', 'display'); ?> <a href="<?php echo trailingslashit( get_bloginfo('url') ); ?>" title="View site" id="view-site-link"><img src="<?php echo trailingslashit( bloginfo('wpurl') ) . 'wp-admin/images/new-window-icon.gif'; ?>" alt="" /></a> 
  • wp-admin/index-extra.php

     
    1919 
    2020switch ( $_GET['jax'] ) { 
    2121 
    22 case 'incominglinks' : 
     22case 'dashboard_incoming_links' : 
    2323        wp_dashboard_incoming_links_output(); 
    2424        break; 
    2525 
    26 case 'devnews' : 
     26case 'dashboard_primary' : 
    2727        wp_dashboard_rss_output( 'dashboard_primary' ); 
    2828        break; 
    2929 
    30 case 'planetnews' : 
     30case 'dashboard_secondary' : 
    3131        wp_dashboard_secondary_output(); 
    3232        break; 
    3333 
    34 case 'plugins' : 
     34case 'dashboard_plugins' : 
    3535        wp_dashboard_plugins_output(); 
    3636        break; 
    3737 
  • wp-admin/press-this.php

     
    420420        <?php wp_nonce_field('press-this') ?> 
    421421        <input type="hidden" name="post_type" id="post_type" value="text"/> 
    422422         
    423         <div id="poststuff">     
     423        <div id="poststuff" class="metabox-holder"> 
    424424        <div id="side-info-column"> 
    425425                <div class="sleeve"> 
    426426                        <h1 id="viewsite"><a class="button" href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?> &rsaquo; <?php _e('Press This') ?></a></span></h1> 
  • wp-admin/css/ie-rtl.css

     
    1 #poststuff .postbox h3 { 
     1.metabox-holder .postbox h3, #poststuff .postbox h3 { 
    22        padding-left:0; 
    33        padding-right: 23px; 
    44} 
     
    2020#tagchecklist span a { 
    2121        margin: 4px -9px 0 0; 
    2222} 
    23 #poststuff .togbox { 
     23.metabox-holder .togbox, #poststuff .togbox { 
    2424        margin-left:0; 
    2525        margin-right: -19px; 
    2626} 
  • wp-admin/css/ie.css

     
    11/* Fixes for IE bugs */ 
    22 
    3 #poststuff .postbox h3 { 
     3.metabox-holder .postbox h3, #poststuff .postbox h3 { 
    44        padding-left: 23px; 
    55} 
    66 
     
    3131        position: relative; 
    3232} 
    3333 
    34 #wpwrap, #wpcontent, #post, #wrap, #postdivrich, #postdiv, #poststuff, #titlediv, #post-body, #editorcontainer, .tablenav, .widget-control-list, li.widget-list-control-item, #dragHelper, li.widget-list-control-item h4, .widget-sortable, .widget-control-actions { 
     34#wpwrap, #wpcontent, #post, #wrap, #postdivrich, #postdiv, #poststuff, .metabox-holder, #titlediv, #post-body, #editorcontainer, .tablenav, .widget-control-list, li.widget-list-control-item, #dragHelper, li.widget-list-control-item h4, .widget-sortable, .widget-control-actions { 
    3535        display: block; 
    3636        zoom: 100%; 
    3737} 
     
    8888        margin: 4px 0 0 -9px; 
    8989} 
    9090 
    91 #poststuff .togbox { 
     91.metabox-holder .togbox, #poststuff .togbox { 
    9292        margin-left: -19px; 
    9393} 
    9494 
  • wp-admin/css/colors-fresh-rtl.css

     
    1515        border-right-color: transparent; 
    1616        border-left-color: #ccc; 
    1717} 
    18 #poststuff .closed .togbox, #poststuff .togbox { 
     18.metabox-holder .closed .togbox, .metabox-holder .togbox, #poststuff .closed .togbox, #poststuff .togbox { 
    1919        background-image: url(../images/toggle-arrow-rtl.gif); 
    2020} 
    2121#upload-menu li.current { 
  • wp-admin/css/colors-fresh.css

     
    6262} 
    6363 
    6464li.widget-list-control-item, div.nav, .tablenav, #dashboard-widgets p.dashboard-widget-links, 
    65 .form-table tr, #poststuff h3, #replyhandle, 
     65.form-table tr, #poststuff h3, .metabox-holder h3, #replyhandle, 
    6666.login form, h3.info-box-title, #post-status-info, #edit-settings-wrap, 
    6767#wpbody-content .describe tr, #edithead, #replyhead  { 
    6868        background-color: #eaf3fa; 
     
    482482        color: #333; 
    483483} 
    484484 
    485 #poststuff .closed .togbox { 
     485.metabox-holder .closed .togbox, #poststuff .closed .togbox { 
    486486        background-color: #2583ad; 
    487487        background-image: url(../images/toggle-arrow.gif); 
    488488} 
    489489 
    490 #poststuff .postbox, #titlediv, #poststuff .postarea, #poststuff .stuffbox { 
     490.metabox-holder .postbox, #poststuff .postbox, #titlediv, #poststuff .postarea, #poststuff .stuffbox { 
    491491        border-color: #ebebeb; 
    492492        border-right-color: #ccc; 
    493493        border-bottom-color: #ccc; 
    494494} 
    495495 
    496 #poststuff .togbox { 
     496.metabox-holder .togbox, #poststuff .togbox { 
    497497        background-color: #b2b2b2; 
    498498        background-image: url(../images/toggle-arrow.gif); 
    499499} 
    500500 
    501 #poststuff .postbox { 
     501.metabox-holder .postbox, #poststuff .postbox { 
    502502        background-color: #FFF; 
    503503} 
    504504 
  • wp-admin/css/colors-classic-rtl.css

     
    77#footer { 
    88        background-position:99% 10px; 
    99} 
    10 #poststuff .closed .togbox, #poststuff .togbox { 
     10.metabox-holder .closed .togbox, .metabox-holder .togbox, #poststuff .closed .togbox, #poststuff .togbox { 
    1111        background-image: url(../images/toggle-arrow-rtl.gif) !important; 
    1212} 
    1313.bar { 
  • wp-admin/css/colors-classic.css

     
    6262} 
    6363 
    6464li.widget-list-control-item, div.nav, .tablenav, #dashboard-widgets p.dashboard-widget-links, 
    65 .form-table tr, #poststuff h3, #replyhandle, 
     65.form-table tr, #poststuff h3, .metabox-holder h3, #replyhandle, 
    6666.login form, h3.info-box-title, #post-status-info, #edit-settings-wrap, 
    6767#wpbody-content .describe tr, #edithead, #replyhead { 
    6868        background-color: #cfebf7; 
     
    498498        color: #333; 
    499499} 
    500500 
    501 #poststuff .closed .togbox { 
     501.metabox-holder .closed .togbox, #poststuff .closed .togbox { 
    502502        background-color: #2583ad; 
    503503        background-image: url(../images/toggle-arrow.gif); 
    504504} 
    505505 
    506 #poststuff .postbox, #titlediv, #poststuff .postarea, #poststuff .stuffbox { 
     506.metabox-holder .postbox, #poststuff .postbox, #titlediv, #poststuff .postarea, #poststuff .stuffbox { 
    507507        border-color: #ebebeb; 
    508508        border-right-color: #ccc; 
    509509        border-bottom-color: #ccc; 
    510510} 
    511511 
    512 #poststuff .togbox { 
     512.metabox-holder .togbox, #poststuff .togbox { 
    513513        background-color: #b2b2b2; 
    514514        background-image: url(../images/toggle-arrow.gif); 
    515515} 
    516516 
    517 #poststuff .postbox { 
     517.metabox-holder .postbox, #poststuff .postbox { 
    518518        background-color: #FFF; 
    519519} 
    520520 
  • wp-admin/css/dashboard-rtl.css

     
    1 /* Right Now */ 
    2 #rightnow { 
    3         margin-right:0; 
    4         margin-left: 7px; 
    5 } 
    6 #rightnow .reallynow span { 
    7         text-align: right; 
    8         float: right; 
    9 } 
    10 #rightnow .reallynow a { 
    11         text-align: left; 
    12         float: left; 
    13         margin: 1px 0 0 6px; 
    14 } 
    15 /* Widgets */ 
    16 div#dashboard-widgets-wrap { 
    17         margin-right:0; 
    18         margin-left:-13px; 
    19 } 
    20 div.dashboard-widget-holder { 
    21         float:right; 
    22 } 
    23 div.dashboard-widget { 
    24         margin-right:0; 
    25         margin-left: 20px; 
    26 } 
    27 h3.dashboard-widget-title span { 
    28         text-align: right; 
    29         float: right; 
    30 } 
    31 h3.dashboard-widget-title small { 
    32         text-align: left; 
    33         float:left; 
    34 } 
    35 div.dashboard-widget-submit input  { 
    36         font-family: Tahoma; 
    37 } 
    38 div.dashboard-widget-content ul, div.dashboard-widget-content ol, div.dashboard-widget-content dl { 
    39         padding-left:0; 
    40         padding-right:15px; 
    41 } 
    42 #dashboard_secondary div.dashboard-widget-content ul li { 
    43         float:right; 
    44 } 
    45 #dashboard_secondary div.dashboard-widget-content ul li .post { 
    46         font-family:arial; 
    47 } 
    48 #dashboard_secondary div.dashboard-widget-content ul li a { 
    49         border-right:0 none; 
    50         border-left: 1px solid #dadada; 
    51         height:110px; 
    52 } 
    53 #dashboard_secondary div.dashboard-widget-content ul li a cite { 
    54         font-family: Tahoma; 
    55 } 
    56 #dashboard-widgets .widget_rss ul li span.rss-date { 
    57         float:right; 
    58 } 
    59 #dashboard-widgets .widget_rss ul li a { 
    60         float: right; 
    61         margin: 0 0 .2em .5em; 
    62 } 
     1/* TODO */ 
  • wp-admin/css/dashboard.css

     
    2929        width: 99%; 
    3030} 
    3131 
    32  
    33 /* Widgets */ 
    34  
    35 div#dashboard-widgets-wrap { 
    36         margin-right: -13px; /* 20 (div.dashboard-widget margin-right) - 7 (#rightnow margin-right) */ 
     32form p.field-tip { 
     33        font-size: .9em; 
     34        font-style: italic; 
     35        margin: 0; 
     36        padding: 0; 
    3737} 
    3838 
    39 div#dashboard-widgets { 
    40         width: 100%; 
     39#dashboard-widgets .postbox form .submit { 
     40        float: none; 
     41        margin: .5em 0 0; 
     42        padding: 0; 
     43        border: none; 
    4144} 
    4245 
    43 div.dashboard-widget-holder { 
    44         margin-bottom: 20px; 
    45         width: 50%; 
    46         float: left; 
     46#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input { 
     47        margin: 0; 
    4748} 
    4849 
    49 div.dashboard-widget-holder.third { 
    50         width: 33.3%; 
     50#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish { 
     51        min-width: 0; 
    5152} 
    5253 
    53 div.dashboard-widget-holder.fourth { 
    54         width: 25%; 
    55 } 
    56  
    57 div.dashboard-widget-holder.full { 
    58         width: 100%; 
    59 } 
    60  
    61 div.dashboard-widget-holder.double div.dashboard-widget { 
    62         height: 54em; 
    63         padding-bottom: 28px /* lame */ 
    64 } 
    65  
    66 div.dashboard-widget { 
     54div.postbox div.inside { 
     55        margin: 0 10px 10px; 
    6756        position: relative; 
    68         margin-right: 20px; 
    69         border-width: 1px; 
    70         border-style: solid; 
    71         height: 27em; 
    72         overflow: auto; 
    73         font-size: 11px; 
    7457} 
    7558 
    76 #dashboard-widgets p.dashboard-widget-links { 
    77         padding: 2px; 
    78         font-size: 11px; 
    79         line-height: 2; 
    80         border-width: 1px; 
    81         margin: 0 20px 0 0; 
    82         padding: 0 7px; 
    83         border: 1px solid; 
    84         border-top: none; 
    85 } 
    86  
    87 h3.dashboard-widget-title  { 
    88         margin: 2px; 
    89         padding: 0 7px; 
    90         font-size: 14px; 
    91         line-height: 2; 
    92 } 
    93  
    94 h3.dashboard-widget-title span { 
    95         display: block; 
    96         text-align: left; 
    97         float: left; 
    98 } 
    99  
    100 h3.dashboard-widget-title small { 
    101         display: block; 
    102         text-align: right; 
    103         float: right; 
    104         font-size: 75%; 
    105         line-height: 2.67; /* math: it works, bitches */ 
    106 } 
    107  
    108 p.dashboard-widget-links img.rss-icon { 
    109         vertical-align: middle; 
    110 } 
    111  
    112 div.dashboard-widget-notice { 
    113         padding: 0 14px; 
    114         font-size: 1.2em; 
    115         line-height: 2; 
    116 } 
    117  
    118 div.dashboard-widget-error { 
    119         padding: 0 20px; 
    120         font-size: 1.2em; 
    121         line-height: 2; 
    122 } 
    123  
    124 div.dashboard-widget-content { 
    125         padding: 10px 15px; 
    126 } 
    127  
    128 div.dashboard-widget-submit { 
    129         border-top: 1px solid #ccc; 
    130         padding: 1em 0 0 0; 
    131         margin: 10px 0 0 0; 
    132 } 
    133 div.dashboard-widget-submit input { 
    134         font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; 
    135         padding: 4px 6px; 
    136         border: none; 
    137         font-size: 13px; 
    138         -moz-border-radius: 3px; 
    139         -khtml-border-radius: 3px; 
    140         -webkit-border-radius: 3px; 
    141         border-radius: 3px; 
    142         cursor: pointer; 
    143         text-decoration: none; 
    144 } 
    145  
    146 div.dashboard-widget-content ul, div.dashboard-widget-content ol, div.dashboard-widget-content dl { 
     59.view-all { 
     60        position: absolute; 
     61        top: 0; 
     62        right: 0; 
     63        padding: 0; 
    14764        margin: 0; 
    148         text-indent: 0; 
    149         padding-left: 15px; 
    15065} 
    151 div.dashboard-widget-content li { 
    152         margin: .5em 0 1em; 
    153 } 
    15466 
    155 div.dashboard-widget-content blockquote { 
    156         margin: -1em 0; 
     67#dashboard-widgets h4 { 
     68        font-size: 1em; 
     69        margin: 0 0 .2em; 
     70        padding: 0; 
    15771} 
    15872 
    159 div#dashboard_recent_comments p { 
    160         font-size: 14px; 
    161 } 
     73/* Recent Comments */ 
    16274 
    163 div.dashboard-widget-content p.comment-meta { 
    164         font-size: 11px !important; 
     75#the-comment-list { 
     76        position: relative; 
    16577} 
    16678 
    167 #dashboard_secondary div.dashboard-widget { 
    168         height: auto; 
     79#the-comment-list .comment-item { 
     80        padding: 5px 5px 5px 47px; 
    16981} 
    17082 
    171 #dashboard_secondary div.dashboard-widget-content ul { 
    172         list-style: none; 
    173         padding: 0; 
     83#the-comment-list .comment-item .avatar { 
     84        position: absolute; 
     85        left: 5px; 
    17486} 
    17587 
    176 #dashboard_secondary div.dashboard-widget-content ul li { 
    177         display: block; 
    178         width: 19.95%; 
    179         padding-bottom: 10px; 
     88#the-comment-list .comment-item blockquote, #the-comment-list .comment-item blockquote p { 
    18089        margin: 0; 
    181         float: left; 
    182         font-size: 95%; 
    183 } 
    184  
    185 #dashboard_secondary div.dashboard-widget-content { 
    186         margin: 10px 5px; 
    18790        padding: 0; 
     91        display: inline; 
    18892} 
    18993 
    190 #dashboard_secondary div.dashboard-widget-content ul li .post { 
    191         display:block; 
    192         font-family:Georgia,"Times New Roman",Times,serif; 
    193         font-size:18px; 
    194         line-height: 1.2em; 
    195         height:90px; 
    196         overflow:hidden; 
    197 } 
    198  
    199 #dashboard_secondary div.dashboard-widget-content ul li a { 
     94#dashboard_recent_comments #the-comment-list .trackback blockquote, #dashboard_recent_comments #the-comment-list .pingback blockquote { 
    20095        display: block; 
    201         height:100%; 
    202         overflow:hidden; 
    203         margin: 5px 10px; 
    204         text-decoration: none; 
    205         padding: .5em; 
    206         border-right: 1px solid #dadada; 
    207         border-bottom: 1px solid #dadada; 
    20896} 
    20997 
    210 #dashboard_secondary div.dashboard-widget-content ul li a cite { 
    211         display: block; 
    212         font-family: "Lucida Sans", "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; 
    213 } 
    214  
    215 #dashboard-widgets .widget_rss ul { 
    216         list-style: none; 
     98#the-comment-list .comment-item p.comment-actions { 
     99        margin: 0; 
    217100        padding: 0; 
    218101} 
    219102 
    220 #dashboard-widgets .widget_rss ul li { 
    221         clear: both; 
    222 } 
     103/* Primary Feed */ 
    223104 
    224 #dashboard-widgets .widget_rss ul li span.rss-date { 
    225         float: left; 
    226         margin: 0; 
    227 } 
    228  
    229 #dashboard-widgets .widget_rss ul li a { 
    230         float: left; 
    231         margin: 0 .5em .2em 0; 
    232         font-weight: bold; 
    233 } 
    234  
    235 #dashboard-widgets .widget_rss ul li div { 
    236         clear: both; 
    237         line-height: 1.5em; 
    238 } 
    239  
    240105#dashboard_primary a.rsswidget, #dashboard_plugins h5 { 
    241106        font-size: 14px; 
    242107} 
     
    245110        font-size: 14px; 
    246111} 
    247112 
    248 #dashboard_plugins h4 { 
    249         font-size: 1em; 
    250         margin: 0 0 .1em; 
    251 } 
     113/* Plugins */ 
    252114 
    253115#dashboard_plugins h5 { 
    254116        margin: 0; 
     
    260122        margin: 0 0 1em; 
    261123        line-height: 1.5em; 
    262124} 
    263  
    264 #dashboard_inbox div.dashboard-widget, #dashboard_quick_press div.dashboard-widget { 
    265         height: 35em; 
    266         padding-bottom: 0; 
    267 } 
    268  
    269 #dashboard_quick_press div.dashboard-widget-content { 
    270         padding-bottom: 0; 
    271 } 
    272  
    273 #dashboard_inbox p.actions { 
    274         margin-bottom:0pt; 
    275         margin-top: 0; 
    276         float:left; 
    277 } 
    278  
    279 #dashboard_quick_press h3 { 
    280         margin-bottom: 3px; 
    281 } 
    282  
    283 #dashboard_quick_press h3#quick-post-title { 
    284         margin-top: 0; 
    285 } 
    286  
    287 #dashboard_quick_press p.field-tip { 
    288         margin-top: 0; 
    289         font-style: italic; 
    290 } 
    291  
    292 #dashboard_quick_press .submit { 
    293         padding: 0 0 1em 0; 
    294         border-top: none; 
    295         border-bottom: 1px solid #ccc; 
    296 } 
    297  
    298 #dashboard_quick_press p#recent-drafts { 
    299         margin: 0; 
    300 }