summaryrefslogtreecommitdiff
path: root/www/wiki/resources/src/mediawiki.action/mediawiki.action.view.metadata.js
blob: bbe3032fc53d73844380dd8149a348b319da0aec (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
52
53
54
55
56
57
/*!
 * Exif metadata display for MediaWiki file uploads
 *
 * Add an expand/collapse link and collapse by default if set to
 * (with JS disabled, user will see all items)
 *
 * See also ImagePage.php#makeMetadataTable (creates the HTML)
 */
( function ( mw, $ ) {
	$( function () {
		var $tables = $( '.mw_metadata' );
		if ( !$tables.find( '.mw-metadata-collapsible, .collapsable' ).length ) {
			// No collapsible rows present on this page
			return;
		}
		$tables.each( function () {
			var $link,
				expandText = mw.msg( 'metadata-expand' ),
				collapseText = mw.msg( 'metadata-collapse' ),
				$table = $( this );

			$link = $( '<a>' )
				.text( expandText )
				.attr( {
					role: 'button',
					tabindex: 0
				} )
				.on( 'click keypress', function ( e ) {
					if (
						e.type === 'click' ||
						e.type === 'keypress' && e.which === 13
					) {
						if ( $table.hasClass( 'collapsed' ) ) {
							// From collapsed to expanded. Button will now collapse.
							$( this ).text( collapseText );
						} else {
							// From expanded to collapsed. Button will now expand.
							$( this ).text( expandText );
						}
						$table.toggleClass( 'collapsed' );
					}
				} );

			$table.find( 'tbody' ).append(
				$( '<tr class="mw-metadata-show-hide-extended"></tr>' ).append(
					$( '<td colspan="2"></td>' ).append( $link )
				)
			);
		} );

		// Initial collapsed state
		// (For back-compat with cached HTML from before ImagePage.php
		// did this by default)
		$tables.addClass( 'collapsed' );
	} );

}( mediaWiki, jQuery ) );