Commit Graph

153 Commits

Author SHA1 Message Date
Scott Taylor 93fdff3581 Simplify creation of audio, video, and playlist MCE views by placing them in iframe sandboxes.
Wins:
* Eliminates duplication of code between PHP and JS
* Views can load JS without messing with TinyMCE and scope
* MEjs doesn't break when it loads a file plugin-mode. This allows any file type the MEjs supports to play in MCE views.
* YouTube now works as the source for video.
* Users can still style the views, editor stylesheets are included in these sandboxes.
* Audio and Video URLs and `[embed]`s are no longer broken.
* Remove the crazy compat code necessary to determine what file types play in what browser.
* Remove unneeded Underscore templates.
* Remove the compat code for playlists.

See #28905.

Built from https://develop.svn.wordpress.org/trunk@29179


git-svn-id: http://core.svn.wordpress.org/trunk@28963 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-15 22:18:14 +00:00
Dominik Schilling 6ef23ea006 Lists View Switcher: Replace blank image with screen reader text.
props davidakennedy.
fixes #28871.
Built from https://develop.svn.wordpress.org/trunk@29133


git-svn-id: http://core.svn.wordpress.org/trunk@28918 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-13 11:05:15 +00:00
Scott Taylor e3c39d02cf Media Grid, for audio files: show Bitrate in the Edit Attachments modal a la the Edit Post screen.
See #28839.

Built from https://develop.svn.wordpress.org/trunk@29106


git-svn-id: http://core.svn.wordpress.org/trunk@28892 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-11 21:56:16 +00:00
Scott Taylor ba688f4ff9 In the Post/Select frames, for audio files:
* Show `artist` and `album` fields in the Attachment Details sidebar
* Sync their values on `change`

See #28839.

Built from https://develop.svn.wordpress.org/trunk@29105


git-svn-id: http://core.svn.wordpress.org/trunk@28891 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-11 21:02:15 +00:00
Scott Taylor 59ffcf668b Media Grid, for audio files:
* Show `artist` and `album` fields in the Edit Attachment modal
* Sync their values on `change`

See #28839.

Built from https://develop.svn.wordpress.org/trunk@29104


git-svn-id: http://core.svn.wordpress.org/trunk@28890 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-11 20:55:15 +00:00
Scott Taylor dfd3c19cec Media Grid, in the Edit Attachment modal:
* Label the fields under the attachment a la the Edit Media page
* Move the audio and video previews above the info
* Remove the audio / video icon display. Unnecessary.
* Ensure that `width` and `max-width` are set for `.mejs-container`

See #24716.

Built from https://develop.svn.wordpress.org/trunk@29088


git-svn-id: http://core.svn.wordpress.org/trunk@28874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-11 06:15:15 +00:00
Scott Taylor ceff8de594 Media Grid:
* The "Edit Image" link in the attachment modal details is redundant.
* After an attachment is deleted in the modal, automatically move to the next attachment in the library. If there are no attachments left, close the modal.

See #24716.

Built from https://develop.svn.wordpress.org/trunk@29085


git-svn-id: http://core.svn.wordpress.org/trunk@28871 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-11 05:22:14 +00:00
Scott Taylor 9978d473ef Media Grid: make the Uploader closable.
Props ericlewis.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@29082


git-svn-id: http://core.svn.wordpress.org/trunk@28868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-10 23:06:15 +00:00
Scott Taylor a9fb59151b Media Grid: Screen Options for grid have to play nice with Screen Options for list. This was fun.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@29078


git-svn-id: http://core.svn.wordpress.org/trunk@28864 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-10 21:26:16 +00:00
Scott Taylor a89060013b Media Grid: Move toggling of visible fields to Screen Options. This moves us in a better direction... but this will probably need to be massaged again.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@29077


git-svn-id: http://core.svn.wordpress.org/trunk@28863 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-10 21:00:17 +00:00
Scott Taylor dd9bfea6bb Media Grid: make the edit attachment icon clickable.
Props ericlewis.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@29065


git-svn-id: http://core.svn.wordpress.org/trunk@28851 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-10 15:56:15 +00:00
Helen Hou-Sandí 89dff37759 Media grid:
* Introduce the concept of bulk editing via a separate mode. Like the list view, only bulk deleting is available. The UI is a little funky, especially with the field display toggles there, but refinements will come.
* Up the max thumbnail size from 120px to 150px.
* Slide-down panel for the add new uploader. Known issue: it doesn't close again.
* Remove the toolbar region in the EditAttachment frame.
* Defer a function call so the grid fills available space.
* Give feedback when no results are found. Also needs styling.

props ericlewis. see #24716.

Built from https://develop.svn.wordpress.org/trunk@29056


git-svn-id: http://core.svn.wordpress.org/trunk@28844 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-10 03:50:17 +00:00
Scott Taylor 53bd731570 Media Grid: JSHint fixes.
See #24716. 

Built from https://develop.svn.wordpress.org/trunk@28998


git-svn-id: http://core.svn.wordpress.org/trunk@28786 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-04 05:14:15 +00:00
Scott Taylor 6b377e12a0 Media Grid: Use the proper attachment value for `uploadedToTitle`.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@28997


git-svn-id: http://core.svn.wordpress.org/trunk@28785 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-04 05:04:15 +00:00
Scott Taylor 2938a50a28 Media Grid: for audio and video files with covers, show that instead of the icon. The filename is still present with the extension to identify the type.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@28996


git-svn-id: http://core.svn.wordpress.org/trunk@28784 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-04 05:00:14 +00:00
Scott Taylor 9a1ac73c34 Make media grid text fields (data) toggle-able. Checking/unchecking is saved in user settings cookie.
See #24716.

Built from https://develop.svn.wordpress.org/trunk@28995


git-svn-id: http://core.svn.wordpress.org/trunk@28783 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-04 04:48:15 +00:00
Helen Hou-Sandí 63f9cbd02a Media grid, round 2. Expect much more to come.
* Instead of a sidebar for details, utilize a modal. The modal experience allows for a larger preview, editing images, audio/video previews, and previous/next navigation, like the theme browser. Think of it as an attachment browser.
* Show some details in the grid view to more easily distinguish items.

props ericlewis, wonderboymusic, JerrySarcastic. see #24716.

Built from https://develop.svn.wordpress.org/trunk@28993


git-svn-id: http://core.svn.wordpress.org/trunk@28781 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-04 03:39:15 +00:00
Scott Taylor 54915274fa Use the proper height property when calculating video size in `wp_underscore_video_template()`.
Props Fab1en.
See #28190.

Built from https://develop.svn.wordpress.org/trunk@28807


git-svn-id: http://core.svn.wordpress.org/trunk@28616 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-23 20:35:18 +00:00
Andrew Ozz f88149c370 wpView:
- Don't wrap single-line URLs in [embed]. Use them directly in generating a view.
- If the embedding HTML contains a script, "sandbox" it in an iframe to prevent it from changing the editor DOM.
- Automatically add toolbar and overlay when needed.
- Try to embed single-line URLs only if they are pasted in an empty paragraph.
Props avryl, see #28195
Built from https://develop.svn.wordpress.org/trunk@28748


git-svn-id: http://core.svn.wordpress.org/trunk@28562 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-12 02:49:16 +00:00
Andrew Ozz d593293556 Fix JS error in tmpl-editor-gallery, `'string'.trim()` is not available in IE < 9. See #28089
Built from https://develop.svn.wordpress.org/trunk@28683


git-svn-id: http://core.svn.wordpress.org/trunk@28501 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-06 01:50:16 +00:00
Helen Hou-Sandí b5ef672c6b Grid view for the media library, first pass. This is alpha; expect imperfection. We will be iterating further.
props ericlewis, shaunandrews, wonderboymusic.
see #24716.

Built from https://develop.svn.wordpress.org/trunk@28682


git-svn-id: http://core.svn.wordpress.org/trunk@28500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-05 22:01:18 +00:00
Helen Hou-Sandí 78d90bd443 At long last, improved keyboard accessibility for the media modal.
props lessbloat, grahamarmfield, sharonaustin, bramd.
see #23560.

Built from https://develop.svn.wordpress.org/trunk@28607


git-svn-id: http://core.svn.wordpress.org/trunk@28431 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-29 03:39:15 +00:00
Scott Taylor 3c1723afd7 When adding a URL in the `Insert from URL` state in the media modal, attempt to show a preview of the content. Drop the unused width and height fields.
This will probably be iterated upon.

Props helen, jtsternberg, wonderboymusic.
See #15490.

Built from https://develop.svn.wordpress.org/trunk@28581


git-svn-id: http://core.svn.wordpress.org/trunk@28406 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-26 23:57:14 +00:00
Sergey Biryukov d970ac80c6 Don't include caption tags in gallery template when there is no caption.
props avryl.
fixes #28089.
Built from https://develop.svn.wordpress.org/trunk@28442


git-svn-id: http://core.svn.wordpress.org/trunk@28269 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-15 21:03:15 +00:00
Scott Taylor 558cf6f86d In the `Attachment Details` section of the media modal, only add `box-shadow` to images. Other mime-type icons look strange with an arbitrary border.
Props avryl.
Fixes #27949.


Built from https://develop.svn.wordpress.org/trunk@28369


git-svn-id: http://core.svn.wordpress.org/trunk@28197 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-11 06:19:14 +00:00
Scott Taylor f22beb987c First pass at `wpview` logic for the `[embed]` shortcode. URLs on a their own line are parsed as well. The toolbar will appear with the "remove" button when the view is clicked. Edit has not been implemented yet.
Props avryl, wonderboymusic.
See #28195.


Built from https://develop.svn.wordpress.org/trunk@28358


git-svn-id: http://core.svn.wordpress.org/trunk@28186 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-10 23:36:18 +00:00
Scott Taylor 1daa7d6723 Leverage `size_format()` when displaying `max_upload_size`:
* In `media_upload_form()` 
* The `uploader-inline` Underscore template in the media modal. 

Replaces 2 buggy inline implementations that could display size units off by one, or size values off by one.

Fixes #25643.


Built from https://develop.svn.wordpress.org/trunk@28343


git-svn-id: http://core.svn.wordpress.org/trunk@28171 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-07 18:25:14 +00:00
Scott Taylor 6deb34ebb3 Alter the layout of the checkboxes in the modal view for Audio/Video Details to allow translations more room to breathe.
See #27893.


Built from https://develop.svn.wordpress.org/trunk@28184


git-svn-id: http://core.svn.wordpress.org/trunk@28015 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-22 20:29:14 +00:00
Scott Taylor 55becc0dfd Refinements for asynchronous rendering in `wp.mce.media.PlaylistView`:
* Add `visibility: hidden` as an inline style to `<audio>` tags, there is a race with the stylesheet which can get enqueued in the body and loaded in the footer.
* When creating new instances of `MediaElementPlayer`, always push them onto a stack. Lone views can be responsible for multiple instances of the same shortcode on render.
* Rename `wp.media.mixin.unsetPlayer()` to `wp.media.mixin.unsetPlayers()` to reflect the above.
* Call `wp.media.mixin.unsetPlayers()` on the view's `unbind()` method, instead of inline in the `render()` method
* Make sure `WPPlaylistView` is instantiated for each editor instance
* Ensure that the `No Items Found` view state is not rendered when attachments actually do exist.

Props gcorne, wonderboymusic.
See #27899.



Built from https://develop.svn.wordpress.org/trunk@28182


git-svn-id: http://core.svn.wordpress.org/trunk@28013 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-22 17:53:16 +00:00
Andrew Nacin a8cefa836d Graceful failures for TinyMCE views of video/audio playlists.
props gcorne.
fixes #27821.

Built from https://develop.svn.wordpress.org/trunk@28144


git-svn-id: http://core.svn.wordpress.org/trunk@27975 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-16 00:23:15 +00:00
Andrew Ozz 0df02eb8ea Add hooks to the wpeditimage tinymce plugin and to the image details portion of the media modal.
- Add wp.media.events which is intended to be a global media event bus.
- Add a post-render event to the ImageDetails view that third-party code can leverage to add subviews.
- Performance improvement for the initialization of the PostImage model.
- A bit more markup to the image details template to make it easier to add a view to the advanced options.
Props gcorne, fixes #27698
Built from https://develop.svn.wordpress.org/trunk@28095


git-svn-id: http://core.svn.wordpress.org/trunk@27926 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-13 04:02:15 +00:00
Andrew Nacin 3ff5c2c954 Media Templates: More escaping rather than interpolation. see #21785.
Built from https://develop.svn.wordpress.org/trunk@28039


git-svn-id: http://core.svn.wordpress.org/trunk@27869 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-08 05:28:15 +00:00
Andrew Nacin 6b41f728d4 Header Images: Add suggested dimensions to the media workflow.
props ehg, gcorne.
see #21785.

Built from https://develop.svn.wordpress.org/trunk@28030


git-svn-id: http://core.svn.wordpress.org/trunk@27860 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-08 01:55:15 +00:00
Andrew Nacin b00e343a25 Gallery Views: Avoid JS errors when image attachments lack metadata.
props gcorne.
fixes #27691.

Built from https://develop.svn.wordpress.org/trunk@28008


git-svn-id: http://core.svn.wordpress.org/trunk@27838 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 21:25:16 +00:00
Drew Jaynes c2e0a4bf46 Space vs tab in function descriptions for `wp_underscore_audio_template()` and `wp_underscore_video_template()`.
See #27700.

Built from https://develop.svn.wordpress.org/trunk@28003


git-svn-id: http://core.svn.wordpress.org/trunk@27833 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 20:29:14 +00:00
Scott Taylor 2c88f6e941 [27640] supported a caption for audio and video shortcodes as part of a UX iteration for the related MCE views. These captions have since be excluded, so the extra code should be removed (it was there for this sole reason).
See #27320.


Built from https://develop.svn.wordpress.org/trunk@27979


git-svn-id: http://core.svn.wordpress.org/trunk@27809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 06:13:18 +00:00
Andrew Nacin 5e79b94d81 Header images: Handle cropping failures.
props ehg.
see #21785.

Built from https://develop.svn.wordpress.org/trunk@27946


git-svn-id: http://core.svn.wordpress.org/trunk@27776 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-04 15:48:16 +00:00
Andrew Ozz a2e1d9f4c8 Edit Image modal:
- Fix issue with adding a link to an image that didn't have one previously.
- Adjust the look-and-feel of the advance options toggle so that it becomes a section heading that can be open/closed.
- Add a Custom Size option to the size drop-down that reveals fields for soft-resizing the image inserted into the post.
Props gcorne, and props sdasse for the design help, see #27366
Built from https://develop.svn.wordpress.org/trunk@27918


git-svn-id: http://core.svn.wordpress.org/trunk@27748 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-03 03:21:15 +00:00
Andrew Ozz c7eb5e7f1f Gallery preview: add a "No items found" state which is displayed when rendering the gallery wpview and no attachments are found. Props gcorne, fixes #27558
Built from https://develop.svn.wordpress.org/trunk@27899


git-svn-id: http://core.svn.wordpress.org/trunk@27730 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-02 02:18:15 +00:00
Andrew Ozz 56ede0bad7 Edit Image modal:
- Move all advanced options under a single “Show advanced options” toggle that mirrors the behavior and look-and-feel of the wplink modal.
- Switch to using <select> for the Size and Link To.
- Bring back the field for CSS Class for the image, but don’t incorporate the internally managed WordPress classes (size-, wp-image-, etc…).
- On larger screen sizes, float labels to the left. When the width drops below 900px, stack the label above the fields.
- Keep image at top on screen sizes where the two columns are stacked into a single column.
- Don't replace the nodes in the editor DOM so we don't stomp on any custom attributes that the user may have added via the Text editor or some other mechanism.
Props gcorne, see #27366
Built from https://develop.svn.wordpress.org/trunk@27898


git-svn-id: http://core.svn.wordpress.org/trunk@27729 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-02 01:54:15 +00:00
Scott Taylor 98ceb17972 Favor escaping over interpolation in Underscore templates for media. Translate some strings directly instead of passing via JS.
Props nacin.
See #27574.


Built from https://develop.svn.wordpress.org/trunk@27868


git-svn-id: http://core.svn.wordpress.org/trunk@27699 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-31 05:13:15 +00:00
Scott Taylor eec578abcd When creating a new playlist, we don't know from the model what "type" it is right away (there is no longer a `video-playlist` shortcode) - we need to check the controller's library's prop for `type` when deciding what settings to display in the modal.
See #27535.


Built from https://develop.svn.wordpress.org/trunk@27812


git-svn-id: http://core.svn.wordpress.org/trunk@27646 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-28 12:37:15 +00:00
Andrew Ozz 60435c4143 Edit Image modal:
- Bring back some of the advanced settings.
- Make the layout two-column for wider screens, remove the sidebar, and shrink the modal a bit.
- The image reflects the size as inserted in the post as long as it doesn't overflow the column and is not too tall. Changing the size to another intermediate will also update the image "preview."
- Rename "Edit Image" to "Edit Original" to try and better communicate that editing the image will modify the media library item not just the image inserted into the post that is being edited.
(updates two PNGs from precommit)
Props gcorne, see #27366
Built from https://develop.svn.wordpress.org/trunk@27797


git-svn-id: http://core.svn.wordpress.org/trunk@27632 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-27 22:41:14 +00:00
Scott Taylor 703f6fcc49 When labeling `Show Tracklist` for playlist settings, use `Show Video List` when the playlist is video.
Fixes #27535.


Built from https://develop.svn.wordpress.org/trunk@27796


git-svn-id: http://core.svn.wordpress.org/trunk@27631 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-27 21:10:15 +00:00
Scott Taylor 1d6f31dc52 Remove `tracknumbers` from the UI, can still be overridden as a playlist shortcode attribute.
See #27535.


Built from https://develop.svn.wordpress.org/trunk@27793


git-svn-id: http://core.svn.wordpress.org/trunk@27629 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-27 20:27:15 +00:00
Scott Taylor 4f868ad882 There is no more `video-playlist` shortcode. To use video, it is now `[playlist type="video" ....]`. Also deleting core playlist styles. The `style` attribute is still supported, defaulting to `light`. Our core style support was 4-5 CSS rules.
See #27552. Leaving open for comments and potential bugs.


Built from https://develop.svn.wordpress.org/trunk@27785


git-svn-id: http://core.svn.wordpress.org/trunk@27621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-27 17:58:15 +00:00
Helen Hou-Sandí 443ab3001e MCE view controls:
* Move controls back over to the left, as they were before. Wide images and muscle memory have been causing frustration.
* Improve the experience and unify the UI of media view controls. Audio and video views now require an initial click to select before further interaction.
* CSS clean up and organization.

fixes #27320, #27542.

Built from https://develop.svn.wordpress.org/trunk@27777


git-svn-id: http://core.svn.wordpress.org/trunk@27614 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-27 07:02:16 +00:00
Scott Taylor 76ac10ba11 Don't display the "Show Artist Name in Tracklist" input in settings for Video Playlists.
See #27535.


Built from https://develop.svn.wordpress.org/trunk@27751


git-svn-id: http://core.svn.wordpress.org/trunk@27588 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-26 22:12:16 +00:00
Scott Taylor eddc48def7 Don't make `mce-view` a dependency for `media-audiovideo`. Make `media-audiovideo` and `wp-playlist` dependencies for `mce-view` and only enqueue `mce-view` in the admin in `wp_enqueue_media()`. MCE views don't need to be included when media is loaded on the front end.
Fixes #27509.


Built from https://develop.svn.wordpress.org/trunk@27733


git-svn-id: http://core.svn.wordpress.org/trunk@27570 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-26 12:11:14 +00:00
Drew Jaynes 7dc9b02577 Correct misleading verbiage in 'print' hook docs.
Standardizes 'print' hook docs on the concept that hooks are fired when scripts and styles are printed.

Props ericlewis for the initial patch.
Fixes #26924.

Built from https://develop.svn.wordpress.org/trunk@27695


git-svn-id: http://core.svn.wordpress.org/trunk@27534 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-25 08:05:15 +00:00
Scott Taylor 86f4061b26 When an HTML5 fallback button is pressed in the Audio or Video Details state, filter the library by that specific mime-type when the Add Audio|Video Source is activated.
See #27389.


Built from https://develop.svn.wordpress.org/trunk@27658


git-svn-id: http://core.svn.wordpress.org/trunk@27501 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-23 03:16:14 +00:00
Andrew Ozz 960b8f86ef Move the styling of drag/drop on the editor uploading to media-views.css, see #27465
Built from https://develop.svn.wordpress.org/trunk@27656


git-svn-id: http://core.svn.wordpress.org/trunk@27499 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-23 01:42:15 +00:00
Scott Taylor 410646fc52 General code cleanup and improving video sizing in the admin:
* Abstract the setting of a primary button and its callback in `wp.media.view.MediaFrame.MediaDetails`
* Account for the existence or non-existence of `$content_width` in the TinyMCE views for video
* Make sure video models always have dimensions, even if they are the defaults
* For browsers that are not Firefox, don't use a timeout when setting the `MediaElementPlayer` instance in TinyMCE views

See #27320.


Built from https://develop.svn.wordpress.org/trunk@27655


git-svn-id: http://core.svn.wordpress.org/trunk@27498 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-22 23:26:17 +00:00
Andrew Nacin aef7cdd59a Merge two strings. see #27320, #27453.
Built from https://develop.svn.wordpress.org/trunk@27645


git-svn-id: http://core.svn.wordpress.org/trunk@27488 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-21 00:19:16 +00:00
Scott Taylor 615dd5331b Unifying media controls and supporting playlists in the editor:
* Support a `caption` attribute for audio and video shortcodes
* In `wp.media.audio|video`, rename `update` to `shortcode` to allow these models to share the same mixins as `wp.media.collection` subclasses
* When sending an audio or video shortcode to the editor, create a default caption if the user hasn't entered one. This currently only displays in the editor, not on the front end. Captions aren't tied to a specific attachment here because external sources are supported.
* In the `wp.mce.media` mixin, in the `edit` method, read `attr` instead of `data` when attempting to parse the encoded shortcode. `data` does not automatically update when the attribute changes. This was a blessing to debug.
* Add `wp.mce.media.PlaylistView` to support playlist views in TinyMCE
* Expose `WPPlaylistView` to global scope and suppress auto-parsing of playlist nodes when in the admin. Allow `WPPlaylistView` to be passed `metadata` on creation instead of requiring a JSON blob to be parsed.
* Remove all of the playlist logic from the `wpgallery` TinyMCE plugin.
* In `wp_prepare_attachment_for_js()` return more data for audio/video so that playlists can have parity in the admin/front end.

See #27320.


Built from https://develop.svn.wordpress.org/trunk@27640


git-svn-id: http://core.svn.wordpress.org/trunk@27483 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-20 13:33:14 +00:00
Helen Hou-Sandí bef7f9e75e Further unify and refine media and view control styling. see #27320.
Built from https://develop.svn.wordpress.org/trunk@27628


git-svn-id: http://core.svn.wordpress.org/trunk@27471 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-20 00:48:15 +00:00
Andrew Nacin 30fd56b3dc Only enqueue the image editor in the media modal in the admin.
props gcorne.
see #21811.

Built from https://develop.svn.wordpress.org/trunk@27625


git-svn-id: http://core.svn.wordpress.org/trunk@27468 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-19 21:16:14 +00:00
Andrew Nacin deb8779af5 More translation cleanups.
Affects widgets (see #27112), custom headers (see #21785), theme installer (see #27055, reverts [27614]), and some media stuff. Untranslates some complicated strings that need additional study.

see #27453.

Built from https://develop.svn.wordpress.org/trunk@27620


git-svn-id: http://core.svn.wordpress.org/trunk@27463 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-19 08:18:14 +00:00
Scott Taylor 7ad4205f70 Add MCE views for audio and video shortcodes. When the shortcode does not contain a source that supports native playback, just show the filename.
* Remove the audio/video shortcode parsing from the `wpgallery` plugin.
* Make `mce-view` a dependency of `media-audiovideo`
* Introduce `wp.mce.video`, `wp.mce.audio`, `wp.mce.media`, and `wp.mce.media.View`
* Rename `wp.media.audio|video.shortcode()` to `wp.media.audio|video.update()` since it is called on Update and returns a `wp.shortcode` object now.
* In `wp.mce.View.render()`, fire a `ready` event when the placeholder is being parsed and pass the current node to the event handler.

See #27389, #27437.


Built from https://develop.svn.wordpress.org/trunk@27615


git-svn-id: http://core.svn.wordpress.org/trunk@27458 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-19 07:02:15 +00:00
Scott Taylor a17dd704c4 Create a new file, `media-audiovideo.js`, to house all of the audio and video JS code in core.
UX Changes:
* Don't add a menu item for "Add Audio|Video Source"
* In the Audio|Video Details modal, add buttons and some suggestive text for adding alternate playback sources
* Don't show "Create Audio|Video Playlist" menu items until the user has uploaded audio or video files

See #27437.


Built from https://develop.svn.wordpress.org/trunk@27608


git-svn-id: http://core.svn.wordpress.org/trunk@27451 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-19 05:31:15 +00:00
Andrew Ozz 46a471489e TinyMCE gallery preview: fix errors when an image doesn't have/is smaller than thumbnail size, props gcorne, see #26959
Built from https://develop.svn.wordpress.org/trunk@27580


git-svn-id: http://core.svn.wordpress.org/trunk@27423 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-18 03:25:14 +00:00
Andrew Ozz 402f48ca15 TinyMCE:
- Update the styling of the image caption and gallery toolbars.
- Fix issue where the hidden clipboard div in wpView.
- Switch to using the pencil dashicon for Edit.
- Add `max-width: 100%;` to images in the gallery preview and adjust column widths.
Props cramdesign, mattheu, gcorne, melchoyce, see #27320, fixes #27376, fixes #27354

Built from https://develop.svn.wordpress.org/trunk@27578


git-svn-id: http://core.svn.wordpress.org/trunk@27421 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-18 00:20:15 +00:00
Scott Taylor ef6af221d7 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.


Built from https://develop.svn.wordpress.org/trunk@27533


git-svn-id: http://core.svn.wordpress.org/trunk@27376 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-14 12:20:15 +00:00
Scott Taylor b4569b69dc Revert [27528] until Flash in Firefox behaves :(
See #27389.


Built from https://develop.svn.wordpress.org/trunk@27530


git-svn-id: http://core.svn.wordpress.org/trunk@27373 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-13 23:39:16 +00:00
Scott Taylor ba84f57083 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.


Built from https://develop.svn.wordpress.org/trunk@27528


git-svn-id: http://core.svn.wordpress.org/trunk@27371 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-13 23:10:14 +00:00
Scott Taylor d56f4a30b9 A string was missing its translation wrapper in the Underscore template for video details.
Props Jayjdk.
See #27016.


Built from https://develop.svn.wordpress.org/trunk@27490


git-svn-id: http://core.svn.wordpress.org/trunk@27334 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-10 00:19:15 +00:00
Scott Taylor d2c0cdc5de Add a filter and document it: `playlist_styles`. Allows users to roll their own playlist themes.
Props DrewAPicture for the docs.
See #26631.


Built from https://develop.svn.wordpress.org/trunk@27488


git-svn-id: http://core.svn.wordpress.org/trunk@27332 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-09 23:37:15 +00:00
Scott Taylor 634fac6e2c Update the UI styles for Playlist Settings.
Props melchoyce for the design.
See #26631.


Built from https://develop.svn.wordpress.org/trunk@27487


git-svn-id: http://core.svn.wordpress.org/trunk@27331 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-09 23:19:15 +00:00
Scott Taylor f078f3e10e Video editing in the media modal:
* Add a state: `Add Subititles`
* Add `text/vtt` to the list of allowed mime-types, files end in `.vtt`. `.srt` files are served as `text/plain`.
* The content body of a video shortcode should be used for adding `<track>` elements only. This happens dynamically in the modal. If added by hand, they can still be parsed and managed.

See #27016.


Built from https://develop.svn.wordpress.org/trunk@27481


git-svn-id: http://core.svn.wordpress.org/trunk@27325 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-09 10:32:15 +00:00
Scott Taylor 8e2e99fd0c Since audio and video shortcodes don't point at actual attachments, don't persist the library's selection. Move the media instructions in the block that scrolls.
See #27016.


Built from https://develop.svn.wordpress.org/trunk@27480


git-svn-id: http://core.svn.wordpress.org/trunk@27324 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-09 06:24:15 +00:00
Scott Taylor f7af18e1d6 Audio/Video shortcodes in the media modal:
* Make a generic model, `wp.media.model.PostMedia`, which replaces `wp.media.model.PostAudio` and `wp.media.model.PostVideo`
* Make a generic library, `wp.media.controller.MediaLibrary`, which replaces `wp.media.controller.ReplaceVideo` and `wp.media.controller.ReplaceAudio`
* `wp.media.controller.MediaLibrary` is used to create new states that want to load a library filtered by type, making it incredibly simple to add states to frames. See `wp.media.view.MediaFrame.VideoDetails` and `wp.media.view.MediaFrame.AudioDetails`.

UX changes:

* Add the ability to manage HTML5 fallbacks - add additional `<source>`s or remove specific `<source>`s
* In the Video Details state, add the ability to select a poster image

See #27016.


Built from https://develop.svn.wordpress.org/trunk@27478


git-svn-id: http://core.svn.wordpress.org/trunk@27322 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-09 05:25:15 +00:00
Scott Taylor dc00fc7e7f Audio/Video shortcodes in the media modal:
* Add `embedMimes` to `_wpMediaViewsL10n`
* Use `escape` instead of `interpolate` when setting attributes in Underscore templates
* When creating the `<audio>` and `<video>` tags dynamically, set inner `<source>` nodes instead of the `src` attribute and properly set the mime-type per source as the `type` attribute. This is also drastically reduces the amount of code used to generate the tags.

See #27016.


Built from https://develop.svn.wordpress.org/trunk@27476


git-svn-id: http://core.svn.wordpress.org/trunk@27320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-09 01:01:14 +00:00
Scott Taylor 818bf7c6af When `MEDIA_TRASH` is true, show the proper context in the `attachment-details` sidebar. Without this fix, it always showed "Delete Permanently."
Props toszcze.
Fixes #26783.


Built from https://develop.svn.wordpress.org/trunk@27454


git-svn-id: http://core.svn.wordpress.org/trunk@27300 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-07 16:42:14 +00:00
Scott Taylor 7f15998947 Videos in the media modal:
* Support rendering of chromeless YouTube when a video shortcode's `src` is a YouTube URL. 
* Don't instantiate an instance of `MediaElementPlayer` until after the view has been attached to the DOM and the view's `ready` event has fired.
* Don't set `poster` for videos when its value is empty. Much like `src` in the `img` tag - when empty, it will assume and load the current window's URL.
* When removing a player instance, don't call the `pause` method if the playback is not native.

See #27016.


Built from https://develop.svn.wordpress.org/trunk@27452


git-svn-id: http://core.svn.wordpress.org/trunk@27298 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-07 08:32:14 +00:00
Helen Hou-Sandí 4bb7e03548 At long last, a first pass at bringing the image editor into the media modal. props gcorne, DH-Shredder, tomauger. see #21811.
Built from https://develop.svn.wordpress.org/trunk@27445


git-svn-id: http://core.svn.wordpress.org/trunk@27292 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-06 22:55:14 +00:00
Scott Taylor eda85e17ca Cleanup audio/video shortcodes in the media modal:
* On the controller's `update`, `replace`, and `close` events, call `detach()` on the frame
* Cleanup the HTML ouput of the Underscore templates.
* Move some logic from the Underscore template to the `VideoDetails` view class.

See #27016.


Built from https://develop.svn.wordpress.org/trunk@27440


git-svn-id: http://core.svn.wordpress.org/trunk@27287 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-06 19:06:16 +00:00
Scott Taylor f15e1bc1db Ensure that all a/v attribute names have a leading space when the tags are dynamically-generated via Underscore templates.
See #27016.


Built from https://develop.svn.wordpress.org/trunk@27421


git-svn-id: http://core.svn.wordpress.org/trunk@27268 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 21:46:14 +00:00
Scott Taylor 9aa05f8681 Add a timestamp to the urls passed to `<audio>` and `<video>` in the modal to ensure that cached view instances aren't referenced by MEjs. Pause the player when closing the controller's modal.
See #27016, #26779.


Built from https://develop.svn.wordpress.org/trunk@27420


git-svn-id: http://core.svn.wordpress.org/trunk@27267 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 21:37:13 +00:00
Scott Taylor ff8844deae Add TinyMCE placeholders for `audio` and `video` shortcodes.
* Add `wp.media.mixin`.
* Add `wp.media.audio` and `wp.media.video`.
* Add `wp.media.model.PostAudio` and `wp.media.model.PostVideo`
* Add `wp.media.controller.AudioDetails` and `wp.media.controller.VideoDetails`.
* Add `wp.media.controller.ReplaceAudio` and `wp.media.controller.ReplaceVideo`.
* Add `wp.media.view.MediaFrame.AudioDetails` and `wp.media.view.MediaFrame.VideoDetails`.
* Add `wp.media.view.AudioDetails` and `wp.media.view.VideoDetails`.
* Update the `wpgallery` TinyMCE plugin.
* Display audio and video players in the media modal when shortcode is clicked.
* Provide a UI to edit shortcode attributes in the media modal.
* Provide a UI to replace the `src` media file in an `audio` or `video` shortcode.

See #27016.


Built from https://develop.svn.wordpress.org/trunk@27411


git-svn-id: http://core.svn.wordpress.org/trunk@27258 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 15:06:14 +00:00
Andrew Ozz 6074dfa272 Update mce-view.js and the `wpview` TinyMCE plugin, and use them to show gallery previews in the Visual editor, props gcorne, see #26959
Built from https://develop.svn.wordpress.org/trunk@27408


git-svn-id: http://core.svn.wordpress.org/trunk@27255 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 07:01:14 +00:00
Sergey Biryukov 3533e3575f Use esc_attr_e() instead of _e() for attribute values.
props DJPaul.
fixes #27274.
Built from https://develop.svn.wordpress.org/trunk@27400


git-svn-id: http://core.svn.wordpress.org/trunk@27247 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-04 21:10:15 +00:00
Andrew Nacin 0c16c0477b Reference https://wordpress.org rather than http://wordpress.org in strings, links, comments, etc.
props Ipstenu, markjaquith.
see #27115.

Built from https://develop.svn.wordpress.org/trunk@27369


git-svn-id: http://core.svn.wordpress.org/trunk@27219 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-03 02:34:27 +00:00
Andrew Nacin 482856e2e1 Add the ability to drag and drop files directly onto the editor.
The file will then begin to upload and the media manager will open.

props kovshenin.
see #19845.

Built from https://develop.svn.wordpress.org/trunk@27343


git-svn-id: http://core.svn.wordpress.org/trunk@27195 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-01 21:34:17 +00:00
Andrew Ozz d896fa2487 Upgrade Plupload to 2.1.1, props kovshenin, see #25663
Built from https://develop.svn.wordpress.org/trunk@27316


git-svn-id: http://core.svn.wordpress.org/trunk@27168 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-27 20:01:16 +00:00
Scott Taylor 45e748e57e `wp.media.collection` should be its own civilized instantiable class, not a wrapper/factory. The class shall contain no reference to specific instances, and shall not try to grab static properties of itself. `self`, meet `this`.
See #26631.


Built from https://develop.svn.wordpress.org/trunk@27313


git-svn-id: http://core.svn.wordpress.org/trunk@27166 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-27 19:22:14 +00:00
Scott Taylor c0379aaafc Load default settings state when creating a new playlist in the media modal. Add a few missing inline `@this` annotations in `media-editor.js`.
See #26631.


Built from https://develop.svn.wordpress.org/trunk@27242


git-svn-id: http://core.svn.wordpress.org/trunk@27099 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-24 20:26:14 +00:00
Drew Jaynes 700ba14371 Spacing fixes for code introduced in [27239].
See #26631

Built from https://develop.svn.wordpress.org/trunk@27241


git-svn-id: http://core.svn.wordpress.org/trunk@27098 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-24 19:50:15 +00:00
Scott Taylor 943f295d2e Add core support for Playlists and Video Playlists.
* Playlists operate like galleries in the admin. 
* Provide default UI and JS support in themes using MediaElement and Backbone. 
* The shortcodes are clickable, editable, and configurable using the media modal. 
* Playlists support images for each item, whether or not the current theme supports images for `attachment:audio` and `attachment:video`
* Playlists respond to `$content_width` and resize videos accordingly.
* All playlist data is included inline, using a script tag with `type="application/json"`, allowing anyone to unenqueue the WP playlist JS and roll their own.
* Playlist styles are minimal and work out of the box in the last 5 default themes. They inherit and adapt to the current theme's font styles, and their rules are easily overrideable.

See #26631.


Built from https://develop.svn.wordpress.org/trunk@27239


git-svn-id: http://core.svn.wordpress.org/trunk@27096 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-24 18:08:16 +00:00
Andrew Ozz 025ea220c5 Remove a stray </div> from the Edit Image template, was breaking it in IE < 9. Props gcorne, see #24409
Built from https://develop.svn.wordpress.org/trunk@27143


git-svn-id: http://core.svn.wordpress.org/trunk@27010 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-09 18:45:11 +00:00
Scott Taylor e1759d668a For starters, [27050] is rad. This just cleans up some extra new lines that were littered about, updates *some* of the inline docs (needs more), moves `wp.media.controller.ImageDetails` closer to its parent class, and de-dupes some code in `media-template.php`.
See #24409.


Built from https://develop.svn.wordpress.org/trunk@27051


git-svn-id: http://core.svn.wordpress.org/trunk@26925 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-28 23:21:13 +00:00
Andrew Ozz 33eedc570b Introduce Edit Image (single mode) in the media modal and use it to edit images inserted in the editor. Adds new feature: replace an image in the editor. Props gcorne, see #24409.
Built from https://develop.svn.wordpress.org/trunk@27050


git-svn-id: http://core.svn.wordpress.org/trunk@26924 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-28 21:17:12 +00:00
Drew Jaynes 04509a1b23 Inline documentation for hooks in wp-includes/media-template.php.
Props odysseygate for the initial patch. Props kpdesign.
Fixes #25847.

Built from https://develop.svn.wordpress.org/trunk@26400


git-svn-id: http://core.svn.wordpress.org/trunk@26300 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-26 07:52:08 +00:00
Andrew Nacin 5361a8abca Spell out duplicate hook locations.
props DrewAPicture.
fixes #25658.

Built from https://develop.svn.wordpress.org/trunk@25868


git-svn-id: http://core.svn.wordpress.org/trunk@25868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-24 22:59:20 +00:00
Andrew Nacin 8ae8e01b67 Remove the old wp_auto_updates_maybe_update cron event. Schedule the new wp_maybe_auto_update event at 7 a.m. and 7 p.m. in the site's timezone.
see #27704.

Built from https://develop.svn.wordpress.org/trunk@25825


git-svn-id: http://core.svn.wordpress.org/trunk@25825 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-24 22:53:14 +00:00
Andrew Nacin 74488bdcb0 Spell out duplicate hook locations.
props DrewAPicture.
fixes #25658.

Built from https://develop.svn.wordpress.org/trunk@25868


git-svn-id: http://core.svn.wordpress.org/trunk@25780 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-22 17:22:11 +00:00
Andrew Nacin 622709076b Media: Fix embedding of audio/video players when the file was just uploaded.
While uploading, we know an attachment's filename but not its mime type. Check specifically for extensions. Check for type as a convenience when it is available.

fixes #24449.



git-svn-id: http://core.svn.wordpress.org/trunk@24784 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-23 17:29:55 +00:00
Andrew Nacin 2c67dea9bc Media: Add awareness to Attachment Display Settings that audio and video can be embedded.
Also:
 * Add file length metadata to Attachment Details.
 * Round the kb/s bitrate on post.php.

fixes #24449.



git-svn-id: http://core.svn.wordpress.org/trunk@24777 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-23 05:39:08 +00:00
Andrew Nacin 66054d7ffe Allow gallery to be inserted with no links on the images. props chipbennett, helgatheviking, aaroncampbell, wonderboymusic. fixes #18178.
git-svn-id: http://core.svn.wordpress.org/trunk@24550 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-03 20:43:19 +00:00
Andrew Nacin 797ee34bc3 Remove /extend/ from URLs to wordpress.org/plugins, /themes, and /mobile, as those are all now top-level. see #24389.
git-svn-id: http://core.svn.wordpress.org/trunk@24320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-05-22 21:01:57 +00:00
Ryan Boren 849765385b Respect the link to setting when inserting a gallery.
Props SergeyBiryukov
fixes #23298


git-svn-id: http://core.svn.wordpress.org/trunk@24161 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-05-02 22:07:37 +00:00