Commit Graph

60 Commits

Author SHA1 Message Date
Daryl Koopersmith a4f2112fd3 Add a canonical location for media frames, an alias to fetch attachments, and frame caching to custom header. fixes #22775.
git-svn-id: https://develop.svn.wordpress.org/trunk@23092 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-06 05:06:49 +00:00
Andrew Nacin bc8f994e7b Media models: Trac and ignore deleted attachments.
Treat an admin-ajax response of 1 as successful for backwards compatibility with existing handlers.

props koopersmith. fixes #22750.



git-svn-id: https://develop.svn.wordpress.org/trunk@23057 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-05 02:31:41 +00:00
Ryan Boren b5fdf3753f In the media modal, clear attachment details when clearing the selection.
Props koopersmith
fixes #22718


git-svn-id: https://develop.svn.wordpress.org/trunk@23045 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-04 22:19:08 +00:00
Ryan Boren fa4b718809 Only show Delete in media modal if the user can delete.
Props nacin, koopersmith
fixes #22711


git-svn-id: https://develop.svn.wordpress.org/trunk@23032 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-04 18:33:51 +00:00
Ryan Boren 71d333f660 In the QuickPress media modal, use the new post id when a post is published.
Props nacin, koopersmith
fixes #22673


git-svn-id: https://develop.svn.wordpress.org/trunk@22994 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-03 07:17:10 +00:00
Ryan Boren 9cdc4de444 Add random and reverse sorting options to gallery settings.
Props koopersmith
fixes #22637


git-svn-id: https://develop.svn.wordpress.org/trunk@22987 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-03 05:32:25 +00:00
Andrew Nacin f88b538001 Bring Featured Images back into the main media dialog.
Most users don't realize that the Featured Image meta box exists; if they do, few use it.

Restores the old meta box UI, including the admin_post_thumbnail_html filter. If a plugin is using _wp_post_thumbnail_html() in conjunction with Thickbox elsewhere, it will also magically still work.

Specific underlying changes:
 * Converts the modal view to use the view manager, which means that a call to open() will automatically call render and attach if necessary.
 * Doesn't automatically set a state in wp.media, to allow code to customize the states to be added before activation.

props koopersmith.
fixes #21776.



git-svn-id: https://develop.svn.wordpress.org/trunk@22979 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-03 02:38:10 +00:00
Andrew Nacin 7d0efc4012 Avoid leaking the 'media' var into the global JS namespace. props koopersmith, fixes #22676.
git-svn-id: https://develop.svn.wordpress.org/trunk@22968 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-02 16:32:47 +00:00
Andrew Nacin d8e714d6e3 Allow the 'Uploaded to this post' view to be sorted, saving the resulting order as menu_order.
This functionality is designed to be backwards compatible with manual querying for attachments by menu_order.

props koopersmith.
see #22607.



git-svn-id: https://develop.svn.wordpress.org/trunk@22967 602fd350-edb4-49c9-b593-d223f7449a82
2012-12-02 16:06:31 +00:00
Ryan Boren 303f2bd2ff Resolve race conditions in Attachments.more(). Provides for smoother refreshes when searching and properly cleans out content components.
Props koopersmith
fixes #22656


git-svn-id: https://develop.svn.wordpress.org/trunk@22956 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-30 16:41:38 +00:00
Ryan Boren 06b9663f58 Refine media state machine methods.
* state( id ) becomes setState( id )
* get( id ) becomes state( id )
* state() stays the same
* previous() becomes lastState()

Props koopersmith
fixes #22652


git-svn-id: https://develop.svn.wordpress.org/trunk@22952 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-30 15:19:11 +00:00
Ryan Boren d7ec10376b Update the "Uploaded to this post" filter view when uploading new files.
* Add an Attachments collection filter for uploadedTo (post_parent).
* Correct an erroneous map from the non-existent parent prop to post_parent.
* Define default menuOrder and uploadedTo props for uploading attachments.
* Unify filterable props into a single method (improving validation performance for calls to set with multiple properties).

Props koopersmith
fixes #22654


git-svn-id: https://develop.svn.wordpress.org/trunk@22951 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-30 15:11:44 +00:00
Andrew Nacin da9ff4451d When editing a plain, legacy [gallery] shortcode, ensure we are sorting its contents using menu_order.
When attachments are sorted, we convert the shortcode to [gallery ids=""], as before.

props koopersmith.
fixes #22608.



git-svn-id: https://develop.svn.wordpress.org/trunk@22882 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-27 23:20:12 +00:00
Ryan Boren d2d01ad797 Always send nocache_headers() for admin-ajax.php. This prevents iOS from caching ajax calls. http://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results
Turn off multi selection uploads for mobile devices. Currently Plupload cannot upload multiple files in iOS Safari. Only the first file makes it to the queue. 

Empty wp on unload to work around caching in iOS Safari.

Props azaozz, miqrogroove, nacin

fixes #22552


git-svn-id: https://develop.svn.wordpress.org/trunk@22872 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-27 16:17:53 +00:00
Ryan Boren 6a9c14ed5f Add a delete link to the media modal.
Props merty, nacin, koopersmith
fixes #22524


git-svn-id: https://develop.svn.wordpress.org/trunk@22869 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-27 15:50:59 +00:00
Ryan Boren b1f07f0ae1 Back compat $_REQUEST['post_id'] for media XHR requests.
Props koopersmith, nacin.
fixes #22588


git-svn-id: https://develop.svn.wordpress.org/trunk@22865 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-27 14:58:08 +00:00
Ryan Boren 1368fae5b6 Correctly access the nonce to save attachment fields. Fixes firing attachment_fields_to_save.
Props koopersmith
fixes #22577


git-svn-id: https://develop.svn.wordpress.org/trunk@22842 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-26 15:07:36 +00:00
Daryl Koopersmith ff6ae18d2d Media: Add global upload progress to the sidebar. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22816 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-22 09:32:21 +00:00
Daryl Koopersmith 4a99fa363e Media: Move sidebar from the frame view to the attachment browser view. Prevents juggling sidebar visibility state, and makes managing sidebar contents more reasonable. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22809 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-22 06:30:25 +00:00
Daryl Koopersmith 8ce1f39c6c Media: Move the new sections of media-upload.js to media-editor.js to allow the media modal to be used on the front end and prevent dependency conflicts with older themes and plugins. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22770 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-21 16:46:32 +00:00
Daryl Koopersmith 6ee49f047f Media: Ensure Attachments.mirror returns true. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22753 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-21 12:53:02 +00:00
Daryl Koopersmith aa3bfdc808 Media: Remove redundant code.
Make the composite gallery library use `mirror` instead of `observe`, as one method now invokes the other. Also, make `mirror` return the attachment collection for chaining.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22750 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-21 12:11:38 +00:00
Daryl Koopersmith e9670df395 Media: Make mirroring a collection of attachments a special case of observing a collection of attachments. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22746 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-21 11:35:30 +00:00
Daryl Koopersmith 8e6aa60fa4 Media: Dynamically generate attachment filters using get_post_mime_types().
Moves `get_post_mime_types()` from `wp-admin/includes/post.php` to `wp-includes/post.php`.

fixes #22514, see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22743 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-21 10:18:59 +00:00
Daryl Koopersmith 6a9778959c Media: Prevent type and search attachments filters from short circuiting.
Moves the reference to the source collection out of the props model. If it was translated over to a query (which was potentially possible) which then fired an ajax request, jQuery would attempt to serialize an object recursively, which caused an infinite loop and much sadness for my browser.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22737 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-21 08:09:28 +00:00
Daryl Koopersmith ce06a037dd Media: Attachment checkboxes now function as such. fixes #22462, see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22706 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-20 11:10:04 +00:00
Daryl Koopersmith 86b1e35bcf Media: Prevent undefined errors when media scripts are enqueued outside of wp_enqueue_media(). fixes #22495, see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22694 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-20 01:48:37 +00:00
Daryl Koopersmith 1b42cd449c Media: Use correct variable name. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22666 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-19 06:43:01 +00:00
Daryl Koopersmith 5b426eac50 Media: Optimize media models.
* Merge `Composite` model with general `Attachments` model, as `Attachments.validate` and `Composite.evaluate` were functionally equivalent.
* Queries should only watch `wp.Uploader.queue`, as watching `Attachments.all` results in queries attempting to add attachments before their properties are set (which then results a few too many irrelevant adds/removes). `Attachments.all` should potentially be removed or rethought.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22655 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-19 02:43:10 +00:00
Daryl Koopersmith 5c2e5e3231 Media: Remove redundant sorting logic from composite models. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22654 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-19 02:00:01 +00:00
Daryl Koopersmith 4a96fa19a4 Media: Only show the edit selection link for the media library. Make the upload attachments list sortable. Only retain the `silent` option when running `Attachments.validate()`. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22597 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-15 03:09:35 +00:00
Daryl Koopersmith 57e98a72d2 Media: Convert templates to use a data variable instead of with statements. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22578 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-14 21:51:41 +00:00
Daryl Koopersmith 57b09463e6 Media: Add backwards compatibility for attachment_fields_to_edit and attachment_fields_to_save. see #22186.
git-svn-id: https://develop.svn.wordpress.org/trunk@22541 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-11 01:26:42 +00:00
Daryl Koopersmith 747016b9d5 Media templates: Alter escaping regular expression to prevent it from aggresively consuming input meant for interpolation. see #22344, #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22539 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-10 21:38:14 +00:00
Daryl Koopersmith 847a00f84b Media: Backwards compatibility for media_upload_tabs.
* Adds `createIframeStates()` to the `MediaFrame` view. It creates states and bindings for the `media_upload_tabs` output, and is included on `MediaFrame.Post` by default.
* Hijacks `tb_remove()` when the media modal is open to ensure the modal closes correctly.
* Adds a `chromeless` parameter to thickbox media tab URLs to render the UI without the old row of tabs.

see #22186, #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22523 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-10 07:51:37 +00:00
Daryl Koopersmith 63dd1ca518 Media JS: Use basic upload/library by default.
`wp.media` now recognizes the `frame` attribute (currently a string; either'select' or 'post') and defaults to using a basic select frame. It also checks for the existence of classes in a safer fashion, as it does not assume the `MediaFrame` property exists.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22495 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-09 09:59:36 +00:00
Daryl Koopersmith 1401ee7928 Media: Add a basic starting frame for upload/library selection.
`media.view.MediaFrame.Select` is a frame class with a handful of sensible defaults to handle selecting and uploading items in the media library.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22494 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-09 09:47:12 +00:00
Daryl Koopersmith 8f79cdaea4 Media JS: Add JIT composite library creation/destruction to states to allow for dynamically excluded Attachment models. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22477 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-09 01:23:20 +00:00
Daryl Koopersmith cf75c68b55 Media JS: Add media.model.Composite, to aid in the representation of joint views. see #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22467 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-08 15:32:40 +00:00
Daryl Koopersmith b636e94e47 Media: Integrate the gallery workflow with the media menu.
`wp.media.model.Query.more()`
* If a request has already been sent out for more attachments, return that request object instead of creating another.

`wp.media.controller.Region`
* A region allows views to be swapped in and out of a section of the page without either view having to know about the other.
* Application components can use the same callbacks and resources by leveraging `Region.mode()`, which triggers a set of callbacks to create or transform the current view, but only if necessary.

`wp.media.view.Frame`
* Leverage `Region` controllers instead of forcing states to swap view objects, which causes states to fit more comfortably in the controller-camp.
* Add `previous()`, a method to fetch the previous state `id`.
* Separate out the default settings over several objects (so blank frames can be instantiated).

`wp.media.view.MediaFrame`
* The base `Frame` used for media management: handles integration with the `Modal` and `UploaderWindow` views.

`wp.media.view.MediaFrame.Post`
* Includes all default media states and callbacks necessary for inserting media into a post.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22437 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-07 20:14:41 +00:00
Daryl Koopersmith c0ab768faa Use Mustache-insipired template tags.
Underscore's default ERB-style templates are incompatible with PHP when asp_tags is enabled. As a result, we've settled on an alternative syntax that should be familiar to devs: Mustache-inspired for interpolating and escaping content, and ERB-inspired for execution.

	`{{{a}}}` - interpolating
	`{{ a }}` - escaping
	`<# a #>` - execution

props rmccue. fixes #22344, see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22415 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-07 08:41:17 +00:00
Daryl Koopersmith ee6bda8ddd Media JS: Improve handling of single attachments in selections.
* Adds `wp.media.model.Selection.single()` to specify a single item used in a multi-item selection.
* Fixes a bug where the `details` class would not be removed when "Clear Selection" was clicked.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22335 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-30 23:15:16 +00:00
Daryl Koopersmith bc29728df2 Add attachment details to the media sidebar.
* Also moves most of the `Frame` view's `createSelection` method to a real `Selection` model (which inherits from the `Attachments` model).
* Properly assigns the library within the `Gallery` state, allowing for the `Gallery` state to inherit from the `Library` state.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22323 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-29 15:13:02 +00:00
Daryl Koopersmith 15c451d2f6 Give media a heart transplant.
Revises the concept of the media controller and workspace views (i.e. two central points of control) to be more granular. The main media object is now the `Frame`, which is a hybrid view and state machine.

The state machine is a collection of states, which are just generic instances of `Backbone.Model`. This circumvents the problem of juggling global parameters when changing states. Each state contains its own event loop. All events are also forwarded to the frame itself (as is the case in all model/collection relationships).

The frame view contains several regions, each of which can be overridden without harming or re-rendering the other regions. These work well when used in conjunction with the state machine events.

This removes the upload sidebar (don't worry, visible upload UI will return). Drag and drop uploading still works. The ability to upload has been abstracted into its own view (instead of being attached to the central workspace view).

Editing galleries is temporarily broken — the gallery creation and editing experiences will be unified in a future patch.

Adds events to detect dragging changes in `wp.Uploader` and adds methods to detect and leverage browser support for CSS3 transitions.

see #21390, #21809.


git-svn-id: https://develop.svn.wordpress.org/trunk@22320 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-28 23:29:17 +00:00
Daryl Koopersmith 990d50661c Add a nonce to wp_ajax_save_attachment. see #21390, #21807.
git-svn-id: https://develop.svn.wordpress.org/trunk@22212 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-12 16:02:45 +00:00
Daryl Koopersmith d27568e703 Caption editing in the media modal library.
* Adds a `describe` option to the workflow controller to support inline caption editing.
* For images, descriptions are mapped to the `caption` attribute.
* For other media items, descriptions are mapped to the `title` attribute.
* Descriptions are saved when the textarea's `change` event fires (i.e. when the textarea is blurred).

fixes #21807, see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22173 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-10 23:32:48 +00:00
Jon Cave a2a8f675da Remove allowed query args before checking isEmpty() in Query model. See #21390.
git-svn-id: https://develop.svn.wordpress.org/trunk@22149 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-09 22:55:49 +00:00
Daryl Koopersmith 91a3c62b3f Better thumbnail previews in the image editor.
* Images are auto-cropped, then fit to the preview on hover (with a slight delay). This is an experiment; we'll see how it turns out.
* Various style changes.

see #21390.


git-svn-id: https://develop.svn.wordpress.org/trunk@22137 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-08 23:20:04 +00:00
Daryl Koopersmith a165bdfb83 Improve the lazy instantiation of the 'wp' JavaScript variable. props evansolomon, fixes #22113.
git-svn-id: https://develop.svn.wordpress.org/trunk@22126 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-06 00:43:36 +00:00
Daryl Koopersmith d43c390e2b Use the new media modal to insert galleries into TinyMCE and the text editor.
'''Galleries'''

* Gallery insertion from the new media modal (into TinyMCE, the text editor, etc).
* Gallery previews in TinyMCE now use the `wp.mce.views` API.
* Disables the TinyMCE `wpgallery` plugin.
* Gallery previews consist of the first image of the gallery and the appearance of a stack. This will later be fleshed out to include more images/functionality (including editing the gallery, gallery properties, and showing the number of images in the gallery).
* Multiple galleries can be added to a single post.
* The gallery MCE view provides a bridge between the `wp.shortcode` and `Attachments` representation of a gallery, which allows the existing collection to persist when a gallery is initially created (preventing a request to the server for the query).


'''Shortcodes'''

* Renames `wp.shortcode.Match` to `wp.shortcode` to better expose the shortcode constructor.
* The `wp.shortcode` constructor now accepts an object of options instead of a `wp.shortcode.regexp()` match.
* A `wp.shortcode` instance can be created from a `wp.shortcode.regexp()` match by calling `wp.shortcode.fromMatch( match )`.
* Adds `wp.shortcode.string()`, which takes a set of shortcode parameters and converts them into a string.* Renames `wp.shortcode.prototype.text()` to `wp.shortcode.prototype.string()`.
* Adds an additional capture group to `wp.shortcode.regexp()` that records whether or not the shortcode has a closing tag. This allows us to improve the accuracy of the syntax used when transforming a shortcode object back into a string.

'''Media Models'''

* Prevents media `Query` models from observing the central `Attachments.all` object when query args without corresponding filters are set (otherwise, queries quickly amass false positives).
* Adds `post__in`, `post__not_in`, and `post_parent` as acceptable JS attachment `Query` args.
* `Attachments.more()` always returns a `$.promise` object.

see #21390, #21809, #21812, #21815, #21817.


git-svn-id: https://develop.svn.wordpress.org/trunk@22120 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-05 04:23:59 +00:00