Make WordPress Core

Changeset 15746


Ignore:
Timestamp:
10/07/2010 07:34:18 PM (16 years ago)
Author:
ryan
Message:

First pass of user admin. Network admin and screen cleanups. see #14696

Location:
trunk
Files:
7 added
36 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin.php

    r15600 r15746  
    1212 * @since unknown
    1313 */
    14 if ( !defined('WP_ADMIN') )
     14if ( ! defined('WP_ADMIN') )
    1515        define('WP_ADMIN', TRUE);
    1616
    17 if ( !defined('WP_NETWORK_ADMIN') ) {
     17if ( ! defined('WP_NETWORK_ADMIN') )
    1818        define('WP_NETWORK_ADMIN', FALSE);
     19
     20if ( ! defined('WP_USER_ADMIN') )
     21        define('WP_USER_ADMIN', FALSE);
     22
     23if ( ! WP_NETWORK_ADMIN && ! WP_USER_ADMIN ) {
    1924        define('WP_BLOG_ADMIN', TRUE);
    2025}
     
    98103if ( WP_NETWORK_ADMIN )
    99104        require(ABSPATH . 'wp-admin/network/menu.php');
     105elseif ( WP_USER_ADMIN )
     106        require(ABSPATH . 'wp-admin/user/menu.php');
    100107else
    101108        require(ABSPATH . 'wp-admin/menu.php');
  • trunk/wp-admin/edit-comments.php

    r15666 r15746  
    106106        $title = __('Comments');
    107107
     108add_screen_option( 'per_page', array('label' => _x( 'Comments', 'comments per page (screen options)' )) );
     109
    108110add_contextual_help( $current_screen, '<p>' . __('You can manage comments made on your site similar to the way you manage Posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions.') . '</p>' .
    109111        '<p>' . __('A yellow row means the comment is waiting for you to moderate it.') . '</p>' .
  • trunk/wp-admin/edit-form-advanced.php

    r15542 r15746  
    164164do_action('do_meta_boxes', $post_type, 'side', $post);
    165165
     166add_screen_option('layout_columns', array('max' => 2) );
     167
    166168if ( 'post' == $post_type ) {
    167169        add_contextual_help($current_screen,
  • trunk/wp-admin/edit-link-form.php

    r15135 r15746  
    3737do_action('do_meta_boxes', 'link', 'advanced', $link);
    3838do_action('do_meta_boxes', 'link', 'side', $link);
     39
     40add_screen_option('layout_columns', array('max' => 2) );
    3941
    4042add_contextual_help($current_screen,
  • trunk/wp-admin/edit-tags.php

    r15642 r15746  
    2222        $submenu_file = "edit-tags.php?taxonomy=$taxonomy";
    2323}
     24
     25add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') );
    2426
    2527switch ( $wp_list_table->current_action() ) {
  • trunk/wp-admin/edit.php

    r15667 r15746  
    164164}
    165165
     166add_screen_option( 'per_page', array('label' => $title, 'default' => 20) );
     167
    166168require_once('./admin-header.php');
    167169?>
  • trunk/wp-admin/includes/dashboard.php

    r15718 r15746  
    1717        global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    1818        $wp_dashboard_control_callbacks = array();
     19        $screen = get_current_screen();
    1920
    2021        $update = false;
     
    2627
    2728        // Right Now
    28         wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );
     29        if ( is_blog_admin() && current_user_can('edit_posts') )
     30                wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );
    2931
    3032        // Recent Comments Widget
    31         if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) {
    32                 $update = true;
    33                 $widget_options['dashboard_recent_comments'] = array(
    34                         'items' => 5,
    35                 );
    36         }
    37         $recent_comments_title = __( 'Recent Comments' );
    38         wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' );
     33        if ( is_blog_admin() && current_user_can('moderate_comments') ) {
     34                if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) {
     35                        $update = true;
     36                        $widget_options['dashboard_recent_comments'] = array(
     37                                'items' => 5,
     38                        );
     39                }
     40                $recent_comments_title = __( 'Recent Comments' );
     41                wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' );
     42        }
    3943
    4044        // Incoming Links Widget
    41         if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {
    42                 $update = true;
    43                 $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;
    44                 $widget_options['dashboard_incoming_links'] = array(
    45                         'home' => get_option('home'),
    46                         'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
    47                         'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
    48                         'items' => $num_items,
    49                         'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false
    50                 );
    51         }
    52         wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );
     45        if ( is_blog_admin() && current_user_can('publish_posts') ) {
     46                if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {
     47                        $update = true;
     48                        $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;
     49                        $widget_options['dashboard_incoming_links'] = array(
     50                                'home' => get_option('home'),
     51                                'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
     52                                'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
     53                                'items' => $num_items,
     54                                'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false
     55                        );
     56                }
     57                wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );
     58        }
    5359
    5460        // WP Plugins Widget
    55         if ( current_user_can( 'install_plugins' ) )
     61        if ( is_blog_admin() && current_user_can( 'install_plugins' ) )
    5662                wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' );
    5763
    5864        // QuickPress Widget
    59         if ( current_user_can('edit_posts') )
     65        if ( is_blog_admin() && current_user_can('edit_posts') )
    6066                wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' );
    6167
    6268        // Recent Drafts
    63         if ( current_user_can('edit_posts') )
     69        if ( is_blog_admin() && current_user_can('edit_posts') )
    6470                wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' );
    6571
     
    116122                update_option( 'dashboard_widget_options', $widget_options );
    117123
    118         do_action('do_meta_boxes', 'dashboard', 'normal', '');
    119         do_action('do_meta_boxes', 'dashboard', 'side', '');
     124        do_action('do_meta_boxes', $screen->id, 'normal', '');
     125        do_action('do_meta_boxes', $screen->id, 'side', '');
    120126}
    121127
    122128function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) {
     129        $screen = get_current_screen();
    123130        global $wp_dashboard_control_callbacks;
    124131        if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) {
     
    127134                        list($url) = explode( '#', add_query_arg( 'edit', false ), 2 );
    128135                        $widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( $url ) . '">' . __( 'Cancel' ) . '</a></span>';
    129                         add_meta_box( $widget_id, $widget_name, '_wp_dashboard_control_callback', 'dashboard', 'normal', 'core' );
     136                        add_meta_box( $widget_id, $widget_name, '_wp_dashboard_control_callback', $screen->id, 'normal', 'core' );
    130137                        return;
    131138                }
     
    133140                $widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( "$url#$widget_id" ) . '" class="edit-box open-box">' . __( 'Configure' ) . '</a></span>';
    134141        }
    135         $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary');
     142        if ( is_user_admin() )
     143                $side_widgets = array();
     144        else
     145                $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary');
    136146        $location = 'normal';
    137147        if ( in_array($widget_id, $side_widgets) )
    138148                $location = 'side';
    139         add_meta_box( $widget_id, $widget_name , $callback, 'dashboard', $location, 'core' );
     149        add_meta_box( $widget_id, $widget_name , $callback, $screen->id, $location, 'core' );
    140150}
    141151
     
    155165function wp_dashboard() {
    156166        global $screen_layout_columns;
     167
     168        $screen = get_current_screen();
    157169
    158170        $hide2 = $hide3 = $hide4 = '';
     
    177189<?php
    178190        echo "\t<div class='postbox-container' style='$width'>\n";
    179         do_meta_boxes( 'dashboard', 'normal', '' );
     191        do_meta_boxes( $screen->id, 'normal', '' );
    180192
    181193        echo "\t</div><div class='postbox-container' style='{$hide2}$width'>\n";
    182         do_meta_boxes( 'dashboard', 'side', '' );
     194        do_meta_boxes( $screen->id, 'side', '' );
    183195
    184196        echo "\t</div><div class='postbox-container' style='{$hide3}$width'>\n";
    185         do_meta_boxes( 'dashboard', 'column3', '' );
     197        do_meta_boxes( $screen->id, 'column3', '' );
    186198
    187199        echo "\t</div><div class='postbox-container' style='{$hide4}$width'>\n";
    188         do_meta_boxes( 'dashboard', 'column4', '' );
     200        do_meta_boxes( $screen->id, 'column4', '' );
    189201?>
    190202</div></div>
  • trunk/wp-admin/includes/default-list-tables.php

    r15742 r15746  
    27202720        function WP_Sites_Table() {
    27212721                parent::WP_List_Table( array(
    2722                         'screen' => 'ms-sites',
     2722                        'screen' => 'sites-network',
    27232723                        'plural' => 'sites',
    27242724                ) );
     
    27352735                $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode'];
    27362736
    2737                 $per_page = $this->get_items_per_page( 'ms_sites_per_page' );
     2737                $per_page = $this->get_items_per_page( 'sites_network_per_page' );
    27382738
    27392739                $pagenum = $this->get_pagenum();
     
    30083008        function WP_MS_Users_Table() {
    30093009                parent::WP_List_Table( array(
    3010                         'screen' => 'ms-users',
     3010                        'screen' => 'users-network',
    30113011                ) );
    30123012        }
     
    30253025                $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
    30263026
    3027                 $users_per_page = $this->get_items_per_page( 'ms_users_per_page' );
     3027                $users_per_page = $this->get_items_per_page( 'users_network_per_page' );
    30283028
    30293029                $paged = $this->get_pagenum();
  • trunk/wp-admin/includes/menu.php

    r15718 r15746  
    1010if ( is_network_admin() )
    1111        do_action('_network_admin_menu');
     12elseif ( is_user_admin() )
     13        do_action('_user_admin_menu');
    1214else
    1315        do_action('_admin_menu');
     
    9092if ( is_network_admin() )
    9193        do_action('network_admin_menu', '');
     94elseif ( is_user_admin() )
     95        do_action('user_admin_menu', '');
    9296else
    9397        do_action('admin_menu', '');
  • trunk/wp-admin/includes/misc.php

    r15491 r15746  
    344344                switch ( $map_option ) {
    345345                        case 'edit_per_page':
    346                         case 'ms_sites_per_page':
     346                        case 'sites_network_per_page':
    347347                        case 'users_per_page':
    348                         case 'ms_users_per_page':
     348                        case 'users_network_per_page':
    349349                        case 'edit_comments_per_page':
    350350                        case 'upload_per_page':
  • trunk/wp-admin/includes/ms.php

    r15718 r15746  
    503503
    504504        $blog = get_active_blog_for_user( get_current_user_id() );
    505         $dashboard_blog = get_dashboard_blog();
     505
    506506        if ( is_object( $blog ) ) {
    507507                wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) ); // redirect and count to 5, "just in case"
    508508                exit;
    509         }
    510 
    511         /*
    512            If the user is a member of only 1 blog and the user's primary_blog isn't set to that blog,
    513            then update the primary_blog record to match the user's blog
    514          */
    515         $blogs = get_blogs_of_user( get_current_user_id() );
    516 
    517         if ( !empty( $blogs ) ) {
    518                 foreach( $blogs as $blogid => $blog ) {
    519                         if ( $blogid != $dashboard_blog->blog_id && get_user_meta( get_current_user_id() , 'primary_blog', true ) == $dashboard_blog->blog_id ) {
    520                                 update_user_meta( get_current_user_id(), 'primary_blog', $blogid );
    521                                 continue;
    522                         }
    523                 }
    524                 $blog = get_blog_details( get_user_meta( get_current_user_id(), 'primary_blog', true ) );
    525                         wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) );
    526                 exit;
    527         }
     509        } else {
     510                wp_redirect( user_admin_url( '?c=' . $c ) ); // redirect and count to 5, "just in case"
     511        }
     512
    528513        wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
    529514}
  • trunk/wp-admin/includes/template.php

    r15664 r15746  
    13901390        if ( is_string($screen) )
    13911391                $screen = convert_to_screen($screen);
     1392
     1393        if ( $screen->is_user )
     1394                return;
    13921395
    13931396        if ( isset($screen->post_type) ) {
     
    16361639
    16371640function screen_meta($screen) {
    1638         global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table;
     1641        global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table, $wp_current_screen_options;
    16391642
    16401643        if ( is_string($screen) )
     
    16701673                        break;
    16711674        }
    1672         if( ! empty( $settings ) )
     1675        if ( ! empty( $settings ) )
     1676                $show_screen = true;
     1677
     1678        if ( !empty($wp_current_screen_options) )
    16731679                $show_screen = true;
    16741680
     
    17971803
    17981804function screen_layout($screen) {
    1799         global $screen_layout_columns;
     1805        global $screen_layout_columns, $wp_current_screen_options;
    18001806
    18011807        if ( is_string($screen) )
    18021808                $screen = convert_to_screen($screen);
    18031809
    1804         $columns = array('dashboard' => 4, 'link' => 2);
    1805 
    1806         // Add custom post types
    1807         foreach ( get_post_types( array('show_ui' => true) ) as $post_type )
    1808                 $columns[$post_type] = 2;
    1809 
    1810         $columns = apply_filters('screen_layout_columns', $columns, $screen->id, $screen);
    1811 
    1812         if ( !isset($columns[$screen->id]) ) {
     1810        // Back compat for plugins using the filter instead of add_screen_option()
     1811        $columns = apply_filters('screen_layout_columns', array(), $screen->id, $screen);
     1812        if ( !empty($columns) && isset($columns[$screen->id]) )
     1813                add_screen_option('layout_columns', array('max' => $columns[$screen->id]) );
     1814
     1815        if ( !isset($wp_current_screen_options['layout_columns']) ) {
    18131816                $screen_layout_columns = 0;
    18141817                return '';
    1815         }
     1818        }
    18161819
    18171820        $screen_layout_columns = get_user_option("screen_layout_$screen->id");
    1818         $num = $columns[$screen->id];
    1819 
    1820         if ( ! $screen_layout_columns )
     1821        $num = $wp_current_screen_options['layout_columns']['max'];
     1822
     1823        if ( ! $screen_layout_columns ) {
     1824                if ( isset($wp_current_screen_options['layout_columns']['default']) )
     1825                        $screen_layout_columns = $wp_current_screen_options['layout_columns']['default'];
     1826                else
    18211827                        $screen_layout_columns = 2;
     1828        }
    18221829
    18231830        $i = 1;
     
    18311838}
    18321839
     1840/**
     1841 * Register and configure an admin screen option
     1842 *
     1843 * @since 3.1.0
     1844 *
     1845 * @param string $option An option name.
     1846 * @param mixed $args Option dependent arguments
     1847 * @return void
     1848 */
     1849function add_screen_option( $option, $args = array() ) {
     1850        global $wp_current_screen_options;
     1851
     1852        if ( !isset($wp_current_screen_options) )
     1853                $wp_current_screen_options = array();
     1854
     1855        $wp_current_screen_options[$option] = $args;
     1856}
     1857
    18331858function screen_options($screen) {
     1859        global $wp_current_screen_options;
     1860
    18341861        if ( is_string($screen) )
    18351862                $screen = convert_to_screen($screen);
    18361863
    1837         switch ( $screen->base ) {
    1838                 case 'edit':
    1839                 case 'edit-pages':
    1840                         $post_type = 'post';
    1841                         if ( isset($_GET['post_type']) && in_array( $_GET['post_type'], get_post_types( array( 'show_ui' => true ) ) ) )
    1842                                 $post_type = $_GET['post_type'];
    1843                         $post_type_object = get_post_type_object($post_type);
    1844                         $per_page_label = $post_type_object->labels->name;
    1845                         break;
    1846                 case 'ms-sites':
    1847                         $per_page_label = _x( 'Sites', 'sites per page (screen options)' );
    1848                         break;
    1849                 case 'users':
    1850                 case 'ms-users':
    1851                         $per_page_label = _x( 'Users', 'users per page (screen options)' );
    1852                         break;
    1853                 case 'edit-comments':
    1854                         $per_page_label = _x( 'Comments', 'comments per page (screen options)' );
    1855                         break;
    1856                 case 'upload':
    1857                         $per_page_label = _x( 'Media items', 'items per page (screen options)' );
    1858                         break;
    1859                 case 'edit-tags':
    1860                         global $tax;
    1861                         $per_page_label = $tax->labels->name;
    1862                         break;
    1863                 case 'plugins':
    1864                         $per_page_label = _x( 'Plugins', 'plugins per page (screen options)' );
    1865                         break;
    1866                 default:
    1867                         return '';
    1868         }
    1869 
    1870         $option = str_replace( '-', '_', "{$screen->id}_per_page" );
    1871         if ( 'edit_tags_per_page' == $option ) {
    1872                 if ( 'category' == $tax->name )
    1873                         $option = 'categories_per_page';
    1874                 elseif ( 'post_tag' != $tax->name )
    1875                         $option = 'edit_' . $tax->name . '_per_page';
     1864        if ( !isset($wp_current_screen_options['per_page']) )
     1865                return '';
     1866
     1867        $per_page_label = $wp_current_screen_options['per_page']['label'];
     1868
     1869        if ( empty($wp_current_screen_options['per_page']['option']) ) {
     1870                $option = str_replace( '-', '_', "{$screen->id}_per_page" );
     1871        } else {
     1872                $option = $wp_current_screen_options['per_page']['option'];
    18761873        }
    18771874
    18781875        $per_page = (int) get_user_option( $option );
    18791876        if ( empty( $per_page ) || $per_page < 1 ) {
    1880                 if ( 'plugins' == $screen->id )
    1881                         $per_page = 999;
     1877                if ( isset($wp_current_screen_options['per_page']['default']) )
     1878                        $per_page = $wp_current_screen_options['per_page']['default'];
    18821879                else
    18831880                        $per_page = 20;
     
    19961993        </script>
    19971994<?php
     1995}
     1996
     1997/**
     1998 *  Get the current screen object
     1999 *
     2000 *  @since 3.1.0
     2001 *
     2002 * @return object Current screen object
     2003 */
     2004function get_current_screen() {
     2005        global $current_screen;
     2006
     2007        if ( !isset($current_screen) )
     2008                return null;
     2009
     2010        return $current_screen;
    19982011}
    19992012
     
    20612074
    20622075        $current_screen->is_network = is_network_admin() ? true : false;
     2076        $current_screen->is_user = is_user_admin() ? true : false;
     2077       
     2078        if ( $current_screen->is_network ) {
     2079                $current_screen->base .= '-network';
     2080                $current_screen->id .= '-network';
     2081        } elseif ( $current_screen->is_user ) {
     2082                $current_screen->base .= '-user';
     2083                $current_screen->id .= '-user';
     2084        }
    20632085
    20642086        $current_screen = apply_filters('current_screen', $current_screen);
  • trunk/wp-admin/index-extra.php

    r14924 r15746  
    1111
    1212/** Load WordPress Administration Dashboard API */
    13 require( './includes/dashboard.php' );
     13require(ABSPATH . 'wp-admin/includes/dashboard.php' );
    1414
    1515@header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
  • trunk/wp-admin/index.php

    r15132 r15746  
    2525$parent_file = 'index.php';
    2626
     27if ( is_user_admin() )
     28        add_screen_option('layout_columns', array('max' => 4, 'default' => 1) );
     29else
     30        add_screen_option('layout_columns', array('max' => 4, 'default' => 2) );
     31
    2732add_contextual_help($current_screen,
    2833
     
    4348);
    4449
    45 require_once('./admin-header.php');
     50include (ABSPATH . 'wp-admin/admin-header.php');
    4651
    4752$today = current_time('mysql', 1);
  • trunk/wp-admin/js/dashboard.dev.js

    r14815 r15746  
    4343        ajaxPopulateWidgets();
    4444
    45         postboxes.add_postbox_toggles('dashboard', { pbshow: ajaxPopulateWidgets } );
     45        postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } );
    4646
    4747        /* QuickPress */
  • trunk/wp-admin/js/dashboard.js

    r14815 r15746  
    1 var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins","dashboard_quick_press"];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a("#"+g+" div.inside:visible").find(".widget-loading");if(d.length){f=d.parent();setTimeout(function(){f.load("index-extra.php?jax="+g,"",function(){f.hide().slideDown("normal",function(){a(this).css("display","");if("dashboard_plugins"==g&&a.isFunction(tb_init)){tb_init("#dashboard_plugins a.thickbox")}if("dashboard_quick_press"==g&&a.isFunction(tb_init)){tb_init("#dashboard_quick_press a.thickbox");quickPressLoad()}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles("dashboard",{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","disabled");if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","");a("#dashboard_quick_press ul").next("p").remove();a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();tb_init("a.thickbox");quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})}});
     1var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins","dashboard_quick_press"];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a("#"+g+" div.inside:visible").find(".widget-loading");if(d.length){f=d.parent();setTimeout(function(){f.load("index-extra.php?jax="+g,"",function(){f.hide().slideDown("normal",function(){a(this).css("display","");if("dashboard_plugins"==g&&a.isFunction(tb_init)){tb_init("#dashboard_plugins a.thickbox")}if("dashboard_quick_press"==g&&a.isFunction(tb_init)){tb_init("#dashboard_quick_press a.thickbox");quickPressLoad()}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","disabled");if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","");a("#dashboard_quick_press ul").next("p").remove();a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();tb_init("a.thickbox");quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})}});
  • trunk/wp-admin/menu.php

    r15556 r15746  
    233233        );
    234234
    235 require(ABSPATH . 'wp-admin/includes/menu.php');
     235require_once(ABSPATH . 'wp-admin/includes/menu.php');
    236236
    237237?>
  • trunk/wp-admin/network/edit.php

    r15669 r15746  
    5353                                                $user_list = '';
    5454                                                foreach ( $blog_users as $user ) {
    55                                                         if ( $user->user_id != $val && !in_array( $user->user_id, $allusers ) )
    56                                                                 $user_list .= "<option value='{$user->user_id}'>{$user->user_login}</option>";
     55                                                        if ( $user->user_id != $val && !in_array( $user->id, $allusers ) )
     56                                                                $user_list .= "<option value='{$user->id}'>{$user->user_login}</option>";
    5757                                                }
    5858                                                if ( '' == $user_list )
     
    138138                        update_site_option( 'banned_email_domains', '' );
    139139                }
    140                 update_site_option( 'default_user_role', $_POST['default_user_role'] );
    141                 if ( trim( $_POST['dashboard_blog_orig'] ) == '' )
    142                         $_POST['dashboard_blog_orig'] = $current_site->blog_id;
    143                 if ( trim( $_POST['dashboard_blog'] ) == '' ) {
    144                         $_POST['dashboard_blog'] = $current_site->blog_id;
    145                         $dashboard_blog_id = $current_site->blog_id;
    146                 } elseif ( ! preg_match( '/(--|\.)/', $_POST['dashboard_blog'] ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $_POST['dashboard_blog'] ) ) {
    147                         $dashboard_blog = $_POST['dashboard_blog'];
    148                         $blog_details = get_blog_details( $dashboard_blog );
    149                         if ( false === $blog_details ) {
    150                                 if ( is_numeric( $dashboard_blog ) )
    151                                         wp_die( __( 'A dashboard site referenced by ID must already exist' ) );
    152                                 if ( is_subdomain_install() ) {
    153                                         $domain = $dashboard_blog . '.' . $current_site->domain;
    154                                         $path = $current_site->path;
    155                                 } else {
    156                                         $domain = $current_site->domain;
    157                                         $path = trailingslashit( $current_site->path . $dashboard_blog );
    158                                 }
    159                                 $wpdb->hide_errors();
    160                                 $dashboard_blog_id = wpmu_create_blog( $domain, $path, __( 'My Dashboard' ), $current_user->id , array( 'public' => 0 ), $current_site->id );
    161                                 $wpdb->show_errors();
    162                         } else {
    163                                 $dashboard_blog_id = $blog_details->blog_id;
    164                         }
    165                 }
    166                 if ( is_wp_error( $dashboard_blog_id ) )
    167                         wp_die( __( 'Problem creating dashboard site: ' ) . $dashboard_blog_id->get_error_message() );
    168                 if ( $_POST['dashboard_blog_orig'] != $_POST['dashboard_blog'] ) {
    169                         $users = get_users_of_blog( get_site_option( 'dashboard_blog' ) );
    170                         $move_users = array();
    171                         foreach ( (array)$users as $user ) {
    172                                 $user_meta_value = unserialize( $user->meta_value );
    173                                 if ( is_array( $user_meta_value ) && array_pop( $var_by_ref = array_keys( $user_meta_value ) ) == 'subscriber' )
    174                                         $move_users[] = $user->user_id;
    175                         }
    176                         if ( false == empty( $move_users ) ) {
    177                                 foreach ( (array)$move_users as $user_id ) {
    178                                         remove_user_from_blog($user_id, get_site_option( 'dashboard_blog' ) );
    179                                         add_user_to_blog( $dashboard_blog_id, $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    180                                         update_user_meta( $user_id, 'primary_blog', $dashboard_blog_id );
    181                                 }
    182                         }
    183                 }
    184                 update_site_option( 'dashboard_blog', $dashboard_blog_id );
    185 
    186                 $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'mu_media_buttons', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'admin_notice_feed', 'global_terms_enabled' );
     140
     141                $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'mu_media_buttons', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled' );
    187142                $checked_options = array( 'mu_media_buttons' => array(), 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 );
    188143                foreach ( $checked_options as $option_name => $option_unchecked_value ) {
     
    256211                $wpdb->show_errors();
    257212                if ( !is_wp_error( $id ) ) {
    258                         $dashboard_blog = get_dashboard_blog();
    259                         if ( !is_super_admin( $user_id ) && get_user_option( 'primary_blog', $user_id ) == $dashboard_blog->blog_id )
     213                        if ( !is_super_admin( $user_id ) && !get_user_option( 'primary_blog', $user_id ) )
    260214                                update_user_option( $user_id, 'primary_blog', $id, true );
    261215                        $content_mail = sprintf( __( "New site created by %1s\n\nAddress: http://%2s\nName: %3s"), $current_user->user_login , $newdomain . $path, stripslashes( $title ) );
     
    688642                        wp_new_user_notification( $user_id, $password );
    689643
    690                 if ( get_site_option( 'dashboard_blog' ) == false )
    691                         add_user_to_blog( $current_site->blog_id, $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    692                 else
    693                         add_user_to_blog( get_site_option( 'dashboard_blog' ), $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    694 
    695644                wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'add' ), wp_get_referer() ) );
    696645                exit();
  • trunk/wp-admin/network/settings.php

    r15481 r15746  
    4444
    4545<div class="wrap">
    46         <?php screen_icon(); ?>
     46        <?php screen_icon('options-general'); ?>
    4747        <h2><?php _e( 'Network Options' ) ?></h2>
    4848        <form method="post" action="edit.php?action=siteoptions">
     
    6666                                        <?php printf( __( 'Registration and support emails will come from this address. An address such as <code>support@%s</code> is recommended.' ), $current_site->domain ); ?>
    6767                                </td>
    68                         </tr>
    69                 </table>
    70                 <h3><?php _e( 'Dashboard Settings' ); ?></h3>
    71                 <table class="form-table">
    72                         <tr valign="top">
    73                                 <th scope="row"><label for="dashboard_blog"><?php _e( 'Dashboard Site' ) ?></label></th>
    74                                 <td>
    75                                         <?php
    76                                         if ( $dashboard_blog = get_site_option( 'dashboard_blog' ) ) {
    77                                                 $details = get_blog_details( $dashboard_blog );
    78                                                 $blogname = untrailingslashit( sanitize_user( str_replace( '.', '', str_replace( $current_site->domain . $current_site->path, '', $details->domain . $details->path ) ) ) );
    79                                         } else {
    80                                                 $blogname = '';
    81                                         }?>
    82                                         <input name="dashboard_blog_orig" type="hidden" id="dashboard_blog_orig" value="<?php echo esc_attr( $blogname ); ?>" />
    83                                         <input name="dashboard_blog" type="text" id="dashboard_blog" value="<?php echo esc_attr( $blogname ); ?>" class="regular-text" />
    84                                         <br />
    85                                         <?php _e( 'Site path (&#8220;dashboard&#8221;, &#8220;control&#8221;, &#8220;manager&#8221;, etc.) or blog ID.<br />New users are added to this site as the user role defined below if they don&#8217;t have a site. Leave blank for the main site. Users with the Subscriber role on the old site will be moved to the new site if changed. The new site will be created if it does not exist.' ); ?>
    86                                 </td>
    87                         </tr>
    88                         <tr valign="top">
    89                                 <th scope="row"><label for="default_user_role"><?php _e( 'Dashboard User Default Role' ) ?></label></th>
    90                                 <td>
    91                                         <select name="default_user_role" id="default_user_role"><?php
    92                                         wp_dropdown_roles( get_site_option( 'default_user_role', 'subscriber' ) );
    93                                         ?>
    94                                         </select>
    95                                         <br />
    96                                         <?php _e( 'The default role for new users on the Dashboard site. &#8220;Subscriber&#8221; or &#8220;Contributor&#8221; roles are recommended.' ); ?>
    97                                 </td>
    98                         </tr>
    99                         <tr valign="top">
    100                                 <th scope="row"><label for="admin_notice_feed"><?php _e( 'Admin Notice Feed' ) ?></label></th>
    101                                 <td><input name="admin_notice_feed" class="large-text" type="text" id="admin_notice_feed" value="<?php echo esc_attr( get_site_option( 'admin_notice_feed' ) ) ?>" size="80" /><br />
    102                                 <?php _e( 'Display the latest post from this RSS or Atom feed on all site dashboards. Leave blank to disable.' ); ?><br />
    103 
    104                                 <?php if ( get_site_option( 'admin_notice_feed' ) != get_home_url( $current_site->id, 'feed/' ) )
    105                                         echo __( 'A good one to use would be the feed from your main site: ' ) . esc_url( get_home_url( $current_site->id, 'feed/' ) ) ?></td>
    10668                        </tr>
    10769                </table>
  • trunk/wp-admin/network/sites.php

    r15673 r15746  
    1818$title = __( 'Sites' );
    1919$parent_file = 'sites.php';
     20
     21add_screen_option( 'per_page', array('label' => _x( 'Sites', 'sites per page (screen options)' )) );
    2022
    2123if ( isset( $_REQUEST['action'] ) && 'editblog' == $_REQUEST['action'] ) {
     
    110112                ?>
    111113                <div class="wrap">
    112                 <?php screen_icon(); ?>
     114                <?php screen_icon('index'); ?>
    113115                <h2><?php _e( 'Edit Site' ); ?> - <a href="<?php echo esc_url( get_home_url( $id ) ); ?>"><?php echo esc_url( get_home_url( $id ) ); ?></a></h2>
    114116                <?php echo $msg; ?>
     
    348350
    349351                <div class="wrap">
    350                 <?php screen_icon(); ?>
     352                <?php screen_icon('index'); ?>
    351353                <h2><?php _e('Sites') ?>
    352354                <?php echo $msg; ?>
  • trunk/wp-admin/network/upgrade.php

    r15484 r15746  
    3333
    3434echo '<div class="wrap">';
    35 screen_icon();
     35screen_icon('tools');
    3636echo '<h2>' . __( 'Update Network' ) . '</h2>';
    3737
  • trunk/wp-admin/network/users.php

    r15603 r15746  
    1616$title = __( 'Users' );
    1717$parent_file = 'users.php';
     18
     19add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
    1820
    1921add_contextual_help($current_screen,
  • trunk/wp-admin/plugins.php

    r15697 r15746  
    291291add_thickbox();
    292292
     293add_screen_option( 'per_page', array('label' => _x( 'Plugins', 'plugins per page (screen options)' ), 'default' => 999) );
     294
    293295add_contextual_help($current_screen,
    294296        '<p>' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '</p>' .
  • trunk/wp-admin/upload.php

    r15642 r15746  
    134134wp_enqueue_script( 'jquery-ui-draggable' );
    135135wp_enqueue_script( 'media' );
     136
     137add_screen_option( 'per_page', array('label' => _x( 'Media items', 'items per page (screen options)' )) );
    136138
    137139add_contextual_help( $current_screen,
  • trunk/wp-admin/user-edit.php

    r15481 r15746  
    3232else
    3333        $submenu_file = 'profile.php';
    34 $parent_file = 'users.php';
     34
     35if ( current_user_can('edit_users') && !is_user_admin() )
     36        $parent_file = 'users.php';
     37else
     38        $parent_file = 'profile.php';
    3539
    3640// contextual help - choose Help on the top right of admin panel to preview this.
  • trunk/wp-admin/users.php

    r15642 r15746  
    1818$title = __('Users');
    1919$parent_file = 'users.php';
     20
     21add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
    2022
    2123// contextual help - choose Help on the top right of admin panel to preview this.
  • trunk/wp-includes/admin-bar.php

    r15696 r15746  
    110110        if ( !is_object( $wp_admin_bar ) )
    111111                return false;
    112 
    113         /* Remove the global dashboard */
    114         if ( is_multisite() ) {
    115                 foreach ( (array) $wp_admin_bar->user->blogs as $key => $blog ) {
    116                         if ( get_dashboard_blog() == $blog->domain )
    117                                 unset( $wp_admin_bar->user->blogs[$key] );
    118                 }
    119         }
    120112
    121113        /* Add the 'My Dashboards' menu if the user has more than one blog. */
  • trunk/wp-includes/admin-bar/admin-bar-class.php

    r15671 r15746  
    1616                if ( is_multisite() ) {
    1717                        $this->user->active_blog = get_active_blog_for_user( $current_user->id );
    18                         $this->user->domain = ( $this->user->active_blog == 'username only' ) ? get_dashboard_blog() : trailingslashit( get_home_url( $this->user->active_blog->blog_id ) );
     18                        $this->user->domain = empty( $this->user->active_blog ) ? user_admin_url() : trailingslashit( get_home_url( $this->user->active_blog->blog_id ) );
    1919                        $this->user->account_domain = $this->user->domain;
    2020                } else {
  • trunk/wp-includes/capabilities.php

    r15640 r15746  
    738738                // Must have ALL requested caps
    739739                $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args );
     740                $capabilities['exist'] = true; // Everyone is allowed to exist
    740741                foreach ( (array) $caps as $cap ) {
    741742                        //echo "Checking cap $cap<br />";
  • trunk/wp-includes/functions.php

    r15723 r15746  
    448448                $site_id = $wpdb->siteid;
    449449
    450         $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'dashboard_blog', 'can_compress_scripts', 'global_terms_enabled' );
     450        $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled' );
    451451
    452452        $core_options_in = "'" . implode("', '", $core_options) . "'";
  • trunk/wp-includes/link-template.php

    r15701 r15746  
    21312131
    21322132/**
     2133 * Retrieve the url to the admin area for the current user.
     2134 *
     2135 * @package WordPress
     2136 * @since 3.0.0
     2137 *
     2138 * @param string $path Optional path relative to the admin url
     2139 * @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl(). 'http' or 'https' can be passed to force those schemes.
     2140 * @return string Admin url link with optional path appended
     2141*/
     2142function user_admin_url( $path = '', $scheme = 'admin' ) {
     2143        $url = network_site_url('wp-admin/user/', $scheme);
     2144
     2145        if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     2146                $url .= ltrim($path, '/');
     2147
     2148        return apply_filters('user_admin_url', $url, $path);
     2149}
     2150
     2151/**
    21332152 * Retrieve the url to the admin area for either the current blog or the network depending on context.
    21342153 *
     
    21432162        if ( is_network_admin() )
    21442163                return network_admin_url($path, $scheme);
     2164        elseif ( is_user_admin() )
     2165                return user_admin_url($path, $scheme);
    21452166        else
    21462167                return admin_url($path, $scheme);
  • trunk/wp-includes/load.php

    r15680 r15746  
    622622
    623623/**
     624 * Whether the current request is for a user admin screen /wp-admin/user/
     625 *
     626 * Does not inform on whether the user is an admin! Use capability checks to
     627 * tell if the user should be accessing a section or not.
     628 *
     629 * @since 3.1.0
     630 *
     631 * @return bool True if inside WordPress user administration pages.
     632 */
     633function is_user_admin() {
     634        if ( defined( 'WP_USER_ADMIN' ) )
     635                return WP_USER_ADMIN;
     636        return false;
     637}
     638
     639/**
    624640 * Whether Multisite support is enabled
    625641 *
  • trunk/wp-includes/ms-functions.php

    r15678 r15746  
    6060 * @since MU 1.0
    6161 * @uses get_blogs_of_user()
    62  * @uses get_dashboard_blog()
    6362 * @uses add_user_to_blog()
    6463 * @uses update_user_meta()
     
    7372        global $wpdb;
    7473        $blogs = get_blogs_of_user( $user_id );
    75         if ( empty( $blogs ) ) {
    76                 $details = get_dashboard_blog();
    77                 add_user_to_blog( $details->blog_id, $user_id, 'subscriber' );
    78                 update_user_meta( $user_id, 'primary_blog', $details->blog_id );
    79                 wp_cache_delete( $user_id, 'users' );
    80                 return $details;
    81         }
     74        if ( empty( $blogs ) )
     75                return null;
     76
     77        if ( !is_multisite() )
     78                return $blogs[$wpdb->blogid];
    8279
    8380        $primary_blog = get_user_meta( $user_id, 'primary_blog', true );
    84         $details = get_dashboard_blog();
     81        $first_blog = current($blogs);
    8582        if ( $primary_blog ) {
    86                 if ( isset( $blogs[ $primary_blog ] ) == false ) {
    87                         add_user_to_blog( $details->blog_id, $user_id, 'subscriber' );
    88                         update_user_meta( $user_id, 'primary_blog', $details->blog_id );
    89                         wp_cache_delete( $user_id, 'users' );
     83                if ( ! isset( $blogs[ $primary_blog ] ) ) {
     84                        add_user_to_blog( $first_blog->blog_id, $user_id, 'subscriber' );
     85                        update_user_meta( $user_id, 'primary_blog', $first_blog->blog_id );
     86                        $primary = $first_blog;
    9087                } else {
    91                         $details = get_blog_details( $primary_blog );
     88                        $primary = get_blog_details( $primary_blog );
    9289                }
    9390        } else {
    94                 add_user_to_blog( $details->blog_id, $user_id, 'subscriber' ); // Add subscriber permission for dashboard blog
    95                 update_user_meta( $user_id, 'primary_blog', $details->blog_id );
    96         }
    97 
    98         if ( ( is_object( $details ) == false ) || ( is_object( $details ) && $details->archived == 1 || $details->spam == 1 || $details->deleted == 1 ) ) {
     91                add_user_to_blog( $first_blog->blog_id, $user_id, 'subscriber' );
     92                update_user_meta( $user_id, 'primary_blog', $first_blog->blog_id );
     93                $primary = $first_blog;
     94        }
     95
     96        if ( ( ! is_object( $primary ) ) || ( is_object( $primary ) && $primary->archived == 1 || $primary->spam == 1 || $primary->deleted == 1 ) ) {
    9997                $blogs = get_blogs_of_user( $user_id, true ); // if a user's primary blog is shut down, check their other blogs.
    10098                $ret = false;
     
    106104                                if ( is_object( $details ) && $details->archived == 0 && $details->spam == 0 && $details->deleted == 0 ) {
    107105                                        $ret = $blog;
    108                                         $changed = false;
    109                                         if ( get_user_meta( $user_id , 'primary_blog', true ) != $blog_id ) {
     106                                        if ( get_user_meta( $user_id , 'primary_blog', true ) != $blog_id )
    110107                                                update_user_meta( $user_id, 'primary_blog', $blog_id );
    111                                                 $changed = true;
    112                                         }
    113                                         if ( !get_user_meta($user_id , 'source_domain', true) ) {
     108                                        if ( !get_user_meta($user_id , 'source_domain', true) )
    114109                                                update_user_meta( $user_id, 'source_domain', $blog->domain );
    115                                                 $changed = true;
    116                                         }
    117                                         if ( $changed )
    118                                                 wp_cache_delete( $user_id, 'users' );
    119110                                        break;
    120111                                }
    121112                        }
    122113                } else {
    123                         // Should never get here
    124                         $dashboard_blog = get_dashboard_blog();
    125                         add_user_to_blog( $dashboard_blog->blog_id, $user_id, 'subscriber' ); // Add subscriber permission for dashboard blog
    126                         update_user_meta( $user_id, 'primary_blog', $dashboard_blog->blog_id );
    127                         return $dashboard_blog;
     114                        return null;
    128115                }
    129116                return $ret;
    130117        } else {
    131                 return $details;
     118                return $primary;
    132119        }
    133120}
     
    841828
    842829                wpmu_welcome_user_notification($user_id, $password, $meta);
    843                 $user_site = get_site_option( 'dashboard_blog', $current_site->blog_id );
    844 
    845                 if ( $user_site == false )
    846                         add_user_to_blog( '1', $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    847                 else
    848                         add_user_to_blog( $user_site, $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
    849830
    850831                add_new_user_to_blog( $user_id, $user_email, $meta );
     
    927908        update_option( 'blog_public', (int)$meta['public'] );
    928909
    929         if ( !is_super_admin() && get_user_meta( $user_id, 'primary_blog', true ) == get_site_option( 'dashboard_blog', 1 ) )
     910        if ( !is_super_admin() && ! get_user_meta( $user_id, 'primary_blog', true ) )
    930911                update_user_meta( $user_id, 'primary_blog', $blog_id );
    931912
     
    14611442add_action('update_option_blog_public', 'update_blog_public', 10, 2);
    14621443
    1463 /* Redirect all hits to "dashboard" blog to wp-admin/ Dashboard. */
    1464 function redirect_mu_dashboard() {
    1465         global $current_site, $current_blog;
    1466 
    1467         $dashboard_blog = get_dashboard_blog();
    1468         if ( $current_blog->blog_id == $dashboard_blog->blog_id && $dashboard_blog->blog_id != $current_site->blog_id ) {
    1469                 $protocol = ( is_ssl() ? 'https://' : 'http://' );
    1470                 wp_redirect( $protocol . $dashboard_blog->domain . trailingslashit( $dashboard_blog->path ) . 'wp-admin/' );
    1471                 die();
    1472         }
    1473 }
    1474 add_action( 'template_redirect', 'redirect_mu_dashboard' );
    1475 
    14761444function get_dashboard_blog() {
    14771445        if ( $blog = get_site_option( 'dashboard_blog' ) )
  • trunk/wp-includes/pluggable.php

    r15682 r15746  
    8282
    8383        if ( ! $user = wp_validate_auth_cookie() ) {
    84                  if ( is_admin() || empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) {
     84                 if ( is_blog_admin() || is_network_admin() || empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) {
    8585                        wp_set_current_user(0);
    8686                        return false;
     
    776776        }
    777777
    778         if ( $user_id = wp_validate_auth_cookie( '', apply_filters( 'auth_redirect_scheme', '' ) ) ) {
     778        if ( is_user_admin() )
     779                $scheme = 'logged_in';
     780        else
     781                $scheme = apply_filters( 'auth_redirect_scheme', '' );
     782
     783        if ( $user_id = wp_validate_auth_cookie( '',  $scheme) ) {
    779784                do_action('auth_redirect', $user_id);
    780785
  • trunk/wp-includes/vars.php

    r13132 r15746  
    1616if ( is_admin() ) {
    1717        // wp-admin pages are checked more carefully
    18         preg_match('#/wp-admin/?(.*?)$#i', $PHP_SELF, $self_matches);
     18        if ( is_network_admin() )
     19                preg_match('#/wp-admin/network/?(.*?)$#i', $PHP_SELF, $self_matches);
     20        elseif ( is_user_admin() )
     21                preg_match('#/wp-admin/user/?(.*?)$#i', $PHP_SELF, $self_matches);
     22        else
     23                preg_match('#/wp-admin/?(.*?)$#i', $PHP_SELF, $self_matches);
    1924        $pagenow = $self_matches[1];
    2025        $pagenow = trim($pagenow, '/');
  • trunk/wp-login.php

    r15735 r15746  
    573573<?php           exit;
    574574                }
    575                 // If the user can't edit posts, send them to their profile.
    576                 if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
     575
     576                // If the user doesn't belong to a blog, send them to user admin. If the user can't edit posts, send them to their profile.
     577                if ( is_multisite() && !get_active_blog_for_user($user->id) )
     578                        $redirect_to = user_admin_url();
     579                elseif ( !is_multisite() && !$user->has_cap('read') )
     580                        $redirect_to = user_admin_url();
     581                elseif ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
    577582                        $redirect_to = admin_url('profile.php');
    578583                wp_safe_redirect($redirect_to);
Note: See TracChangeset for help on using the changeset viewer.