X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/0459461f9ea42e0b090759ff6fe5f48360bef750..refs/tags/wordpress-4.5:/wp-includes/class.wp-scripts.php diff --git a/wp-includes/class.wp-scripts.php b/wp-includes/class.wp-scripts.php index 52c6824b..144bfce2 100644 --- a/wp-includes/class.wp-scripts.php +++ b/wp-includes/class.wp-scripts.php @@ -1,41 +1,154 @@ init(); add_action( 'init', array( $this, 'init' ), 0 ); } /** + * Initialize the class. + * + * @since 3.4.0 * @access public */ public function init() { @@ -54,6 +167,10 @@ class WP_Scripts extends WP_Dependencies { * * Prints the scripts passed to it or the print queue. Also prints all necessary dependencies. * + * @since 2.1.0 + * @since 2.8.0 Added the `$group` parameter. + * @access public + * * @param mixed $handles Optional. Scripts to be printed. (void) prints queue, (string) prints * that script, (array of strings) prints those scripts. Default false. * @param int $group Optional. If scripts were queued in groups prints this group number. @@ -65,12 +182,19 @@ class WP_Scripts extends WP_Dependencies { } /** - * @deprecated 3.3 + * Prints extra scripts of a registered script. + * + * @since 2.1.0 + * @since 2.8.0 Added the `$echo` parameter. + * @deprecated 3.3.0 + * @access public + * * @see print_extra_script() * - * @param string $handle - * @param bool $echo - * @return bool|string|void + * @param string $handle The script's registered handle. + * @param bool $echo Optional. Whether to echo the extra script instead of just returning it. + * Default true. + * @return bool|string|void Void if no data exists, extra scripts if `$echo` is true, true otherwise. */ public function print_scripts_l10n( $handle, $echo = true ) { _deprecated_function( __FUNCTION__, '3.3', 'print_extra_script()' ); @@ -78,9 +202,15 @@ class WP_Scripts extends WP_Dependencies { } /** - * @param string $handle - * @param bool $echo - * @return bool|string|void + * Prints extra scripts of a registered script. + * + * @since 3.3.0 + * @access public + * + * @param string $handle The script's registered handle. + * @param bool $echo Optional. Whether to echo the extra script instead of just returning it. + * Default true. + * @return bool|string|void Void if no data exists, extra scripts if `$echo` is true, true otherwise. */ public function print_extra_script( $handle, $echo = true ) { if ( !$output = $this->get_data( $handle, 'data' ) ) @@ -99,9 +229,17 @@ class WP_Scripts extends WP_Dependencies { } /** - * @param string $handle Name of the item. Should be unique. - * @param int|bool $group - * @return bool True on success, false if not set. + * Processes a script dependency. + * + * @since 2.6.0 + * @since 2.8.0 Added the `$group` parameter. + * @access public + * + * @see WP_Dependencies::do_item() + * + * @param string $handle The script's registered handle. + * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false. + * @return bool True on success, false on failure. */ public function do_item( $handle, $group = false ) { if ( !parent::do_item($handle) ) @@ -135,6 +273,17 @@ class WP_Scripts extends WP_Dependencies { $cond_after = "\n"; } + $before_handle = $this->print_inline_script( $handle, 'before', false ); + $after_handle = $this->print_inline_script( $handle, 'after', false ); + + if ( $before_handle ) { + $before_handle = sprintf( "\n", $before_handle ); + } + + if ( $after_handle ) { + $after_handle = sprintf( "\n", $after_handle ); + } + if ( $this->do_concat ) { /** * Filter the script loader source. @@ -145,7 +294,14 @@ class WP_Scripts extends WP_Dependencies { * @param string $handle Script handle. */ $srce = apply_filters( 'script_loader_src', $src, $handle ); - if ( $this->in_default_dir( $srce ) && ! $conditional ) { + + if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle ) ) { + $this->do_concat = false; + + // Have to print the so-far concatenated scripts right away to maintain the right order. + _print_scripts(); + $this->reset(); + } elseif ( $this->in_default_dir( $srce ) && ! $conditional ) { $this->print_code .= $this->print_extra_script( $handle, false ); $this->concat .= "$handle,"; $this->concat_version .= "$handle$ver"; @@ -168,6 +324,11 @@ class WP_Scripts extends WP_Dependencies { 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 ) ) ) { $src = $this->base_url . $src; } @@ -181,7 +342,7 @@ class WP_Scripts extends WP_Dependencies { if ( ! $src ) return true; - $tag = "{$cond_before}\n{$cond_after}"; + $tag = "{$cond_before}{$before_handle}\n{$after_handle}{$cond_after}"; /** * Filter the HTML script tag of an enqueued script. @@ -204,7 +365,66 @@ class WP_Scripts extends WP_Dependencies { } /** - * Localizes a script, only if the script has already been added + * Adds extra code to a registered script. + * + * @since 4.5.0 + * @access public + * + * @param string $handle Name of the script to add the inline script to. Must be lowercase. + * @param string $data String containing the javascript to be added. + * @param string $position Optional. Whether to add the inline script before the handle + * or after. Default 'after'. + * @return bool True on success, false on failure. + */ + public function add_inline_script( $handle, $data, $position = 'after' ) { + if ( ! $data ) { + return false; + } + + if ( 'after' !== $position ) { + $position = 'before'; + } + + $script = (array) $this->get_data( $handle, $position ); + $script[] = $data; + + return $this->add_data( $handle, $position, $script ); + } + + /** + * Prints inline scripts registered for a specific handle. + * + * @since 4.5.0 + * @access public + * + * @param string $handle Name of the script to add the inline script to. Must be lowercase. + * @param string $position Optional. Whether to add the inline script before the handle + * or after. Default 'after'. + * @param bool $echo Optional. Whether to echo the script instead of just returning it. + * Default true. + * @return string|false Script on success, false otherwise. + */ + public function print_inline_script( $handle, $position = 'after', $echo = true ) { + $output = $this->get_data( $handle, $position ); + + if ( empty( $output ) ) { + return false; + } + + $output = trim( implode( "\n", $output ), "\n" ); + + if ( $echo ) { + printf( "\n", $output ); + } + + return $output; + } + + /** + * Localizes a script, only if the script has already been added. + * + * @since 2.1.0 + * @access public * * @param string $handle * @param string $object_name @@ -241,9 +461,16 @@ class WP_Scripts extends WP_Dependencies { } /** - * @param string $handle Name of the item. Should be unique. - * @param bool $recursion Internal flag that calling function was called recursively. - * @param mixed $group Group level. + * Sets handle group. + * + * @since 2.8.0 + * @access public + * + * @see WP_Dependencies::set_group() + * + * @param string $handle Name of the item. Should be unique. + * @param bool $recursion Internal flag that calling function was called recursively. + * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false. * @return bool Not already in the group or a lower group */ public function set_group( $handle, $recursion, $group = false ) { @@ -259,13 +486,20 @@ class WP_Scripts extends WP_Dependencies { } /** - * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). - * @param bool $recursion Internal flag that function is calling itself. - * @param mixed $group Group level: (int) level, (false) no groups. + * Determines script dependencies. + * + * @since 2.1.0 + * @access public + * + * @see WP_Dependencies::all_deps() + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + * @param bool $recursion Internal flag that function is calling itself. + * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false. * @return bool True on success, false on failure. */ public function all_deps( $handles, $recursion = false, $group = false ) { - $r = parent::all_deps( $handles, $recursion ); + $r = parent::all_deps( $handles, $recursion, $group ); if ( ! $recursion ) { /** * Filter the list of script dependencies left to print. @@ -280,7 +514,14 @@ class WP_Scripts extends WP_Dependencies { } /** - * @return array + * Processes items and dependencies for the head group. + * + * @since 2.8.0 + * @access public + * + * @see WP_Dependencies::do_items() + * + * @return array Handles of items that have been processed. */ public function do_head_items() { $this->do_items(false, 0); @@ -288,7 +529,14 @@ class WP_Scripts extends WP_Dependencies { } /** - * @return array + * Processes items and dependencies for the footer group. + * + * @since 2.8.0 + * @access public + * + * @see WP_Dependencies::do_items() + * + * @return array Handles of items that have been processed. */ public function do_footer_items() { $this->do_items(false, 1); @@ -296,8 +544,13 @@ class WP_Scripts extends WP_Dependencies { } /** - * @param string $src - * @return bool + * Whether a handle's source is in a default directory. + * + * @since 2.8.0 + * @access public + * + * @param string $src The source of the enqueued script. + * @return bool True if found, false if not. */ public function in_default_dir( $src ) { if ( ! $this->default_dirs ) { @@ -317,6 +570,9 @@ class WP_Scripts extends WP_Dependencies { } /** + * Resets class properties. + * + * @since 2.8.0 * @access public */ public function reset() {