diff --git a/resources/mmv/mmv.bootstrap.js b/resources/mmv/mmv.bootstrap.js index 1cc2e20af..3722b8e4c 100755 --- a/resources/mmv/mmv.bootstrap.js +++ b/resources/mmv/mmv.bootstrap.js @@ -133,6 +133,7 @@ var $thumbCaption, caption, bs = this, + alwaysOpen = false, $thumb = $( thumb ), $link = $thumb.closest( 'a.image' ), $thumbContain = $link.closest( '.thumb' ), @@ -175,6 +176,9 @@ .text( mw.message( 'multimediaviewer-view-expanded' ).text() ) ) .appendTo( $( '.fullMedia' ) ); + + // Ignore the preference, open anyway + alwaysOpen = true; } // This is the data that will be passed onto the mmv @@ -193,7 +197,7 @@ } $link.add( $enlarge ).click( function ( e ) { - return bs.click( this, e, title ); + return bs.click( this, e, title, alwaysOpen ); } ); // now that we have set up our real click handler we can we can remove the temporary // handler added in mmv.head.js which just replays clicks to the real handler @@ -207,9 +211,11 @@ * @param {Object} element Clicked element * @param {jQuery.Event} e jQuery event object * @param {string} title File title + * @param {boolean} overridePreference Whether to ignore global preferences and open + * the lightbox on this click event. * @returns {boolean} */ - MMVB.click = function ( element, e, title ) { + MMVB.click = function ( element, e, title, overridePreference ) { var $element = $( element ); // Do not interfere with non-left clicks or if modifier keys are pressed. @@ -218,7 +224,7 @@ } // Don't load if someone has specifically stopped us from doing so - if ( mw.config.get( 'wgMediaViewerOnClick' ) !== true ) { + if ( mw.config.get( 'wgMediaViewerOnClick' ) !== true && overridePreference !== true ) { return; } diff --git a/tests/qunit/mmv/mmv.bootstrap.test.js b/tests/qunit/mmv/mmv.bootstrap.test.js index 45dbb547d..6d6568f75 100644 --- a/tests/qunit/mmv/mmv.bootstrap.test.js +++ b/tests/qunit/mmv/mmv.bootstrap.test.js @@ -1,5 +1,15 @@ ( function ( mw, $ ) { - QUnit.module( 'mmv.bootstrap', QUnit.newMwEnvironment() ); + var backup = {}; + + QUnit.module( 'mmv.bootstrap', QUnit.newMwEnvironment( { + setup: function () { + backup.onclick = mw.config.get( 'wgMediaViewerOnClick' ); + mw.config.set( 'wgMediaViewerOnClick', true ); + }, + + teardown: function () { + mw.config.set( 'wgMediaViewerOnClick', backup.onclick ); + } } ) ); function createGallery( imageSrc ) { var div = $( '