Commit graph

175 commits

Author SHA1 Message Date
Gilles Dubuc bfa530cc21 Wait for CSS to be truly loaded before opening the viewer
This is a workaround for core bug #61852

Change-Id: If7d830866993eddbf5784694514ff89aece56c5b
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/258
2014-02-24 19:13:04 +00:00
Gilles Dubuc ce58597b3b Fix hash self-reaction
* Fixes bug where the mmv would react to its own hash changes
* Adds jquery.hashchange for older browser support

Change-Id: I2d23699bb444d9eb533d239e25bc47fa96c902a9
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/254
2014-02-24 19:14:45 +01:00
Gilles Dubuc e1e9a24a0a Missing dependency
Change-Id: I8ce510883e13401d9b1464b1583ee11d01f40df6
2014-02-19 15:41:40 +01:00
Gergő Tisza 7afbc5ce92 Use provider XHR information in performance metrics + several fixes
* more robust method of obtaining URL
* decouple performance logging from providers (mostly)
* ignore fake XHR object which jQuery returns for JSONP requests
* guard for CORS requests - apparently Chrome refuses to return
  certain information even with an Allow-Origin: * response header.
* Resource Timing is limited to 150 results, which causes fake
  misses in debug mode. There is an API to increase the limit
  but it is not implemented in Chrome. I am calling it nevertheless,
  maybe IE understands it (it is present in the MSDN docs at least).

This seems to work for AJAX, CORS, JSONP, image AJAX; CORS requests
return 0 for a lot of values, per spec a Timing-Allow-Origin: *
header might help that.

Change-Id: I8353858022f51a7e70774e65513d0fa2554a5064
2014-02-19 00:38:27 +00:00
Gilles Dubuc a5cddef17a Lazy-load mmv
Also removes the index inside the location hash

Change-Id: I9429ff0101ab891f2c4c6aa2d989fbef0813252d
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/136
2014-02-18 15:55:15 -08:00
Gilles Dubuc c9fc2c707f Make the image and navigation buttons unselectable
Change-Id: Iec6d8a9511e2a4c508da7524c9fb0db499d1eb8a
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/214
2014-02-18 19:36:33 +00:00
Gergő Tisza 7124ece961 Switch to core's version of moment.js
Depends on core change I6aa36d34bfbe8334c87d6ca449ec19b6a8daf8e7

Change-Id: I850d318a523e51c064e57fb888c7a10c79df6f72
2014-02-18 08:37:44 +00:00
jenkins-bot 3dc1b7d0e4 Merge "Big credits patch" 2014-02-14 08:14:31 +00:00
Gilles Dubuc 35690bb2f1 Get rid of lightboxHooks
Delete lightboxHooks, since most of them
haven't proven to be useful.
Replace the useful ones by jQuery events.

Change-Id: I28f99ba85666ca15979feb5c637924b98bba27a8
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/176
2014-02-13 17:47:30 -08:00
Gergő Tisza 302944352f Move jquery.throttle-debounce to core
Depends on core change I008f46cc97af10e93ad9cad35924aaf251b99aa6 (merged)

Change-Id: I0c5faa4b20274a61d95aa2067f1071d2ab462454
2014-02-13 22:54:00 +00:00
Mark Holmquist 575fd50d95 Big credits patch
Add all authors, and put the extension in the new "Beta features" credit
section in Special:Version.

Change-Id: I22b0ab0ded87191832b469bec21665ef3fd6f2e1
2014-02-13 13:38:19 -08:00
Gilles Dubuc 6e127b25e2 Preload prev/next images
When the lightbox is opened, or prev/next pressed, preloads the
previous/next N images.

Technical debt introduced:
* initialization is a mess, with the viewer and the interface
  randomly setting properties on each other in different phases of
  execution. That got in the way and I shuffled things around
  until they worked, which is obviously not the way to have a
  robust system, but hopefully it will get scrapped soon anyway
  in favor of a clean top-down dependency injection.

Change-Id: Idcb5c40de1ac0b3e482decd66e56c4de8ec71b6b
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/155
2014-02-13 10:52:40 +01:00
Gergő Tisza 9881f9e7ae Add TaskQueue class
A simple task queue which can be processed or cancelled.
Will be used to handle preloading in a more robust way.

Change-Id: Ib33f9b2d814a35538f9d4f3691fce5ba5cdc82c1
2014-02-12 01:55:39 +00:00
Mark Holmquist a62410616d Refactor button things into a separate class
https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/124

Change-Id: Ib4b54164bccbe17e42b223880179531e8d9e6123
2014-02-10 09:40:50 +01:00
Gergő Tisza 06cc6cca1a Refactor thumbnail size calculation
* moves generic logic into ThumbnailSizeCalculator class
* moves UI-specific logic into interface class
* fixes bug where non-bucketed sizes were served on devices with
  non-standard pixel density
* fixes bug where bucketed size was compared to css size instead of screen size
  for resizing

Change-Id: I8ba3380b74fcc8fb0a6ecc3f3140627411851ad0
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/196
2014-02-08 01:27:27 +00:00
Gilles Dubuc e74fc33e89 Track detailed content loading network performance
Leverages the W3C Navigation Timing API when available

Change-Id: Ief1d327d1bd8928bf5f2bf0bd4c7141a0a608a53
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/126
2014-02-07 19:37:22 +00:00
Gilles Dubuc 57434b5812 Refactor panel-related things into another class
mmv.lightboxinterface was getting way too clunky.

https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/124

Change-Id: Ie3a604b532ee853f9df673cc4d38c2c7594bdefa
2014-02-07 10:09:08 -08:00
Gergő Tisza e33f2d263c Add Thumbnail model
Also refactor size calculation a bit - I found target/requested
harder to remember.

Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/155
Change-Id: I4781cdd7004e9a8e36875c152e1d3a335a55b7d7
2014-02-07 01:46:26 +00:00
Gergő Tisza b013ddbefe Userinfo provider
* userinfo api requests are cached now
* we use jsonp only if we have to (makes gender api calls measurable on WMF wikis)
* all API calls use providers now, provider.Api constructor can be used to
  wrap mw.Api with metrics

Does not return a proper model, and gender API calls are not preloaded together
with the rest of the calls. Maybe next time.

Change-Id: I9b3ea73c65eef57e160ac8636d9e45d349150884
2014-02-06 00:37:39 +00:00
jenkins-bot 923a117304 Merge "Use LESS instead of CSS" 2014-02-05 02:20:40 +00:00
jenkins-bot af1c2cbeee Merge "Add provider to for actual image loading" 2014-02-05 00:15:56 +00:00
jenkins-bot 97e29b9e00 Merge "Add imageinfo, thumbnail info, repoinfo provider" 2014-02-05 00:14:22 +00:00
Gergő Tisza 6068ffd58d Add provider to for actual image loading
Change-Id: I9ca9bce37c97648afa07db9f004138a791c74e65
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/123
2014-02-05 00:02:28 +00:00
Gergő Tisza 85a37d0e14 Add imageinfo, thumbnail info, repoinfo provider
Change-Id: I80ffec39ee6c9e0ea0b37be2fc48315063b5ff8a
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/123
2014-02-04 23:46:02 +00:00
Mark Holmquist 5d61b69fbd Use LESS instead of CSS
Because we're that cool of a startup apparently

Also because organization and easy code manipulation.

Change-Id: I81ca302b6848f83034f7efed2443757bb045c4f1
2014-02-03 15:02:32 -08:00
Mark Holmquist b860ccf1b9 Move UI things into mmv/ui/
Change-Id: I39800ba45abe4ff1cb21c41062f8a1012eaca203
2014-02-03 14:46:04 -08:00
Gilles Dubuc d34fec4ff2 Add categories to the interface
Also move some things around a liiiittle bit. Not too much.

Change-Id: I7a5b8d900f5173fa20142d205e4992361b9e81a3
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/41
2014-02-03 15:09:42 +01:00
Gergő Tisza e0edec21b2 Move providers into their own subdirectory
Also refactor MultimediaViewer.php a bit to get rid of all the globals.

Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/123
Change-Id: Ieca4263ecc7652dc6bc36db63b99d3813c4653e4
2014-02-01 03:49:30 +00:00
Gergő Tisza 612d34458c Handle PD licenses on frontend
Change-Id: I49d920d201baeac11f3c6379857880ab6828b6ce
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/117
2014-01-30 21:47:22 +00:00
Gilles Dubuc 30563de71d Add file usage data to MMV metadata panel
Interface code is its own class which does not depend on the main
interface class it can be unit tested (and eventually moved into its
own file to make browsing the code easier). IMO we should aim to
eventually break up the interface into similar classes (with a simple
init/empty/set interface + custom events where it makes sense).

Also, sneak-introducing LESS!

API usage could be more effective (globalusage is a separate API call;
it needn't be), but we will have to rewrite that part soon anyway, so
it should pass for now.

Bug: 60087
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/44
Change-Id: Ibe5c323cdeab4a378316925f0c3efb3dc7ef5997
2014-01-30 13:03:28 +01:00
Gilles Dubuc 02897fda9c Chevron/metadata UI behavior improvements
When the multimedia panel is closed, the chevron
points upwards, otherwise it points downwards
Pressing the up and down arrows on the keyboard
opens and closes the metadata panel

Change-Id: I7dd31f3cc3d90f9342845faea2c6cfea3b40e232
2014-01-30 02:52:53 +00:00
Mark Holmquist a86a6d5b9e Fix resize engine for fullscreen
This sorta has a few other miscellaneous fixes in it, but it works!

There are maybe still funky behaviours left. Test it?

Also refactor some bits, so we aren't accessing mw.mediaViewer in the
interface code.

Change-Id: I69db8e7b4ff5f994ba706fd4965688f3c26859f4
2014-01-29 11:50:22 +01:00
theopolisme b770e02d48 Enable fullscreening with jquery.fullscreen
Depends on I58138afa05c43f5a24e74fa3a30a658428c39ce0
(core patch)

Change-Id: Ib972d453bdf8172439bf6195985fcf7e248b2b8a
2014-01-27 14:14:36 +01:00
Mark Holmquist 5b03c39c72 Move models to their own modules
Change-Id: Ib3d32496bfbc174dc136a269abf0b66cf0ae475d
2014-01-24 11:41:05 -08:00
Mark Holmquist 5e4a544133 Moving things around for module renames
This is a big change, but should change nothing except the sizes of some
files and where they all are.

There are no more ext.multimediaViewer strings ANYWHERE, so let's keep
it that way. :)

Change-Id: Ic0892f5894700938bfa01f3f9bc8e5ab8276eb72
2014-01-24 09:21:16 -08:00
jenkins-bot d245703241 Merge "A bunch of description fixes" 2014-01-22 23:51:50 +00:00
Mark Holmquist 22d2a69979 A bunch of description fixes
* Move description and caption to both be in the bottom left
* Make empty description grey and italic
* Fix problem where description was sometimes appended twice
* Move description UI stuff into a separate file, and make it more MVCy
* Tests for description UI stuff
* General framework, to an extent, for UI classes

Change-Id: Ibc8c576cd8a41c2e3cf7e13f1b9e093384fb4655
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/120
2014-01-22 14:46:39 -08:00
Gergő Tisza 2a70725d4e Add CC 4.0 license support
Bug: 60199
Change-Id: I1c2fa11960b2031b5dd5c4f85bf6caaa566fd3b8
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/95
2014-01-22 09:18:36 -08:00
jenkins-bot 7f67c0934a Merge "Add 'Location:' to the location message" 2014-01-22 17:13:52 +00:00
Gergő Tisza fed238fcd6 Create model & providers for file usage information
Bug: 60087
Change-Id: I0e72c1e4590714e92a365f9741633221af5b0553
2014-01-21 18:04:51 -08:00
Mark Holmquist 47cad0e607 Add 'Location:' to the location message
Actually it's a totally new message, but still.

Change-Id: I5c02b9ec59bd0c8e455aae71936625a1bae48700
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/121
2014-01-21 17:35:02 -08:00
Mark Holmquist f59962e4a3 Add location information to metadata div
Adds location in a human readable format, plus a link to geohack because
that's how we roll.

See https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/42

+more tests

Change-Id: Ie8c9b8a0caf0f13ad5341a84173381ce49da97f6
2014-01-17 17:22:44 -08:00
Gilles Dubuc c0bf3591f8 Clicking on the chevron should open/close the details
Change-Id: Ica8c5ae8c8f34374e946246878f3c8609d263a12
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/80
2014-01-15 09:21:58 +01:00
Mark Holmquist 89417163a9 Refactor to a data model
Image information and repo information are now both stored somewhere
else entirely, so we don't need to keep accessing weird API return
values to sort things out. fetchImageInfo now uses those classes to
an extent, and we now cache thumbnail URLs for different sizes.

Change-Id: Ife8293c86683ea914b1a5a60000584b501d92e55
2014-01-12 12:50:34 -08:00
Mark Holmquist 5949748ed6 Load images normally
Removes the spinner, loads images line-by-line. Supposedly more
expected for most users.

Change-Id: Ia5fba4c8d8af681c0a95e43d34014b07e33941c4
2014-01-08 23:42:06 +00:00
apsdehal f9ee5ec0a0 Added No description message
'No description available' message has been added when description for the
given file is not available.

Bug: 56446
Change-Id: Ie239e5cd0d1b645ed149ea1ecc80197b0e84bc34
2014-01-07 01:57:08 +05:30
apsdehal fb4367f24c Added 'Learn more' message
Message was added to replace 'multimediaviewer-repository' when the file was local

Bug: 56121
Change-Id: I2c6cef2cb21f88159dc56ca7c94c4be21e553db9
2013-12-30 16:54:40 +05:30
Mark Holmquist d134a1d32e Fix perf logging
Forgot to add the dependency -.-

Change-Id: I6f4b0712ecda09fc0c096564a19caa6ee9de73a9
2013-12-18 15:16:38 -08:00
Mark Holmquist f144a0a403 Add performance logging
Change-Id: If6e3aec4b2547fa9768eaaf5387729ed2b427ab1
2013-12-09 17:06:01 -08:00
Mark Holmquist 676d1ace46 Remove oojs hack
Unnecessary now that Ifea6405c2 has landed in core 

Change-Id: I4ad8238410c01308e37aa9b61cb4e8c84817801b
2013-12-05 02:47:09 +00:00
jenkins-bot b704f294f8 Merge "Add tests to MultimediaViewer" 2013-12-02 23:27:42 +00:00
Aaron Arcos bed5c07039 Add tests to MultimediaViewer
These are just smoke tests. I will add more in coming versions of this change.
Consolidated various cases in one tests. Added tests to validate for legit clicks.

Based on Idfbec829399ff6969cd01be3c13a8ed7a66a1fef

Change-Id: I366c7af9a5cf43361d8293183c9da117bc5d4971
2013-12-02 15:19:12 -08:00
Mark Holmquist 5d916b9a45 Bump version number
The UI change is enough that I want to make this more bigger.

Change-Id: I6586d327a772dc4128fbe9354fd819f83a3fdcd8
2013-12-02 18:41:35 +00:00
Mark Holmquist 24a8092a2f Measure sitename clicks too
Change-Id: Iad105fbc9d257db895660d7afac77294e7907f7a
2013-11-18 22:04:10 +00:00
Mark Holmquist 95a88d43d1 Use oojs to extend multilightbox objects
Simple now, only really aliases the classes, but we'll use them to replace
the hooking infrastructure in the near future.

Change-Id: I963a4887a717c9bb064e30fa5fb86bbccb7186a1
2013-11-18 13:50:02 -08:00
tgr 5d419682f5 Use moment.js for date formatting
Add moment.js ( http://momentjs.com/ ) as a ResourceLoader module
and use it to parse and format date strings. Moment.js seems to be
the least bad option right now; eventually it should be replaced
by i18n functionality in core Javascript modules.

Change-Id: I332655778be3d694781b83fa5dea1e59770d8866
2013-11-15 14:53:45 +00:00
Mark Holmquist c0c9e7037f ResourceLoader consistency file moves
Keep modules in separate dirs, move images to their module dirs, and fix
up the module declarations so they still work.

Also moved viewer.svg into the root.

Bug: 56421
Change-Id: Ia84ddfd3b91c784c42d9ba243c5cfd46354f139f
2013-11-14 13:38:40 -08:00
Mark Holmquist 32a1c2e194 Support for all manner of images
Thumbnails still supported, but we also do categories and galleries,
now!

https://mingle.corp.wikimedia.org/projects/multimedia/cards/57

Change-Id: Ieee973eb165eec3e4cff1f0d387e2c20369e126b
2013-11-04 13:40:31 -08:00
Brion Vibber 64fb52a709 MultimediaViewer hi-DPI support
Multiply target dimensions by $.devicePixelRatio() when fetching
image for the viewer lightbox.

Bug: 55477
Change-Id: I5d64d21ecc563486a6f7d4709cebc129ef77f930
2013-11-01 16:20:05 +00:00
Mark Holmquist dd3df43e37 Fix bug in spinner code
Needed to use $.createSpinner instead of hacking in the image directly,
else bits.wikimedia.org won't work as expected. Will test on beta.

Change-Id: I0eba356f7910fd6a3173ed66c601fd42264ff336
2013-10-31 15:33:40 -07:00
Mark Holmquist dd2e2d153f Add info links for Media Viewer
Bug: 56332
Change-Id: I2d229481693735a4662f1d898bd0f19c200e39bc
2013-10-31 17:15:43 +00:00
Mark Holmquist ca46c13d13 Add "use this file" link and dialog
Little bit hacky, maybe, but it's working nicely and it's a very useful
tool for the lightbox.

Selection, it turns out, is really really difficult.

Bug: 56141
Change-Id: Ifd3e2f771010190c9f401fd4219342aff48f4be8
2013-10-30 13:06:18 -07:00
Mark Holmquist e40d993227 Add image's license to the lightbox header
Depends on…

* core
:* I77303d8e535fc1c42e14cfb853814e5c434a81ec
* CommonsMetadata
:* I5e6bc45f9751641e16426231dabcc8277b86fee0 (merged)
:* If3cf6a0ee444d1613d0caf14045b92fad6afa2ab (merged)

Change-Id: I60180f7ca3a16a04a0adee8af8482fa0940ac555
2013-10-30 11:53:26 -07:00
Mark Holmquist 476846813e Fix EL dependency loading
Do it in an extension function. Cool feature.

Change-Id: I4a11d13d8c0742106ce4dda15b6b3caaa6489421
2013-10-25 16:42:57 -07:00
Mark Holmquist 0719e17a6b Add source and authour to the title div
Strips out complex formatting, which should be useful later on as well.

Depends on:

* core
:* I77303d8e535fc1c42e14cfb853814e5c434a81ec
* CommonsMetadata
:* I5e6bc45f9751641e16426231dabcc8277b86fee0

Change-Id: Id835fd8133b9762e7bec10783f4fa4b983177aed
2013-10-24 15:59:24 -07:00
jenkins-bot a0c1e950c4 Merge "Put the username into the info list" 2013-10-24 22:58:08 +00:00
jenkins-bot ed7d36622c Merge "EventLogging support for MultimediaViewer" 2013-10-24 22:56:15 +00:00
Mark Holmquist 47c7fc1be8 Put the username into the info list
Link to the user page of the uploader.

Fetches the gender from the API - falls back to "unknown" especially in
cases of cross-domain requests.

Change-Id: I38940782dc5d2d56c8aea608b1fe72e04f397c00
2013-10-24 15:55:38 -07:00
Mark Holmquist f26d8b06f5 EventLogging support for MultimediaViewer
Capture clicky events for most buttons and things.

Change-Id: I7d7ed21512df5cda19a0e5b7b7e1a32fd1ccfd2b
2013-10-24 15:33:55 -07:00
Mark Holmquist a66be06ae9 Add creation time to list
Fallback to upload time for now.

Helps to have:

* core
:* I77303d8e535fc1c42e14cfb853814e5c434a81ec
* CommonsMetadata
:* I5e6bc45f9751641e16426231dabcc8277b86fee0

Change-Id: I822b48cebbace51cd8f68adc45a68a1c93ec29db
2013-10-24 15:21:17 -07:00
Mark Holmquist 509416ce8d Add remote image repository information to list
Change-Id: Icfab093a44530949d1672a683fb8d4c0e7b901fc
2013-10-24 09:43:11 -07:00
jenkins-bot 558adf6db8 Merge "Pull data from API, load title" 2013-10-08 19:28:55 +00:00
Mark Holmquist 88b2e6f1a2 Pull data from API, load title
Information is actually getting stuck into the interface now! Woo!

Also added divs for other metadata, when we're ready for them.

Note, requires I1aaed0895d2a0bc224c82e93975ecf6afd8cb6b8 and
Ie31e6df376bda087e92ec889d54df3374ba96b5e to work properly.

Change-Id: Ief96c1b7b7ad54a6bdf0531921a842206a42c823
2013-10-08 11:42:39 -07:00
raymond a21b94abdc Consistency tweaks in preparation for adding extension to translatewiki.net
* Fix description message key
* Initialize messages array for healthy of translatewiki.net scripts
* Remove . from end of description message

Change-Id: Ib51e0f6dd58662a5653949d3c5fe402012425267
2013-10-04 10:55:54 +02:00
Mark Holmquist 4898f42e18 Initial commit - working demo
Works with the new multilightbox library from
https://gitorious.org/multilightbox/multilightbox

Also has fullscreen and close. Very fun.

Change-Id: I6d61f6590843e1767bc7492dbd98e6aa3b85fcdc
2013-09-03 16:52:28 -07:00