Ticket #16024: 16024.8.diff
File 16024.8.diff, 5.4 KB (added by , 9 years ago) |
---|
-
src/wp-includes/class.wp-scripts.php
diff --git src/wp-includes/class.wp-scripts.php src/wp-includes/class.wp-scripts.php index fbb8b22..979bd4b 100644
class WP_Scripts extends WP_Dependencies { 95 95 if ( false === $group && in_array($handle, $this->in_footer, true) ) 96 96 $this->in_footer = array_diff( $this->in_footer, (array) $handle ); 97 97 98 if ( null === $this->registered[$handle]->ver ) 98 $obj = $this->registered[$handle]; 99 100 if ( null === $obj->ver ) 99 101 $ver = ''; 100 102 else 101 $ver = $ this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version;103 $ver = $obj->ver ? $obj->ver : $this->default_version; 102 104 103 105 if ( isset($this->args[$handle]) ) 104 106 $ver = $ver ? $ver . '&' . $this->args[$handle] : $this->args[$handle]; 105 107 106 $src = $this->registered[$handle]->src; 108 $src = $obj->src; 109 $cond_before = $cond_after = ''; 110 $conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : ''; 111 112 if ( $conditional ) { 113 $cond_before = "<!--[if {$conditional}]>\n"; 114 $cond_after = "<![endif]-->\n"; 115 } 107 116 108 117 if ( $this->do_concat ) { 109 118 /** … … class WP_Scripts extends WP_Dependencies { 115 124 * @param string $handle Script handle. 116 125 */ 117 126 $srce = apply_filters( 'script_loader_src', $src, $handle ); 118 if ( $this->in_default_dir( $srce)) {127 if ( $this->in_default_dir( $srce ) && ! $conditional ) { 119 128 $this->print_code .= $this->print_extra_script( $handle, false ); 120 129 $this->concat .= "$handle,"; 121 130 $this->concat_version .= "$handle$ver"; … … class WP_Scripts extends WP_Dependencies { 126 135 } 127 136 } 128 137 138 $has_extra = $conditional && $this->get_data( $handle, 'data' ); 139 140 if ( $has_extra ) 141 echo $cond_before; 142 129 143 $this->print_extra_script( $handle ); 144 145 if ( $has_extra ) 146 echo $cond_after; 147 130 148 if ( !preg_match('|^(https?:)?//|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) { 131 149 $src = $this->base_url . $src; 132 150 } … … class WP_Scripts extends WP_Dependencies { 140 158 if ( ! $src ) 141 159 return true; 142 160 143 $tag = " <script type='text/javascript' src='$src'></script>\n";161 $tag = "{$cond_before}<script type='text/javascript' src='$src'></script>\n{$cond_after}"; 144 162 145 163 /** 146 164 * Filter the HTML script tag of an enqueued script. -
src/wp-includes/functions.wp-scripts.php
diff --git src/wp-includes/functions.wp-scripts.php src/wp-includes/functions.wp-scripts.php index 6eb7a44..1a77df8 100644
function wp_script_is( $handle, $list = 'enqueued' ) { 258 258 259 259 return (bool) $wp_scripts->query( $handle, $list ); 260 260 } 261 262 263 /** 264 * Add metadata to a script. 265 * 266 * Works only if the script has already been added. 267 * 268 * Possible values for $key and $value: 269 * 'conditional' string Comments for IE 6, lte IE 7, etc. 270 * 271 * @see WP_Dependency::add_data() 272 * 273 * @since 4.2.0 274 * 275 * @param string $handle Name of the script. 276 * @param string $key Name of data point for which we're storing a value. 277 * @param mixed $value String containing the data to be added. 278 * @return bool True on success, false on failure. 279 */ 280 function wp_script_add_data( $handle, $key, $value ){ 281 global $wp_scripts; 282 return $wp_scripts->add_data( $handle, $key, $value ); 283 } -
tests/phpunit/tests/dependencies/scripts.php
diff --git tests/phpunit/tests/dependencies/scripts.php tests/phpunit/tests/dependencies/scripts.php index 3f4e724..445d9dc 100644
class Tests_Dependencies_Scripts extends WP_UnitTestCase { 84 84 // Cleanup 85 85 $wp_scripts->base_url = $base_url_backup; 86 86 } 87 88 /** 89 * Testing add data & conditional 90 * @ticket 16024 91 */ 92 function test_wp_script_add_data() { 93 // Enqueue & add data 94 wp_enqueue_script( 'test-only-data', 'example.com', array(), null ); 95 wp_script_add_data( 'test-only-data', 'data', 'testing' ); 96 $expected = "<script type='text/javascript'>\n/* <![CDATA[ */\ntesting\n/* ]]> */\n</script>\n"; 97 $expected.= "<script type='text/javascript' src='http://example.com'></script>\n"; 98 99 // Enqueue & add conditional comments 100 wp_enqueue_script( 'test-only-conditional', 'example.com', array(), null ); 101 wp_script_add_data( 'test-only-conditional', 'conditional', 'gt IE 7' ); 102 $expected.= "<!--[if gt IE 7]>\n<script type='text/javascript' src='http://example.com'></script>\n<![endif]-->\n"; 103 104 // Enqueue & add data plus conditional comments for both 105 wp_enqueue_script( 'test-conditional-with-data', 'example.com', array(), null ); 106 wp_script_add_data( 'test-conditional-with-data', 'data', 'testing' ); 107 wp_script_add_data( 'test-conditional-with-data', 'conditional', 'lt IE 9' ); 108 $expected.= "<!--[if lt IE 9]>\n<script type='text/javascript'>\n/* <![CDATA[ */\ntesting\n/* ]]> */\n</script>\n<![endif]-->\n"; 109 $expected.= "<!--[if lt IE 9]>\n<script type='text/javascript' src='http://example.com'></script>\n<![endif]-->\n"; 110 111 // Enqueue & add an invalid key for brevity 112 wp_enqueue_script( 'test-invalid', 'example.com', array(), null ); 113 wp_script_add_data( 'test-invalid', 'invalid', 'testing' ); 114 $expected.= "<script type='text/javascript' src='http://example.com'></script>\n"; 115 116 // Go! 117 $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) ); 118 119 // No scripts left to print 120 $this->assertEquals( '', get_echo( 'wp_print_scripts' ) ); 121 } 87 122 }