[ Index ]

PHP Cross Reference of BackPress

title

Body

[close]

/includes/ -> class.wp-scripts.php (source)

   1  <?php
   2  /**
   3   * BackPress Scripts enqueue.
   4   *
   5   * These classes were refactored from the WordPress WP_Scripts and WordPress
   6   * script enqueue API.
   7   *
   8   * @package BackPress
   9   * @since r16
  10   */
  11  
  12  /**
  13   * BackPress Scripts enqueue class.
  14   *
  15   * @package BackPress
  16   * @uses WP_Dependencies
  17   * @since r16
  18   */
  19  class WP_Scripts extends WP_Dependencies {
  20      var $base_url; // Full URL with trailing slash
  21      var $content_url;
  22      var $default_version;
  23      var $in_footer = array();
  24      var $concat = '';
  25      var $concat_version = '';
  26      var $do_concat = false;
  27      var $print_html = '';
  28      var $print_code = '';
  29      var $ext_handles = '';
  30      var $ext_version = '';
  31      var $default_dirs;
  32  
  33  	function __construct() {
  34          do_action_ref_array( 'wp_default_scripts', array(&$this) );
  35      }
  36  
  37      /**
  38       * Prints scripts
  39       *
  40       * Prints the scripts passed to it or the print queue.  Also prints all necessary dependencies.
  41       *
  42       * @param mixed handles (optional) Scripts to be printed.  (void) prints queue, (string) prints that script, (array of strings) prints those scripts.
  43       * @param int group (optional) If scripts were queued in groups prints this group number.
  44       * @return array Scripts that have been printed
  45       */
  46  	function print_scripts( $handles = false, $group = false ) {
  47          return $this->do_items( $handles, $group );
  48      }
  49  
  50  	function print_scripts_l10n( $handle, $echo = true ) {
  51          if ( empty($this->registered[$handle]->extra['l10n']) || empty($this->registered[$handle]->extra['l10n'][0]) || !is_array($this->registered[$handle]->extra['l10n'][1]) )
  52              return false;
  53  
  54          $object_name = $this->registered[$handle]->extra['l10n'][0];
  55  
  56          $data = "var $object_name = {\n";
  57          $eol = '';
  58          foreach ( $this->registered[$handle]->extra['l10n'][1] as $var => $val ) {
  59              if ( 'l10n_print_after' == $var ) {
  60                  $after = $val;
  61                  continue;
  62              }
  63              $data .= "$eol\t$var: \"" . esc_js( $val ) . '"';
  64              $eol = ",\n";
  65          }
  66          $data .= "\n};\n";
  67          $data .= isset($after) ? "$after\n" : '';
  68  
  69          if ( $echo ) {
  70              echo "<script type='text/javascript'>\n";
  71              echo "/* <![CDATA[ */\n";
  72              echo $data;
  73              echo "/* ]]> */\n";
  74              echo "</script>\n";
  75              return true;
  76          } else {
  77              return $data;
  78          }
  79      }
  80  
  81  	function do_item( $handle, $group = false ) {
  82          if ( !parent::do_item($handle) )
  83              return false;
  84  
  85          if ( 0 === $group && $this->groups[$handle] > 0 ) {
  86              $this->in_footer[] = $handle;
  87              return false;
  88          }
  89  
  90          if ( false === $group && in_array($handle, $this->in_footer, true) )
  91              $this->in_footer = array_diff( $this->in_footer, (array) $handle );
  92  
  93          if ( null === $this->registered[$handle]->ver )
  94              $ver = '';
  95          else
  96              $ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version;
  97  
  98          if ( isset($this->args[$handle]) )
  99              $ver = $ver ? $ver . '&amp;' . $this->args[$handle] : $this->args[$handle];
 100  
 101          $src = $this->registered[$handle]->src;
 102  
 103          if ( $this->do_concat ) {
 104              $srce = apply_filters( 'script_loader_src', $src, $handle );
 105              if ( $this->in_default_dir($srce) ) {
 106                  $this->print_code .= $this->print_scripts_l10n( $handle, false );
 107                  $this->concat .= "$handle,";
 108                  $this->concat_version .= "$handle$ver";
 109                  return true;
 110              } else {
 111                  $this->ext_handles .= "$handle,";
 112                  $this->ext_version .= "$handle$ver";
 113              }
 114          }
 115  
 116          $this->print_scripts_l10n( $handle );
 117          if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) {
 118              $src = $this->base_url . $src;
 119          }
 120  
 121          if ( !empty($ver) )
 122              $src = add_query_arg('ver', $ver, $src);
 123          $src = esc_url(apply_filters( 'script_loader_src', $src, $handle ));
 124  
 125          if ( $this->do_concat )
 126              $this->print_html .= "<script type='text/javascript' src='$src'></script>\n";
 127          else
 128              echo "<script type='text/javascript' src='$src'></script>\n";
 129  
 130          return true;
 131      }
 132  
 133      /**
 134       * Localizes a script
 135       *
 136       * Localizes only if script has already been added
 137       *
 138       * @param string handle Script name
 139       * @param string object_name Name of JS object to hold l10n info
 140       * @param array l10n Array of JS var name => localized string
 141       * @return bool Successful localization
 142       */
 143  	function localize( $handle, $object_name, $l10n ) {
 144          if ( !$object_name || !$l10n )
 145              return false;
 146          return $this->add_data( $handle, 'l10n', array( $object_name, $l10n ) );
 147      }
 148  
 149  	function set_group( $handle, $recursion, $group = false ) {
 150          $grp = isset($this->registered[$handle]->extra['group']) ? (int) $this->registered[$handle]->extra['group'] : 0;
 151          if ( false !== $group && $grp > $group )
 152              $grp = $group;
 153  
 154          return parent::set_group( $handle, $recursion, $grp );
 155      }
 156  
 157  	function all_deps( $handles, $recursion = false, $group = false ) {
 158          $r = parent::all_deps( $handles, $recursion );
 159          if ( !$recursion )
 160              $this->to_do = apply_filters( 'print_scripts_array', $this->to_do );
 161          return $r;
 162      }
 163  
 164  	function do_head_items() {
 165          $this->do_items(false, 0);
 166          return $this->done;
 167      }
 168  
 169  	function do_footer_items() {
 170          if ( !empty($this->in_footer) ) {
 171              foreach( $this->in_footer as $key => $handle ) {
 172                  if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
 173                      $this->do_item($handle);
 174                      $this->done[] = $handle;
 175                      unset( $this->in_footer[$key] );
 176                  }
 177              }
 178          }
 179          return $this->done;
 180      }
 181  
 182  	function in_default_dir($src) {
 183          if ( ! $this->default_dirs )
 184              return true;
 185  
 186          foreach ( (array) $this->default_dirs as $test ) {
 187              if ( 0 === strpos($src, $test) )
 188                  return true;
 189          }
 190          return false;
 191      }
 192  
 193  	function reset() {
 194          $this->do_concat = false;
 195          $this->print_code = '';
 196          $this->concat = '';
 197          $this->concat_version = '';
 198          $this->print_html = '';
 199          $this->ext_version = '';
 200          $this->ext_handles = '';
 201      }
 202  }


Generated: Sat Nov 23 01:00:54 2024 Cross-referenced by PHPXref 0.7.1