Ticket #36392: 36392.4.patch
| File 36392.4.patch, 10.4 KB (added by , 10 years ago) |
|---|
-
src/wp-includes/class.wp-scripts.php
93 93 public $print_html = ''; 94 94 95 95 /** 96 * HTML to print before the script handle.97 *98 * @since 4.5.099 * @access public100 * @var string101 */102 public $print_html_before = '';103 104 /**105 96 * Holds inline code if concatenation is enabled. 106 97 * 107 98 * @since 2.8.0 … … 304 295 */ 305 296 $srce = apply_filters( 'script_loader_src', $src, $handle ); 306 297 307 if ( $before_handle && ! $conditional ) { 308 $this->print_html_before .= $before_handle; 309 } 310 311 if ( $this->in_default_dir( $srce ) && ! $conditional && ! $after_handle ) { 298 if ( $this->in_default_dir( $srce ) && ! $conditional && ! $before_handle && ! $after_handle ) { 312 299 $this->print_code .= $this->print_extra_script( $handle, false ); 313 300 $this->concat .= "$handle,"; 314 301 $this->concat_version .= "$handle$ver"; … … 363 350 $tag = apply_filters( 'script_loader_tag', $tag, $handle, $src ); 364 351 365 352 if ( $this->do_concat ) { 366 if ( $after_handle ) { 367 $this->print_html_before .= $tag; 368 } else { 369 $this->print_html .= $tag; 370 } 353 $this->print_html .= $tag; 371 354 } else { 372 355 echo $tag; 373 356 } … … 592 575 $this->concat = ''; 593 576 $this->concat_version = ''; 594 577 $this->print_html = ''; 595 $this->print_html_before = '';596 578 $this->ext_version = ''; 597 579 $this->ext_handles = ''; 598 580 } -
src/wp-includes/script-loader.php
998 998 echo "</script>\n"; 999 999 } 1000 1000 1001 if ( ! empty( $wp_scripts->print_html_before ) ) {1002 echo $wp_scripts->print_html_before;1003 }1004 1005 1001 $concat = str_split( $concat, 128 ); 1006 1002 $concat = 'load%5B%5D=' . implode( '&load%5B%5D=', $concat ); 1007 1003 -
tests/phpunit/tests/dependencies/scripts.php
453 453 $print_scripts = get_echo( '_print_scripts' ); 454 454 455 455 $ver = get_bloginfo( 'version' ); 456 $expected = "<script type='text/javascript'>\nconsole.log(\"before one\");\n</script>\n"; 456 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=three&ver={$ver}'></script>\n"; 457 $expected .= "<script type='text/javascript'>\nconsole.log(\"before one\");\n</script>\n"; 458 $expected .= "<script type='text/javascript' src='/directory/one.js?ver={$ver}'></script>\n"; 457 459 $expected .= "<script type='text/javascript'>\nconsole.log(\"before two\");\n</script>\n"; 458 $expected .= "<script type='text/javascript' src='/ wp-admin/load-scripts.php?c=0&load%5B%5D=one,two,three&ver={$ver}'></script>\n";460 $expected .= "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n"; 459 461 460 462 $this->assertEquals( $expected, $print_scripts ); 461 463 } … … 463 465 /** 464 466 * @ticket 14853 465 467 */ 468 public function test_wp_add_inline_script_before_with_concat2() { 469 global $wp_scripts; 470 471 $wp_scripts->do_concat = true; 472 $wp_scripts->default_dirs = array( '/directory/' ); 473 474 wp_enqueue_script( 'one', '/directory/one.js' ); 475 wp_enqueue_script( 'two', '/directory/two.js' ); 476 wp_enqueue_script( 'three', '/directory/three.js' ); 477 478 wp_add_inline_script( 'one', 'console.log("before one");', 'before' ); 479 480 wp_print_scripts(); 481 $print_scripts = get_echo( '_print_scripts' ); 482 483 $ver = get_bloginfo( 'version' ); 484 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=two,three&ver={$ver}'></script>\n"; 485 $expected .= "<script type='text/javascript'>\nconsole.log(\"before one\");\n</script>\n"; 486 $expected .= "<script type='text/javascript' src='/directory/one.js?ver={$ver}'></script>\n"; 487 488 $this->assertEquals( $expected, $print_scripts ); 489 } 490 491 /** 492 * @ticket 14853 493 */ 466 494 public function test_wp_add_inline_script_after_with_concat() { 467 495 global $wp_scripts; 468 496 … … 481 509 $print_scripts = get_echo( '_print_scripts' ); 482 510 483 511 $ver = get_bloginfo( 'version' ); 484 $expected = "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n"; 512 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=one,four&ver={$ver}'></script>\n"; 513 $expected .= "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n"; 485 514 $expected .= "<script type='text/javascript'>\nconsole.log(\"after two\");\n</script>\n"; 486 515 $expected .= "<script type='text/javascript' src='/directory/three.js?ver={$ver}'></script>\n"; 487 516 $expected .= "<script type='text/javascript'>\nconsole.log(\"after three\");\n</script>\n"; 488 $expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=one,four&ver={$ver}'></script>\n";489 517 490 518 $this->assertEquals( $expected, $print_scripts ); 491 519 } … … 516 544 wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' ); 517 545 518 546 $this->assertEquals( $expected_localized, get_echo( 'wp_print_scripts' ) ); 519 $this->assertEquals( $expected, $wp_scripts->print_html_before ); 520 $this->assertEquals( '', $wp_scripts->print_html ); 547 $this->assertEquals( $expected, $wp_scripts->print_html ); 521 548 } 522 549 550 /** 551 * @ticket 36392 552 */ 553 public function test_wp_add_inline_script_concat_with_core_dependency() { 554 global $wp_scripts; 555 556 wp_default_scripts( $wp_scripts ); 557 558 $wp_scripts->base_url = ''; 559 $wp_scripts->do_concat = true; 560 561 $ver = get_bloginfo( 'version' ); 562 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=jquery-core,jquery-migrate&ver={$ver}'></script>\n"; 563 $expected .= "<script type='text/javascript' src='http://example.com'></script>\n"; 564 $expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n"; 565 566 wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null ); 567 wp_add_inline_script( 'test-example', 'console.log("after");' ); 568 569 wp_print_scripts(); 570 $print_scripts = get_echo( '_print_scripts' ); 571 572 $this->assertEquals( $expected, $print_scripts ); 573 } 574 575 /** 576 * @ticket 36392 577 */ 578 public function test_wp_add_inline_script_concat_with_conditional_and_core_dependency() { 579 global $wp_scripts; 580 581 wp_default_scripts( $wp_scripts ); 582 583 $wp_scripts->base_url = ''; 584 $wp_scripts->do_concat = true; 585 586 $ver = get_bloginfo( 'version' ); 587 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=jquery-core,jquery-migrate&ver={$ver}'></script>\n"; 588 $expected .= "<!--[if gte IE 9]>\n"; 589 $expected .= "<script type='text/javascript' src='http://example.com'></script>\n"; 590 $expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n"; 591 $expected .= "<![endif]-->\n"; 592 593 wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null ); 594 wp_add_inline_script( 'test-example', 'console.log("after");' ); 595 wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' ); 596 597 wp_print_scripts(); 598 $print_scripts = get_echo( '_print_scripts' ); 599 600 $this->assertEquals( $expected, $print_scripts ); 601 } 602 603 /** 604 * @ticket 36392 605 */ 606 public function test_wp_add_inline_script_before_concat_with_core_dependency() { 607 global $wp_scripts; 608 609 wp_default_scripts( $wp_scripts ); 610 611 $wp_scripts->base_url = ''; 612 $wp_scripts->do_concat = true; 613 614 $ver = get_bloginfo( 'version' ); 615 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=jquery-core,jquery-migrate&ver={$ver}'></script>\n"; 616 $expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n"; 617 $expected .= "<script type='text/javascript' src='http://example.com'></script>\n"; 618 619 wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null ); 620 wp_add_inline_script( 'test-example', 'console.log("before");', 'before' ); 621 622 wp_print_scripts(); 623 $print_scripts = get_echo( '_print_scripts' ); 624 625 $this->assertEquals( $expected, $print_scripts ); 626 } 627 628 /** 629 * @ticket 36392 630 */ 631 public function test_wp_add_inline_script_before_after_concat_with_core_dependency() { 632 global $wp_scripts; 633 634 wp_default_scripts( $wp_scripts ); 635 636 $wp_scripts->base_url = ''; 637 $wp_scripts->do_concat = true; 638 639 $ver = get_bloginfo( 'version' ); 640 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=jquery-core,jquery-migrate,wp-a11y&ver={$ver}'></script>\n"; 641 $expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n"; 642 $expected .= "<script type='text/javascript' src='http://example.com'></script>\n"; 643 $expected .= "<script type='text/javascript' src='http://example2.com'></script>\n"; 644 $expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n"; 645 646 wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null ); 647 wp_add_inline_script( 'test-example', 'console.log("before");', 'before' ); 648 wp_enqueue_script( 'test-example2', 'http://example2.com', array( 'wp-a11y' ), null ); 649 wp_add_inline_script( 'test-example2', 'console.log("after");', 'after' ); 650 651 wp_print_scripts(); 652 $print_scripts = get_echo( '_print_scripts' ); 653 654 $this->assertEquals( $expected, $print_scripts ); 655 } 656 657 /** 658 * @ticket 36392 659 */ 660 public function test_wp_add_inline_script_customize_dependency() { 661 global $wp_scripts; 662 663 wp_default_scripts( $wp_scripts ); 664 665 $wp_scripts->base_url = ''; 666 $wp_scripts->do_concat = true; 667 668 $expected_tail = "<![endif]-->\n"; 669 $expected_tail .= "<script type='text/javascript' src='/customize-dependency.js'></script>\n"; 670 $expected_tail .= "<script type='text/javascript'>\n"; 671 $expected_tail .= "tryCustomizeDependency()\n"; 672 $expected_tail .= "</script>\n"; 673 674 $handle = 'customize-dependency'; 675 wp_enqueue_script( $handle, '/customize-dependency.js', array( 'customize-controls' ), null ); 676 wp_add_inline_script( $handle, 'tryCustomizeDependency()' ); 677 678 wp_print_scripts(); 679 $print_scripts = get_echo( '_print_scripts' ); 680 681 $tail = substr( $print_scripts, strrpos( $print_scripts, "<![endif]-->" ) ); 682 $this->assertEquals( $expected_tail, $tail ); 683 } 523 684 }