WordPress.org

Make WordPress Core

Ticket #11520: 11520-4.patch

File 11520-4.patch, 27.4 KB (added by azaozz, 3 years ago)
  • wp-admin/load-styles.php

     
    125125                $content .= get_file($rtl_path) . "\n"; 
    126126        } 
    127127 
    128         $out .= str_replace( '../images/', 'images/', $content ); 
     128        if ( strpos( $style->src, '/wp-includes/css/' ) === 0 ) 
     129                $out .= str_replace( '../images/', '../wp-includes/images/', $content ); 
     130        else 
     131                $out .= str_replace( '../images/', 'images/', $content ); 
    129132} 
    130133 
    131134header('Content-Type: text/css'); 
  • wp-includes/class.wp-scripts.php

     
    4747                return $this->do_items( $handles, $group ); 
    4848        } 
    4949 
     50        // Deprecated, see print_extra_js() 
    5051        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 $this->print_extra_js( $handle, $echo, true ); 
     53        } 
     54 
     55        function print_extra_js( $handle, $echo = true, $_l10n = false ) { 
     56                if ( empty($this->registered[$handle]->extra['data']) ) 
    5257                        return false; 
    5358 
    54                 $object_name = $this->registered[$handle]->extra['l10n'][0]; 
     59                if ( $_l10n ) { 
     60                        $name = $this->registered[$handle]->extra['l10n'][0]; 
     61                        $data = $this->registered[$handle]->extra['l10n'][1]; 
     62                        $after = ''; 
    5563 
    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; 
     64                        if ( is_array($data) && isset($data['l10n_print_after']) ) { 
     65                                $after = $data['l10n_print_after']; 
     66                                unset($data['l10n_print_after']); 
    6267                        } 
    63                         $data .= "$eol\t$var: \"" . esc_js( $val ) . '"'; 
    64                         $eol = ",\n"; 
     68                        $output = "var $name = " . json_encode($data) . "; $after\n"; 
     69                } else { 
     70                        foreach ( (array) $this->registered[$handle]->extra['data'] as $name => $data ) { 
     71                                $output = "var $name = " . json_encode($data) . ";\n"; 
     72                        } 
    6573                } 
    66                 $data .= "\n};\n"; 
    67                 $data .= isset($after) ? "$after\n" : ''; 
    6874 
    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                 } 
     75                if ( !$echo ) 
     76                        return $output; 
     77 
     78                echo "<script type='text/javascript'>\n"; 
     79                echo "/* <![CDATA[ */\n"; 
     80                echo $output; 
     81                echo "\n/* ]]> */"; 
     82                echo "\n</script>\n"; 
     83 
     84                return true; 
    7985        } 
    8086 
    8187        function do_item( $handle, $group = false ) { 
     
    103109                if ( $this->do_concat ) { 
    104110                        $srce = apply_filters( 'script_loader_src', $src, $handle ); 
    105111                        if ( $this->in_default_dir($srce) ) { 
    106                                 $this->print_code .= $this->print_scripts_l10n( $handle, false ); 
     112                                $this->print_code .= $this->print_extra_js( $handle, false ); 
    107113                                $this->concat .= "$handle,"; 
    108114                                $this->concat_version .= "$handle$ver"; 
    109115                                return true; 
     
    113119                        } 
    114120                } 
    115121 
    116                 $this->print_scripts_l10n( $handle ); 
     122                $this->print_extra_js( $handle ); 
    117123                if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) { 
    118124                        $src = $this->base_url . $src; 
    119125                } 
     
    131137        } 
    132138 
    133139        /** 
    134          * Localizes a script 
     140         * Localizes a script (Deprecated) 
    135141         * 
    136142         * Localizes only if script has already been added 
    137143         * 
     
    141147         * @return bool Successful localization 
    142148         */ 
    143149        function localize( $handle, $object_name, $l10n ) { 
    144                 if ( !$object_name || !$l10n ) 
     150                return $this->add_js( $handle, $object_name, $l10n ); 
     151        } 
     152 
     153        /** 
     154         * Add extra Javascript 
     155         * 
     156         * Only if script has already been added. 
     157         * 
     158         * @param string $handle Script name 
     159         * @param string $name Name of JS object to hold the data 
     160         * @param array $data Associative array of JS name => value 
     161         * @return bool Successful or not 
     162         */ 
     163        function add_js( $handle, $name, $data ) { 
     164                if ( !$name || !is_array($data) ) 
    145165                        return false; 
    146                 return $this->add_data( $handle, 'l10n', array( $object_name, $l10n ) ); 
     166 
     167                if ( !empty( $this->registered[$handle]->extra['data'][$name] ) ) 
     168                        $data = array_merge( $data, (array) $this->registered[$handle]->extra['data'][$name] ); 
     169 
     170                return $this->add_data( $handle, 'data', array( $name => $data ) ); 
    147171        } 
    148172 
    149173        function set_group( $handle, $recursion, $group = false ) { 
  • wp-includes/class.wp-styles.php

     
    2525        var $concat_version = ''; 
    2626        var $do_concat = false; 
    2727        var $print_html = ''; 
     28        var $print_code = ''; 
    2829        var $default_dirs; 
    2930 
    3031        function __construct() { 
     
    3536                if ( !parent::do_item($handle) ) 
    3637                        return false; 
    3738 
    38                 if ( null === $this->registered[$handle]->ver ) 
     39                $obj = $this->registered[$handle]; 
     40                if ( null === $obj->ver ) 
    3941                        $ver = ''; 
    4042                else 
    41                         $ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version; 
     43                        $ver = $obj->ver ? $obj->ver : $this->default_version; 
    4244 
    4345                if ( isset($this->args[$handle]) ) 
    4446                        $ver = $ver ? $ver . '&amp;' . $this->args[$handle] : $this->args[$handle]; 
    4547 
    4648                if ( $this->do_concat ) { 
    47                         if ( $this->in_default_dir($this->registered[$handle]->src) && !isset($this->registered[$handle]->extra['conditional']) && !isset($this->registered[$handle]->extra['alt']) ) { 
     49                        if ( $this->in_default_dir($obj->src) && !isset($obj->extra['conditional'])     && !isset($obj->extra['alt']) ) { 
    4850                                $this->concat .= "$handle,"; 
    4951                                $this->concat_version .= "$handle$ver"; 
     52 
     53                                if ( !empty($this->registered[$handle]->extra['data']) ) 
     54                                        $this->print_code .= $this->registered[$handle]->extra['data']; 
     55 
    5056                                return true; 
    5157                        } 
    5258                } 
    5359 
    54                 if ( isset($this->registered[$handle]->args) ) 
    55                         $media = esc_attr( $this->registered[$handle]->args ); 
     60                if ( isset($obj->args) ) 
     61                        $media = esc_attr( $obj->args ); 
    5662                else 
    5763                        $media = 'all'; 
    5864 
    59                 $href = $this->_css_href( $this->registered[$handle]->src, $ver, $handle ); 
    60                 $rel = isset($this->registered[$handle]->extra['alt']) && $this->registered[$handle]->extra['alt'] ? 'alternate stylesheet' : 'stylesheet'; 
    61                 $title = isset($this->registered[$handle]->extra['title']) ? "title='" . esc_attr( $this->registered[$handle]->extra['title'] ) . "'" : ''; 
     65                $href = $this->_css_href( $obj->src, $ver, $handle ); 
     66                $rel = isset($obj->extra['alt']) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet'; 
     67                $title = isset($obj->extra['title']) ? "title='" . esc_attr( $obj->extra['title'] ) . "'" : ''; 
    6268 
    6369                $end_cond = $tag = ''; 
    64                 if ( isset($this->registered[$handle]->extra['conditional']) && $this->registered[$handle]->extra['conditional'] ) { 
    65                         $tag .= "<!--[if {$this->registered[$handle]->extra['conditional']}]>\n"; 
     70                if ( isset($obj->extra['conditional']) && $obj->extra['conditional'] ) { 
     71                        $tag .= "<!--[if {$obj->extra['conditional']}]>\n"; 
    6672                        $end_cond = "<![endif]-->\n"; 
    6773                } 
    6874 
    6975                $tag .= apply_filters( 'style_loader_tag', "<link rel='$rel' id='$handle-css' $title href='$href' type='text/css' media='$media' />\n", $handle ); 
    70                 if ( 'rtl' === $this->text_direction && isset($this->registered[$handle]->extra['rtl']) && $this->registered[$handle]->extra['rtl'] ) { 
    71                         if ( is_bool( $this->registered[$handle]->extra['rtl'] ) ) { 
    72                                 $suffix = isset( $this->registered[$handle]->extra['suffix'] ) ? $this->registered[$handle]->extra['suffix'] : ''; 
    73                                 $rtl_href = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $this->_css_href( $this->registered[$handle]->src , $ver, "$handle-rtl" )); 
     76                if ( 'rtl' === $this->text_direction && isset($obj->extra['rtl']) && $obj->extra['rtl'] ) { 
     77                        if ( is_bool( $obj->extra['rtl'] ) ) { 
     78                                $suffix = isset( $obj->extra['suffix'] ) ? $obj->extra['suffix'] : ''; 
     79                                $rtl_href = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $this->_css_href( $obj->src , $ver, "$handle-rtl" )); 
    7480                        } else { 
    75                                 $rtl_href = $this->_css_href( $this->registered[$handle]->extra['rtl'], $ver, "$handle-rtl" ); 
     81                                $rtl_href = $this->_css_href( $obj->extra['rtl'], $ver, "$handle-rtl" ); 
    7682                        } 
    7783 
    7884                        $tag .= apply_filters( 'style_loader_tag', "<link rel='$rel' id='$handle-rtl-css' $title href='$rtl_href' type='text/css' media='$media' />\n", $handle ); 
     
    8086 
    8187                $tag .= $end_cond; 
    8288 
    83                 if ( $this->do_concat ) 
     89                if ( $this->do_concat ) { 
    8490                        $this->print_html .= $tag; 
    85                 else 
     91                        $this->print_html .= $this->print_extra_css( $handle, false ); 
     92                } else { 
    8693                        echo $tag; 
     94                        $this->print_extra_css( $handle ); 
     95                } 
    8796 
    88                 // Could do something with $this->registered[$handle]->extra here to print out extra CSS rules 
    89 //              echo "<style type='text/css'>\n"; 
    90 //              echo "/* <![CDATA[ */\n"; 
    91 //              echo "/* ]]> */\n"; 
    92 //              echo "</style>\n"; 
     97                return true; 
     98        } 
    9399 
     100        function add_css( $handle, $data ) { 
     101                if ( !$data ) 
     102                        return false; 
     103 
     104                if ( !empty( $this->registered[$handle]->extra['data'] ) ) 
     105                        $data .= "\n" . $this->registered[$handle]->extra['data']; 
     106 
     107                return $this->add_data( $handle, 'data', $data ); 
     108        } 
     109 
     110        function print_extra_css( $handle, $echo = true ) { 
     111                if ( empty($this->registered[$handle]->extra['data']) ) 
     112                        return false; 
     113 
     114                $output = $this->registered[$handle]->extra['data']; 
     115 
     116                if ( !$echo ) 
     117                        return $output; 
     118 
     119                echo "<style type='text/css'>\n"; 
     120                echo "$output\n"; 
     121                echo "</style>\n"; 
     122 
    94123                return true; 
    95124        } 
    96125 
  • wp-includes/functions.wp-scripts.php

     
    5656} 
    5757 
    5858/** 
    59  * Localizes a script. 
     59 * Localizes a script. (Deprecated) 
    6060 * 
    6161 * Localizes only if script has already been added. 
    6262 * 
     
    6464 * @see WP_Scripts::localize() 
    6565 */ 
    6666function wp_localize_script( $handle, $object_name, $l10n ) { 
     67        return wp_add_js( $handle, $object_name, $l10n ); 
     68} 
     69 
     70/** 
     71 * Adds extra Javascript. 
     72 * 
     73 * Works only if the script has already been added. 
     74 * Accepts an associative array $data and creates JS object: 
     75 * "$name" = { 
     76 *   key: value, 
     77 *   key: value, 
     78 *   ... 
     79 * } 
     80 * The $name is passed directly so it should be qualified JS variable /[a-zA-Z0-9_]+/ 
     81 * The $data array is JSON encoded. If called more than once for the same $handle, with the same $name, 
     82 * the object would contain all walues. In that case if two or more keys are the same, 
     83 * the first value is kept and subsequent values are ignored. 
     84 *  
     85 * @since 3.3 
     86 * @see WP_Scripts::add_js() 
     87 */ 
     88function wp_add_js( $handle, $name, $data ) { 
    6789        global $wp_scripts; 
    6890        if ( !is_a($wp_scripts, 'WP_Scripts') ) 
    6991                return false; 
    7092 
    71         return $wp_scripts->localize( $handle, $object_name, $l10n ); 
     93        return $wp_scripts->add_js( $handle, $name, $data ); 
    7294} 
    7395 
    7496/** 
  • wp-includes/functions.wp-styles.php

     
    3434} 
    3535 
    3636/** 
     37 * Adds extra CSS. 
     38 * 
     39 * Works only if the stylesheet has already been added. 
     40 * Accepts a string $data containing the CSS. 
     41 *  
     42 * @since 3.3 
     43 * @see WP_Scripts::add_css() 
     44 */ 
     45function wp_add_css( $handle, $data ) { 
     46        global $wp_styles; 
     47        if ( !is_a($wp_styles, 'WP_Styles') ) 
     48                return false; 
     49 
     50        return $wp_styles->add_css( $handle, $data ); 
     51} 
     52 
     53/** 
    3754 * Register CSS style file. 
    3855 * 
    3956 * @since r79 
  • wp-includes/js/l10n.dev.js

     
    1 //Used to ensure that Entities used in L10N strings are correct 
    2 function convertEntities(o) { 
    3         var c, v; 
    4         c = function(s) { 
    5                 if (/&[^;]+;/.test(s)) { 
    6                         var e = document.createElement("div"); 
    7                         e.innerHTML = s; 
    8                         return !e.firstChild ? s : e.firstChild.nodeValue; 
    9                 } 
    10                 return s; 
    11         } 
    12  
    13         if ( typeof o === 'string' ) { 
    14                 return c(o); 
    15         } else if ( typeof o === 'object' ) { 
    16                 for (v in o) { 
    17                         if ( typeof o[v] === 'string' ) { 
    18                                 o[v] = c(o[v]); 
    19                         } 
    20                 } 
    21         } 
    22         return o; 
    23 } 
    24  No newline at end of file 
  • wp-includes/js/l10n.js

     
    1 function convertEntities(b){var d,a;d=function(c){if(/&[^;]+;/.test(c)){var f=document.createElement("div");f.innerHTML=c;return !f.firstChild?c:f.firstChild.nodeValue}return c};if(typeof b==="string"){return d(b)}else{if(typeof b==="object"){for(a in b){if(typeof b[a]==="string"){b[a]=d(b[a])}}}}return b}; 
    2  No newline at end of file 
  • wp-includes/script-loader.php

     
    5858 
    5959        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : ''; 
    6060 
    61         // Always ensure that we have the convertEntities function 
    62         $scripts->add( 'l10n', "/wp-includes/js/l10n$suffix.js", false, '20101110' ); 
    63         $scripts->enqueue( 'l10n' ); 
    64  
    6561        $scripts->add( 'utils', "/wp-admin/js/utils$suffix.js", false, '20101110' ); 
    6662 
    6763        $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20110711' ); 
    6864        $scripts->add_data( 'common', 'group', 1 ); 
    69         $scripts->localize( 'common', 'commonL10n', array( 
    70                 'warnDelete' => __("You are about to permanently delete the selected items.\n  'Cancel' to stop, 'OK' to delete."), 
    71                 'l10n_print_after' => 'try{convertEntities(commonL10n);}catch(e){};' 
     65        $scripts->add_js( 'common', 'commonL10n', array( 
     66                'warnDelete' => __("You are about to permanently delete the selected items.\n  'Cancel' to stop, 'OK' to delete.") 
    7267        ) ); 
    7368 
    7469        $scripts->add( 'sack', "/wp-includes/js/tw-sack$suffix.js", false, '1.6.1' ); 
     
    7671 
    7772        $scripts->add( 'quicktags', "/wp-includes/js/quicktags$suffix.js", false, '20110502' ); 
    7873        $scripts->add_data( 'quicktags', 'group', 1 ); 
    79         $scripts->localize( 'quicktags', 'quicktagsL10n', array( 
     74        $scripts->add_js( 'quicktags', 'quicktagsL10n', array( 
    8075                'quickLinks' => __('(Quick Links)'), 
    8176                'wordLookup' => __('Enter a word to look up:'), 
    8277                'dictionaryLookup' => esc_attr(__('Dictionary lookup')), 
     
    8782                'enterImageURL' => __('Enter the URL of the image'), 
    8883                'enterImageDescription' => __('Enter a description of the image'), 
    8984                'fullscreen' => __('fullscreen'), 
    90                 'toggleFullscreen' => esc_attr( __('Toggle fullscreen mode') ), 
    91                 'l10n_print_after' => 'try{convertEntities(quicktagsL10n);}catch(e){};' 
     85                'toggleFullscreen' => esc_attr( __('Toggle fullscreen mode') ) 
    9286        ) ); 
    9387 
    9488        $scripts->add( 'colorpicker', "/wp-includes/js/colorpicker$suffix.js", array('prototype'), '3517m' ); 
     
    10397 
    10498        $scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array('jquery'), '20091119' ); 
    10599        $scripts->add_data( 'wp-ajax-response', 'group', 1 ); 
    106         $scripts->localize( 'wp-ajax-response', 'wpAjax', array( 
     100        $scripts->add_js( 'wp-ajax-response', 'wpAjax', array( 
    107101                'noPerm' => __('You do not have permission to do that.'), 
    108                 'broken' => __('An unidentified error has occurred.'), 
    109                 'l10n_print_after' => 'try{convertEntities(wpAjax);}catch(e){};' 
     102                'broken' => __('An unidentified error has occurred.') 
    110103        ) ); 
    111104 
    112105        $scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), '20110524' ); 
     
    192185 
    193186        $scripts->add( 'thickbox', "/wp-includes/js/thickbox/thickbox.js", array('jquery'), '3.1-20110528'); 
    194187        $scripts->add_data( 'thickbox', 'group', 1 ); 
    195         $scripts->localize( 'thickbox', 'thickboxL10n', array( 
     188        $scripts->add_js( 'thickbox', 'thickboxL10n', array( 
    196189                        'next' => __('Next &gt;'), 
    197190                        'prev' => __('&lt; Prev'), 
    198191                        'image' => __('Image'), 
     
    200193                        'close' => __('Close'), 
    201194                        'noiframes' => __('This feature requires inline frames. You have iframes disabled or your browser does not support them.'), 
    202195                        'loadingAnimation' => includes_url('js/thickbox/loadingAnimation.gif'), 
    203                         'closeImage' => includes_url('js/thickbox/tb-close.png'), 
    204                         'l10n_print_after' => 'try{convertEntities(thickboxL10n);}catch(e){};' 
     196                        'closeImage' => includes_url('js/thickbox/tb-close.png') 
    205197        ) ); 
    206198 
    207199        $scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop$suffix.js", array('jquery'), '0.9.8-20110113'); 
     
    225217        if ( empty($max_upload_size) ) 
    226218                $max_upload_size = __('not configured'); 
    227219        // these error messages came from the sample swfupload js, they might need changing. 
    228         $scripts->localize( 'swfupload-handlers', 'swfuploadL10n', array( 
     220        $scripts->add_js( 'swfupload-handlers', 'swfuploadL10n', array( 
    229221                        'queue_limit_exceeded' => __('You have attempted to queue too many files.'), 
    230222                        'file_exceeds_size_limit' => __('This file exceeds the maximum upload size for this site.'), 
    231223                        'zero_byte_file' => __('This file is empty. Please try another.'), 
     
    242234                        'dismiss' => __('Dismiss'), 
    243235                        'crunching' => __('Crunching&hellip;'), 
    244236                        'deleted' => __('moved to the trash.'), 
    245                         'error_uploading' => __('&#8220;%s&#8221; has failed to upload due to an error'), 
    246                         'l10n_print_after' => 'try{convertEntities(swfuploadL10n);}catch(e){};', 
     237                        'error_uploading' => __('&#8220;%s&#8221; has failed to upload due to an error') 
    247238        ) ); 
    248239 
    249240        $scripts->add( 'comment-reply', "/wp-includes/js/comment-reply$suffix.js", false, '20090102'); 
     
    255246 
    256247        $scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), '20101027' ); 
    257248        $scripts->add_data( 'password-strength-meter', 'group', 1 ); 
    258         $scripts->localize( 'password-strength-meter', 'pwsL10n', array( 
     249        $scripts->add_js( 'password-strength-meter', 'pwsL10n', array( 
    259250                'empty' => __('Strength indicator'), 
    260251                'short' => __('Very weak'), 
    261252                'bad' => __('Weak'), 
    262253                /* translators: password strength */ 
    263254                'good' => _x('Medium', 'password strength'), 
    264255                'strong' => __('Strong'), 
    265                 'mismatch' => __('Mismatch'), 
    266                 'l10n_print_after' => 'try{convertEntities(pwsL10n);}catch(e){};' 
     256                'mismatch' => __('Mismatch') 
    267257        ) ); 
    268258 
    269259        $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter' ), '20110628' ); 
     
    274264 
    275265        $scripts->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), '20110528' ); 
    276266        $scripts->add_data( 'wplink', 'group', 1 ); 
    277         $scripts->localize( 'wplink', 'wpLinkL10n', array( 
     267        $scripts->add_js( 'wplink', 'wpLinkL10n', array( 
    278268                'title' => __('Insert/edit link'), 
    279269                'update' => __('Update'), 
    280270                'save' => __('Add Link'), 
    281271                'noTitle' => __('(no title)'), 
    282                 'noMatchesFound' => __('No matches found.'), 
    283                 'l10n_print_after' => 'try{convertEntities(wpLinkL10n);}catch(e){};', 
     272                'noMatchesFound' => __('No matches found.') 
    284273        ) ); 
    285274 
    286275        $scripts->add( 'wpdialogs', "/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog$suffix.js", array( 'jquery-ui-dialog' ), '20110528' ); 
     
    292281        if ( is_admin() ) { 
    293282                $scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ), '20090102' ); 
    294283                $scripts->add_data( 'ajaxcat', 'group', 1 ); 
    295                 $scripts->localize( 'ajaxcat', 'catL10n', array( 
     284                $scripts->add_js( 'ajaxcat', 'catL10n', array( 
    296285                        'add' => esc_attr(__('Add')), 
    297                         'how' => __('Separate multiple categories with commas.'), 
    298                         'l10n_print_after' => 'try{convertEntities(catL10n);}catch(e){};' 
     286                        'how' => __('Separate multiple categories with commas.') 
    299287                ) ); 
    300288 
    301289                $scripts->add( 'admin-categories', "/wp-admin/js/categories$suffix.js", array('wp-lists'), '20091201' ); 
     
    303291 
    304292                $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('jquery', 'wp-ajax-response'), '20110429' ); 
    305293                $scripts->add_data( 'admin-tags', 'group', 1 ); 
    306                 $scripts->localize( 'admin-tags', 'tagsl10n', array( 
     294                $scripts->add_js( 'admin-tags', 'tagsl10n', array( 
    307295                        'noPerm' => __('You do not have permission to do that.'), 
    308                         'broken' => __('An unidentified error has occurred.'), 
    309                         'l10n_print_after' => 'try{convertEntities(tagsl10n);}catch(e){};' 
     296                        'broken' => __('An unidentified error has occurred.') 
    310297                )); 
    311298 
    312299                $scripts->add( 'admin-custom-fields', "/wp-admin/js/custom-fields$suffix.js", array('wp-lists'), '20110429' ); 
     
    314301 
    315302                $scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array('wp-lists', 'jquery-ui-resizable', 'quicktags', 'jquery-query'), '20110602' ); 
    316303                $scripts->add_data( 'admin-comments', 'group', 1 ); 
    317                 $scripts->localize( 'admin-comments', 'adminCommentsL10n', array( 
     304                $scripts->add_js( 'admin-comments', 'adminCommentsL10n', array( 
    318305                        'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']), 
    319306                        'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']), 
    320307                        'replyApprove' => __( 'Approve and Reply' ), 
     
    329316 
    330317                $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), '20110524' ); 
    331318                $scripts->add_data( 'post', 'group', 1 ); 
    332                 $scripts->localize( 'post', 'postL10n', array( 
     319                $scripts->add_js( 'post', 'postL10n', array( 
    333320                        'tagsUsed' =>  __('Tags used on this post:'), 
    334321                        'add' => esc_attr(__('Add')), 
    335322                        'addTag' => esc_attr(__('Add new Tag')), 
     
    352339                        'publicSticky' => __('Public, Sticky'), 
    353340                        'password' => __('Password Protected'), 
    354341                        'privatelyPublished' => __('Privately Published'), 
    355                         'published' => __('Published'), 
    356                         'l10n_print_after' => 'try{convertEntities(postL10n);}catch(e){};' 
     342                        'published' => __('Published') 
    357343                ) ); 
    358344 
    359345                $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array('wp-lists', 'postbox'), '20110524' ); 
     
    361347 
    362348                $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array('jquery'), '20110429' ); 
    363349                $scripts->add_data( 'comment', 'group', 1 ); 
    364                 $scripts->localize( 'comment', 'commentL10n', array( 
     350                $scripts->add_js( 'comment', 'commentL10n', array( 
    365351                        'cancel' => __('Cancel'), 
    366352                        'edit' => __('Edit'), 
    367                         'submittedOn' => __('Submitted on:'), 
    368                         'l10n_print_after' => 'try{convertEntities(commentL10n);}catch(e){};' 
     353                        'submittedOn' => __('Submitted on:') 
    369354                ) ); 
    370355 
    371356                $scripts->add( 'admin-gallery', "/wp-admin/js/gallery$suffix.js", array( 'jquery-ui-sortable' ), '20110414' ); 
     
    387372 
    388373                $scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'suggest' ), '20110609' ); 
    389374                $scripts->add_data( 'inline-edit-post', 'group', 1 ); 
    390                 $scripts->localize( 'inline-edit-post', 'inlineEditL10n', array( 
     375                $scripts->add_js( 'inline-edit-post', 'inlineEditL10n', array( 
    391376                        'error' => __('Error while saving the changes.'), 
    392377                        'ntdeltitle' => __('Remove From Bulk Edit'), 
    393                         'notitle' => __('(no title)'), 
    394                         'l10n_print_after' => 'try{convertEntities(inlineEditL10n);}catch(e){};' 
     378                        'notitle' => __('(no title)') 
    395379                ) ); 
    396380 
    397381                $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery' ), '20110609' ); 
    398382                $scripts->add_data( 'inline-edit-tax', 'group', 1 ); 
    399                 $scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array( 
    400                         'error' => __('Error while saving the changes.'), 
    401                         'l10n_print_after' => 'try{convertEntities(inlineEditL10n);}catch(e){};' 
     383                $scripts->add_js( 'inline-edit-tax', 'inlineEditL10n', array( 
     384                        'error' => __('Error while saving the changes.') 
    402385                ) ); 
    403386 
    404387                $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), '20110113' ); 
    405388                $scripts->add_data( 'plugin-install', 'group', 1 ); 
    406                 $scripts->localize( 'plugin-install', 'plugininstallL10n', array( 
     389                $scripts->add_js( 'plugin-install', 'plugininstallL10n', array( 
    407390                        'plugin_information' => __('Plugin Information:'), 
    408                         'ays' => __('Are you sure you want to install this plugin?'), 
    409                         'l10n_print_after' => 'try{convertEntities(plugininstallL10n);}catch(e){};' 
     391                        'ays' => __('Are you sure you want to install this plugin?') 
    410392                ) ); 
    411393 
    412394                $scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' ); 
     
    427409 
    428410                $scripts->add( 'set-post-thumbnail', "/wp-admin/js/set-post-thumbnail$suffix.js", array( 'jquery' ), '20100518' ); 
    429411                $scripts->add_data( 'set-post-thumbnail', 'group', 1 ); 
    430                 $scripts->localize( 'set-post-thumbnail', 'setPostThumbnailL10n', array( 
     412                $scripts->add_js( 'set-post-thumbnail', 'setPostThumbnailL10n', array( 
    431413                        'setThumbnail' => __( 'Use as featured image' ), 
    432414                        'saving' => __( 'Saving...' ), 
    433415                        'error' => __( 'Could not set that as the thumbnail image. Try a different attachment.' ), 
    434                         'done' => __( 'Done' ), 
    435                         'l10n_print_after' => 'try{convertEntities(setPostThumbnailL10n);}catch(e){};' 
     416                        'done' => __( 'Done' ) 
    436417                ) ); 
    437418 
    438419                // Navigation Menus 
    439420                $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array('jquery-ui-sortable'), '20110524' ); 
    440                 $scripts->localize( 'nav-menu', 'navMenuL10n', array( 
     421                $scripts->add_js( 'nav-menu', 'navMenuL10n', array( 
    441422                        'noResultsFound' => _x('No results found.', 'search results'), 
    442423                        'warnDeleteMenu' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ), 
    443                         'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'), 
    444                         'l10n_print_after' => 'try{convertEntities(navMenuL10n);}catch(e){};' 
     424                        'saveAlert' => __('The changes you made will be lost if you navigate away from this page.') 
    445425                ) ); 
    446426 
    447427                $scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), '20110511' ); 
     
    474454        $styles->content_url = defined('WP_CONTENT_URL')? WP_CONTENT_URL : ''; 
    475455        $styles->default_version = get_bloginfo( 'version' ); 
    476456        $styles->text_direction = function_exists( 'is_rtl' ) && is_rtl() ? 'rtl' : 'ltr'; 
    477         $styles->default_dirs = array('/wp-admin/', '/wp-includes/'); 
     457        $styles->default_dirs = array('/wp-admin/', '/wp-includes/css/'); 
    478458 
    479459        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : ''; 
    480460 
     
    558538 */ 
    559539function wp_just_in_time_script_localization() { 
    560540 
    561         wp_localize_script( 'autosave', 'autosaveL10n', array( 
     541        wp_add_js( 'autosave', 'autosaveL10n', array( 
    562542                'autosaveInterval' => AUTOSAVE_INTERVAL, 
    563543                'savingText' => __('Saving Draft&#8230;'), 
    564                 'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'), 
    565                 'l10n_print_after' => 'try{convertEntities(autosaveL10n);}catch(e){};' 
     544                'saveAlert' => __('The changes you made will be lost if you navigate away from this page.') 
    566545        ) ); 
    567546 
    568547} 
     
    635614                $wp_scripts = new WP_Scripts(); 
    636615 
    637616        script_concat_settings(); 
    638         $wp_scripts->do_items( 'l10n' ); 
    639617        $wp_scripts->do_concat = $concatenate_scripts; 
    640618        $wp_scripts->do_head_items(); 
    641619 
     
    681659        if ( !empty($wp_scripts->concat) ) { 
    682660 
    683661                if ( !empty($wp_scripts->print_code) ) { 
    684                         echo "<script type='text/javascript'>\n"; 
     662                        echo "\n<script type='text/javascript'>\n"; 
    685663                        echo "/* <![CDATA[ */\n"; 
    686664                        echo $wp_scripts->print_code; 
    687665                        echo "/* ]]> */\n"; 
     
    789767                $ver = md5("$wp_styles->concat_version{$dir}"); 
    790768                $href = $wp_styles->base_url . "/wp-admin/load-styles.php?c={$zip}&dir={$dir}&load=" . trim($wp_styles->concat, ', ') . "&ver=$ver"; 
    791769                echo "<link rel='stylesheet' href='" . esc_attr($href) . "' type='text/css' media='all' />\n"; 
     770 
     771                if ( !empty($wp_styles->print_code) ) { 
     772                        echo "<style type='text/css'>\n"; 
     773                        echo $wp_styles->print_code; 
     774                        echo "\n</style>\n"; 
     775                } 
    792776        } 
    793777 
    794778        if ( !empty($wp_styles->print_html) )