' )
.addClass( 'mediawiki-filewarning-info empty' ),
$footer = $( '' )
.addClass( 'mediawiki-filewarning-footer empty' ),
dialog = new OO.ui.PopupButtonWidget( {
classes: [ 'mediawiki-filewarning-anchor' ],
label: $mimetype,
flags: [ 'warning' ],
icon: 'alert',
framed: false,
popup: {
// This popup is always "visible", but hidden using CSS. OOUI event handlers that try to
// close it interfere with other things on the page. (T309093)
autoClose: false,
classes: [ 'mediawiki-filewarning' ],
padded: true,
width: 400,
$content: $header.add( $main ).add( $info ).add( $footer )
}
} );
function loadMessage( $target, message ) {
if ( message ) {
$target.removeClass( 'empty' )
// eslint-disable-next-line mediawiki/msg-doc
.text( mw.msg( message ) );
}
}
// The main message must be populated for the dialog to show.
if ( warningConfig && warningConfig.messages && warningConfig.messages.main ) {
$mimetype.addClass( 'has-warning' );
$origMimetype.replaceWith( dialog.$element );
if ( warningMessages ) {
loadMessage( $main, warningMessages.main );
loadMessage( $header, warningMessages.header );
loadMessage( $footer, warningMessages.footer );
if ( warningLink ) {
loadMessage( $info, warningMessages.info );
$info.attr( 'href', warningLink );
}
}
// Position the popup relative to $button rather than the default $element, so that it isn't
// pushed away by padding added to .mediawiki-filewarning-anchor in CSS. (T363157)
dialog.getPopup().setFloatableContainer( dialog.$button );
// Make OOUI open the dialog, it won't appear until the user
// hovers over the warning.
dialog.getPopup().toggle( true );
// Override toggle handler because we don't need it for this popup
// object at all. Sort of nasty, but it gets the job done.
dialog.getPopup().toggle = function () {};
}
}() );