Make WordPress Core


Ignore:
Timestamp:
10/17/2018 03:28:33 PM (7 years ago)
Author:
atimmer
Message:

Script loader: Adjust JS packages registration.

Adjusts the packages registration after [43723]:

  • Combine the different registration functions into one

wp_default_packages function. To reach this goal move the prefix
logic into a function so it can be called from different locations.
Use a static variable there to prevent duplicate inclusion of
version.php.

  • Call this function from the wp_default_scripts action by

registering it as a default filter.

  • Combine some of the logic in _WP_Editors::print_tinymce_scripts

into wp_register_tinymce_scripts. The logic to force an uncompressed
TinyMCE script file stays in _WP_Editors::force_uncompressed_tinymce
because that logic is very specific to the classic editor.

  • The script handle wp-tinymce is now a dependency of the editor

script handle. In combination with the previous item, this makes the
classic editor work.

  • Adjust the syntax of the script paths to be more consistent with

other WordPress code.

  • Always use "production" mode for the media files to prevent people

from inadvertently committing development files.

Props pento, omarreiss.
Fixes #45065.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/5.0/src/wp-includes/script-loader.php

    r43723 r43738  
    4242 * @param WP_Scripts $scripts WP_Scripts object.
    4343 */
    44 function wp_register_tinymce_scripts( &$scripts ) {
     44function wp_register_tinymce_scripts( &$scripts, $force_uncompressed = false ) {
    4545    global $tinymce_version, $concatenate_scripts, $compress_scripts;
    4646    $suffix     = SCRIPT_DEBUG ? '' : '.min';
     47
     48    script_concat_settings();
     49
    4750    $compressed = $compress_scripts && $concatenate_scripts && isset( $_SERVER['HTTP_ACCEPT_ENCODING'] )
    48                   && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' );
     51                  && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && ! $force_uncompressed;
     52
    4953    // Load tinymce.js when running from /src, otherwise load wp-tinymce.js.gz (in production) or
    5054    // tinymce.min.js (when SCRIPT_DEBUG is true).
     
    5357        $scripts->add( 'wp-tinymce', includes_url( 'js/tinymce/' ) . 'wp-tinymce.php', array(), $tinymce_version );
    5458    } else {
    55         $scripts->add( 'wp-tinymce-root', includes_url( 'js/tinymce/' ) . "tinymce{$mce_suffix}.js", array(), $tinymce_version );
    56         $scripts->add( 'wp-tinymce', includes_url( 'js/tinymce/' ) . "plugins/compat3x/plugin{$suffix}.js", array( 'wp-tinymce-root' ), $tinymce_version );
    57     }
    58 
    59     $scripts->add( 'wp-tinymce-lists', includes_url( 'js/tinymce/plugins/lists/index' . $suffix . '.js', array( 'wp-tinymce' ), $tinymce_version ) );
     59        $scripts->add( 'wp-tinymce-root', includes_url( 'js/tinymce/' ) . "tinymce$mce_suffix.js", array(), $tinymce_version );
     60        $scripts->add( 'wp-tinymce', includes_url( 'js/tinymce/' ) . "plugins/compat3x/plugin$suffix.js", array( 'wp-tinymce-root' ), $tinymce_version );
     61    }
     62
     63    $scripts->add( 'wp-tinymce-lists', includes_url( "js/tinymce/plugins/lists/plugin$suffix.js", array( 'wp-tinymce' ), $tinymce_version ) );
    6064}
    6165
     
    7074 * @param WP_Scripts $scripts WP_Scripts object.
    7175 */
    72 function wp_default_packages_vendor( &$scripts, $dev_suffix ) {
     76function wp_default_packages_vendor( &$scripts ) {
    7377    wp_register_tinymce_scripts( $scripts );
     78
     79    $dev_suffix = wp_scripts_get_suffix( 'dev' );
    7480
    7581    $vendor_scripts = array(
     
    9197        }
    9298
    93         $path     = '/js/dist/vendor/' . $handle . $dev_suffix . '.js';
     99        $path     = "/js/dist/vendor/$handle$dev_suffix.js";
    94100
    95101        $scripts->add( $handle, $path, $dependencies, false, 1 );
     
    125131 * @return string Conditional polyfill inline script.
    126132 */
    127 function wp_get_script_polyfill( $scripts, $tests ) {
     133function wp_get_script_polyfill( &$scripts, $tests ) {
    128134    $polyfill = '';
    129135    foreach ( $tests as $test => $handle ) {
     
    148154
    149155/**
    150  * Register all the WordPress packages scripts that are in the standardized
     156 * Registers all the WordPress packages scripts that are in the standardized
    151157 * `js/dist/` location.
    152158 *
     
    156162 *
    157163 * @param WP_Scripts $scripts WP_Scripts object.
    158  * @param string     $suffix  The suffix to use before `.js`.
    159  */
    160 function wp_default_packages_scripts( &$scripts, $suffix ) {
     164 */
     165function wp_default_packages_scripts( &$scripts ) {
     166    $suffix = wp_scripts_get_suffix();
     167
    161168    $packages_dependencies = array(
    162169        'api-fetch' => array( 'wp-polyfill', 'wp-hooks', 'wp-i18n' ),
     
    331338    foreach ( $packages_dependencies as $package => $dependencies ) {
    332339        $handle  = 'wp-' . $package;
    333         $path     = '/js/dist/' . $package . $suffix . '.js';
     340        $path    = "/js/dist/$package$suffix.js";
    334341
    335342        $scripts->add( $handle, $path, $dependencies, false, 1 );
     
    423430    );
    424431
     432    /* This filter is documented in wp-includes/class-wp-editor.php */
    425433    $tinymce_settings = apply_filters(
    426434        'tiny_mce_before_init',
     
    429437                ',',
    430438                array_unique(
     439                    /* This filter is documented in wp-includes/class-wp-editor.php */
    431440                    apply_filters(
    432441                        'tiny_mce_plugins',
     
    457466                ',',
    458467                array_merge(
     468                    /* This filter is documented in wp-includes/class-wp-editor.php */
    459469                    apply_filters(
    460470                        'mce_buttons',
     
    482492            'toolbar2'         => implode(
    483493                ',',
     494                /* This filter is documented in wp-includes/class-wp-editor.php */
    484495                apply_filters(
    485496                    'mce_buttons_2',
     
    500511                )
    501512            ),
     513            /* This filter is documented in wp-includes/class-wp-editor.php */
    502514            'toolbar3'         => implode( ',', apply_filters( 'mce_buttons_3', array(), 'editor' ) ),
     515            /* This filter is documented in wp-includes/class-wp-editor.php */
    503516            'toolbar4'         => implode( ',', apply_filters( 'mce_buttons_4', array(), 'editor' ) ),
     517            /* This filter is documented in wp-includes/class-wp-editor.php */
    504518            'external_plugins' => apply_filters( 'mce_external_plugins', array() ),
    505519        ),
     
    526540
    527541/**
     542 * Registers all the WordPress packages scripts.
     543 *
     544 * @since 5.0.0
     545 *
     546 * @param WP_Scripts $scripts WP_Scripts object.
     547 */
     548function wp_default_packages( &$scripts ) {
     549    wp_default_packages_vendor( $scripts );
     550    wp_register_tinymce_scripts( $scripts );
     551    wp_default_packages_scripts( $scripts );
     552
     553    if ( did_action( 'init' ) ) {
     554        wp_default_packages_inline_scripts( $scripts );
     555    }
     556}
     557
     558/**
     559 * Returns the suffix that can be used for the scripts.
     560 *
     561 * There are two suffix types, the normal one and the dev suffix.
     562 *
     563 * @since 5.0.0
     564 *
     565 * @param string $type The type of suffix to retrieve.
     566 * @return string The script suffix.
     567 */
     568function wp_scripts_get_suffix( $type = '' ) {
     569    static $suffixes;
     570
     571    if ( $suffixes === null ) {
     572        include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
     573
     574        $develop_src = false !== strpos( $wp_version, '-src' );
     575
     576        if ( ! defined( 'SCRIPT_DEBUG' ) ) {
     577            define( 'SCRIPT_DEBUG', $develop_src );
     578        }
     579        $suffix = SCRIPT_DEBUG ? '' : '.min';
     580        $dev_suffix = $develop_src ? '' : '.min';
     581
     582        $suffixes = array( 'suffix' => $suffix, 'dev_suffix' => $dev_suffix );
     583    }
     584
     585    if ( $type === 'dev' ) {
     586        return $suffixes['dev_suffix'];
     587    }
     588
     589    return $suffixes['suffix'];
     590}
     591
     592/**
    528593 * Register all WordPress scripts.
    529594 *
     
    537602 */
    538603function wp_default_scripts( &$scripts ) {
    539     include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
    540 
    541     $develop_src = false !== strpos( $wp_version, '-src' );
    542 
    543     if ( ! defined( 'SCRIPT_DEBUG' ) ) {
    544         define( 'SCRIPT_DEBUG', $develop_src );
    545     }
     604    $suffix = wp_scripts_get_suffix();
     605    $dev_suffix = wp_scripts_get_suffix( 'dev' );
    546606
    547607    if ( ! $guessurl = site_url() ) {
     
    555615    $scripts->default_dirs = array('/wp-admin/js/', '/wp-includes/js/');
    556616
    557     $suffix = SCRIPT_DEBUG ? '' : '.min';
    558     $dev_suffix = $develop_src ? '' : '.min';
    559617
    560618    $scripts->add( 'utils', "/wp-includes/js/utils$suffix.js" );
     
    613671    $scripts->add( 'colorpicker', "/wp-includes/js/colorpicker$suffix.js", array('prototype'), '3517m' );
    614672
    615     $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('utils','jquery'), false, 1 );
     673    $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('wp-tinymce','utils','jquery'), false, 1 );
    616674
    617675    // Back-compat for old DFW. To-do: remove at the end of 2016.
     
    11291187    $scripts->add( 'wp-api', "/wp-includes/js/wp-api$suffix.js", array( 'jquery', 'backbone', 'underscore', 'wp-api-request' ), false, 1 );
    11301188
    1131     wp_default_packages_vendor( $scripts, $dev_suffix );
    1132     wp_default_packages_scripts( $scripts, $suffix );
    1133     if ( did_action( 'init' ) ) {
    1134         wp_default_packages_inline_scripts( $scripts );
    1135     }
    1136 
    11371189    if ( is_admin() ) {
    11381190        $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array( 'jquery', 'wp-ajax-response' ), false, 1 );
Note: See TracChangeset for help on using the changeset viewer.