2014-07-25 20:19:15 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* MediaWiki Extension: Echo
|
|
|
|
* http://www.mediawiki.org/wiki/Extension:Echo
|
|
|
|
*
|
|
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
|
|
* in the Software without restriction, including without limitation the rights
|
|
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
|
|
* furnished to do so, subject to the following conditions:
|
|
|
|
*
|
|
|
|
* The above copyright notice and this permission notice shall be included in
|
|
|
|
* all copies or substantial portions of the Software.
|
|
|
|
*
|
|
|
|
* This program is distributed WITHOUT ANY WARRANTY.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @file
|
|
|
|
* @ingroup Extensions
|
|
|
|
* @author Andrew Garrett, Benny Situ, Ryan Kaldari, Erik Bernhardson
|
|
|
|
* @licence MIT License
|
|
|
|
*/
|
|
|
|
|
|
|
|
$echoResourceTemplate = array(
|
|
|
|
'localBasePath' => __DIR__ . '/modules',
|
|
|
|
'remoteExtPath' => 'Echo/modules',
|
|
|
|
);
|
|
|
|
|
|
|
|
$wgResourceModules += array(
|
2016-01-20 23:05:21 +00:00
|
|
|
'ext.echo.ui.desktop' => $echoResourceTemplate + array(
|
|
|
|
'scripts' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'ui/mw.echo.ui.BadgeLinkWidget.js',
|
|
|
|
'ui/mw.echo.ui.NotificationBadgeWidget.js',
|
2016-01-20 23:05:21 +00:00
|
|
|
),
|
|
|
|
'styles' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.NotificationBadgeWidget.less',
|
2016-01-20 23:05:21 +00:00
|
|
|
),
|
|
|
|
'skinStyles' => array(
|
|
|
|
'monobook' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.NotificationBadgeWidget.monobook.less'
|
2016-01-20 23:05:21 +00:00
|
|
|
),
|
|
|
|
'modern' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.NotificationBadgeWidget.modern.less'
|
2016-01-20 23:05:21 +00:00
|
|
|
),
|
|
|
|
'vector' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.NotificationBadgeWidget.vector.less'
|
2016-01-20 23:05:21 +00:00
|
|
|
),
|
|
|
|
),
|
|
|
|
'dependencies' => array(
|
|
|
|
'ext.echo.ui',
|
|
|
|
'ext.echo.styles.badge',
|
2016-04-26 01:33:01 +00:00
|
|
|
'mediawiki.util',
|
|
|
|
),
|
|
|
|
'messages' => array(
|
|
|
|
'echo-popup-footer-beta-invitation',
|
|
|
|
'echo-popup-footer-beta-invitation-link',
|
|
|
|
// echo-popup-footer-beta-invitation uses this message with {{int:}}:
|
|
|
|
'echo-pref-beta-feature-cross-wiki-message',
|
2016-01-20 23:05:21 +00:00
|
|
|
),
|
|
|
|
'targets' => array( 'desktop' ),
|
|
|
|
),
|
2015-08-13 00:54:16 +00:00
|
|
|
'ext.echo.ui' => $echoResourceTemplate + array(
|
2014-07-25 20:19:15 +00:00
|
|
|
'scripts' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'ui/mw.echo.ui.js',
|
|
|
|
|
|
|
|
'ui/mw.echo.ui.SortedListWidget.js',
|
|
|
|
'ui/mw.echo.ui.SubGroupListWidget.js',
|
|
|
|
'ui/mw.echo.ui.NotificationsListWidget.js',
|
|
|
|
'ui/mw.echo.ui.PlaceholderItemWidget.js',
|
|
|
|
'ui/mw.echo.ui.NotificationItemWidget.js',
|
|
|
|
'ui/mw.echo.ui.SingleNotificationItemWidget.js',
|
|
|
|
'ui/mw.echo.ui.CrossWikiNotificationItemWidget.js',
|
|
|
|
|
|
|
|
'ui/mw.echo.ui.ActionMenuPopupWidget.js',
|
|
|
|
'ui/mw.echo.ui.MenuItemWidget.js',
|
|
|
|
'ui/mw.echo.ui.FooterNoticeWidget.js',
|
|
|
|
'ui/mw.echo.ui.NotificationsWrapper.js',
|
2016-04-20 00:52:27 +00:00
|
|
|
'ext.echo.moment-hack.js',
|
2015-08-13 00:54:16 +00:00
|
|
|
),
|
|
|
|
'styles' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.overlay.less',
|
|
|
|
'styles/mw.echo.ui.icons.less',
|
|
|
|
'styles/mw.echo.ui.NotificationItemWidget.less',
|
|
|
|
'styles/mw.echo.ui.CrossWikiNotificationItemWidget.less',
|
|
|
|
'styles/mw.echo.ui.NotificationsListWidget.less',
|
|
|
|
'styles/mw.echo.ui.PlaceholderItemWidget.less',
|
|
|
|
'styles/mw.echo.ui.SubGroupListWidget.less',
|
|
|
|
'styles/mw.echo.ui.MenuItemWidget.less',
|
|
|
|
'styles/mw.echo.ui.FooterNoticeWidget.less',
|
2016-05-19 20:38:46 +00:00
|
|
|
'styles/mw.echo.ui.NotificationsWrapper.less',
|
2014-07-25 20:19:15 +00:00
|
|
|
),
|
|
|
|
'skinStyles' => array(
|
2015-08-13 00:54:16 +00:00
|
|
|
'monobook' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.NotificationsListWidget.monobook.less',
|
2015-08-13 00:54:16 +00:00
|
|
|
),
|
|
|
|
'modern' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.NotificationItemWidget.modern.less',
|
2015-11-04 14:47:48 +00:00
|
|
|
),
|
|
|
|
'vector' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'styles/mw.echo.ui.overlay.vector.less',
|
2015-11-04 14:47:48 +00:00
|
|
|
),
|
2014-07-25 20:19:15 +00:00
|
|
|
),
|
|
|
|
'dependencies' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'ext.echo.logger',
|
2015-09-16 19:48:56 +00:00
|
|
|
'ext.echo.styles.notifications',
|
2016-04-10 13:31:02 +00:00
|
|
|
'ext.echo.controller',
|
2016-02-20 04:25:05 +00:00
|
|
|
'oojs-ui-core',
|
|
|
|
'oojs-ui-widgets', // Only needed for ButtonSelectWidget :(
|
2015-10-16 23:18:25 +00:00
|
|
|
'moment',
|
2015-09-11 04:29:56 +00:00
|
|
|
'mediawiki.jqueryMsg',
|
|
|
|
'mediawiki.language',
|
2016-01-12 18:43:09 +00:00
|
|
|
'mediawiki.Title',
|
2015-10-16 23:18:25 +00:00
|
|
|
// 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',
|
2016-01-19 22:09:15 +00:00
|
|
|
'oojs-ui.styles.icons-content',
|
2016-03-04 22:44:22 +00:00
|
|
|
'oojs-ui.styles.icons-interactions',
|
2014-07-25 20:19:15 +00:00
|
|
|
),
|
|
|
|
'messages' => array(
|
2016-03-09 04:50:31 +00:00
|
|
|
'echo-badge-count',
|
2014-07-25 20:19:15 +00:00
|
|
|
'echo-overlay-link',
|
|
|
|
'echo-mark-all-as-read',
|
|
|
|
'echo-more-info',
|
|
|
|
'echo-feedback',
|
2014-08-06 19:29:17 +00:00
|
|
|
'echo-notification-alert',
|
|
|
|
'echo-notification-message',
|
2015-12-21 21:47:09 +00:00
|
|
|
'echo-notification-loginrequired',
|
|
|
|
'echo-notification-popup-loginrequired',
|
2015-10-16 23:18:25 +00:00
|
|
|
'notification-link-text-collapse-all',
|
|
|
|
"notification-link-text-expand-alert-count",
|
|
|
|
"notification-link-text-expand-message-count",
|
|
|
|
"notification-link-text-expand-all-count",
|
2016-02-27 01:19:06 +00:00
|
|
|
"notification-timestamp-ago-seconds",
|
|
|
|
"notification-timestamp-ago-minutes",
|
|
|
|
"notification-timestamp-ago-hours",
|
|
|
|
"notification-timestamp-ago-days",
|
|
|
|
"notification-timestamp-ago-months",
|
|
|
|
"notification-timestamp-ago-years",
|
2016-01-21 19:29:21 +00:00
|
|
|
'echo-notification-markasread',
|
2016-03-04 22:44:22 +00:00
|
|
|
'echo-notification-markasunread',
|
2016-04-15 20:30:14 +00:00
|
|
|
'echo-notification-markasread-tooltip',
|
|
|
|
'echo-notification-more-options-tooltip',
|
2014-09-09 00:10:33 +00:00
|
|
|
'echo-notification-alert-text-only',
|
|
|
|
'echo-notification-message-text-only',
|
2015-08-13 00:54:16 +00:00
|
|
|
'echo-email-batch-bullet',
|
2015-09-17 21:14:49 +00:00
|
|
|
'echo-notification-placeholder',
|
2015-09-07 23:54:47 +00:00
|
|
|
'tooltip-pt-notifications-alert',
|
|
|
|
'tooltip-pt-notifications-message',
|
2015-09-22 22:36:14 +00:00
|
|
|
'mytalk',
|
2015-08-13 00:54:16 +00:00
|
|
|
'mypreferences'
|
2014-07-25 20:19:15 +00:00
|
|
|
),
|
2015-11-03 22:51:20 +00:00
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
2014-07-25 20:19:15 +00:00
|
|
|
),
|
2015-08-13 00:54:16 +00:00
|
|
|
'ext.echo.dm' => $echoResourceTemplate + array(
|
|
|
|
'scripts' => array(
|
2016-04-10 13:31:02 +00:00
|
|
|
'mw.echo.js',
|
|
|
|
'model/mw.echo.dm.js',
|
|
|
|
'model/mw.echo.dm.ModelManager.js',
|
|
|
|
'model/mw.echo.dm.SortedList.js',
|
|
|
|
'model/mw.echo.dm.NotificationItem.js',
|
|
|
|
'model/mw.echo.dm.CrossWikiNotificationItem.js',
|
|
|
|
'model/mw.echo.dm.NotificationsList.js',
|
|
|
|
'model/mw.echo.dm.NotificationGroupsList.js',
|
|
|
|
'model/mw.echo.dm.UnreadNotificationCounter.js',
|
|
|
|
// 'controller/mw.echo.Controller.js',
|
2014-08-12 15:09:09 +00:00
|
|
|
),
|
2014-08-05 23:48:07 +00:00
|
|
|
'dependencies' => array(
|
2016-01-15 22:11:33 +00:00
|
|
|
'oojs',
|
2014-08-05 23:48:07 +00:00
|
|
|
),
|
2015-10-17 00:02:39 +00:00
|
|
|
'messages' => array(
|
|
|
|
'echo-api-failure',
|
2016-01-21 23:03:39 +00:00
|
|
|
'echo-api-failure-cross-wiki',
|
2015-10-17 00:02:39 +00:00
|
|
|
),
|
2015-08-13 00:54:16 +00:00
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
|
|
|
),
|
2016-01-15 22:11:33 +00:00
|
|
|
'ext.echo.api' => $echoResourceTemplate + array(
|
|
|
|
'scripts' => array(
|
|
|
|
'api/mw.echo.api.js',
|
|
|
|
'api/mw.echo.api.EchoApi.js',
|
|
|
|
'api/mw.echo.api.APIHandler.js',
|
|
|
|
'api/mw.echo.api.LocalAPIHandler.js',
|
|
|
|
'api/mw.echo.api.ForeignAPIHandler.js',
|
|
|
|
'api/mw.echo.api.NetworkHandler.js',
|
|
|
|
),
|
|
|
|
'dependencies' => array(
|
|
|
|
'mediawiki.api',
|
|
|
|
'mediawiki.ForeignApi',
|
|
|
|
'oojs'
|
|
|
|
),
|
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
|
|
|
),
|
2016-04-10 13:31:02 +00:00
|
|
|
'ext.echo.controller' => $echoResourceTemplate + array(
|
|
|
|
'scripts' => array(
|
|
|
|
'controller/mw.echo.Controller.js',
|
|
|
|
),
|
|
|
|
'dependencies' => array(
|
|
|
|
'oojs',
|
|
|
|
'ext.echo.api',
|
|
|
|
'ext.echo.dm',
|
|
|
|
),
|
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
|
|
|
),
|
2015-08-13 00:54:16 +00:00
|
|
|
'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(
|
2014-08-05 23:48:07 +00:00
|
|
|
'scripts' => array(
|
2015-08-13 00:54:16 +00:00
|
|
|
'ext.echo.init.js',
|
|
|
|
),
|
2016-05-03 01:56:13 +00:00
|
|
|
'dependencies' => array(
|
|
|
|
'ext.echo.api',
|
|
|
|
'mediawiki.Uri',
|
|
|
|
),
|
2015-09-14 21:12:59 +00:00
|
|
|
'targets' => array( 'desktop' ),
|
2015-08-13 00:54:16 +00:00
|
|
|
),
|
|
|
|
// Base no-js styles
|
2015-09-16 19:48:56 +00:00
|
|
|
'ext.echo.styles.badge' => $echoResourceTemplate + array(
|
2015-08-13 00:54:16 +00:00
|
|
|
'position' => 'top',
|
|
|
|
'styles' => array(
|
|
|
|
'nojs/mw.echo.badge.less',
|
2015-09-16 19:48:56 +00:00
|
|
|
),
|
2015-11-04 14:47:48 +00:00
|
|
|
'skinStyles' => array(
|
|
|
|
'monobook' => array(
|
|
|
|
'nojs/mw.echo.badge.monobook.less',
|
|
|
|
),
|
|
|
|
'vector' => array(
|
|
|
|
'nojs/mw.echo.badge.vector.less',
|
|
|
|
),
|
|
|
|
),
|
2015-09-16 19:48:56 +00:00
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
|
|
|
),
|
|
|
|
// Styles for individual notification entries in flyout and Special:Notifications
|
|
|
|
'ext.echo.styles.notifications' => $echoResourceTemplate + array(
|
|
|
|
'position' => 'top',
|
|
|
|
'styles' => array(
|
2015-08-13 00:54:16 +00:00
|
|
|
'nojs/mw.echo.notifications.less'
|
|
|
|
),
|
2015-09-14 18:12:12 +00:00
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
|
|
|
),
|
2015-09-16 19:48:56 +00:00
|
|
|
'ext.echo.styles.alert' => $echoResourceTemplate + array(
|
2015-09-14 18:12:12 +00:00
|
|
|
'position' => 'top',
|
|
|
|
'styles' => array(
|
|
|
|
'nojs/mw.echo.alert.less',
|
|
|
|
),
|
2015-09-04 23:36:01 +00:00
|
|
|
'skinStyles' => array(
|
|
|
|
'monobook' => array(
|
|
|
|
'nojs/mw.echo.alert.monobook.less',
|
|
|
|
),
|
|
|
|
'modern' => array(
|
|
|
|
'nojs/mw.echo.alert.modern.less',
|
2015-09-14 18:12:12 +00:00
|
|
|
),
|
2015-09-04 23:36:01 +00:00
|
|
|
),
|
2015-08-13 00:54:16 +00:00
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
2014-08-05 23:48:07 +00:00
|
|
|
),
|
2015-09-16 19:48:56 +00:00
|
|
|
'ext.echo.styles.special' => $echoResourceTemplate + array(
|
2015-09-13 04:20:22 +00:00
|
|
|
'position' => 'top',
|
|
|
|
'styles' => array(
|
2016-05-16 14:03:13 +00:00
|
|
|
'nojs/mw.echo.icon.less',
|
2015-09-13 04:20:22 +00:00
|
|
|
'nojs/mw.echo.special.less',
|
|
|
|
),
|
|
|
|
'targets' => array( 'desktop', 'mobile' ),
|
|
|
|
),
|
2015-09-14 19:52:01 +00:00
|
|
|
// 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}',
|
|
|
|
),
|
2014-07-25 20:19:15 +00:00
|
|
|
);
|
2015-06-02 00:26:09 +00:00
|
|
|
|
|
|
|
unset( $echoResourceTemplate );
|