wp/wp-admin/my-sites.php
changeset 7 cf61fcea0001
parent 5 5e2f62d02dcd
child 9 177826044cd9
--- a/wp/wp-admin/my-sites.php	Tue Jun 09 11:14:17 2015 +0000
+++ b/wp/wp-admin/my-sites.php	Mon Oct 14 17:39:30 2019 +0200
@@ -13,7 +13,7 @@
 	wp_die( __( 'Multisite support is not enabled.' ) );
 
 if ( ! current_user_can('read') )
-	wp_die( __( 'You do not have sufficient permissions to view this page.' ) );
+	wp_die( __( 'Sorry, you are not allowed to access this page.' ) );
 
 $action = isset( $_POST['action'] ) ? $_POST['action'] : 'splash';
 
@@ -23,7 +23,7 @@
 if ( 'updateblogsettings' == $action && isset( $_POST['primary_blog'] ) ) {
 	check_admin_referer( 'update-my-sites' );
 
-	$blog = get_blog_details( (int) $_POST['primary_blog'] );
+	$blog = get_site( (int) $_POST['primary_blog'] );
 	if ( $blog && isset( $blog->domain ) ) {
 		update_user_option( $current_user->ID, 'primary_blog', (int) $_POST['primary_blog'], true );
 		$updated = true;
@@ -39,14 +39,13 @@
 	'id'      => 'overview',
 	'title'   => __('Overview'),
 	'content' =>
-		'<p>' . __('This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. They can use the links under each site to visit either the frontend or the dashboard for that site.') . '</p>' .
-		'<p>' . __('Up until WordPress version 3.0, what is now called a Multisite Network had to be installed separately as WordPress MU (multi-user).') . '</p>'
+		'<p>' . __('This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. They can use the links under each site to visit either the front end or the dashboard for that site.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
 	'<p><strong>' . __('For more information:') . '</strong></p>' .
-	'<p>' . __('<a href="https://codex.wordpress.org/Dashboard_My_Sites_Screen" target="_blank">Documentation on My Sites</a>') . '</p>' .
-	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+	'<p>' . __('<a href="https://codex.wordpress.org/Dashboard_My_Sites_Screen">Documentation on My Sites</a>') . '</p>' .
+	'<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
 );
 
 require_once( ABSPATH . 'wp-admin/admin-header.php' );
@@ -56,26 +55,38 @@
 <?php } ?>
 
 <div class="wrap">
-<h2><?php echo esc_html( $title ); ?></h2>
+<h1 class="wp-heading-inline"><?php
+echo esc_html( $title );
+?></h1>
+
 <?php
+if ( in_array( get_site_option( 'registration' ), array( 'all', 'blog' ) ) ) {
+	/** This filter is documented in wp-login.php */
+	$sign_up_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
+	printf( ' <a href="%s" class="page-title-action">%s</a>', esc_url( $sign_up_url ), esc_html_x( 'Add New', 'site' ) );
+}
+
 if ( empty( $blogs ) ) :
 	echo '<p>';
 	_e( 'You must be a member of at least one site to use this page.' );
 	echo '</p>';
 else :
 ?>
+
+<hr class="wp-header-end">
+
 <form id="myblogs" method="post">
 	<?php
 	choose_primary_blog();
 	/**
-	 * Fires before the sites table on the My Sites screen.
+	 * Fires before the sites list on the My Sites screen.
 	 *
 	 * @since 3.0.0
 	 */
 	do_action( 'myblogs_allblogs_options' );
 	?>
 	<br clear="all" />
-	<table class="widefat fixed striped">
+	<ul class="my-sites striped">
 	<?php
 	/**
 	 * Enable the Global Settings section on the My Sites screen.
@@ -84,58 +95,55 @@
 	 * string to this filter will enable the section, and allow new settings
 	 * to be added, either globally or for specific sites.
 	 *
-	 * @since MU
+	 * @since MU (3.0.0)
 	 *
 	 * @param string $settings_html The settings HTML markup. Default empty.
 	 * @param object $context       Context of the setting (global or site-specific). Default 'global'.
 	 */
 	$settings_html = apply_filters( 'myblogs_options', '', 'global' );
 	if ( $settings_html != '' ) {
-		echo '<tr><td><h3>' . __( 'Global Settings' ) . '</h3></td><td>';
+		echo '<h3>' . __( 'Global Settings' ) . '</h3>';
 		echo $settings_html;
-		echo '</td></tr>';
 	}
 	reset( $blogs );
-	$num = count( $blogs );
-	$cols = 1;
-	if ( $num >= 20 )
-		$cols = 4;
-	elseif ( $num >= 10 )
-		$cols = 2;
-	$num_rows = ceil( $num / $cols );
-	$split = 0;
-	for ( $i = 1; $i <= $num_rows; $i++ ) {
-		$rows[] = array_slice( $blogs, $split, $cols );
-		$split = $split + $cols;
-	}
+
+	foreach ( $blogs as $user_blog ) {
+		switch_to_blog( $user_blog->userblog_id );
+
+		echo "<li>";
+		echo "<h3>{$user_blog->blogname}</h3>";
+
+		$actions = "<a href='" . esc_url( home_url() ). "'>" . __( 'Visit' ) . '</a>';
+
+		if ( current_user_can( 'read' ) ) {
+			$actions .= " | <a href='" . esc_url( admin_url() ) . "'>" . __( 'Dashboard' ) . '</a>';
+		}
 
-	foreach ( $rows as $row ) {
-		echo "<tr>";
-		$i = 0;
-		foreach ( $row as $user_blog ) {
-			$s = $i == 3 ? '' : 'border-right: 1px solid #ccc;';
-			echo "<td style='$s'>";
-			echo "<h3>{$user_blog->blogname}</h3>";
-			/**
-			 * Filter the row links displayed for each site on the My Sites screen.
-			 *
-			 * @since MU
-			 *
-			 * @param string $string    The HTML site link markup.
-			 * @param object $user_blog An object containing the site data.
-			 */
-			echo "<p>" . apply_filters( 'myblogs_blog_actions', "<a href='" . esc_url( get_home_url( $user_blog->userblog_id ) ). "'>" . __( 'Visit' ) . "</a> | <a href='" . esc_url( get_admin_url( $user_blog->userblog_id ) ) . "'>" . __( 'Dashboard' ) . "</a>", $user_blog ) . "</p>";
-			/** This filter is documented in wp-admin/my-sites.php */
-			echo apply_filters( 'myblogs_options', '', $user_blog );
-			echo "</td>";
-			$i++;
-		}
-		echo "</tr>";
+		/**
+		 * Filters the row links displayed for each site on the My Sites screen.
+		 *
+		 * @since MU (3.0.0)
+		 *
+		 * @param string $actions   The HTML site link markup.
+		 * @param object $user_blog An object containing the site data.
+		 */
+		$actions = apply_filters( 'myblogs_blog_actions', $actions, $user_blog );
+		echo "<p class='my-sites-actions'>" . $actions . '</p>';
+
+		/** This filter is documented in wp-admin/my-sites.php */
+		echo apply_filters( 'myblogs_options', '', $user_blog );
+		echo "</li>";
+
+		restore_current_blog();
 	}?>
-	</table>
-	<input type="hidden" name="action" value="updateblogsettings" />
-	<?php wp_nonce_field( 'update-my-sites' ); ?>
-	<?php submit_button(); ?>
+	</ul>
+	<?php
+	if ( count( $blogs ) > 1 || has_action( 'myblogs_allblogs_options' ) || has_filter( 'myblogs_options' ) ) {
+		?><input type="hidden" name="action" value="updateblogsettings" /><?php
+		wp_nonce_field( 'update-my-sites' );
+		submit_button();
+	}
+	?>
 	</form>
 <?php endif; ?>
 	</div>