blob: fb44a76f3d653ae34df31d00814f741d011b89e6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/**
* Change multi-page image navigation so that the current page display can be changed
* without a page reload. Currently, the only image formats that can be multi-page images are
* PDF and DjVu files
*/
( function (mw, $) {
// Use jQuery's load function to specifically select and replace table.multipageimage's child
// tr with the new page's table.multipageimage's tr element.
// table.multipageimage always has only one row.
function loadPage( page ) {
var $multipageimage = $( 'table.multipageimage' ),
$spinner = $.createSpinner( {
size: 'large',
type: 'block'
} );
// Set the spinner's dimensions equal to the table's dimensions so that
// the current scroll position is not lost after the table is emptied prior to
// its contents being updated
$spinner.css( {
height: $multipageimage.find( 'tr' ).height(),
width: $multipageimage.find( 'tr' ).width()
} );
$multipageimage.empty().append( $spinner ).load(
page + ' table.multipageimage tr',
ajaxifyPageNavigation
);
}
function ajaxifyPageNavigation() {
// Intercept the default action of the links in the thumbnail navigation
$( '.multipageimagenavbox' ).one( 'click', 'a', function ( e ) {
loadPage( this.href );
e.preventDefault();
} );
// Prevent the submission of the page select form and instead call loadPage
$( 'form[name="pageselector"]' ).one( 'change submit', function ( e ) {
loadPage( this.action + '?' + $( this ).serialize() );
e.preventDefault();
} );
}
$( document ).ready( function() {
// The presence of table.multipageimage signifies that this file is a multi-page image
if( mw.config.get( 'wgNamespaceNumber' ) === 6 && $( 'table.multipageimage' ).length !== 0 ) {
ajaxifyPageNavigation();
}
} );
}( mediaWiki, jQuery ) );
|