Ticket #7011: 7011.b.diff

File 7011.b.diff, 8.9 KB (added by mdawaffe, 5 years ago)

add wp_default_styles(), convert wp_admin_css()

Line 
1Index: wp-includes/class.wp-styles.php
2===================================================================
3--- wp-includes/class.wp-styles.php     (revision 7975)
4+++ wp-includes/class.wp-styles.php     (working copy)
5@@ -3,6 +3,7 @@
6 class WP_Styles extends WP_Dependencies {
7        var $base_url;
8        var $default_version;
9+       var $text_direction = 'ltr';
10 
11        function __construct() {
12                do_action_ref_array( 'wp_default_styles', array(&$this) );
13@@ -21,16 +22,26 @@
14                else
15                        $media = 'all';
16 
17-               $src = $this->registered[$handle]->src;
18-               if ( !preg_match('|^https?://|', $src) ) {
19-                       $src = $this->base_url . $src;
20+               $href = $this->_css_href( $this->registered[$handle]->src, $ver, $handle );
21+
22+               $end_cond = '';
23+               if ( isset($this->registered[$handle]->extra['conditional']) && $this->registered[$handle]->extra['conditional'] ) {
24+                       echo "<!--[if {$this->registered[$handle]->extra['conditional']}]>\n";
25+                       $end_cond = "<![endif]-->\n";
26                }
27 
28-               $src = add_query_arg('ver', $ver, $src);
29-               $src = clean_url(apply_filters( 'style_loader_src', $src ));
30+               echo apply_filters( 'style_loader_tag', "<link rel='stylesheet' href='$href' type='text/css' media='$media' />\n", $handle );
31+               if ( 'rtl' === $this->text_direction && isset($this->registered[$handle]->extra['rtl']) && $this->registered[$handle]->extra['rtl'] ) {
32+                       if ( is_bool( $this->registered[$handle]->extra['rtl'] ) )
33+                               $rtl_href = str_replace( '.css', '-rtl.css', $href );
34+                       else
35+                               $rtl_href = $this->_css_href( $this->registered[$handle]->extra['rtl'], $ver, "$handle-rtl" );
36 
37-               echo "<link rel='stylesheet' href='$src' type='text/css' media='$media' />\n";
38+                       echo apply_filters( 'style_loader_tag', "<link rel='stylesheet' href='$rtl_href' type='text/css' media='$media' />\n", $handle );
39+               }
40 
41+               echo $end_cond;
42+
43                // Could do something with $this->registered[$handle]->extra here to print out extra CSS rules
44 //             echo "<style type='text/css'>\n";
45 //             echo "/* <![CDATA[ */\n";
46@@ -46,4 +57,15 @@
47                        $this->to_do = apply_filters( 'print_styles_array', $this->to_do );
48                return $r;
49        }
50+
51+       function _css_href( $src, $ver, $handle ) {
52+               if ( !preg_match('|^https?://|', $src) ) {
53+                       $src = $this->base_url . $src;
54+               }
55+
56+               $src = add_query_arg('ver', $ver, $src);
57+               $src = apply_filters( 'style_loader_src', $src, $handle );
58+               return attribute_escape( $src );
59+       }
60+
61 }
62Index: wp-includes/class.wp-scripts.php
63===================================================================
64--- wp-includes/class.wp-scripts.php    (revision 7975)
65+++ wp-includes/class.wp-scripts.php    (working copy)
66@@ -55,7 +55,7 @@
67                }
68 
69                $src = add_query_arg('ver', $ver, $src);
70-               $src = clean_url(apply_filters( 'script_loader_src', $src ));
71+               $src = attribute_escape(apply_filters( 'script_loader_src', $src, $handle ));
72 
73                $this->print_scripts_l10n( $handle );
74 
75Index: wp-includes/general-template.php
76===================================================================
77--- wp-includes/general-template.php    (revision 7975)
78+++ wp-includes/general-template.php    (working copy)
79@@ -1131,19 +1131,7 @@
80        if ( defined('WP_INSTALLING') ) {
81                $_file = "./$file.css";
82        } else {
83-               if ( 'css/colors' == $file || 'css/colors-rtl' == $file ) {
84-                       global $_wp_admin_css_colors;
85-                       $color = get_user_option('admin_color');
86-                       if ( empty($color) || !isset($_wp_admin_css_colors[$color]) )
87-                               $color = 'fresh';
88-                       $color = $_wp_admin_css_colors[$color];
89-                       $_file = $color->url;
90-                       $_file = ('css/colors-rtl' == $file) ? str_replace('.css','-rtl.css',$_file) : $_file;
91-               } elseif ( 'css/thickbox' == $file ) {
92-                       $_file = get_option( 'siteurl' ) . "/wp-includes/js/thickbox/thickbox.css";
93-               } else {
94-                       $_file = get_option( 'siteurl' ) . "/wp-admin/$file.css";
95-               }
96+               $_file = get_option( 'siteurl' ) . "/wp-admin/$file.css";
97        }
98        $_file = add_query_arg( 'version', get_bloginfo( 'version' ),  $_file );
99 
100@@ -1151,12 +1139,23 @@
101 }
102 
103 function wp_admin_css( $file = 'wp-admin' ) {
104+       global $wp_styles;
105+       if ( !is_a($wp_styles, 'WP_Styles') )
106+               $wp_styles = new WP_Styles();
107 
108-       echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . wp_admin_css_uri( $file ) . "' type='text/css' />\n", $file );
109-       if ( 'rtl' == get_bloginfo( 'text_direction' ) ) {
110-               $rtl = ( 'wp-admin' == $file ) ? 'rtl' : "$file-rtl";
111-               echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . wp_admin_css_uri( $rtl ) . "' type='text/css' />\n", $rtl );
112+       $handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file;
113+
114+       if ( $wp_styles->query( $handle ) ) {
115+               if ( did_action( 'wp_print_styles' ) ) // we already printed the style queue.  Print this one immediately
116+                       wp_print_styles( $handle );
117+               else // Add to style queue
118+                       wp_enqueue_style( $handle );
119+               return;
120        }
121+
122+       echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . attribute_escape( wp_admin_css_uri( $file ) ) . "' type='text/css' />\n", $file );
123+       if ( 'rtl' == get_bloginfo( 'text_direction' ) )
124+               echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . attribute_escape( wp_admin_css_uri( "$file-rtl" ) ) . "' type='text/css' />\n", "$file-rtl" );
125 }
126 
127 function add_thickbox() {
128Index: wp-includes/script-loader.php
129===================================================================
130--- wp-includes/script-loader.php       (revision 7975)
131+++ wp-includes/script-loader.php       (working copy)
132@@ -6,7 +6,7 @@
133 require( ABSPATH . WPINC . '/class.wp-styles.php' );
134 require( ABSPATH . WPINC . '/functions.wp-styles.php' );
135 
136-function wp_default_scripts( $scripts ) {
137+function wp_default_scripts( &$scripts ) {
138        $scripts->base_url = get_option( 'siteurl' );
139        $scripts->default_version = get_bloginfo( 'version' );
140 
141@@ -203,6 +203,35 @@
142        }
143 }
144 
145+function wp_default_styles( &$styles ) {
146+       $styles->base_url = get_option( 'siteurl' );
147+       $styles->default_version = get_bloginfo( 'version' );
148+       $styles->text_direction = 'rtl' == get_bloginfo( 'text_direction' ) ? 'rtl' : 'ltr';
149+
150+       $rtl_styles = array( 'global', 'colors', 'dashboard', 'ie', 'install', 'login', 'media', 'theme-editor', 'upload', 'widgets' );
151+
152+       $styles->add( 'wp-admin', '/wp-admin/wp-admin.css' );
153+       $styles->add_data( 'wp-admin', 'rtl', '/wp-admin/rtl.css' );
154+
155+       $styles->add( 'ie', '/wp-admin/css/ie.css' );
156+       $styles->add_data( 'ie', 'conditional', 'gte IE 6' );
157+
158+       $styles->add( 'colors', true ); // Register "meta" stylesheet for admin colors
159+
160+       $styles->add( 'global', '/wp-admin/css/global.css' );
161+       $styles->add( 'media', '/wp-admin/css/media.css' );
162+       $styles->add( 'widgets', '/wp-admin/css/widgets.css' );
163+       $styles->add( 'dashboard', '/wp-admin/css/dashboard.css' );
164+       $styles->add( 'install', '/wp-admin/css/install.css' );
165+       $styles->add( 'theme-editor', '/wp-admin/css/theme-editor.css' );
166+       $styles->add( 'press-this', '/wp-admin/css/press-this.css' );
167+       $styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css' );
168+       $styles->add( 'login', '/wp-admin/css/login.css' );
169+
170+       foreach ( $rtl_styles as $rtl_style )
171+               $styles->add_data( $rtl_style, 'rtl', true );
172+}
173+
174 function wp_prototype_before_jquery( $js_array ) {
175        if ( false === $jquery = array_search( 'jquery', $js_array ) )
176                return $js_array;
177@@ -232,6 +261,31 @@
178        ) );
179 }
180 
181+function wp_style_loader_src( $src, $handle ) {
182+       if ( defined('WP_INSTALLING') )
183+               return preg_replace( '#^wp-admin/#', './', $src );
184+
185+       if ( 'colors' == $handle || 'colors-rtl' == $handle ) {
186+               global $_wp_admin_css_colors;
187+               $color = get_user_option('admin_color');
188+               if ( empty($color) || !isset($_wp_admin_css_colors[$color]) )
189+                       $color = 'fresh';
190+               $color = $_wp_admin_css_colors[$color];
191+               $parsed = parse_url( $src );
192+               $url = $color->url;
193+               if ( isset($parsed['query']) && $parsed['query'] ) {
194+                       wp_parse_str( $parsed['query'], $qv );
195+                       $url = add_query_arg( $qv, $url );
196+               }
197+               return $url;
198+       }
199+
200+       return $src;
201+}
202+
203 add_action( 'wp_default_scripts', 'wp_default_scripts' );
204 add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' );
205 add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' );
206+
207+add_action( 'wp_default_styles', 'wp_default_styles' );
208+add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 );
209Index: wp-admin/admin-header.php
210===================================================================
211--- wp-admin/admin-header.php   (revision 7975)
212+++ wp-admin/admin-header.php   (working copy)
213@@ -29,14 +29,13 @@
214 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
215 <title><?php bloginfo('name') ?> &rsaquo; <?php echo wp_specialchars( strip_tags( $title ) ); ?> &#8212; WordPress</title>
216 <?php
217+
218 wp_admin_css( 'css/global' );
219 wp_admin_css();
220 wp_admin_css( 'css/colors' );
221+wp_admin_css( 'css/ie' );
222+
223 ?>
224-<!--[if gte IE 6]>
225-<?php wp_admin_css( 'css/ie' );
226-?>
227-<![endif]-->
228 <script type="text/javascript">
229 //<![CDATA[
230 addLoadEvent = function(func) {if (typeof jQuery != "undefined") jQuery(document).ready(func); else if (typeof wpOnload!='function'){wpOnload=func;} else {var oldonload=wpOnload; wpOnload=function(){oldonload();func();}}};