Make WordPress Core

Ticket #11520: print_scripts_l10n.diff

File print_scripts_l10n.diff, 1.7 KB (added by scribu, 15 years ago)
  • wp-includes/class.wp-scripts.php

     
    4848        }
    4949
    5050        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]) )
     51                if ( empty($this->registered[$handle]->extra['l10n']) || empty($this->registered[$handle]->extra['l10n'][0]) )
    5252                        return false;
    5353
    5454                $object_name = $this->registered[$handle]->extra['l10n'][0];
     55                $data = $this->registered[$handle]->extra['l10n'][1];
    5556
    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;
     57                if ( is_array($data) && isset($data['l10n_print_after']) ) {
     58                        $after = $data['l10n_print_after'];
     59                        unset($data['l10n_print_after']);
    7660                } else {
    77                         return $data;
     61                        $after = '';
    7862                }
     63
     64                $output = "var $object_name = " . json_encode($data) . "; $after\n";
     65
     66                if ( !$echo )
     67                        return $output;
     68
     69                echo "<script type='text/javascript'>\n";
     70                echo "/* <![CDATA[ */\n";
     71                echo $output;
     72                echo "/* ]]> */\n";
     73                echo "</script>\n";
     74                return true;
    7975        }
    8076
    8177        function do_item( $handle, $group = false ) {