From 09c947f374377dc1c07dec8f39dd80676c1bc0ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Frank=20B=C3=BCltge?= <frank@bueltge.de>
Date: Wed, 5 Mar 2014 15:13:12 +0100
Subject: [PATCH] Enhance tabs #15800

---
 wp-admin/includes/ms.php           | 54 ++++++++++++++++++++++++++++++++++++++
 wp-admin/network/site-info.php     | 15 ++---------
 wp-admin/network/site-settings.php | 15 ++---------
 wp-admin/network/site-themes.php   | 15 ++---------
 wp-admin/network/site-users.php    | 15 ++---------
 5 files changed, 62 insertions(+), 52 deletions(-)

diff --git wp-admin/includes/ms.php wp-admin/includes/ms.php
index f048417..75ec3d8 100644
--- wp-admin/includes/ms.php
+++ wp-admin/includes/ms.php
@@ -769,6 +769,60 @@ function revoke_super_admin( $user_id ) {
 	return false;
 }
 
+/** 
+ * Output the html for the network Edit Site page tabs 
+ * 
+ * @since 3.9.0 
+ * 
+ * @uses apply_filters() Calls 'network_edit_site_tabs' on 'info', 'users', 'themes', and settings tabs. 
+ * @uses apply_filters() Calls 'network_edit_site_tab_html' on 'tab_html 
+ * 
+ * @param int $id The blog_id of the current site being edited. 
+ */ 
+function network_edit_site_tabs( $id ) {
+		global $pagenow;
+		
+		$default = array(
+			'site-info'     => array( 'label' => __( 'Info' ), 'url' => 'site-info.php' ),
+			'site-users'    => array( 'label' => __( 'Users' ), 'url' => 'site-users.php' ),
+			'site-themes'   => array( 'label' => __( 'Themes' ), 'url' => 'site-themes.php' ),
+			'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
+		); 
+		$tabs = apply_filters( 'network_edit_site_tabs', $default, $id, $pagenow );
+		
+		foreach ( $tabs as $tab_id => $tab ) {
+			
+			if ( isset( $tab[ 'menu-slug' ] ) && isset( $tab[ 'callback-function' ] ) ) {
+				
+				$menu_slug = plugin_basename( $tab[ 'menu-slug' ] );
+				
+				$html = sprintf(
+					'<a href="%s" class="nav-tab %s">%s</a>',
+					add_query_arg( array( 'id' => $id ), network_admin_url( 'admin.php?page=' . $tab[ 'menu-slug' ] ) ),
+					isset( $_GET[ 'page' ] ) && $menu_slug == $_GET[ 'page' ] ? ' nav-tab-active' : '',
+					esc_html( $tab[ 'label' ] )
+				);
+				
+				echo $html;
+				 
+				$admin_page_hooks[ $menu_slug ] = sanitize_title( $tab[ 'label' ] ); 
+			} else {
+				
+				// Set class for stylesheet
+				$class    = ( $tab[ 'url' ] == $pagenow ) ? ' nav-tab-active' : '';
+				// Adds aria-selected to each of the tabs
+				$selected = ( $tab[ 'url' ] == $pagenow ) ? 'true' : 'false';
+				// Markup for each tab
+				$tab_html = '<a href="' . $tab['url'] . '?id=' . $id . '" class="nav-tab' 
+					. $class . '" role="tab" aria-controls="' . sanitize_title( $tab_id ) . '" aria-selected="' 
+					. $selected . '">' . esc_html( $tab[ 'label' ] ) . '</a>';
+				
+				echo apply_filters( 'network_edit_site_tab_html', $tab_html, $tab, $class, $id ); 
+			} 
+		} 
+} 
+ 
+
 /**
  * Whether or not we can edit this network from this page
  *
diff --git wp-admin/network/site-info.php wp-admin/network/site-info.php
index 6607b8f..44017c0 100644
--- wp-admin/network/site-info.php
+++ wp-admin/network/site-info.php
@@ -97,19 +97,8 @@ require( ABSPATH . 'wp-admin/admin-header.php' );
 
 <div class="wrap">
 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
-<h3 class="nav-tab-wrapper">
-<?php
-$tabs = array(
-	'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
-	'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
-	'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
-	'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
-);
-foreach ( $tabs as $tab_id => $tab ) {
-	$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-	echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
-}
-?>
+<h3 class="nav-tab-wrapper" role="tablist">
+<?php network_edit_site_tabs( $id ); ?>
 </h3>
 <?php
 if ( ! empty( $messages ) ) {
diff --git wp-admin/network/site-settings.php wp-admin/network/site-settings.php
index 5e1ffdd..4243c64 100644
--- wp-admin/network/site-settings.php
+++ wp-admin/network/site-settings.php
@@ -88,19 +88,8 @@ require( ABSPATH . 'wp-admin/admin-header.php' );
 
 <div class="wrap">
 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
-<h3 class="nav-tab-wrapper">
-<?php
-$tabs = array(
-	'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
-	'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
-	'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
-	'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
-);
-foreach ( $tabs as $tab_id => $tab ) {
-	$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-	echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
-}
-?>
+<h3 class="nav-tab-wrapper" role="tablist">
+<?php network_edit_site_tabs( $id ); ?>
 </h3>
 <?php
 if ( ! empty( $messages ) ) {
diff --git wp-admin/network/site-themes.php wp-admin/network/site-themes.php
index 646eb08..fec2b3c 100644
--- wp-admin/network/site-themes.php
+++ wp-admin/network/site-themes.php
@@ -136,19 +136,8 @@ require( ABSPATH . 'wp-admin/admin-header.php' ); ?>
 
 <div class="wrap">
 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
-<h3 class="nav-tab-wrapper">
-<?php
-$tabs = array(
-	'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
-	'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
-	'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
-	'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
-);
-foreach ( $tabs as $tab_id => $tab ) {
-	$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-	echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
-}
-?>
+<h3 class="nav-tab-wrapper" role="tablist">
+<?php network_edit_site_tabs( $id ); ?>
 </h3><?php
 
 if ( isset( $_GET['enabled'] ) ) {
diff --git wp-admin/network/site-users.php wp-admin/network/site-users.php
index 322400b..7184100 100644
--- wp-admin/network/site-users.php
+++ wp-admin/network/site-users.php
@@ -181,19 +181,8 @@ var current_site_id = <?php echo $id; ?>;
 
 <div class="wrap">
 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
-<h3 class="nav-tab-wrapper">
-<?php
-$tabs = array(
-	'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
-	'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
-	'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
-	'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
-);
-foreach ( $tabs as $tab_id => $tab ) {
-	$class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-	echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
-}
-?>
+<h3 class="nav-tab-wrapper" role="tablist">
+<?php network_edit_site_tabs( $id ); ?>
 </h3><?php
 
 if ( isset($_GET['update']) ) :
-- 
1.8.0.msysgit.0

