Merge "Remove not used private member variable mParserWarnings from OutputPage"
[mediawiki.git] / resources / src / mediawiki / mediawiki.filewarning.js
blob882affe17fe1ff7bb63fbf77dc1c2a735763eca9
1 /*!
2  * mediawiki.filewarning
3  *
4  * @author Mark Holmquist, 2015
5  * @since 1.25
6  */
7 /*global OO*/
8 ( function ( mw, $, oo ) {
9         var warningConfig = mw.config.get( 'wgFileWarning' ),
10                 warningMessages = warningConfig.messages,
11                 warningLink = warningConfig.link,
12                 $origMimetype = $( '.fullMedia .fileInfo .mime-type' ),
13                 $mimetype = $origMimetype.clone(),
14                 $header = $( '<h3>' )
15                         .addClass( 'mediawiki-filewarning-header empty' ),
16                 $main = $( '<p>' )
17                         .addClass( 'mediawiki-filewarning-main empty' ),
18                 $info = $( '<a>' )
19                         .addClass( 'mediawiki-filewarning-info empty' ),
20                 $footer = $( '<p>' )
21                         .addClass( 'mediawiki-filewarning-footer empty' ),
22                 dialog = new oo.ui.PopupButtonWidget( {
23                         classes: [ 'mediawiki-filewarning-anchor' ],
24                         label: $mimetype,
25                         flags: [ 'warning' ],
26                         icon: 'alert',
27                         framed: false,
28                         popup: {
29                                 classes: [ 'mediawiki-filewarning' ],
30                                 padded: true,
31                                 width: 400,
32                                 $content: $header.add( $main ).add( $info ).add( $footer )
33                         }
34                 } );
36         function loadMessage( $target, message ) {
37                 if ( message ) {
38                         $target.removeClass( 'empty' )
39                                 .text( mw.message( message ).text() );
40                 }
41         }
43         // The main message must be populated for the dialog to show.
44         if ( warningConfig && warningConfig.messages && warningConfig.messages.main ) {
45                 $mimetype.addClass( 'has-warning' );
47                 $origMimetype.replaceWith( dialog.$element );
49                 if ( warningMessages ) {
50                         loadMessage( $main, warningMessages.main );
51                         loadMessage( $header, warningMessages.header );
52                         loadMessage( $footer, warningMessages.footer );
54                         if ( warningLink ) {
55                                 loadMessage( $info, warningMessages.info );
56                                 $info.attr( 'href', warningLink );
57                         }
58                 }
60                 // Make OOUI open the dialog, it won't appear until the user
61                 // hovers over the warning.
62                 dialog.getPopup().toggle( true );
64                 // Override toggle handler because we don't need it for this popup
65                 // object at all. Sort of nasty, but it gets the job done.
66                 dialog.getPopup().toggle = $.noop;
67         }
68 }( mediaWiki, jQuery, OO ) );