Make WordPress Core

Ticket #8505: 8505-2.patch

File 8505-2.patch, 2.6 KB (added by azaozz, 17 years ago)
  • wp-includes/class.wp-scripts.php

     
    1919class WP_Scripts extends WP_Dependencies {
    2020        var $base_url; // Full URL with trailing slash
    2121        var $default_version;
     22        var $print_once_done = false;
    2223
    2324        function __construct() {
    2425                do_action_ref_array( 'wp_default_scripts', array(&$this) );
     
    4445
    4546                echo "<script type='text/javascript'>\n";
    4647                echo "/* <![CDATA[ */\n";
    47                 echo "function convertEntities(o) {\n";
    48                 echo "  var c = function(s) {\n";
    49                 echo "          if (/&[^;]+;/.test(s)) {\n";
    50                 echo "                  var e = document.createElement('div');\n";
    51                 echo "                  e.innerHTML = s;\n";
    52                 echo "                  return !e.firstChild ? s : e.firstChild.nodeValue;\n";
    53                 echo "          }\n";
    54                 echo "          return s;\n";
    55                 echo "  }\n";
    56                 echo "  if ( typeof o === 'string' ) {\n";
    57                 echo "          return c(o);\n";
    58                 echo "  } else if ( typeof o === 'object' ) {\n";
    59                 echo "          for (var v in o) {\n";
    60                 echo "                  if ( typeof o[v] === 'string' )\n";
    61                 echo "                          o[v] = c(o[v]);\n";
    62                 echo "          }\n";
    63                 echo "  }\n";
    64                 echo "  return o;\n";
    65                 echo "};\n";
    6648                echo "\t$object_name = {\n";
    6749                $eol = '';
    6850                foreach ( $this->registered[$handle]->extra['l10n'][1] as $var => $val ) {
     
    8163                if ( !parent::do_item($handle) )
    8264                        return false;
    8365
     66                $this->print_once();
     67
    8468                $ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version;
    8569                if ( isset($this->args[$handle]) )
    8670                        $ver .= '&amp;' . $this->args[$handle];
     
    122106                        $this->to_do = apply_filters( 'print_scripts_array', $this->to_do );
    123107                return $r;
    124108        }
     109
     110        function print_once() {
     111                if ( $this->print_once_done )
     112                        return;
     113
     114                echo "<script type='text/javascript'>\n";
     115                echo "/* <![CDATA[ */\n";
     116                echo "function convertEntities(o) {\n";
     117                echo "  var c = function(s) {\n";
     118                echo "          if (/&[^;]+;/.test(s)) {\n";
     119                echo "                  var e = document.createElement('div');\n";
     120                echo "                  e.innerHTML = s;\n";
     121                echo "                  return !e.firstChild ? s : e.firstChild.nodeValue;\n";
     122                echo "          }\n";
     123                echo "          return s;\n";
     124                echo "  }\n";
     125                echo "  if ( typeof o === 'string' ) {\n";
     126                echo "          return c(o);\n";
     127                echo "  } else if ( typeof o === 'object' ) {\n";
     128                echo "          for (var v in o) {\n";
     129                echo "                  if ( typeof o[v] === 'string' )\n";
     130                echo "                          o[v] = c(o[v]);\n";
     131                echo "          }\n";
     132                echo "  }\n";
     133                echo "  return o;\n";
     134                echo "};\n";
     135                echo "/* ]]> */\n";
     136                echo "</script>\n";
     137
     138                $this->print_once_done = true;
     139        }
    125140}