Script/Style Dependencies: Make sure that inline styles for handles without a source are printed.
This prevents breaking plugins which are adding inline styles to the `wp-admin` handle after [36341]. Props dd32, ocean90. Fixes #35229. git-svn-id: https://develop.svn.wordpress.org/trunk@36550 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
149686b424
commit
59747aa6b9
@ -98,21 +98,6 @@ class WP_Dependencies {
|
|||||||
|
|
||||||
foreach ( $this->to_do as $key => $handle ) {
|
foreach ( $this->to_do as $key => $handle ) {
|
||||||
if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
|
if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
|
||||||
|
|
||||||
/*
|
|
||||||
* A single item may alias a set of items, by having dependencies,
|
|
||||||
* but no source. Queuing the item queues the dependencies.
|
|
||||||
*
|
|
||||||
* Example: The extending class WP_Scripts is used to register 'scriptaculous' as a set of registered handles:
|
|
||||||
* <code>add( 'scriptaculous', false, array( 'scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls' ) );</code>
|
|
||||||
*
|
|
||||||
* The src property is false.
|
|
||||||
*/
|
|
||||||
if ( ! $this->registered[$handle]->src ) {
|
|
||||||
$this->done[] = $handle;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attempt to process the item. If successful,
|
* Attempt to process the item. If successful,
|
||||||
* add the handle to the done array.
|
* add the handle to the done array.
|
||||||
|
@ -177,6 +177,11 @@ class WP_Scripts extends WP_Dependencies {
|
|||||||
echo $cond_after;
|
echo $cond_after;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A single item may alias a set of items, by having dependencies, but no source.
|
||||||
|
if ( ! $obj->src ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
||||||
$src = $this->base_url . $src;
|
$src = $this->base_url . $src;
|
||||||
}
|
}
|
||||||
|
@ -72,11 +72,20 @@ class WP_Styles extends WP_Dependencies {
|
|||||||
else
|
else
|
||||||
$media = 'all';
|
$media = 'all';
|
||||||
|
|
||||||
$href = $this->_css_href( $obj->src, $ver, $handle );
|
// A single item may alias a set of items, by having dependencies, but no source.
|
||||||
if ( empty( $href ) ) {
|
if ( ! $obj->src ) {
|
||||||
// Turns out there is nothing to print.
|
if ( $inline_style = $this->print_inline_style( $handle, false ) ) {
|
||||||
|
$inline_style = sprintf( "<style id='%s-inline-css' type='text/css'>\n%s\n</style>\n", esc_attr( $handle ), $inline_style );
|
||||||
|
if ( $this->do_concat ) {
|
||||||
|
$this->print_html .= $inline_style;
|
||||||
|
} else {
|
||||||
|
echo $inline_style;
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$href = $this->_css_href( $obj->src, $ver, $handle );
|
||||||
$rel = isset($obj->extra['alt']) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
|
$rel = isset($obj->extra['alt']) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
|
||||||
$title = isset($obj->extra['title']) ? "title='" . esc_attr( $obj->extra['title'] ) . "'" : '';
|
$title = isset($obj->extra['title']) ? "title='" . esc_attr( $obj->extra['title'] ) . "'" : '';
|
||||||
|
|
||||||
|
@ -166,4 +166,20 @@ class Tests_Dependencies_Scripts extends WP_UnitTestCase {
|
|||||||
$this->assertFalse( wp_register_script( 'duplicate-handler', 'http://example.com' ) );
|
$this->assertFalse( wp_register_script( 'duplicate-handler', 'http://example.com' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 35229
|
||||||
|
*/
|
||||||
|
function test_wp_register_script_with_handle_without_source() {
|
||||||
|
$expected = "<script type='text/javascript' src='http://example.com?ver=1'></script>\n";
|
||||||
|
$expected .= "<script type='text/javascript' src='http://example.com?ver=2'></script>\n";
|
||||||
|
|
||||||
|
wp_register_script( 'handle-one', 'http://example.com', array(), 1 );
|
||||||
|
wp_register_script( 'handle-two', 'http://example.com', array(), 2 );
|
||||||
|
wp_register_script( 'handle-three', false, array( 'handle-one', 'handle-two' ) );
|
||||||
|
|
||||||
|
wp_enqueue_script( 'handle-three' );
|
||||||
|
|
||||||
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -234,9 +234,31 @@ CSS;
|
|||||||
*
|
*
|
||||||
* @ticket 31126
|
* @ticket 31126
|
||||||
*/
|
*/
|
||||||
function test_wp_register_style(){
|
function test_wp_register_style() {
|
||||||
$this->assertTrue( wp_register_style( 'duplicate-handler', 'http://example.com' ) );
|
$this->assertTrue( wp_register_style( 'duplicate-handler', 'http://example.com' ) );
|
||||||
$this->assertFalse( wp_register_style( 'duplicate-handler', 'http://example.com' ) );
|
$this->assertFalse( wp_register_style( 'duplicate-handler', 'http://example.com' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 35229
|
||||||
|
*/
|
||||||
|
function test_wp_add_inline_style_for_handle_without_source() {
|
||||||
|
$style = "a { color: blue; }";
|
||||||
|
|
||||||
|
$expected = "<link rel='stylesheet' id='handle-one-css' href='http://example.com?ver=1' type='text/css' media='all' />\n";
|
||||||
|
$expected .= "<link rel='stylesheet' id='handle-two-css' href='http://example.com?ver=1' type='text/css' media='all' />\n";
|
||||||
|
$expected .= "<style id='handle-three-inline-css' type='text/css'>\n";
|
||||||
|
$expected .= "$style\n";
|
||||||
|
$expected .= "</style>\n";
|
||||||
|
|
||||||
|
wp_register_style( 'handle-one', 'http://example.com', array(), 1 );
|
||||||
|
wp_register_style( 'handle-two', 'http://example.com', array(), 1 );
|
||||||
|
wp_register_style( 'handle-three', false, array( 'handle-one', 'handle-two' ) );
|
||||||
|
|
||||||
|
wp_enqueue_style( 'handle-three' );
|
||||||
|
wp_add_inline_style( 'handle-three', $style );
|
||||||
|
|
||||||
|
$this->assertEquals( $expected, get_echo( 'wp_print_styles' ) );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user