Improve `paginate_links()` performance by not calling `number_format_i18n()` unnecessarily. Fixes #25735 with tests. Props johnpbloch.

git-svn-id: https://develop.svn.wordpress.org/trunk@27523 602fd350-edb4-49c9-b593-d223f7449a82
Widget Customizer: Use ?wp_customize=on.

Let _wp_customize_include() handle customizer initialisation.
Sets also the priority for the Add Widget and Reorder buttons and removes debug cruft.

props westonruter.
fixes #27291.

git-svn-id: https://develop.svn.wordpress.org/trunk@27524 602fd350-edb4-49c9-b593-d223f7449a82
Widget Customizer: Move style/script registration to script loader. Update Gruntfile.js.

fixes #27356.

git-svn-id: https://develop.svn.wordpress.org/trunk@27525 602fd350-edb4-49c9-b593-d223f7449a82
Remove Qik from the oEmbed provider list as it's shutting down. Fixes #27302. Props JustinSainton.

git-svn-id: https://develop.svn.wordpress.org/trunk@27526 602fd350-edb4-49c9-b593-d223f7449a82
`figcaption` should not be treated as a block-level element by `wpautop()`. See #25646. Props oso96_2000.

git-svn-id: https://develop.svn.wordpress.org/trunk@27527 602fd350-edb4-49c9-b593-d223f7449a82
Add MCE Views for audio and video. Please clear your browser cache so that you get the latest TinyMCE stylesheet.

* Move TinyMCE shortcode handling from `wpgallery` plugin to `mce-view.js`
* Force `preload="none"` when rendering media in the editor to ensure fast loading (I realize this sounds illogical)
* Move audio and video tag builder logic in `media-template.php` into PHP funcs that can be reused by any code passing `data.model` to an Underscore template
* Pause all players when moving between editor tabs and when moving from the editor to editing in the media modal.
* Rename `wp.media.audio|video.shortcode()` to the more appropriate `wp.media.audio|video.update()` that now returns a `wp.shortcode` object instead of a string.
* Add necessary MediaElement css files to `$mce_css`
* In `wp.mce.View.render()`, support multiple instances of the same shortcode
* When rendering `wp.mce.View`s, fire a ready event that passes the current MCE View root element as context 

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27528 602fd350-edb4-49c9-b593-d223f7449a82
Version bump for TinyMCE stylesheet.

See #27389, [27528].



git-svn-id: https://develop.svn.wordpress.org/trunk@27529 602fd350-edb4-49c9-b593-d223f7449a82
Revert [27528] until Flash in Firefox behaves :(

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27530 602fd350-edb4-49c9-b593-d223f7449a82
Drag/drop upload: don't trigger on "local" dragging, hide the overlay on click. Props kovshenin, fixes #19845

git-svn-id: https://develop.svn.wordpress.org/trunk@27531 602fd350-edb4-49c9-b593-d223f7449a82
Modals: darken all overlays, update all box-shadows and headings, correct thickbox styling, make the link modal narrower and bring back the animation (css transition). Props avryl, see #26952

git-svn-id: https://develop.svn.wordpress.org/trunk@27532 602fd350-edb4-49c9-b593-d223f7449a82
When rendering Underscore templates for Audio/Video details, use 2 new PHP functions to render the markup for audio and video tags: `wp_underscore_audio_template()` and `wp_underscore_video_template()`.

Future JS templates can follow the convention of expecting `data` to be passed to them containing a `model` property.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27533 602fd350-edb4-49c9-b593-d223f7449a82
Load MediaElement's CSS when TinyMCE is loaded via `$mce_css` in `editor_settings()`. Add some baseline styles in `wp-content.css` for audio, video, and embed tags to ensure their `max-width` is `100%`, regardless of whether MEjs is implemented in TinyMCE.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27534 602fd350-edb4-49c9-b593-d223f7449a82
Make `media.view.VideoDetails.prepareSrc` a static class method instead of an instance method. Properly pairs it with its incrementing `instances` property.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27535 602fd350-edb4-49c9-b593-d223f7449a82
In `media.model.PostMedia`, for these 2 scenarios:

* `src` is set, and 'Add a Source' results in the same file (or a file with the same extension) being added
* `src` is set, and 'Replace Audio|Video' is used, which will add a model property named by the attachment's extension

... call `model.unset( 'src' )`.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27536 602fd350-edb4-49c9-b593-d223f7449a82
Rather than extending `wp.media.mixin`, only borrow `coerce` when necessary in `wp.media.audio|video|collection`. `wp.media.mixin` will make sense to be mixed in for classes that expect to interact with the player. More universal methods can be added and inherited by all those who extend their prototype with it.

Assuming someone had implemented players in the editor, pause all players when switching between editor tabs. A method, `pauseAllPlayers`, has been added to `wp.media.mixin`.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27537 602fd350-edb4-49c9-b593-d223f7449a82
Move `removePlayer()` and `unsetPlayer()` to `wp.media.mixin` so that other classes can take advantage of them. 

* `removePlayer()` is an alternative to MediaElement's player removal method that does not re-add the audio|video element back to the DOM.
* `unsetPlayer()` will check for an existing `player` property on the passed instance and pause all players before calling `unsetPlayer()`

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27538 602fd350-edb4-49c9-b593-d223f7449a82
The `canPlayType` property for audio and video in JS is so bad that the official valid responses are "probably" and "maybe". There are many cases where we might want to know if an audio|video tag is gonna blow up in our face before even attempting to make a `MediaElementPlayer` instance out of it.

The best (and most cautious) way to tackle this is to whitelist types by browser. Imagine that one implemented MEjs in TinyMCE's rich editor mode, this would be very helpful.

Add `isCompatible( $media )` to `wp.media.mixin`. Future features will use this.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27539 602fd350-edb4-49c9-b593-d223f7449a82
Customizer: Introduce a processing state.

The processing state will prevent a save when it doesn't return 0.
Widget Customizer will use the state to prevent a save while a widget is updating, which is an asynchronous process.

props westonruter.
fixes #27390.

git-svn-id: https://develop.svn.wordpress.org/trunk@27540 602fd350-edb4-49c9-b593-d223f7449a82
Widget Customizer: Move widget area sections to bottom.

Since a theme can have a lot of widget areas and we don't want to bury third-party sections, bump the widget sections to the bottom with a priority of 1000+. Fixes also the ordering.

props westonruter.
fixes #27401.

git-svn-id: https://develop.svn.wordpress.org/trunk@27541 602fd350-edb4-49c9-b593-d223f7449a82
In `wp.media.mixin`, add `ua` and a `compat` map to separate and clarify browser detection and support. Leverage Underscore list iterators in `isCompatible()`.

See #27389.



git-svn-id: https://develop.svn.wordpress.org/trunk@27542 602fd350-edb4-49c9-b593-d223f7449a82