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