wp/wp-admin/network/settings.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
equal deleted inserted replaced
4:346c88efed21 5:5e2f62d02dcd
     8  */
     8  */
     9 
     9 
    10 /** Load WordPress Administration Bootstrap */
    10 /** Load WordPress Administration Bootstrap */
    11 require_once( dirname( __FILE__ ) . '/admin.php' );
    11 require_once( dirname( __FILE__ ) . '/admin.php' );
    12 
    12 
       
    13 /** WordPress Translation Install API */
       
    14 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
       
    15 
    13 if ( ! is_multisite() )
    16 if ( ! is_multisite() )
    14 	wp_die( __( 'Multisite support is not enabled.' ) );
    17 	wp_die( __( 'Multisite support is not enabled.' ) );
    15 
    18 
    16 if ( ! current_user_can( 'manage_network_options' ) )
    19 if ( ! current_user_can( 'manage_network_options' ) )
    17 	wp_die( __( 'You do not have permission to access this page.' ) );
    20 	wp_die( __( 'You do not have permission to access this page.' ), 403 );
    18 
    21 
    19 $title = __( 'Network Settings' );
    22 $title = __( 'Network Settings' );
    20 $parent_file = 'settings.php';
    23 $parent_file = 'settings.php';
       
    24 
       
    25 /**
       
    26  * Print JavaScript in the header on the Network Settings screen.
       
    27  *
       
    28  * @since 4.1.0
       
    29 */
       
    30 function network_settings_add_js() {
       
    31 ?>
       
    32 <script type="text/javascript">
       
    33 jQuery(document).ready( function($) {
       
    34 	var languageSelect = $( '#WPLANG' );
       
    35 	$( 'form' ).submit( function() {
       
    36 		// Don't show a spinner for English and installed languages,
       
    37 		// as there is nothing to download.
       
    38 		if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
       
    39 			$( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
       
    40 		}
       
    41 	});
       
    42 });
       
    43 </script>
       
    44 <?php
       
    45 }
       
    46 add_action( 'admin_head', 'network_settings_add_js' );
    21 
    47 
    22 get_current_screen()->add_help_tab( array(
    48 get_current_screen()->add_help_tab( array(
    23 		'id'      => 'overview',
    49 		'id'      => 'overview',
    24 		'title'   => __('Overview'),
    50 		'title'   => __('Overview'),
    25 		'content' =>
    51 		'content' =>
    26 			'<p>' . __('This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site&#8217;s options.') . '</p>' .
    52 			'<p>' . __('This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site&#8217;s options.') . '</p>' .
    27 			'<p>' . __('Operational settings has fields for the network&#8217;s name and admin email.') . '</p>' .
    53 			'<p>' . __('Operational settings has fields for the network&#8217;s name and admin email.') . '</p>' .
    28 			'<p>' . __('Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.') . '</p>' .
    54 			'<p>' . __('Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.') . '</p>' .
    29 			'<p>' . __('New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what&#8127;s put in the first post, page, comment, comment author, and comment URL.') . '</p>' .
    55 			'<p>' . __('New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what&#8127;s put in the first post, page, comment, comment author, and comment URL.') . '</p>' .
    30 			'<p>' . __('Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).') . '</p>' .
    56 			'<p>' . __('Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).') . '</p>' .
       
    57 			'<p>' . __( 'You can set the language, and the translation files will be automatically downloaded and installed (available if your filesystem is writable).' ) . '</p>' .
    31 			'<p>' . __('Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.') . '</p>' .
    58 			'<p>' . __('Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.') . '</p>' .
    32 			'<p>' . __('Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.') . '</p>'
    59 			'<p>' . __('Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.') . '</p>'
    33 ) );
    60 ) );
    34 
    61 
    35 get_current_screen()->set_help_sidebar(
    62 get_current_screen()->set_help_sidebar(
    36 	'<p><strong>' . __('For more information:') . '</strong></p>' .
    63 	'<p><strong>' . __('For more information:') . '</strong></p>' .
    37 	'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Settings_Screen" target="_blank">Documentation on Network Settings</a>') . '</p>' .
    64 	'<p>' . __('<a href="https://codex.wordpress.org/Network_Admin_Settings_Screen" target="_blank">Documentation on Network Settings</a>') . '</p>' .
    38 	'<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    65 	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    39 );
    66 );
    40 
    67 
    41 if ( $_POST ) {
    68 if ( $_POST ) {
    42 	do_action( 'wpmuadminedit' , '' );
    69 	/** This action is documented in wp-admin/network/edit.php */
       
    70 	do_action( 'wpmuadminedit' );
    43 
    71 
    44 	check_admin_referer( 'siteoptions' );
    72 	check_admin_referer( 'siteoptions' );
    45 
    73 
    46 	$checked_options = array( 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 );
    74 	$checked_options = array( 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 );
    47 	foreach ( $checked_options as $option_name => $option_unchecked_value ) {
    75 	foreach ( $checked_options as $option_name => $option_unchecked_value ) {
    55 		'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author',
    83 		'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author',
    56 		'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled',
    84 		'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled',
    57 		'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'admin_email',
    85 		'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'admin_email',
    58 	);
    86 	);
    59 
    87 
       
    88 	// Handle translation install.
       
    89 	if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) {  // @todo: Skip if already installed
       
    90 		$language = wp_download_language_pack( $_POST['WPLANG'] );
       
    91 		if ( $language ) {
       
    92 			$_POST['WPLANG'] = $language;
       
    93 		}
       
    94 	}
       
    95 
    60 	foreach ( $options as $option_name ) {
    96 	foreach ( $options as $option_name ) {
    61 		if ( ! isset($_POST[$option_name]) )
    97 		if ( ! isset($_POST[$option_name]) )
    62 			continue;
    98 			continue;
    63 		$value = wp_unslash( $_POST[$option_name] );
    99 		$value = wp_unslash( $_POST[$option_name] );
    64 		update_site_option( $option_name, $value );
   100 		update_site_option( $option_name, $value );
    65 	}
   101 	}
    66 
   102 
    67 	// Update more options here
   103 	/**
       
   104 	 * Fires after the network options are updated.
       
   105 	 *
       
   106 	 * @since MU
       
   107 	 */
    68 	do_action( 'update_wpmu_options' );
   108 	do_action( 'update_wpmu_options' );
    69 
   109 
    70 	wp_redirect( add_query_arg( 'updated', 'true', network_admin_url( 'settings.php' ) ) );
   110 	wp_redirect( add_query_arg( 'updated', 'true', network_admin_url( 'settings.php' ) ) );
    71 	exit();
   111 	exit();
    72 }
   112 }
    73 
   113 
    74 include( ABSPATH . 'wp-admin/admin-header.php' );
   114 include( ABSPATH . 'wp-admin/admin-header.php' );
    75 
   115 
    76 if ( isset( $_GET['updated'] ) ) {
   116 if ( isset( $_GET['updated'] ) ) {
    77 	?><div id="message" class="updated"><p><?php _e( 'Options saved.' ) ?></p></div><?php
   117 	?><div id="message" class="updated notice is-dismissible"><p><?php _e( 'Options saved.' ) ?></p></div><?php
    78 }
   118 }
    79 ?>
   119 ?>
    80 
   120 
    81 <div class="wrap">
   121 <div class="wrap">
    82 	<?php screen_icon('options-general'); ?>
       
    83 	<h2><?php echo esc_html( $title ); ?></h2>
   122 	<h2><?php echo esc_html( $title ); ?></h2>
    84 	<form method="post" action="settings.php">
   123 	<form method="post" action="settings.php" novalidate="novalidate">
    85 		<?php wp_nonce_field( 'siteoptions' ); ?>
   124 		<?php wp_nonce_field( 'siteoptions' ); ?>
    86 		<h3><?php _e( 'Operational Settings' ); ?></h3>
   125 		<h3><?php _e( 'Operational Settings' ); ?></h3>
    87 		<table class="form-table">
   126 		<table class="form-table">
    88 			<tr valign="top">
   127 			<tr>
    89 				<th scope="row"><label for="site_name"><?php _e( 'Network Name' ) ?></label></th>
   128 				<th scope="row"><label for="site_name"><?php _e( 'Network Title' ) ?></label></th>
    90 				<td>
   129 				<td>
    91 					<input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( $current_site->site_name ) ?>" />
   130 					<input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( $current_site->site_name ) ?>" />
    92 					<br />
   131 				</td>
    93 					<?php _e( 'What you would like to call this network.' ) ?>
   132 			</tr>
    94 				</td>
   133 
    95 			</tr>
   134 			<tr>
    96 
       
    97 			<tr valign="top">
       
    98 				<th scope="row"><label for="admin_email"><?php _e( 'Network Admin Email' ) ?></label></th>
   135 				<th scope="row"><label for="admin_email"><?php _e( 'Network Admin Email' ) ?></label></th>
    99 				<td>
   136 				<td>
   100 					<input name="admin_email" type="text" id="admin_email" class="regular-text" value="<?php echo esc_attr( get_site_option('admin_email') ) ?>" />
   137 					<input name="admin_email" type="email" id="admin_email" aria-describedby="admin-email-desc" class="regular-text" value="<?php echo esc_attr( get_site_option( 'admin_email' ) ) ?>" />
   101 					<br />
   138 					<p class="description" id="admin-email-desc">
   102 					<?php printf( __( 'Registration and support emails will come from this address. An address such as <code>support@%s</code> is recommended.' ), $current_site->domain ); ?>
   139 						<?php _e( 'This email address will receive notifications. Registration and support emails will also come from this address.' ); ?>
       
   140 					</p>
   103 				</td>
   141 				</td>
   104 			</tr>
   142 			</tr>
   105 		</table>
   143 		</table>
   106 		<h3><?php _e( 'Registration Settings' ); ?></h3>
   144 		<h3><?php _e( 'Registration Settings' ); ?></h3>
   107 		<table class="form-table">
   145 		<table class="form-table">
   108 			<tr valign="top">
   146 			<tr>
   109 				<th scope="row"><?php _e( 'Allow new registrations' ) ?></th>
   147 				<th scope="row"><?php _e( 'Allow new registrations' ) ?></th>
   110 				<?php
   148 				<?php
   111 				if ( !get_site_option( 'registration' ) )
   149 				if ( !get_site_option( 'registration' ) )
   112 					update_site_option( 'registration', 'none' );
   150 					update_site_option( 'registration', 'none' );
   113 				$reg = get_site_option( 'registration' );
   151 				$reg = get_site_option( 'registration' );
   114 				?>
   152 				?>
   115 				<td>
   153 				<td>
       
   154 					<fieldset>
       
   155 					<legend class="screen-reader-text"><?php _e( 'New registrations settings' ) ?></legend>
   116 					<label><input name="registration" type="radio" id="registration1" value="none"<?php checked( $reg, 'none') ?> /> <?php _e( 'Registration is disabled.' ); ?></label><br />
   156 					<label><input name="registration" type="radio" id="registration1" value="none"<?php checked( $reg, 'none') ?> /> <?php _e( 'Registration is disabled.' ); ?></label><br />
   117 					<label><input name="registration" type="radio" id="registration2" value="user"<?php checked( $reg, 'user') ?> /> <?php _e( 'User accounts may be registered.' ); ?></label><br />
   157 					<label><input name="registration" type="radio" id="registration2" value="user"<?php checked( $reg, 'user') ?> /> <?php _e( 'User accounts may be registered.' ); ?></label><br />
   118 					<label><input name="registration" type="radio" id="registration3" value="blog"<?php checked( $reg, 'blog') ?> /> <?php _e( 'Logged in users may register new sites.' ); ?></label><br />
   158 					<label><input name="registration" type="radio" id="registration3" value="blog"<?php checked( $reg, 'blog') ?> /> <?php _e( 'Logged in users may register new sites.' ); ?></label><br />
   119 					<label><input name="registration" type="radio" id="registration4" value="all"<?php checked( $reg, 'all') ?> /> <?php _e( 'Both sites and user accounts can be registered.' ); ?></label><br />
   159 					<label><input name="registration" type="radio" id="registration4" value="all"<?php checked( $reg, 'all') ?> /> <?php _e( 'Both sites and user accounts can be registered.' ); ?></label>
   120 					<?php if ( is_subdomain_install() )
   160 					<?php if ( is_subdomain_install() ) {
   121 						_e( 'If registration is disabled, please set <code>NOBLOGREDIRECT</code> in <code>wp-config.php</code> to a URL you will redirect visitors to if they visit a non-existent site.' );
   161 						echo '<p class="description">' . __( 'If registration is disabled, please set <code>NOBLOGREDIRECT</code> in <code>wp-config.php</code> to a URL you will redirect visitors to if they visit a non-existent site.' ) . '</p>';
   122 					?>
   162 					} ?>
   123 				</td>
   163 					</fieldset>
   124 			</tr>
   164 				</td>
   125 
   165 			</tr>
   126 			<tr valign="top">
   166 
       
   167 			<tr>
   127 				<th scope="row"><?php _e( 'Registration notification' ) ?></th>
   168 				<th scope="row"><?php _e( 'Registration notification' ) ?></th>
   128 				<?php
   169 				<?php
   129 				if ( !get_site_option( 'registrationnotification' ) )
   170 				if ( !get_site_option( 'registrationnotification' ) )
   130 					update_site_option( 'registrationnotification', 'yes' );
   171 					update_site_option( 'registrationnotification', 'yes' );
   131 				?>
   172 				?>
   132 				<td>
   173 				<td>
   133 					<label><input name="registrationnotification" type="checkbox" id="registrationnotification" value="yes"<?php checked( get_site_option( 'registrationnotification' ), 'yes' ) ?> /> <?php _e( 'Send the network admin an email notification every time someone registers a site or user account.' ) ?></label>
   174 					<label><input name="registrationnotification" type="checkbox" id="registrationnotification" value="yes"<?php checked( get_site_option( 'registrationnotification' ), 'yes' ) ?> /> <?php _e( 'Send the network admin an email notification every time someone registers a site or user account.' ) ?></label>
   134 				</td>
   175 				</td>
   135 			</tr>
   176 			</tr>
   136 
   177 
   137 			<tr valign="top" id="addnewusers">
   178 			<tr id="addnewusers">
   138 				<th scope="row"><?php _e( 'Add New Users' ) ?></th>
   179 				<th scope="row"><?php _e( 'Add New Users' ) ?></th>
   139 				<td>
   180 				<td>
   140 					<label><input name="add_new_users" type="checkbox" id="add_new_users" value="1"<?php checked( get_site_option( 'add_new_users' ) ) ?> /> <?php _e( 'Allow site administrators to add new users to their site via the "Users &rarr; Add New" page.' ); ?></label>
   181 					<label><input name="add_new_users" type="checkbox" id="add_new_users" value="1"<?php checked( get_site_option( 'add_new_users' ) ) ?> /> <?php _e( 'Allow site administrators to add new users to their site via the "Users &rarr; Add New" page.' ); ?></label>
   141 				</td>
   182 				</td>
   142 			</tr>
   183 			</tr>
   143 
   184 
   144 			<tr valign="top">
   185 			<tr>
   145 				<th scope="row"><label for="illegal_names"><?php _e( 'Banned Names' ) ?></label></th>
   186 				<th scope="row"><label for="illegal_names"><?php _e( 'Banned Names' ) ?></label></th>
   146 				<td>
   187 				<td>
   147 					<input name="illegal_names" type="text" id="illegal_names" class="large-text" value="<?php echo esc_attr( implode( " ", (array) get_site_option( 'illegal_names' ) ) ); ?>" size="45" />
   188 					<input name="illegal_names" type="text" id="illegal_names" aria-describedby="illegal-names-desc" class="large-text" value="<?php echo esc_attr( implode( " ", (array) get_site_option( 'illegal_names' ) ) ); ?>" size="45" />
   148 					<br />
   189 					<p class="description" id="illegal-names-desc">
   149 					<?php _e( 'Users are not allowed to register these sites. Separate names by spaces.' ) ?>
   190 						<?php _e( 'Users are not allowed to register these sites. Separate names by spaces.' ) ?>
   150 				</td>
   191 					</p>
   151 			</tr>
   192 				</td>
   152 
   193 			</tr>
   153 			<tr valign="top">
   194 
       
   195 			<tr>
   154 				<th scope="row"><label for="limited_email_domains"><?php _e( 'Limited Email Registrations' ) ?></label></th>
   196 				<th scope="row"><label for="limited_email_domains"><?php _e( 'Limited Email Registrations' ) ?></label></th>
   155 				<td>
   197 				<td>
   156 					<?php $limited_email_domains = get_site_option( 'limited_email_domains' );
   198 					<?php $limited_email_domains = get_site_option( 'limited_email_domains' );
   157 					$limited_email_domains = str_replace( ' ', "\n", $limited_email_domains ); ?>
   199 					$limited_email_domains = str_replace( ' ', "\n", $limited_email_domains ); ?>
   158 					<textarea name="limited_email_domains" id="limited_email_domains" cols="45" rows="5">
   200 					<textarea name="limited_email_domains" id="limited_email_domains" aria-describedby="limited-email-domains-desc" cols="45" rows="5">
   159 <?php echo esc_textarea( $limited_email_domains == '' ? '' : implode( "\n", (array) $limited_email_domains ) ); ?></textarea>
   201 <?php echo esc_textarea( $limited_email_domains == '' ? '' : implode( "\n", (array) $limited_email_domains ) ); ?></textarea>
   160 					<br />
   202 					<p class="description" id="limited-email-domains-desc">
   161 					<?php _e( 'If you want to limit site registrations to certain domains. One domain per line.' ) ?>
   203 						<?php _e( 'If you want to limit site registrations to certain domains. One domain per line.' ) ?>
   162 				</td>
   204 					</p>
   163 			</tr>
   205 				</td>
   164 
   206 			</tr>
   165 			<tr valign="top">
   207 
       
   208 			<tr>
   166 				<th scope="row"><label for="banned_email_domains"><?php _e('Banned Email Domains') ?></label></th>
   209 				<th scope="row"><label for="banned_email_domains"><?php _e('Banned Email Domains') ?></label></th>
   167 				<td>
   210 				<td>
   168 					<textarea name="banned_email_domains" id="banned_email_domains" cols="45" rows="5">
   211 					<textarea name="banned_email_domains" id="banned_email_domains" aria-describedby="banned-email-domains-desc" cols="45" rows="5">
   169 <?php echo esc_textarea( get_site_option( 'banned_email_domains' ) == '' ? '' : implode( "\n", (array) get_site_option( 'banned_email_domains' ) ) ); ?></textarea>
   212 <?php echo esc_textarea( get_site_option( 'banned_email_domains' ) == '' ? '' : implode( "\n", (array) get_site_option( 'banned_email_domains' ) ) ); ?></textarea>
   170 					<br />
   213 					<p class="description" id="banned-email-domains-desc">
   171 					<?php _e( 'If you want to ban domains from site registrations. One domain per line.' ) ?>
   214 						<?php _e( 'If you want to ban domains from site registrations. One domain per line.' ) ?>
       
   215 					</p>
   172 				</td>
   216 				</td>
   173 			</tr>
   217 			</tr>
   174 
   218 
   175 		</table>
   219 		</table>
   176 		<h3><?php _e('New Site Settings'); ?></h3>
   220 		<h3><?php _e('New Site Settings'); ?></h3>
   177 		<table class="form-table">
   221 		<table class="form-table">
   178 
   222 
   179 			<tr valign="top">
   223 			<tr>
   180 				<th scope="row"><label for="welcome_email"><?php _e( 'Welcome Email' ) ?></label></th>
   224 				<th scope="row"><label for="welcome_email"><?php _e( 'Welcome Email' ) ?></label></th>
   181 				<td>
   225 				<td>
   182 					<textarea name="welcome_email" id="welcome_email" rows="5" cols="45" class="large-text">
   226 					<textarea name="welcome_email" id="welcome_email" aria-describedby="welcome-email-desc" rows="5" cols="45" class="large-text">
   183 <?php echo esc_textarea( get_site_option( 'welcome_email' ) ) ?></textarea>
   227 <?php echo esc_textarea( get_site_option( 'welcome_email' ) ) ?></textarea>
   184 					<br />
   228 					<p class="description" id="welcome-email-desc">
   185 					<?php _e( 'The welcome email sent to new site owners.' ) ?>
   229 						<?php _e( 'The welcome email sent to new site owners.' ) ?>
   186 				</td>
   230 					</p>
   187 			</tr>
   231 				</td>
   188 			<tr valign="top">
   232 			</tr>
       
   233 			<tr>
   189 				<th scope="row"><label for="welcome_user_email"><?php _e( 'Welcome User Email' ) ?></label></th>
   234 				<th scope="row"><label for="welcome_user_email"><?php _e( 'Welcome User Email' ) ?></label></th>
   190 				<td>
   235 				<td>
   191 					<textarea name="welcome_user_email" id="welcome_user_email" rows="5" cols="45" class="large-text">
   236 					<textarea name="welcome_user_email" id="welcome_user_email" aria-describedby="welcome-user-email-desc" rows="5" cols="45" class="large-text">
   192 <?php echo esc_textarea( get_site_option( 'welcome_user_email' ) ) ?></textarea>
   237 <?php echo esc_textarea( get_site_option( 'welcome_user_email' ) ) ?></textarea>
   193 					<br />
   238 					<p class="description" id="welcome-user-email-desc">
   194 					<?php _e( 'The welcome email sent to new users.' ) ?>
   239 						<?php _e( 'The welcome email sent to new users.' ) ?>
   195 				</td>
   240 					</p>
   196 			</tr>
   241 				</td>
   197 			<tr valign="top">
   242 			</tr>
       
   243 			<tr>
   198 				<th scope="row"><label for="first_post"><?php _e( 'First Post' ) ?></label></th>
   244 				<th scope="row"><label for="first_post"><?php _e( 'First Post' ) ?></label></th>
   199 				<td>
   245 				<td>
   200 					<textarea name="first_post" id="first_post" rows="5" cols="45" class="large-text">
   246 					<textarea name="first_post" id="first_post" aria-describedby="first-post-desc" rows="5" cols="45" class="large-text">
   201 <?php echo esc_textarea( get_site_option( 'first_post' ) ) ?></textarea>
   247 <?php echo esc_textarea( get_site_option( 'first_post' ) ) ?></textarea>
   202 					<br />
   248 					<p class="description" id="first-post-desc">
   203 					<?php _e( 'The first post on a new site.' ) ?>
   249 						<?php _e( 'The first post on a new site.' ) ?>
   204 				</td>
   250 					</p>
   205 			</tr>
   251 				</td>
   206 			<tr valign="top">
   252 			</tr>
       
   253 			<tr>
   207 				<th scope="row"><label for="first_page"><?php _e( 'First Page' ) ?></label></th>
   254 				<th scope="row"><label for="first_page"><?php _e( 'First Page' ) ?></label></th>
   208 				<td>
   255 				<td>
   209 					<textarea name="first_page" id="first_page" rows="5" cols="45" class="large-text">
   256 					<textarea name="first_page" id="first_page" aria-describedby="first-page-desc" rows="5" cols="45" class="large-text">
   210 <?php echo esc_textarea( get_site_option( 'first_page' ) ) ?></textarea>
   257 <?php echo esc_textarea( get_site_option( 'first_page' ) ) ?></textarea>
   211 					<br />
   258 					<p class="description" id="first-page-desc">
   212 					<?php _e( 'The first page on a new site.' ) ?>
   259 						<?php _e( 'The first page on a new site.' ) ?>
   213 				</td>
   260 					</p>
   214 			</tr>
   261 				</td>
   215 			<tr valign="top">
   262 			</tr>
       
   263 			<tr>
   216 				<th scope="row"><label for="first_comment"><?php _e( 'First Comment' ) ?></label></th>
   264 				<th scope="row"><label for="first_comment"><?php _e( 'First Comment' ) ?></label></th>
   217 				<td>
   265 				<td>
   218 					<textarea name="first_comment" id="first_comment" rows="5" cols="45" class="large-text">
   266 					<textarea name="first_comment" id="first_comment" aria-describedby="first-comment-desc" rows="5" cols="45" class="large-text">
   219 <?php echo esc_textarea( get_site_option( 'first_comment' ) ) ?></textarea>
   267 <?php echo esc_textarea( get_site_option( 'first_comment' ) ) ?></textarea>
   220 					<br />
   268 					<p class="description" id="first-comment-desc">
   221 					<?php _e( 'The first comment on a new site.' ) ?>
   269 						<?php _e( 'The first comment on a new site.' ) ?>
   222 				</td>
   270 					</p>
   223 			</tr>
   271 				</td>
   224 			<tr valign="top">
   272 			</tr>
       
   273 			<tr>
   225 				<th scope="row"><label for="first_comment_author"><?php _e( 'First Comment Author' ) ?></label></th>
   274 				<th scope="row"><label for="first_comment_author"><?php _e( 'First Comment Author' ) ?></label></th>
   226 				<td>
   275 				<td>
   227 					<input type="text" size="40" name="first_comment_author" id="first_comment_author" value="<?php echo get_site_option('first_comment_author') ?>" />
   276 					<input type="text" size="40" name="first_comment_author" id="first_comment_author" aria-describedby="first-comment-author-desc" value="<?php echo get_site_option('first_comment_author') ?>" />
   228 					<br />
   277 					<p class="description" id="first-comment-author-desc">
   229 					<?php _e( 'The author of the first comment on a new site.' ) ?>
   278 						<?php _e( 'The author of the first comment on a new site.' ) ?>
   230 				</td>
   279 					</p>
   231 			</tr>
   280 				</td>
   232 			<tr valign="top">
   281 			</tr>
       
   282 			<tr>
   233 				<th scope="row"><label for="first_comment_url"><?php _e( 'First Comment URL' ) ?></label></th>
   283 				<th scope="row"><label for="first_comment_url"><?php _e( 'First Comment URL' ) ?></label></th>
   234 				<td>
   284 				<td>
   235 					<input type="text" size="40" name="first_comment_url" id="first_comment_url" value="<?php echo esc_attr( get_site_option( 'first_comment_url' ) ) ?>" />
   285 					<input type="text" size="40" name="first_comment_url" id="first_comment_url" aria-describedby="first-comment-url-desc" value="<?php echo esc_attr( get_site_option( 'first_comment_url' ) ) ?>" />
   236 					<br />
   286 					<p class="description" id="first-comment-url-desc">
   237 					<?php _e( 'The URL for the first comment on a new site.' ) ?>
   287 						<?php _e( 'The URL for the first comment on a new site.' ) ?>
       
   288 					</p>
   238 				</td>
   289 				</td>
   239 			</tr>
   290 			</tr>
   240 		</table>
   291 		</table>
   241 		<h3><?php _e( 'Upload Settings' ); ?></h3>
   292 		<h3><?php _e( 'Upload Settings' ); ?></h3>
   242 		<table class="form-table">
   293 		<table class="form-table">
   243 			<tr valign="top">
   294 			<tr>
   244 				<th scope="row"><?php _e( 'Site upload space' ) ?></th>
   295 				<th scope="row"><?php _e( 'Site upload space' ) ?></th>
   245 				<td>
   296 				<td>
   246 				<label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( get_site_option( 'upload_space_check_disabled' ), 0 ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
   297 					<label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( get_site_option( 'upload_space_check_disabled' ), 0 ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" aria-describedby="blog-upload-space-desc" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
   247 				</td>
   298 					<p class="screen-reader-text" id="blog-upload-space-desc">
   248 			</tr>
   299 						<?php _e( 'Size in megabytes' ) ?>
   249 
   300 					</p>
   250 			<tr valign="top">
   301 				</td>
       
   302 			</tr>
       
   303 
       
   304 			<tr>
   251 				<th scope="row"><label for="upload_filetypes"><?php _e( 'Upload file types' ) ?></label></th>
   305 				<th scope="row"><label for="upload_filetypes"><?php _e( 'Upload file types' ) ?></label></th>
   252 				<td><input name="upload_filetypes" type="text" id="upload_filetypes" class="large-text" value="<?php echo esc_attr( get_site_option('upload_filetypes', 'jpg jpeg png gif') ) ?>" size="45" /></td>
   306 				<td>
   253 			</tr>
   307 					<input name="upload_filetypes" type="text" id="upload_filetypes" aria-describedby="upload-filetypes-desc" class="large-text" value="<?php echo esc_attr( get_site_option( 'upload_filetypes', 'jpg jpeg png gif' ) ) ?>" size="45" />
   254 
   308 					<p class="description" id="upload-filetypes-desc">
   255 			<tr valign="top">
   309 						<?php _e( 'Allowed file types. Separate types by spaces.' ) ?>
       
   310 					</p>
       
   311 				</td>
       
   312 			</tr>
       
   313 
       
   314 			<tr>
   256 				<th scope="row"><label for="fileupload_maxk"><?php _e( 'Max upload file size' ) ?></label></th>
   315 				<th scope="row"><label for="fileupload_maxk"><?php _e( 'Max upload file size' ) ?></label></th>
   257 				<td><?php printf( _x( '%s KB', 'File size in kilobytes' ), '<input name="fileupload_maxk" type="number" min="0" style="width: 100px" id="fileupload_maxk" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" />' ); ?></td>
   316 				<td>
       
   317 					<?php printf( _x( '%s KB', 'File size in kilobytes' ), '<input name="fileupload_maxk" type="number" min="0" style="width: 100px" id="fileupload_maxk" aria-describedby="fileupload-maxk-desc" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" />' ); ?>
       
   318 					<p class="screen-reader-text" id="fileupload-maxk-desc">
       
   319 						<?php _e( 'Size in kilobytes' ) ?>
       
   320 					</p>
       
   321 				</td>
   258 			</tr>
   322 			</tr>
   259 		</table>
   323 		</table>
   260 
   324 
   261 <?php
   325 		<?php
   262 		$languages = get_available_languages();
   326 		$languages = get_available_languages();
   263 		if ( ! empty( $languages ) ) {
   327 		$translations = wp_get_available_translations();
   264 			$lang = get_site_option( 'WPLANG' );
   328 		if ( ! empty( $languages ) || ! empty( $translations ) ) {
   265 ?>
   329 			?>
   266 		<h3><?php _e( 'Language Settings' ); ?></h3>
   330 			<h3><?php _e( 'Language Settings' ); ?></h3>
   267 		<table class="form-table">
   331 			<table class="form-table">
   268 				<tr valign="top">
   332 				<tr>
   269 					<th><label for="WPLANG"><?php _e( 'Default Language' ); ?></label></th>
   333 					<th><label for="WPLANG"><?php _e( 'Default Language' ); ?></label></th>
   270 					<td>
   334 					<td>
   271 						<select name="WPLANG" id="WPLANG">
   335 						<?php
   272 							<?php mu_dropdown_languages( $languages, get_site_option( 'WPLANG' ) ); ?>
   336 						$lang = get_site_option( 'WPLANG' );
   273 						</select>
   337 						if ( ! in_array( $lang, $languages ) ) {
       
   338 							$lang = '';
       
   339 						}
       
   340 
       
   341 						wp_dropdown_languages( array(
       
   342 							'name'         => 'WPLANG',
       
   343 							'id'           => 'WPLANG',
       
   344 							'selected'     => $lang,
       
   345 							'languages'    => $languages,
       
   346 							'translations' => $translations,
       
   347 							'show_available_translations' => wp_can_install_language_pack(),
       
   348 						) );
       
   349 						?>
   274 					</td>
   350 					</td>
   275 				</tr>
   351 				</tr>
   276 		</table>
   352 			</table>
   277 <?php
   353 			<?php
   278 		} // languages
   354 		}
   279 ?>
   355 		?>
   280 
   356 
   281 		<h3><?php _e( 'Menu Settings' ); ?></h3>
   357 		<h3><?php _e( 'Menu Settings' ); ?></h3>
   282 		<table id="menu" class="form-table">
   358 		<table id="menu" class="form-table">
   283 			<tr valign="top">
   359 			<tr>
   284 				<th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
   360 				<th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
   285 				<td>
   361 				<td>
   286 			<?php
   362 			<?php
   287 			$menu_perms = get_site_option( 'menu_items' );
   363 			$menu_perms = get_site_option( 'menu_items' );
       
   364 			/**
       
   365 			 * Filter available network-wide administration menu options.
       
   366 			 *
       
   367 			 * Options returned to this filter are output as individual checkboxes that, when selected,
       
   368 			 * enable site administrator access to the specified administration menu in certain contexts.
       
   369 			 *
       
   370 			 * Adding options for specific menus here hinges on the appropriate checks and capabilities
       
   371 			 * being in place in the site dashboard on the other side. For instance, when the single
       
   372 			 * default option, 'plugins' is enabled, site administrators are granted access to the Plugins
       
   373 			 * screen in their individual sites' dashboards.
       
   374 			 *
       
   375 			 * @since MU
       
   376 			 *
       
   377 			 * @param array $admin_menus The menu items available.
       
   378 			 */
   288 			$menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
   379 			$menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
       
   380 			$fieldset_end = '';
       
   381 			if ( count( (array) $menu_items ) > 1 ) {
       
   382 				echo '<fieldset><legend class="screen-reader-text">' . __( 'Enable menus' ) . '</legend>';
       
   383 				$fieldset_end = '</fieldset>';
       
   384 			}
   289 			foreach ( (array) $menu_items as $key => $val ) {
   385 			foreach ( (array) $menu_items as $key => $val ) {
   290 				echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" . ( isset( $menu_perms[$key] ) ? checked( $menu_perms[$key], '1', false ) : '' ) . " /> " . esc_html( $val ) . "</label><br/>";
   386 				echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" . ( isset( $menu_perms[$key] ) ? checked( $menu_perms[$key], '1', false ) : '' ) . " /> " . esc_html( $val ) . "</label><br/>";
   291 			}
   387 			}
       
   388 			echo $fieldset_end;
   292 			?>
   389 			?>
   293 				</td>
   390 				</td>
   294 			</tr>
   391 			</tr>
   295 		</table>
   392 		</table>
   296 
   393 
   297 		<?php do_action( 'wpmu_options' ); // Add more options here ?>
   394 		<?php
   298 
   395 		/**
       
   396 		 * Fires at the end of the Network Settings form, before the submit button.
       
   397 		 *
       
   398 		 * @since MU
       
   399 		 */
       
   400 		do_action( 'wpmu_options' ); ?>
   299 		<?php submit_button(); ?>
   401 		<?php submit_button(); ?>
   300 	</form>
   402 	</form>
   301 </div>
   403 </div>
   302 
   404 
   303 <?php include( ABSPATH . 'wp-admin/admin-footer.php' ); ?>
   405 <?php include( ABSPATH . 'wp-admin/admin-footer.php' ); ?>