Merge "CurlHttpRequest: Follow redirects even under open_basedir"
[lhc/web/wiklou.git] / resources / src / mediawiki / mediawiki.filewarning.js
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 } );
35
36 function loadMessage( $target, message ) {
37 if ( message ) {
38 $target.removeClass( 'empty' )
39 .text( mw.message( message ).text() );
40 }
41 }
42
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' );
46
47 $origMimetype.replaceWith( dialog.$element );
48
49 if ( warningMessages ) {
50 loadMessage( $main, warningMessages.main );
51 loadMessage( $header, warningMessages.header );
52 loadMessage( $footer, warningMessages.footer );
53
54 if ( warningLink ) {
55 loadMessage( $info, warningMessages.info );
56 $info.attr( 'href', warningLink );
57 }
58 }
59
60 // Make OOUI open the dialog, it won't appear until the user
61 // hovers over the warning.
62 dialog.getPopup().toggle( true );
63
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 ) );