Opened 3 years ago

Closed 2 years ago

#15124 closed defect (bug) (fixed)

Script concatentation breaks l10n of javascript output in head

Reported by: macbrink Owned by: westi
Priority: high Milestone: 3.1
Component: JavaScript Version: 3.0.1
Severity: major Keywords: convertentities, i18n, has-patch, needs-improvement
Cc: azizur

Description

This is what I find in the Admin header:

try{convertEntities(quicktagsL10n);}catch(e){};
/* ]]> */
</script>
<script type='text/javascript' src='http://myserver/wp/wp-admin/load-scripts.php?c=1&amp;load=jquery,utils,quicktags&amp;ver=b50ff5b9792a9e89a2e131ad3119a463'></script>

convertEntities() is called before the actual script has loaded.
This is quite annoying while debugging other scripts in firebug.

Change History (19)

  • Component changed from General to JavaScript
  • Milestone changed from Awaiting Review to 3.1
  • Owner set to westi
  • Status changed from new to accepted
  • Resolution set to fixed
  • Status changed from accepted to closed

(In [15814]) Group the quicktags js. Fixes #15124.

  • Resolution fixed deleted
  • Status changed from closed to reopened

Running WordPress 3.1-alpha with the patch.
Firebug breaks on error because

try{convertEntities(swfuploadL10n);}catch(e){};

is called before the utils javascript has loaded at opening the New Media screen.

  • Summary changed from Convertentities called before script has loaded to Script concatentation breaks l10n of javascript output in head

Re-titling.

I think we need a better solution than just grouping everything in the footer.

  • Keywords i18n added
  • Priority changed from normal to high
  • Severity changed from normal to major

(In [16000]) Remove the ghetto code and use the script loader properly on the login page.
Ensure that we actually have convertEntities available on the login page.
Introduce a login_footer action.
Hook in the script loader to the login_header and login_footer actions.
See #5919, #15124.

comment:7   jane3 years ago

  • Keywords has-patch needs-improvement added

I really want to rewrite the Script loader and make it support grouping properly rather than the way it works at the moment.

But that is not something to do at this point in the cycle.

So I'm going to do something creative in that direction for now.

  • Resolution set to fixed
  • Status changed from reopened to closed

(In [16282]) Move the l10n helper function into a seperate js file so we can always output it first.
Fixes #15124.

Follow on ticket for future working #15381

(In [16325]) Use the l10n helper js file in the installer. See #15124.

  • Cc azizur added
  • Resolution fixed deleted
  • Status changed from closed to reopened
<script type='text/javascript' src='http://wp.local/wp-includes/js/l10n.dev.js?ver=20101110'></script> 
<script type='text/javascript' src='http://wp.local/wp-includes/js/l10n.dev.js?ver=20101110'></script>

Without SCRIPT_DEBUG:

<script type='text/javascript' src='http://wp.local/wp-includes/js/l10n.js?ver=20101110'></script> 
<script type='text/javascript' src='http://wp.local/wp-admin/load-scripts.php?c=1&amp;load=jquery,utils&amp;ver=7bb5fde83e0949a753f31e184d1c6ac7'></script> 
<script type='text/javascript' src='http://wp.local/wp-includes/js/l10n.js?ver=20101110'></script> 

Once too often.

  • Resolution set to fixed
  • Status changed from reopened to closed

(In [16504]) Use do_items rather than do_item so the output of the l10n script is recorded. Fixes #15124.

Any reason why we'd need to always output on Non-Admin (i.e: Themes) in the header?

<script type='text/javascript' src='http://dev.site.com/wp-includes/js/l10n.js?ver=20101110'></script>

Like myself many theme developer would appreciate if this was disabled by default and API to enable it for those needed.

  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:17 follow-up: ↓ 18   ocean902 years ago

azizur:
The reason is, that it's needed by the admin bar, see:

	$scripts->localize( 'admin-bar', 'adminBarL10n', array(
		'url' => __( 'URL:' ),
		'noShortlink' => __( 'No shortlink available for this page.' ),
		'l10n_print_after' => 'try{convertEntities(adminBarL10n);}catch(e){};',
	) );

comment:18 in reply to: ↑ 17   westi2 years ago

Replying to ocean90:

azizur:
The reason is, that it's needed by the admin bar, see:

	$scripts->localize( 'admin-bar', 'adminBarL10n', array(
		'url' => __( 'URL:' ),
		'noShortlink' => __( 'No shortlink available for this page.' ),
		'l10n_print_after' => 'try{convertEntities(adminBarL10n);}catch(e){};',
	) );

I suspect we may output it as the only js as well because of the way it works at the moment.

  • Resolution set to fixed
  • Status changed from reopened to closed

I can't reproduce the output of this as the only JS file.

As ocean90 said we need this for l10n of JS strings.

Closing as Fixed.

Note: See TracTickets for help on using tickets.