WordPress 3.8.1
[autoinstalls/wordpress.git] / wp-admin / includes / misc.php
index 5a3b9706c78dfa08fa52db613155255321bd5583..3a8ad89e5ec735ce824dc25504cf679b6b7007ac 100644 (file)
@@ -247,7 +247,7 @@ add_action( 'update_option_page_on_front', 'update_home_siteurl', 10, 2 );
 /**
  * Shorten an URL, to be used as link text
  *
- * @since 1.2.1
+ * @since 1.2.0
  *
  * @param string $url
  * @return string
@@ -561,29 +561,80 @@ function saveDomDocument($doc, $filename) {
  *
  * @since 3.0.0
  */
-function admin_color_scheme_picker() {
-       global $_wp_admin_css_colors, $user_id; ?>
-<fieldset><legend class="screen-reader-text"><span><?php _e('Admin Color Scheme')?></span></legend>
-<?php
-$current_color = get_user_option('admin_color', $user_id);
-if ( empty($current_color) )
-       $current_color = 'fresh';
-foreach ( $_wp_admin_css_colors as $color => $color_info ): ?>
-<div class="color-option"><input name="admin_color" id="admin_color_<?php echo esc_attr( $color ); ?>" type="radio" value="<?php echo esc_attr( $color ); ?>" class="tog" <?php checked($color, $current_color); ?> />
-       <table class="color-palette">
-       <tr>
-       <?php foreach ( $color_info->colors as $html_color ): ?>
-       <td style="background-color: <?php echo esc_attr( $html_color ); ?>" title="<?php echo esc_attr( $color ); ?>">&nbsp;</td>
-       <?php endforeach; ?>
-       </tr>
-       </table>
-
-       <label for="admin_color_<?php echo esc_attr( $color ); ?>"><?php echo esc_html( $color_info->name ); ?></label>
-</div>
-       <?php endforeach; ?>
-</fieldset>
-<?php
+function admin_color_scheme_picker( $user_id ) {
+       global $_wp_admin_css_colors;
+
+       ksort( $_wp_admin_css_colors );
+
+       if ( isset( $_wp_admin_css_colors['fresh'] ) ) {
+               // Set Default ('fresh') and Light should go first.
+               $_wp_admin_css_colors = array_filter( array_merge( array( 'fresh' => '', 'light' => '' ), $_wp_admin_css_colors ) );
+       }
+
+       $current_color = get_user_option( 'admin_color', $user_id );
+
+       if ( empty( $current_color ) || ! isset( $_wp_admin_css_colors[ $current_color ] ) ) {
+               $current_color = 'fresh';
+       }
+
+       ?>
+       <fieldset id="color-picker" class="scheme-list">
+               <legend class="screen-reader-text"><span><?php _e( 'Admin Color Scheme' ); ?></span></legend>
+               <?php
+               wp_nonce_field( 'save-color-scheme', 'color-nonce', false );
+               foreach ( $_wp_admin_css_colors as $color => $color_info ) :
+
+                       ?>
+                       <div class="color-option <?php echo ( $color == $current_color ) ? 'selected' : ''; ?>">
+                               <input name="admin_color" id="admin_color_<?php echo esc_attr( $color ); ?>" type="radio" value="<?php echo esc_attr( $color ); ?>" class="tog" <?php checked( $color, $current_color ); ?> />
+                               <input type="hidden" class="css_url" value="<?php echo esc_url( $color_info->url ); ?>" />
+                               <input type="hidden" class="icon_colors" value="<?php echo esc_attr( json_encode( array( 'icons' => $color_info->icon_colors ) ) ); ?>" />
+                               <label for="admin_color_<?php echo esc_attr( $color ); ?>"><?php echo esc_html( $color_info->name ); ?></label>
+                               <table class="color-palette">
+                                       <tr>
+                                       <?php
+
+                                       foreach ( $color_info->colors as $html_color ) {
+                                               ?>
+                                               <td style="background-color: <?php echo esc_attr( $html_color ); ?>">&nbsp;</td>
+                                               <?php
+                                       }
+
+                                       ?>
+                                       </tr>
+                               </table>
+                       </div>
+                       <?php
+
+               endforeach;
+
+       ?>
+       </fieldset>
+       <?php
+}
+
+function wp_color_scheme_settings() {
+       global $_wp_admin_css_colors;
+
+       $color_scheme = get_user_option( 'admin_color' );
+
+       // It's possible to have a color scheme set that is no longer registered.
+       if ( empty( $_wp_admin_css_colors[ $color_scheme ] ) ) {
+               $color_scheme = 'fresh';
+       }
+
+       if ( ! empty( $_wp_admin_css_colors[ $color_scheme ]->icon_colors ) ) {
+               $icon_colors = $_wp_admin_css_colors[ $color_scheme ]->icon_colors;
+       } elseif ( ! empty( $_wp_admin_css_colors['fresh']->icon_colors ) ) {
+               $icon_colors = $_wp_admin_css_colors['fresh']->icon_colors;
+       } else {
+               // Fall back to the default set of icon colors if the default scheme is missing.
+               $icon_colors = array( 'base' => '#999', 'focus' => '#2ea2cc', 'current' => '#fff' );
+       }
+
+       echo '<script type="text/javascript">var _wpColorScheme = ' . json_encode( array( 'icons' => $icon_colors ) ) . ";</script>\n";
 }
+add_action( 'admin_head', 'wp_color_scheme_settings' );
 
 function _ipad_meta() {
        if ( wp_is_mobile() ) {
@@ -698,3 +749,22 @@ function wp_refresh_post_nonces( $response, $data, $screen_id ) {
        return $response;
 }
 add_filter( 'heartbeat_received', 'wp_refresh_post_nonces', 10, 3 );
+
+/**
+ * Disable suspension of Heartbeat on the Add/Edit Post screens.
+ *
+ * @since 3.8.0
+ *
+ * @param array $settings An array of Heartbeat settings.
+ * @return array Filtered Heartbeat settings.
+ */
+function wp_heartbeat_set_suspension( $settings ) {
+       global $pagenow;
+
+       if ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) {
+               $settings['suspension'] = 'disable';
+       }
+
+       return $settings;
+}
+add_filter( 'heartbeat_settings', 'wp_heartbeat_set_suspension' );