wp/wp-admin/options-general.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
equal deleted inserted replaced
4:346c88efed21 5:5e2f62d02dcd
     7  */
     7  */
     8 
     8 
     9 /** WordPress Administration Bootstrap */
     9 /** WordPress Administration Bootstrap */
    10 require_once( dirname( __FILE__ ) . '/admin.php' );
    10 require_once( dirname( __FILE__ ) . '/admin.php' );
    11 
    11 
       
    12 /** WordPress Translation Install API */
       
    13 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
       
    14 
    12 if ( ! current_user_can( 'manage_options' ) )
    15 if ( ! current_user_can( 'manage_options' ) )
    13 	wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) );
    16 	wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) );
    14 
    17 
    15 $title = __('General Settings');
    18 $title = __('General Settings');
    16 $parent_file = 'options-general.php';
    19 $parent_file = 'options-general.php';
    17 /* translators: date and time format for exact current time, mainly about timezones, see http://php.net/date */
    20 /* translators: date and time format for exact current time, mainly about timezones, see http://php.net/date */
    18 $timezone_format = _x('Y-m-d G:i:s', 'timezone date format');
    21 $timezone_format = _x('Y-m-d H:i:s', 'timezone date format');
    19 
    22 
    20 /**
    23 /**
    21  * Display JavaScript on the page.
    24  * Display JavaScript on the page.
    22  *
    25  *
    23  * @since 3.5.0
    26  * @since 3.5.0
    24  */
    27  */
    25 function options_general_add_js() {
    28 function options_general_add_js() {
    26 ?>
    29 ?>
    27 <script type="text/javascript">
    30 <script type="text/javascript">
    28 //<![CDATA[
       
    29 	jQuery(document).ready(function($){
    31 	jQuery(document).ready(function($){
       
    32 		var $siteName = $( '#wp-admin-bar-site-name' ).children( 'a' ).first(),
       
    33 			homeURL = ( <?php echo wp_json_encode( get_home_url() ); ?> || '' ).replace( /^(https?:\/\/)?(www\.)?/, '' );
       
    34 
       
    35 		$( '#blogname' ).on( 'input', function() {
       
    36 			var title = $.trim( $( this ).val() ) || homeURL;
       
    37 
       
    38 			// Truncate to 40 characters.
       
    39 			if ( 40 < title.length ) {
       
    40 				title = title.substring( 0, 40 ) + '\u2026';
       
    41 			}
       
    42 
       
    43 			$siteName.text( title );
       
    44 		});
       
    45 
    30 		$("input[name='date_format']").click(function(){
    46 		$("input[name='date_format']").click(function(){
    31 			if ( "date_format_custom_radio" != $(this).attr("id") )
    47 			if ( "date_format_custom_radio" != $(this).attr("id") )
    32 				$("input[name='date_format_custom']").val( $(this).val() ).siblings('.example').text( $(this).siblings('span').text() );
    48 				$( "input[name='date_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
    33 		});
    49 		});
    34 		$("input[name='date_format_custom']").focus(function(){
    50 		$("input[name='date_format_custom']").focus(function(){
    35 			$("#date_format_custom_radio").attr("checked", "checked");
    51 			$( '#date_format_custom_radio' ).prop( 'checked', true );
    36 		});
    52 		});
    37 
    53 
    38 		$("input[name='time_format']").click(function(){
    54 		$("input[name='time_format']").click(function(){
    39 			if ( "time_format_custom_radio" != $(this).attr("id") )
    55 			if ( "time_format_custom_radio" != $(this).attr("id") )
    40 				$("input[name='time_format_custom']").val( $(this).val() ).siblings('.example').text( $(this).siblings('span').text() );
    56 				$( "input[name='time_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
    41 		});
    57 		});
    42 		$("input[name='time_format_custom']").focus(function(){
    58 		$("input[name='time_format_custom']").focus(function(){
    43 			$("#time_format_custom_radio").attr("checked", "checked");
    59 			$( '#time_format_custom_radio' ).prop( 'checked', true );
    44 		});
    60 		});
    45 		$("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
    61 		$("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
    46 			var format = $(this);
    62 			var format = $(this);
    47 			format.siblings('.spinner').css('display', 'inline-block'); // show(); can't be used here
    63 			format.siblings( '.spinner' ).addClass( 'is-active' );
    48 			$.post(ajaxurl, {
    64 			$.post(ajaxurl, {
    49 					action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
    65 					action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
    50 					date : format.val()
    66 					date : format.val()
    51 				}, function(d) { format.siblings('.spinner').hide(); format.siblings('.example').text(d); } );
    67 				}, function(d) { format.siblings( '.spinner' ).removeClass( 'is-active' ); format.siblings('.example').text(d); } );
       
    68 		});
       
    69 
       
    70 		var languageSelect = $( '#WPLANG' );
       
    71 		$( 'form' ).submit( function() {
       
    72 			// Don't show a spinner for English and installed languages,
       
    73 			// as there is nothing to download.
       
    74 			if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
       
    75 				$( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
       
    76 			}
    52 		});
    77 		});
    53 	});
    78 	});
    54 //]]>
       
    55 </script>
    79 </script>
    56 <?php
    80 <?php
    57 }
    81 }
    58 add_action('admin_head', 'options_general_add_js');
    82 add_action('admin_head', 'options_general_add_js');
    59 
    83 
    63 if ( ! is_multisite() ) {
    87 if ( ! is_multisite() ) {
    64 	$options_help .= '<p>' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '</p>' .
    88 	$options_help .= '<p>' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '</p>' .
    65 		'<p>' . __('If you want site visitors to be able to register themselves, as opposed to by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site admin.') . '</p>';
    89 		'<p>' . __('If you want site visitors to be able to register themselves, as opposed to by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site admin.') . '</p>';
    66 }
    90 }
    67 
    91 
    68 $options_help .= '<p>' . __('UTC means Coordinated Universal Time.') . '</p>' .
    92 $options_help .= '<p>' . __( 'You can set the language, and the translation files will be automatically downloaded and installed (available if your filesystem is writable).' ) . '</p>' .
       
    93 	'<p>' . __( 'UTC means Coordinated Universal Time.' ) . '</p>' .
    69 	'<p>' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '</p>';
    94 	'<p>' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '</p>';
    70 
    95 
    71 get_current_screen()->add_help_tab( array(
    96 get_current_screen()->add_help_tab( array(
    72 	'id'      => 'overview',
    97 	'id'      => 'overview',
    73 	'title'   => __('Overview'),
    98 	'title'   => __('Overview'),
    74 	'content' => $options_help,
    99 	'content' => $options_help,
    75 ) );
   100 ) );
    76 
   101 
    77 get_current_screen()->set_help_sidebar(
   102 get_current_screen()->set_help_sidebar(
    78 	'<p><strong>' . __('For more information:') . '</strong></p>' .
   103 	'<p><strong>' . __('For more information:') . '</strong></p>' .
    79 	'<p>' . __('<a href="http://codex.wordpress.org/Settings_General_Screen" target="_blank">Documentation on General Settings</a>') . '</p>' .
   104 	'<p>' . __('<a href="https://codex.wordpress.org/Settings_General_Screen" target="_blank">Documentation on General Settings</a>') . '</p>' .
    80 	'<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
   105 	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    81 );
   106 );
    82 
   107 
    83 include( ABSPATH . 'wp-admin/admin-header.php' );
   108 include( ABSPATH . 'wp-admin/admin-header.php' );
    84 ?>
   109 ?>
    85 
   110 
    86 <div class="wrap">
   111 <div class="wrap">
    87 <?php screen_icon(); ?>
       
    88 <h2><?php echo esc_html( $title ); ?></h2>
   112 <h2><?php echo esc_html( $title ); ?></h2>
    89 
   113 
    90 <form method="post" action="options.php">
   114 <form method="post" action="options.php" novalidate="novalidate">
    91 <?php settings_fields('general'); ?>
   115 <?php settings_fields('general'); ?>
    92 
   116 
    93 <table class="form-table">
   117 <table class="form-table">
    94 <tr valign="top">
   118 <tr>
    95 <th scope="row"><label for="blogname"><?php _e('Site Title') ?></label></th>
   119 <th scope="row"><label for="blogname"><?php _e('Site Title') ?></label></th>
    96 <td><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" /></td>
   120 <td><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" /></td>
    97 </tr>
   121 </tr>
    98 <tr valign="top">
   122 <tr>
    99 <th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
   123 <th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
   100 <td><input name="blogdescription" type="text" id="blogdescription" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
   124 <td><input name="blogdescription" type="text" id="blogdescription" aria-describedby="tagline-description" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
   101 <p class="description"><?php _e('In a few words, explain what this site is about.') ?></p></td>
   125 <p class="description" id="tagline-description"><?php _e( 'In a few words, explain what this site is about.' ) ?></p></td>
   102 </tr>
   126 </tr>
   103 <?php if ( !is_multisite() ) { ?>
   127 <?php if ( !is_multisite() ) { ?>
   104 <tr valign="top">
   128 <tr>
   105 <th scope="row"><label for="siteurl"><?php _e('WordPress Address (URL)') ?></label></th>
   129 <th scope="row"><label for="siteurl"><?php _e('WordPress Address (URL)') ?></label></th>
   106 <td><input name="siteurl" type="text" id="siteurl" value="<?php form_option('siteurl'); ?>"<?php disabled( defined( 'WP_SITEURL' ) ); ?> class="regular-text code<?php if ( defined( 'WP_SITEURL' ) ) echo ' disabled' ?>" /></td>
   130 <td><input name="siteurl" type="url" id="siteurl" value="<?php form_option( 'siteurl' ); ?>"<?php disabled( defined( 'WP_SITEURL' ) ); ?> class="regular-text code<?php if ( defined( 'WP_SITEURL' ) ) echo ' disabled' ?>" /></td>
   107 </tr>
   131 </tr>
   108 <tr valign="top">
   132 <tr>
   109 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
   133 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
   110 <td><input name="home" type="text" id="home" value="<?php form_option('home'); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
   134 <td><input name="home" type="url" id="home" aria-describedby="home-description" value="<?php form_option( 'home' ); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
   111 <p class="description"><?php _e('Enter the address here if you want your site homepage <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">to be different from the directory</a> you installed WordPress.'); ?></p></td>
   135 <p class="description" id="home-description"><?php _e( 'Enter the address here if you <a href="https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">want your site home page to be different from your WordPress installation directory.</a>' ); ?></p></td>
   112 </tr>
   136 </tr>
   113 <tr valign="top">
   137 <tr>
   114 <th scope="row"><label for="admin_email"><?php _e('E-mail Address') ?> </label></th>
   138 <th scope="row"><label for="admin_email"><?php _e('E-mail Address') ?> </label></th>
   115 <td><input name="admin_email" type="text" id="admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text ltr" />
   139 <td><input name="admin_email" type="email" id="admin_email" aria-describedby="admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
   116 <p class="description"><?php _e('This address is used for admin purposes, like new user notification.') ?></p></td>
   140 <p class="description" id="admin-email-description"><?php _e( 'This address is used for admin purposes, like new user notification.' ) ?></p></td>
   117 </tr>
   141 </tr>
   118 <tr valign="top">
   142 <tr>
   119 <th scope="row"><?php _e('Membership') ?></th>
   143 <th scope="row"><?php _e('Membership') ?></th>
   120 <td> <fieldset><legend class="screen-reader-text"><span><?php _e('Membership') ?></span></legend><label for="users_can_register">
   144 <td> <fieldset><legend class="screen-reader-text"><span><?php _e('Membership') ?></span></legend><label for="users_can_register">
   121 <input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked('1', get_option('users_can_register')); ?> />
   145 <input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked('1', get_option('users_can_register')); ?> />
   122 <?php _e('Anyone can register') ?></label>
   146 <?php _e('Anyone can register') ?></label>
   123 </fieldset></td>
   147 </fieldset></td>
   124 </tr>
   148 </tr>
   125 <tr valign="top">
   149 <tr>
   126 <th scope="row"><label for="default_role"><?php _e('New User Default Role') ?></label></th>
   150 <th scope="row"><label for="default_role"><?php _e('New User Default Role') ?></label></th>
   127 <td>
   151 <td>
   128 <select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option('default_role') ); ?></select>
   152 <select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option('default_role') ); ?></select>
   129 </td>
   153 </td>
   130 </tr>
   154 </tr>
   131 <?php } else { ?>
   155 <?php } else { ?>
   132 <tr valign="top">
   156 <tr>
   133 <th scope="row"><label for="new_admin_email"><?php _e('E-mail Address') ?> </label></th>
   157 <th scope="row"><label for="new_admin_email"><?php _e('E-mail Address') ?> </label></th>
   134 <td><input name="new_admin_email" type="text" id="new_admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text ltr" />
   158 <td><input name="new_admin_email" type="email" id="new_admin_email" aria-describedby="new-admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
   135 <p class="description"><?php _e('This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>') ?></p>
   159 <p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ) ?></p>
   136 <?php
   160 <?php
   137 $new_admin_email = get_option( 'new_admin_email' );
   161 $new_admin_email = get_option( 'new_admin_email' );
   138 if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
   162 if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
   139 <div class="updated inline">
   163 <div class="updated inline">
   140 <p><?php printf( __('There is a pending change of the admin e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), esc_html( $new_admin_email ), esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) ) ); ?></p>
   164 <p><?php printf( __('There is a pending change of the admin e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), esc_html( $new_admin_email ), esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) ) ); ?></p>
   166 
   190 
   167 ?>
   191 ?>
   168 <th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
   192 <th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
   169 <td>
   193 <td>
   170 
   194 
   171 <select id="timezone_string" name="timezone_string">
   195 <select id="timezone_string" name="timezone_string" aria-describedby="timezone-description">
   172 <?php echo wp_timezone_choice($tzstring); ?>
   196 <?php echo wp_timezone_choice($tzstring); ?>
   173 </select>
   197 </select>
   174 
   198 
   175 	<span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n($timezone_format, false, 'gmt')); ?></span>
   199 	<span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n($timezone_format, false, 'gmt')); ?></span>
   176 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
   200 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
   177 	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
   201 	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
   178 <?php endif; ?>
   202 <?php endif; ?>
   179 <p class="description"><?php _e('Choose a city in the same timezone as you.'); ?></p>
   203 <p class="description" id="timezone-description"><?php _e( 'Choose a city in the same timezone as you.' ); ?></p>
   180 <?php if ($check_zone_info && $tzstring) : ?>
   204 <?php if ($check_zone_info && $tzstring) : ?>
   181 <br />
   205 <br />
   182 <span>
   206 <span>
   183 	<?php
   207 	<?php
   184 	// Set TZ so localtime works.
   208 	// Set TZ so localtime works.
   231 <?php
   255 <?php
   232 	/**
   256 	/**
   233 	* Filter the default date formats.
   257 	* Filter the default date formats.
   234 	*
   258 	*
   235 	* @since 2.7.0
   259 	* @since 2.7.0
       
   260 	* @since 4.0.0 Added ISO date standard YYYY-MM-DD format.
   236 	*
   261 	*
   237 	* @param array $default_date_formats Array of default date formats.
   262 	* @param array $default_date_formats Array of default date formats.
   238 	*/
   263 	*/
   239 	$date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y/m/d', 'm/d/Y', 'd/m/Y' ) ) );
   264 	$date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y-m-d', 'm/d/Y', 'd/m/Y' ) ) );
   240 
   265 
   241 	$custom = true;
   266 	$custom = true;
   242 
   267 
   243 	foreach ( $date_formats as $format ) {
   268 	foreach ( $date_formats as $format ) {
   244 		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='date_format' value='" . esc_attr($format) . "'";
   269 		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='date_format' value='" . esc_attr($format) . "'";
   245 		if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "==="
   270 		if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "==="
   246 			echo " checked='checked'";
   271 			echo " checked='checked'";
   247 			$custom = false;
   272 			$custom = false;
   248 		}
   273 		}
   249 		echo ' /> <span>' . date_i18n( $format ) . "</span></label><br />\n";
   274 		echo ' /> ' . date_i18n( $format ) . "</label><br />\n";
   250 	}
   275 	}
   251 
   276 
   252 	echo '	<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
   277 	echo '	<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
   253 	checked( $custom );
   278 	checked( $custom );
   254 	echo '/> ' . __('Custom:') . ' </label><input type="text" name="date_format_custom" value="' . esc_attr( get_option('date_format') ) . '" class="small-text" /> <span class="example"> ' . date_i18n( get_option('date_format') ) . "</span> <span class='spinner'></span>\n";
   279 	echo '/> ' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom date format in the following field' ) . "</span></label>\n";
   255 
   280 	echo '<label for="date_format_custom" class="screen-reader-text">' . __( 'Custom date format:' ) . '</label><input type="text" name="date_format_custom" id="date_format_custom" value="' . esc_attr( get_option('date_format') ) . '" class="small-text" /> <span class="screen-reader-text">' . __( 'example:' ) . ' </span><span class="example"> ' . date_i18n( get_option('date_format') ) . "</span> <span class='spinner'></span>\n";
   256 	echo "\t<p>" . __('<a href="http://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.') . "</p>\n";
       
   257 ?>
   281 ?>
   258 	</fieldset>
   282 	</fieldset>
   259 </td>
   283 </td>
   260 </tr>
   284 </tr>
   261 <tr>
   285 <tr>
   278 		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='time_format' value='" . esc_attr($format) . "'";
   302 		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='time_format' value='" . esc_attr($format) . "'";
   279 		if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "==="
   303 		if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "==="
   280 			echo " checked='checked'";
   304 			echo " checked='checked'";
   281 			$custom = false;
   305 			$custom = false;
   282 		}
   306 		}
   283 		echo ' /> <span>' . date_i18n( $format ) . "</span></label><br />\n";
   307 		echo ' /> ' . date_i18n( $format ) . "</label><br />\n";
   284 	}
   308 	}
   285 
   309 
   286 	echo '	<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
   310 	echo '	<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
   287 	checked( $custom );
   311 	checked( $custom );
   288 	echo '/> ' . __('Custom:') . ' </label><input type="text" name="time_format_custom" value="' . esc_attr( get_option('time_format') ) . '" class="small-text" /> <span class="example"> ' . date_i18n( get_option('time_format') ) . "</span> <span class='spinner'></span>\n";
   312 	echo '/> ' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom time format in the following field' ) . "</span></label>\n";
   289 	;
   313 	echo '<label for="time_format_custom" class="screen-reader-text">' . __( 'Custom time format:' ) . '</label><input type="text" name="time_format_custom" id="time_format_custom" value="' . esc_attr( get_option('time_format') ) . '" class="small-text" /> <span class="screen-reader-text">' . __( 'example:' ) . ' </span><span class="example"> ' . date_i18n( get_option('time_format') ) . "</span> <span class='spinner'></span>\n";
       
   314 
       
   315 	echo "\t<p>" . __('<a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.') . "</p>\n";
   290 ?>
   316 ?>
   291 	</fieldset>
   317 	</fieldset>
   292 </td>
   318 </td>
   293 </tr>
   319 </tr>
   294 <tr>
   320 <tr>
   295 <th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th>
   321 <th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th>
   296 <td><select name="start_of_week" id="start_of_week">
   322 <td><select name="start_of_week" id="start_of_week">
   297 <?php
   323 <?php
       
   324 global $wp_locale;
       
   325 
   298 for ($day_index = 0; $day_index <= 6; $day_index++) :
   326 for ($day_index = 0; $day_index <= 6; $day_index++) :
   299 	$selected = (get_option('start_of_week') == $day_index) ? 'selected="selected"' : '';
   327 	$selected = (get_option('start_of_week') == $day_index) ? 'selected="selected"' : '';
   300 	echo "\n\t<option value='" . esc_attr($day_index) . "' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
   328 	echo "\n\t<option value='" . esc_attr($day_index) . "' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
   301 endfor;
   329 endfor;
   302 ?>
   330 ?>
   303 </select></td>
   331 </select></td>
   304 </tr>
   332 </tr>
   305 <?php do_settings_fields('general', 'default'); ?>
   333 <?php do_settings_fields('general', 'default'); ?>
   306 <?php
   334 
   307 	$languages = get_available_languages();
   335 <?php
   308 	if ( is_multisite() && !empty( $languages ) ):
   336 $languages = get_available_languages();
   309 ?>
   337 $translations = wp_get_available_translations();
   310 	<tr valign="top">
   338 if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG && ! in_array( WPLANG, $languages ) ) {
   311 		<th width="33%" scope="row"><?php _e('Site Language') ?></th>
   339 	$languages[] = WPLANG;
       
   340 }
       
   341 if ( ! empty( $languages ) || ! empty( $translations ) ) {
       
   342 	?>
       
   343 	<tr>
       
   344 		<th width="33%" scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?></label></th>
   312 		<td>
   345 		<td>
   313 			<select name="WPLANG" id="WPLANG">
   346 			<?php
   314 				<?php mu_dropdown_languages( $languages, get_option('WPLANG') ); ?>
   347 			$locale = get_locale();
   315 			</select>
   348 			if ( ! in_array( $locale, $languages ) ) {
       
   349 				$locale = '';
       
   350 			}
       
   351 
       
   352 			wp_dropdown_languages( array(
       
   353 				'name'         => 'WPLANG',
       
   354 				'id'           => 'WPLANG',
       
   355 				'selected'     => $locale,
       
   356 				'languages'    => $languages,
       
   357 				'translations' => $translations,
       
   358 				'show_available_translations' => ( ! is_multisite() || is_super_admin() ) && wp_can_install_language_pack(),
       
   359 			) );
       
   360 
       
   361 			// Add note about deprecated WPLANG constant.
       
   362 			if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && $locale !== WPLANG ) {
       
   363 				if ( is_super_admin() ) {
       
   364 					?>
       
   365 					<p class="description">
       
   366 						<strong><?php _e( 'Note:' ); ?></strong> <?php printf( __( 'The %s constant in your %s file is no longer needed.' ), '<code>WPLANG</code>', '<code>wp-config.php</code>' ); ?>
       
   367 					</p>
       
   368 					<?php
       
   369 				}
       
   370 				_deprecated_argument( 'define()', '4.0', sprintf( __( 'The %s constant in your %s file is no longer needed.' ), 'WPLANG', 'wp-config.php' ) );
       
   371 			}
       
   372 			?>
   316 		</td>
   373 		</td>
   317 	</tr>
   374 	</tr>
   318 <?php
   375 	<?php
   319 	endif;
   376 }
   320 ?>
   377 ?>
   321 </table>
   378 </table>
   322 
   379 
   323 <?php do_settings_sections('general'); ?>
   380 <?php do_settings_sections('general'); ?>
   324 
   381