jenkins-bot has submitted this change and it was merged. Change subject: Turn mmv-next/mmv-prev into OO events ......................................................................
Turn mmv-next/mmv-prev into OO events More of those events sent to the document can be converted, but it's a start... Bug: T77253 Change-Id: I6100ce303346ab9fa94332e91f5d730dc83f4e65 --- M resources/mmv/mmv.js M resources/mmv/mmv.lightboxinterface.js M resources/mmv/ui/mmv.ui.canvasButtons.js M resources/mmv/ui/mmv.ui.js M tests/qunit/mmv/mmv.lightboxinterface.test.js M tests/qunit/mmv/mmv.test.js M tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js 7 files changed, 43 insertions(+), 39 deletions(-) Approvals: Jdlrobson: Looks good to me, approved jenkins-bot: Verified diff --git a/resources/mmv/mmv.js b/resources/mmv/mmv.js index 55b4525..08624cd 100644 --- a/resources/mmv/mmv.js +++ b/resources/mmv/mmv.js @@ -944,12 +944,13 @@ MMVP.setupEventHandlers = function () { var viewer = this; + this.ui.connect( this, { + 'next': 'nextImage', + 'prev': 'prevImage' + } ); + $( document ).on( 'mmv-close.mmvp', function () { viewer.close(); - } ).on( 'mmv-next.mmvp', function () { - viewer.nextImage(); - } ).on( 'mmv-prev.mmvp', function () { - viewer.prevImage(); } ).on( 'mmv-resize-end.mmvp', function () { viewer.resize( viewer.ui ); } ).on( 'mmv-request-thumbnail.mmvp', function ( e, size ) { @@ -969,7 +970,9 @@ * Unregisters all event handlers. Currently only used in tests. */ MMVP.cleanupEventHandlers = function () { - $( document ).off( 'mmv-close.mmvp mmv-next.mmvp mmv-prev.mmvp mmv-resize-end.mmvp' ); + $( document ).off( 'mmv-close.mmvp mmv-resize-end.mmvp' ); + + this.ui.disconnect( this ); }; /** diff --git a/resources/mmv/mmv.lightboxinterface.js b/resources/mmv/mmv.lightboxinterface.js index 0fa0527..18b0474 100644 --- a/resources/mmv/mmv.lightboxinterface.js +++ b/resources/mmv/mmv.lightboxinterface.js @@ -193,6 +193,11 @@ this.handleEvent( 'mmv-faded-out', function ( e ) { ui.fadedOut( e ); } ); this.handleEvent( 'mmv-fade-stopped', function ( e ) { ui.fadeStopped( e ); } ); + this.buttons.connect( this, { + 'next': [ 'emit', 'next' ], + 'prev': [ 'emit', 'prev' ] + } ); + $parent = $( parentId || document.body ); // Clean up fullscreen data because hard-existing fullscreen might have left @@ -407,10 +412,11 @@ } if ( forward ) { - $( document ).trigger( $.Event( 'mmv-next' ) ); + this.emit( 'next' ); } else { - $( document ).trigger( $.Event( 'mmv-prev' ) ); + this.emit( 'prev' ); } + e.preventDefault(); break; } diff --git a/resources/mmv/ui/mmv.ui.canvasButtons.js b/resources/mmv/ui/mmv.ui.canvasButtons.js index e691c31..6e2e248 100644 --- a/resources/mmv/ui/mmv.ui.canvasButtons.js +++ b/resources/mmv/ui/mmv.ui.canvasButtons.js @@ -94,11 +94,11 @@ } ); this.$next.click( function () { - $container.trigger( $.Event( 'mmv-next' ) ); + buttons.emit( 'next' ); } ); this.$prev.click( function () { - $container.trigger( $.Event( 'mmv-prev' ) ); + buttons.emit( 'prev' ); } ); } oo.inheritClass( CanvasButtons, mw.mmv.ui.Element ); diff --git a/resources/mmv/ui/mmv.ui.js b/resources/mmv/ui/mmv.ui.js index 8543706..9071dfa 100644 --- a/resources/mmv/ui/mmv.ui.js +++ b/resources/mmv/ui/mmv.ui.js @@ -15,7 +15,7 @@ * along with MultimediaViewer. If not, see <http://www.gnu.org/licenses/>. */ -( function ( mw, $ ) { +( function ( mw, $, oo ) { var EP, cachedRTL; @@ -27,6 +27,8 @@ * @param {jQuery} $container */ function Element( $container ) { + oo.EventEmitter.call( this ); + /** @property {jQuery} $container The element that contains the UI element. */ this.$container = $container; @@ -46,6 +48,9 @@ */ this.timers = {}; } + + oo.mixinClass( Element, oo.EventEmitter ); + EP = Element.prototype; /** @@ -244,4 +249,4 @@ mw.mmv.ui = {}; mw.mmv.ui.reuse = {}; mw.mmv.ui.Element = Element; -}( mediaWiki, jQuery ) ); +}( mediaWiki, jQuery, OO ) ); diff --git a/tests/qunit/mmv/mmv.lightboxinterface.test.js b/tests/qunit/mmv/mmv.lightboxinterface.test.js index 21137f7..aee8e37 100644 --- a/tests/qunit/mmv/mmv.lightboxinterface.test.js +++ b/tests/qunit/mmv/mmv.lightboxinterface.test.js @@ -257,25 +257,25 @@ viewer.setupEventHandlers(); // Since we define both, the test works regardless of RTL settings - viewer.nextImage = function () { + lightbox.on( 'next', function () { assert.ok( true, 'Next image was open' ); - }; + } ); - viewer.prevImage = function () { + lightbox.on( 'prev', function () { assert.ok( true, 'Prev image was open' ); - }; + } ); // 37 is left arrow, 39 is right arrow lightbox.keydown( $.Event( 'keydown', { which: 37 } ) ); lightbox.keydown( $.Event( 'keydown', { which: 39 } ) ); - viewer.nextImage = function () { + lightbox.off( 'next' ).on( 'next', function () { assert.ok( false, 'Next image should not have been open' ); - }; + } ); - viewer.prevImage = function () { + lightbox.off( 'prev' ).on( 'prev', function () { assert.ok( false, 'Prev image should not have been open' ); - }; + } ); lightbox.keydown( $.Event( 'keydown', { which: 37, altKey: true } ) ); lightbox.keydown( $.Event( 'keydown', { which: 39, altKey: true } ) ); diff --git a/tests/qunit/mmv/mmv.test.js b/tests/qunit/mmv/mmv.test.js index 32baa29..e71ba6a 100644 --- a/tests/qunit/mmv/mmv.test.js +++ b/tests/qunit/mmv/mmv.test.js @@ -76,7 +76,7 @@ // Verify that mmv doesn't reset a foreign hash assert.strictEqual( window.location.hash, '#Bar', 'Foreign hash remains intact' ); - viewer.ui = { images: [ image ] }; + viewer.ui = { images: [ image ], disconnect: $.noop }; $( '#qunit-fixture' ).append( '<a class="image"><img src="' + imageSrc + '"></a>' ); diff --git a/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js b/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js index 65f7cd0..abf743a 100644 --- a/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js +++ b/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js @@ -18,27 +18,17 @@ ( function ( mw, $ ) { QUnit.module( 'mmv.ui.CanvasButtons', QUnit.newMwEnvironment() ); - QUnit.test( 'Prev/Next', 2, function ( assert ) { - var i = 0, - $qf = $( '#qunit-fixture' ), - buttons = new mw.mmv.ui.CanvasButtons( $qf, $( '<div>' ), $( '<div>' ) ), - viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ); + QUnit.test( 'Prev/Next', 2, function( assert ) { + var $qf = $( '#qunit-fixture' ), + buttons = new mw.mmv.ui.CanvasButtons( $qf, $( '<div>' ), $( '<div>' ) ); - viewer.ui = {}; + buttons.on( 'next', function() { + assert.ok( true, 'Switched to next image' ); + } ); - viewer.loadIndex = function () { - assert.ok( true, 'Switched to next/prev image' ); - i++; - - if ( i === 2 ) { - QUnit.start(); - viewer.cleanupEventHandlers(); - } - }; - - viewer.setupEventHandlers(); - - QUnit.stop(); + buttons.on( 'prev', function() { + assert.ok( true, 'Switched to prev image' ); + } ); buttons.$next.click(); buttons.$prev.click(); -- To view, visit https://gerrit.wikimedia.org/r/173916 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6100ce303346ab9fa94332e91f5d730dc83f4e65 Gerrit-PatchSet: 9 Gerrit-Project: mediawiki/extensions/MultimediaViewer Gerrit-Branch: master Gerrit-Owner: Gilles <gdu...@wikimedia.org> Gerrit-Reviewer: Gergő Tisza <gti...@wikimedia.org> Gerrit-Reviewer: Gilles <gdu...@wikimedia.org> Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org> Gerrit-Reviewer: MarkTraceur <mtrac...@member.fsf.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits