__DIR__ . '/modules', 'remoteExtPath' => 'Echo/modules', ); $wgResourceModules += array( 'ext.echo.ui' => $echoResourceTemplate + array( 'scripts' => array( 'ooui/mw.echo.ui.js', 'ooui/mw.echo.ui.PlaceholderItemWidget.js', 'ooui/mw.echo.ui.NotificationItemWidget.js', 'ooui/mw.echo.ui.NotificationGroupItemWidget.js', 'ooui/mw.echo.ui.NotificationsWidget.js', 'ooui/mw.echo.ui.BundledNotificationGroupWidget.js', 'ooui/mw.echo.ui.ActionMenuPopupWidget.js', 'ooui/mw.echo.ui.MenuItemWidget.js', 'ooui/mw.echo.ui.BadgeLinkWidget.js', 'ooui/mw.echo.ui.NotificationBadgeWidget.js' ), 'styles' => array( 'ooui/styles/mw.echo.ui.overlay.less', 'ooui/styles/mw.echo.ui.icons.less', 'ooui/styles/mw.echo.ui.NotificationsWidget.less', 'ooui/styles/mw.echo.ui.NotificationItemWidget.less', 'ooui/styles/mw.echo.ui.NotificationGroupItemWidget.less', 'ooui/styles/mw.echo.ui.BundledNotificationGroupWidget.less', 'ooui/styles/mw.echo.ui.MenuItemWidget.less', 'ooui/styles/mw.echo.ui.NotificationBadgeWidget.less' ), 'skinStyles' => array( 'monobook' => array( 'ooui/styles/mw.echo.ui.NotificationsWidget.monobook.less', 'ooui/styles/mw.echo.ui.NotificationBadgeWidget.monobook.less' ), 'modern' => array( 'ooui/styles/mw.echo.ui.NotificationItemWidget.modern.less', 'ooui/styles/mw.echo.ui.NotificationBadgeWidget.modern.less' ), 'vector' => array( 'ooui/styles/mw.echo.ui.overlay.vector.less', 'ooui/styles/mw.echo.ui.NotificationBadgeWidget.vector.less' ), ), 'dependencies' => array( 'ext.echo.styles.badge', 'ext.echo.styles.notifications', 'ext.echo.dm', 'oojs-ui', 'moment', 'ext.echo.logger', 'mediawiki.jqueryMsg', 'mediawiki.language', 'mediawiki.Title', // OOJS-UI icons // TODO: We are only using 1-2 icons from each // bundle; split them up to our own bundle so we // don't load heavy icons all the time 'oojs-ui.styles.icons-user', 'oojs-ui.styles.icons-alerts', 'oojs-ui.styles.icons-content', ), 'messages' => array( 'echo-overlay-link', 'echo-mark-all-as-read', 'echo-more-info', 'echo-feedback', 'echo-notification-alert', 'echo-notification-message', 'echo-notification-loginrequired', 'echo-notification-popup-loginrequired', 'notification-link-text-collapse-all', "notification-link-text-expand-alert-count", "notification-link-text-expand-message-count", "notification-link-text-expand-all-count", 'echo-notification-markasread', 'echo-notification-alert-text-only', 'echo-notification-message-text-only', 'echo-email-batch-bullet', 'echo-notification-placeholder', 'tooltip-pt-notifications-alert', 'tooltip-pt-notifications-message', 'mytalk', 'mypreferences' ), 'targets' => array( 'desktop', 'mobile' ), ), 'ext.echo.dm' => $echoResourceTemplate + array( 'scripts' => array( 'viewmodel/mw.echo.dm.js', 'viewmodel/mw.echo.dm.List.js', 'viewmodel/mw.echo.dm.SortedList.js', 'viewmodel/handlers/mw.echo.dm.APIHandler.js', 'viewmodel/handlers/mw.echo.dm.LocalAPIHandler.js', 'viewmodel/handlers/mw.echo.dm.ForeignAPIHandler.js', 'viewmodel/handlers/mw.echo.dm.NetworkHandler.js', 'viewmodel/mw.echo.dm.NotificationItem.js', 'viewmodel/mw.echo.dm.NotificationGroupItem.js', 'viewmodel/mw.echo.dm.NotificationList.js', 'viewmodel/mw.echo.dm.NotificationsModel.js', ), 'dependencies' => array( 'mediawiki.api', 'mediawiki.ForeignApi', 'oojs' ), 'messages' => array( 'echo-api-failure', 'echo-api-failure-cross-wiki', ), 'targets' => array( 'desktop', 'mobile' ), ), 'ext.echo.base' => array( // This is a dummy module for backwards compatibility. // Most extensions that require ext.echo.base actually need // the logger. They will have to be adjusted to use the new // logger functionality, however. // This module is mainly here to make sure other extensions // that rely on ext.echo.base don't explode, and that CI lets // us merge this while fixing the main extensions that require // to be changed due to the new structure. 'targets' => array( 'desktop', 'mobile' ), 'dependencies' => array( 'ext.echo.logger' ) ), // ext.echo.logger is registered in EchoHooks::onResourceLoaderRegisterModules 'ext.echo.init' => $echoResourceTemplate + array( 'scripts' => array( 'ext.echo.init.js', ), 'targets' => array( 'desktop' ), ), // Base no-js styles 'ext.echo.styles.badge' => $echoResourceTemplate + array( 'position' => 'top', 'styles' => array( 'nojs/mw.echo.badge.less', ), 'skinStyles' => array( 'monobook' => array( 'nojs/mw.echo.badge.monobook.less', ), 'vector' => array( 'nojs/mw.echo.badge.vector.less', ), ), 'targets' => array( 'desktop', 'mobile' ), ), // Styles for individual notification entries in flyout and Special:Notifications 'ext.echo.styles.notifications' => $echoResourceTemplate + array( 'position' => 'top', 'styles' => array( 'nojs/mw.echo.notifications.less' ), 'targets' => array( 'desktop', 'mobile' ), ), 'ext.echo.styles.alert' => $echoResourceTemplate + array( 'position' => 'top', 'styles' => array( 'nojs/mw.echo.alert.less', ), 'skinStyles' => array( 'monobook' => array( 'nojs/mw.echo.alert.monobook.less', ), 'modern' => array( 'nojs/mw.echo.alert.modern.less', ), ), 'targets' => array( 'desktop', 'mobile' ), ), 'ext.echo.styles.special' => $echoResourceTemplate + array( 'position' => 'top', 'styles' => array( 'nojs/mw.echo.special.less', ), 'targets' => array( 'desktop', 'mobile' ), ), 'ext.echo.special' => $echoResourceTemplate + array( 'scripts' => array( 'special/ext.echo.special.js', ), 'dependencies' => array( 'mediawiki.ui.button', 'mediawiki.api', 'ext.echo.ui', ), 'messages' => array( 'echo-load-more-error', 'echo-more-info', 'echo-feedback', ), ), // HACK: OOUI has an icon pack for these, but it's unhelpfully large and we don't // want to load more as render-blocking CSS than we have to (T112401) 'ext.echo.badgeicons' => $echoResourceTemplate + array( 'class' => 'ResourceLoaderOOUIImageModule', 'position' => 'top', 'name' => 'badgeicons', 'rootPath' => 'icons', 'selectorWithoutVariant' => '.oo-ui-icon-{name}', 'selectorWithVariant' => '.oo-ui-image-{variant}.oo-ui-icon-{name}', ), ); unset( $echoResourceTemplate );