mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-28 17:50:39 +00:00
1ac72cc01a
Split the notifications into 'alert' and 'message' badget with two different flyouts. Also clean up styling and module behavior. ** Depends on ooui change Id4bbe14ba0bf6c for footers in popups. ** Depends on ooui change Ie93e4d6ed5637c for fixing a bug in inverted icons. ** MobileFrontend must also be updated to support the new modules in this patch I168f485d6e54cb4067 In this change: * Split notifcations into alert and messages and display those in two different badges. * Create two separate flyout/popups for each category with their notifications. * Create a view-model to control notification state and emit events for both the popup and the badge to intercept and react to. * Clean up module load and distribution: * Create an ext.echo.ui module for javascript-ui support and ooui widgets. * Create an ext.echo.nojs module that unifies all base classes that are needed for both nojs and js support, that the js version builds upon. * Create a separate ext.echo.logger module as a singleton that can be called to perform all logging. * Clean up style uses * Move the special page LESS file into nojs module so all styles load properly even in nojs mode. * Transfer some of the styling from JS to LESS for consistency. * Make the 'read more' button load already with the styles it needs to look like a button, since its behavior is similar in nojs and js vesions, but before its classes were applied only by the js, making it inconsistent and also making its appearance 'jump' from a link to a button. * Delete and clean up all old and unused files. * Moved 'Help.png' icon from modules/overlay to modules/icons for later use. Bug: T108190 Change-Id: I55f440ed9f64c46817f620328a6bb522d44c9ca9
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
( function ( mw, $ ) {
|
|
'use strict';
|
|
|
|
if ( mw.echo.Logger.static.clickThroughEnabled ) {
|
|
mw.loader.using( 'ext.eventLogging', function () {
|
|
mw.eventLog.setDefaults( 'EchoInteraction', {
|
|
version: mw.config.get( 'wgEchoConfig' ).version,
|
|
userId: +mw.config.get( 'wgUserId' ),
|
|
editCount: +mw.config.get( 'wgUserEditCount' )
|
|
} );
|
|
} );
|
|
}
|
|
|
|
// Activate ooui
|
|
$( document ).ready( function () {
|
|
var $existingAlertLink = $( '#pt-notifications_alert a' ),
|
|
$existingMessageLink = $( '#pt-notifications_message a' ),
|
|
numAlerts = $existingAlertLink.text(),
|
|
numMessages = $existingMessageLink.text(),
|
|
hasUnreadAlerts = $existingAlertLink.hasClass( 'mw-echo-unseen-notifications' ),
|
|
hasUnreadMessages = $existingMessageLink.hasClass( 'mw-echo-unseen-notifications' ),
|
|
// Store links
|
|
links = {
|
|
notifications: $( '#pt-notifications_message a' ).attr( 'href' ),
|
|
preferences: $( '#pt-preferences a' ).attr( 'href' )
|
|
};
|
|
|
|
if ( $existingMessageLink.length ) {
|
|
mw.echo.ui.messageWidget = new mw.echo.ui.NotificationBadgeWidget( {
|
|
type: 'message',
|
|
markReadWhenSeen: false,
|
|
numItems: numMessages,
|
|
hasUnread: hasUnreadMessages,
|
|
badgeIcon: 'speechBubble',
|
|
links: links
|
|
} );
|
|
$existingMessageLink.replaceWith( mw.echo.ui.messageWidget.$element );
|
|
}
|
|
|
|
mw.echo.ui.alertWidget = new mw.echo.ui.NotificationBadgeWidget( {
|
|
type: 'alert',
|
|
markReadWhenSeen: true,
|
|
numItems: numAlerts,
|
|
hasUnread: hasUnreadAlerts,
|
|
badgeIcon: {
|
|
read: 'bell',
|
|
unread: 'bellOn'
|
|
},
|
|
links: links
|
|
} );
|
|
$existingAlertLink.replaceWith( mw.echo.ui.alertWidget.$element );
|
|
} );
|
|
|
|
} )( mediaWiki, jQuery );
|