Make WordPress Core

Ticket #36392: 36392.5.patch

File 36392.5.patch, 12.4 KB (added by jeremyfelt, 9 years ago)
  • src/wp-includes/class.wp-scripts.php

     
    9393        public $print_html = '';
    9494
    9595        /**
    96          * HTML to print before the script handle.
    97          *
    98          * @since 4.5.0
    99          * @access public
    100          * @var string
    101          */
    102         public $print_html_before = '';
    103 
    104         /**
    10596         * Holds inline code if concatenation is enabled.
    10697         *
    10798         * @since 2.8.0
     
    304295                         */
    305296                        $srce = apply_filters( 'script_loader_src', $src, $handle );
    306297
    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 ) {
    312299                                $this->print_code .= $this->print_extra_script( $handle, false );
    313300                                $this->concat .= "$handle,";
    314301                                $this->concat_version .= "$handle$ver";
     
    363350                $tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );
    364351
    365352                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;
    371354                } else {
    372355                        echo $tag;
    373356                }
     
    592575                $this->concat = '';
    593576                $this->concat_version = '';
    594577                $this->print_html = '';
    595                 $this->print_html_before = '';
    596578                $this->ext_version = '';
    597579                $this->ext_handles = '';
    598580        }
  • src/wp-includes/script-loader.php

     
    998998                        echo "</script>\n";
    999999                }
    10001000
    1001                 if ( ! empty( $wp_scripts->print_html_before ) ) {
    1002                         echo $wp_scripts->print_html_before;
    1003                 }
    1004 
    10051001                $concat = str_split( $concat, 128 );
    10061002                $concat = 'load%5B%5D=' . implode( '&load%5B%5D=', $concat );
    10071003
  • tests/phpunit/tests/dependencies/scripts.php

     
    453453                $print_scripts = get_echo( '_print_scripts' );
    454454
    455455                $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&amp;load%5B%5D=three&amp;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";
    457459                $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&amp;load%5B%5D=one,two,three&amp;ver={$ver}'></script>\n";
     460                $expected .= "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n";
    459461
    460462                $this->assertEquals( $expected, $print_scripts );
    461463        }
     
    463465        /**
    464466         * @ticket 14853
    465467         */
     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&amp;load%5B%5D=two,three&amp;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         */
    466494        public function test_wp_add_inline_script_after_with_concat() {
    467495                global $wp_scripts;
    468496
     
    481509                $print_scripts = get_echo( '_print_scripts' );
    482510
    483511                $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&amp;load%5B%5D=one,four&amp;ver={$ver}'></script>\n";
     513                $expected .= "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n";
    485514                $expected .= "<script type='text/javascript'>\nconsole.log(\"after two\");\n</script>\n";
    486515                $expected .= "<script type='text/javascript' src='/directory/three.js?ver={$ver}'></script>\n";
    487516                $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&amp;load%5B%5D=one,four&amp;ver={$ver}'></script>\n";
    489517
    490518                $this->assertEquals( $expected, $print_scripts );
    491519        }
     
    516544                wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' );
    517545
    518546                $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 );
    521548        }
    522549
     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&amp;load%5B%5D=jquery-core,jquery-migrate&amp;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&amp;load%5B%5D=jquery-core,jquery-migrate&amp;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&amp;load%5B%5D=jquery-core,jquery-migrate&amp;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&amp;load%5B%5D=jquery-core,jquery-migrate,wp-a11y&amp;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_line_script_before_core_registered_script() {
     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                $ver = get_bloginfo( 'version' );
     669                $expected  = "<script type='text/javascript'>\nconsole.log(\"before jquery\");\n</script>\n";
     670                $expected .= "<script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.12.3'></script>\n";
     671                $expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-migrate&amp;ver={$ver}'></script>\n";
     672                $expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
     673
     674                wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
     675                wp_add_inline_script( 'jquery-core', 'console.log("before jquery");', 'before' );
     676
     677                wp_print_scripts();
     678                $print_scripts = get_echo( '_print_scripts' );
     679
     680                $this->assertEquals( $expected, $print_scripts );
     681        }
     682
     683        /**
     684         * @ticket 36392
     685         */
     686        public function test_wp_add_line_script_after_core_registered_script() {
     687                global $wp_scripts;
     688
     689                wp_default_scripts( $wp_scripts );
     690
     691                $wp_scripts->base_url = '';
     692                $wp_scripts->do_concat = true;
     693
     694                $ver = get_bloginfo( 'version' );
     695                $expected  = "<script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.12.3'></script>\n";
     696                $expected .= "<script type='text/javascript'>\nconsole.log(\"after jquery\");\n</script>\n";
     697                $expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-migrate&amp;ver={$ver}'></script>\n";
     698                $expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
     699
     700                wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
     701                wp_add_inline_script( 'jquery-core', 'console.log("after jquery");', 'after' );
     702
     703                wp_print_scripts();
     704                $print_scripts = get_echo( '_print_scripts' );
     705
     706                $this->assertEquals( $expected, $print_scripts );
     707        }
     708
     709        /**
     710         * @ticket 36392
     711         */
     712        public function test_wp_add_inline_script_customize_dependency() {
     713                global $wp_scripts;
     714
     715                wp_default_scripts( $wp_scripts );
     716
     717                $wp_scripts->base_url = '';
     718                $wp_scripts->do_concat = true;
     719
     720                $expected_tail  = "<![endif]-->\n";
     721                $expected_tail .= "<script type='text/javascript' src='/customize-dependency.js'></script>\n";
     722                $expected_tail .= "<script type='text/javascript'>\n";
     723                $expected_tail .= "tryCustomizeDependency()\n";
     724                $expected_tail .= "</script>\n";
     725
     726                $handle = 'customize-dependency';
     727                wp_enqueue_script( $handle, '/customize-dependency.js', array( 'customize-controls' ), null );
     728                wp_add_inline_script( $handle, 'tryCustomizeDependency()' );
     729
     730                wp_print_scripts();
     731                $print_scripts = get_echo( '_print_scripts' );
     732
     733                $tail = substr( $print_scripts, strrpos( $print_scripts, "<![endif]-->" ) );
     734                $this->assertEquals( $expected_tail, $tail );
     735        }
    523736}