Media is now joined to the files collection rather than denormalized. It's much better but we need to write migrations first.
Merge branch 'master' of github.com:punkave/apostrophe
Replace File feature! Still needs a busy spinner
Added a progress display to the media library, by refactoring the one from slideshows. However this does not appear yet for some reason. Going to hand that over to Stuart after I push my changes
This is a big change: slideshows no longer contain denormalized copies of media objects. We join at page rendering time instead, which makes it much easier to tell that a media item has been moved to the trash or had its global title and description and credit changed.

YOU MUST RUN node app apostrophe:migrate OR YOU WILL WONDER WHERE ALL YOUR MEDIA WENT. Our stagecoach deployment recipes do this automatically, but in dev you'll need to do it manually.

Any templates in which you are explicitly peeking at the .items property of a slideshow must now peek at ._items instead, to be consistent with our naming policy on properties that are not part of the same mongodb document. Also consider using aposAreaFindFile to avoid most of these cases.

We also made UI improvements enabled by this change. Users can decide whether to show the title, the description and the credit for every item in the slideshow, or not.

Multiple placements of the same image with different titles are therefore no longer possible. We find this is very rare and can still be done in those rare cases by uploading two copies. However note that link titles and link URLs are still per placement.

Complete notes on this transition follow:

Titles, credits and descriptions of media will be global for that media item. There will be no per-placement editing of these fields. This is consistent with A1.5.

The decision to actually show the title, credit or description will be made by the editor at the slideshow level. That is, if you choose to show titles for a slideshow, all images in that slideshow will show their global titles. No going halfsies. This is consistent with A1.5, but better in that you're not restricted to a short list of hardcoded "variants" of the slideshow; you get to make each choice individually in a nice UI. (We'll likely later add other options in that same UI area, like slideshow interval and the existing orientation picker.)

"Link URL" and "Link Title" are still per-placement and have no global equivalent, so the "extraFields" option and the "wrench" for individual images are not going away.

Slideshows will not contain denormalized copies of media info anymore. Instead they will join on the fly with the files collection, so that they can tell if media has been moved to the trash and refuse to display it, display the media's updated title, display a replacement version of the file (soon), etc. This is consistent with A1.5. If we determine it's a performance issue we can add a more robust denormalization strategy later, with backreferences so we can figure out where the denormalized copies are and update them. There is no penalty for waiting on that.

A migration has been implemented to copy all of the appropriate information from placements to the global media objects before moving it to a backup property, legacyItems, of the media objects.