diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index e3c037ec42..a810f872ea 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -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 ); } } ); } diff --git a/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js b/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js index 92aa978c0c..7de42cd7bb 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js @@ -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 = $( '
' ).addClass( 've-ui-mwNoticesPopupTool-items' ); - - // Initialization - items.forEach( function ( itemHtml ) { - var $node = $( '
' ) - .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 = $( '
' ).addClass( 've-ui-mwNoticesPopupTool-items' ); + + notices.forEach( function ( itemHtml ) { + var $node = $( '
' ) + .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. *