Merge "Move around code that sets up edit notices to ensure it runs after we receive the notices to display"

This commit is contained in:
jenkins-bot 2016-11-22 23:27:26 +00:00 committed by Gerrit Code Review
commit 8370b98e3f
2 changed files with 43 additions and 30 deletions

View file

@ -1418,6 +1418,7 @@ ve.init.mw.DesktopArticleTarget.prototype.maybeShowMetaDialog = function () {
if ( this.welcomeDialogPromise ) {
this.welcomeDialogPromise
.always( function () {
var noticesTool;
// Pop out the notices when the welcome dialog is closed
if (
target.switched &&
@ -1425,7 +1426,9 @@ ve.init.mw.DesktopArticleTarget.prototype.maybeShowMetaDialog = function () {
) {
target.actionsToolbar.tools.editModeSource.getPopup().toggle( true );
} else {
target.actionsToolbar.tools.notices.getPopup().toggle( true );
noticesTool = target.actionsToolbar.tools.notices;
noticesTool.setNotices( target.getEditNotices() );
noticesTool.getPopup().toggle( true );
}
} );
}

View file

@ -40,36 +40,13 @@ OO.inheritClass( ve.ui.MWPopupTool, OO.ui.PopupTool );
* @param {Object} [config]
*/
ve.ui.MWNoticesPopupTool = function VeUiMWNoticesPopupTool( toolGroup, config ) {
var tool = this,
items = toolGroup.getToolbar().getTarget().getEditNotices(),
count = items.length,
title = ve.msg(
'visualeditor-editnotices-tool',
mw.language.convertNumber( count )
);
// Parent constructor
ve.ui.MWNoticesPopupTool.super.call( this, title, toolGroup, config );
// Properties
this.$items = $( '<div>' ).addClass( 've-ui-mwNoticesPopupTool-items' );
// Initialization
items.forEach( function ( itemHtml ) {
var $node = $( '<div>' )
.addClass( 've-ui-mwNoticesPopupTool-item' )
.append( $.parseHTML( itemHtml ) );
$node.find( 'a' ).attr( 'target', '_blank' );
tool.$items.append( $node );
} );
this.popup.$body.append( this.$items );
if ( !count ) {
this.$element = $( [] );
}
ve.ui.MWNoticesPopupTool.super.call(
this,
ve.msg( 'visualeditor-editnotices-tooltip' ),
toolGroup,
config
);
};
/* Inheritance */
@ -87,6 +64,39 @@ ve.ui.MWNoticesPopupTool.static.autoAddToGroup = false;
/* Methods */
/**
* Set notices to display.
*
* @param {string[]} notices
*/
ve.ui.MWNoticesPopupTool.prototype.setNotices = function ( notices ) {
var tool = this,
count = notices.length;
this.popup.setLabel( ve.msg(
'visualeditor-editnotices-tool',
mw.language.convertNumber( count )
) );
this.$items = $( '<div>' ).addClass( 've-ui-mwNoticesPopupTool-items' );
notices.forEach( function ( itemHtml ) {
var $node = $( '<div>' )
.addClass( 've-ui-mwNoticesPopupTool-item' )
.append( $.parseHTML( itemHtml ) );
$node.find( 'a' ).attr( 'target', '_blank' );
tool.$items.append( $node );
} );
this.popup.$body.append( this.$items );
if ( !count ) {
this.$element = $( [] );
}
};
/**
* Get the tool title.
*