{ "name": "Echo", "author": [ "Andrew Garrett", "Ryan Kaldari", "Benny Situ", "Luke Welling", "Kunal Mehta", "Moriel Schottlender", "Jon Robson", "Roan Kattouw" ], "url": "https://www.mediawiki.org/wiki/Extension:Echo", "descriptionmsg": "echo-desc", "license-name": "MIT", "type": "specialpage", "requires": { "MediaWiki": ">= 1.40.0" }, "APIMetaModules": { "notifications": { "class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoNotifications", "services": [ "MainConfig" ] }, "unreadnotificationpages": { "class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoUnreadNotificationPages", "services": [ "PageStore", "TitleFactory" ] } }, "APIModules": { "echomarkread": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMarkRead", "echomarkseen": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMarkSeen", "echoarticlereminder": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoArticleReminder", "echomute": { "class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMute", "services": [ "CentralIdLookup", "UserOptionsManager" ] } }, "DefaultUserOptions": { "echo-email-frequency": 0, "echo-dont-email-read-notifications": false }, "ExtensionFunctions": [ "MediaWiki\\Extension\\Notifications\\Hooks::initEchoExtension" ], "JobClasses": { "EchoNotificationJob": "MediaWiki\\Extension\\Notifications\\Jobs\\NotificationJob", "EchoNotificationDeleteJob": "MediaWiki\\Extension\\Notifications\\Jobs\\NotificationDeleteJob", "EchoPushNotificationRequest": "MediaWiki\\Extension\\Notifications\\Push\\NotificationRequestJob" }, "SpecialPages": { "Notifications": "MediaWiki\\Extension\\Notifications\\Special\\SpecialNotifications", "DisplayNotificationsConfiguration": { "class": "MediaWiki\\Extension\\Notifications\\Special\\SpecialDisplayNotificationsConfiguration", "services": [ "EchoAttributeManager", "UserOptionsManager" ] }, "NotificationsMarkRead": "MediaWiki\\Extension\\Notifications\\Special\\SpecialNotificationsMarkRead" }, "AvailableRights": [ "manage-all-push-subscriptions" ], "GroupPermissions": { "push-subscription-manager": { "manage-all-push-subscriptions": true } }, "MessagesDirs": { "Echo": [ "i18n", "i18n/api" ] }, "ExtensionMessagesFiles": { "EchoAliases": "Echo.alias.php" }, "QUnitTestModule": { "localBasePath": "", "remoteExtPath": "Echo", "dependencies": [ "ext.echo.dm", "ext.echo.mobile" ], "scripts": [ "tests/qunit/mobile/test_NotificationBadge.js", "tests/qunit/model/test_mw.echo.dm.BundleNotificationItem.js", "tests/qunit/model/test_mw.echo.dm.CrossWikiNotificationItem.js", "tests/qunit/model/test_mw.echo.dm.FiltersModel.js", "tests/qunit/model/test_mw.echo.dm.NotificationGroupsList.js", "tests/qunit/model/test_mw.echo.dm.NotificationItem.js", "tests/qunit/model/test_mw.echo.dm.NotificationsList.js", "tests/qunit/model/test_mw.echo.dm.PaginationModel.js", "tests/qunit/model/test_mw.echo.dm.SeenTimeModel.js", "tests/qunit/model/test_mw.echo.dm.SourcePagesModel.js", "tests/qunit/model/test_mw.echo.dm.UnreadNotificationCounter.js" ] }, "ResourceModules": { "ext.echo.logger": { "packageFiles": [ "logger/mw.echo.Logger.js", { "name": "logger/config.json", "callback": "MediaWiki\\Extension\\Notifications\\Hooks::getLoggerConfigVars" } ], "dependencies": [ "oojs", "mediawiki.user" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.ui.desktop": { "scripts": [ "ui/mw.echo.ui.BadgeLinkWidget.js", "ui/mw.echo.ui.NotificationBadgeWidget.js" ], "styles": [ "styles/mw.echo.ui.NotificationBadgeWidget.less" ], "dependencies": [ "ext.echo.ui", "ext.echo.styles.badge", "mediawiki.util", "mediawiki.api" ] }, "ext.echo.ui": { "scripts": [ "controller/mw.echo.Controller.js", "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.ToggleReadCircleButtonWidget.js", "ui/mw.echo.ui.NotificationItemWidget.js", "ui/mw.echo.ui.SingleNotificationItemWidget.js", "ui/mw.echo.ui.CrossWikiNotificationItemWidget.js", "ui/mw.echo.ui.BundleNotificationItemWidget.js", "ui/mw.echo.ui.ClonedNotificationItemWidget.js", "ui/mw.echo.ui.ActionMenuPopupWidget.js", "ui/mw.echo.ui.MenuItemWidget.js", "ui/mw.echo.ui.NotificationsWrapper.js", "ui/mw.echo.ui.ConfirmationPopupWidget.js", "ext.echo.moment-hack.js" ], "styles": [ "styles/mw.echo.ui.mobile.less", "styles/mw.echo.ui.overlay.less", "styles/mw.echo.ui.NotificationItemWidget.less", "styles/mw.echo.ui.ToggleReadCircleButtonWidget.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.ActionMenuPopupWidget.less", "styles/mw.echo.ui.MenuItemWidget.less", "styles/mw.echo.ui.NotificationsWrapper.less", "styles/mw.echo.ui.ConfirmationPopupWidget.less" ], "skinStyles": { "modern": [ "styles/mw.echo.ui.overlay.monobook.less" ], "monobook": [ "styles/mw.echo.ui.overlay.monobook.less" ], "vector": [ "styles/mw.echo.ui.overlay.vector.less" ], "vector-2022": [ "styles/mw.echo.ui.overlay.vector.less" ], "minerva": [ "styles/mw.echo.ui.overlay.minerva.less" ], "wikimediaapiportal": [ "styles/mw.echo.ui.overlay.wikimediaapiportal.less" ] }, "dependencies": [ "ext.echo.api", "ext.echo.dm", "ext.echo.logger", "ext.echo.secondaryicons", "oojs", "oojs-ui-core", "oojs-ui-widgets", "moment", "mediawiki.jqueryMsg", "mediawiki.language", "mediawiki.Title", "oojs-ui.styles.icons-user", "oojs-ui.styles.icons-alerts", "oojs-ui.styles.icons-content", "oojs-ui.styles.icons-interactions", "oojs-ui.styles.icons-moderation", "oojs-ui.styles.icons-movement", "oojs-ui.styles.icons-editing-core" ], "messages": [ "echo-badge-count", "echo-overlay-link", "echo-mark-all-as-read", "echo-mark-wiki-as-read", "echo-notification-alert", "echo-notification-notice", "echo-notification-loginrequired", "echo-notification-popup-loginrequired", "notification-link-text-expand-all", "notification-link-text-collapse-all", "notification-link-text-expand-alert-count", "notification-link-text-expand-notice-count", "notification-link-text-expand-all-count", "notification-timestamp-ago-seconds", "notification-timestamp-ago-minutes", "notification-timestamp-ago-hours", "notification-timestamp-ago-days", "notification-timestamp-ago-months", "notification-timestamp-ago-years", "notification-timestamp-today", "notification-timestamp-yesterday", "echo-notification-markasread", "echo-notification-markasunread", "echo-notification-markasread-tooltip", "echo-notification-more-options-tooltip", "echo-notification-alert-text-only", "echo-notification-notice-text-only", "echo-email-batch-bullet", "echo-notification-placeholder", "tooltip-pt-notifications-alert", "tooltip-pt-notifications-notice", "mytalk", "mypreferences", "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.dm": { "scripts": [ "model/mw.echo.dm.js", "model/mw.echo.dm.SourcePagesModel.js", "model/mw.echo.dm.PaginationModel.js", "model/mw.echo.dm.FiltersModel.js", "model/mw.echo.dm.SeenTimeModel.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.BundleNotificationItem.js", "model/mw.echo.dm.NotificationsList.js", "model/mw.echo.dm.NotificationGroupsList.js", "model/mw.echo.dm.UnreadNotificationCounter.js" ], "dependencies": [ "oojs", "ext.echo.init", "ext.echo.api", "moment" ], "messages": [ "echo-api-failure", "echo-notification-loginrequired", "echo-api-failure-cross-wiki" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.api": { "scripts": [ "api/mw.echo.api.js", "api/mw.echo.api.PromisePrioritizer.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": [ "mediawiki.api", "mediawiki.ForeignApi", "oojs" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.mobile": { "templates": { "NotificationBadge.mustache": "mobile/NotificationBadge.mustache" }, "styles": [ "mobile/overlay.less", "mobile/notificationsFilterOverlay.less" ], "messages": [ "notifications", "echo-mobile-notifications-filter-title", "echo-mark-all-as-read-confirmation" ], "dependencies": [ "mediawiki.util", "mediawiki.router", "ext.echo.ui", "oojs-ui.styles.icons-interactions" ], "packageFiles": [ "mobile/notifications.js", "mobile/list.js", { "name": "mobile/config.json", "callback": "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars" }, "mobile/overlay.js", "mobile/NotificationBadge.js", "mobile/notificationsFilterOverlay.js" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.init": { "packageFiles": [ "ext.echo.init.js", { "name": "config.json", "callback": "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars" } ], "dependencies": [ "ext.echo.api", "mediawiki.jqueryMsg", "mediawiki.Uri" ], "messages": [ "echo-badge-count", "echo-displaysnippet-title", "parentheses" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.centralauth": { "packageFiles": [ "ext.echo.centralauth.js" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.styles.badge": { "styles": [ "nojs/mw.echo.badge.less" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.styles.notifications": { "styles": [ "nojs/mw.echo.notifications.less", "styles/LabelIconWidget.less" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.styles.alert": { "styles": [ "nojs/mw.echo.alert.less" ], "skinStyles": { "monobook": [ "nojs/mw.echo.alert.monobook.less" ] }, "targets": [ "desktop", "mobile" ] }, "ext.echo.special": { "scripts": [ "ui/mw.echo.ui.PaginationWidget.js", "ui/mw.echo.ui.DatedSubGroupListWidget.js", "ui/mw.echo.ui.DatedNotificationsWidget.js", "ui/mw.echo.ui.ReadStateButtonSelectWidget.js", "ui/mw.echo.ui.PageNotificationsOptionWidget.js", "ui/mw.echo.ui.PageFilterWidget.js", "ui/mw.echo.ui.CrossWikiUnreadFilterWidget.js", "ui/mw.echo.ui.NotificationsInboxWidget.js", "ui/mw.echo.ui.SpecialHelpMenuWidget.js", "special/ext.echo.special.js" ], "styles": [ "styles/mw.echo.ui.PaginationWidget.less", "styles/mw.echo.ui.DatedSubGroupListWidget.less", "styles/mw.echo.ui.DatedNotificationsWidget.less", "styles/mw.echo.ui.NotificationsInboxWidget.less", "styles/mw.echo.ui.PageNotificationsOptionWidget.less", "styles/mw.echo.ui.PageFilterWidget.less", "styles/mw.echo.ui.CrossWikiUnreadFilterWidget.less", "styles/mw.echo.ui.SpecialHelpMenuWidget.less" ], "skinStyles": { "minerva": [ "styles/mw.echo.ui.NotificationsInboxWidget.minerva.less" ] }, "dependencies": [ "ext.echo.ui", "mediawiki.Uri", "ext.echo.styles.special" ], "messages": [ "notification-inbox-filter-read", "notification-inbox-filter-unread", "notification-inbox-filter-all", "echo-notification-placeholder-filters", "echo-specialpage-pagination-numnotifications", "echo-specialpage-pagination-range", "echo-specialpage-pagefilters-title", "echo-specialpage-pagefilters-subtitle", "echo-mark-all-as-read", "echo-learn-more", "mypreferences", "echo-specialpage-section-markread", "echo-specialpage-pagefilterwidget-aria-label", "echo-specialpage-special-help-menu-widget-aria-label" ], "targets": [ "desktop", "mobile" ] }, "ext.echo.styles.special": { "styles": [ "nojs/mw.echo.special.less" ], "targets": [ "desktop", "mobile" ] } }, "ResourceFileModulePaths": { "localBasePath": "modules", "remoteExtPath": "Echo/modules" }, "Hooks": { "LoadExtensionSchemaUpdates": "MediaWiki\\Extension\\Notifications\\Hooks::onLoadExtensionSchemaUpdates", "GetPreferences": "main", "BeforePageDisplay": "main", "ResourceLoaderRegisterModules": "main", "UserGroupsChanged": "main", "LoadUserOptions": "main", "SaveUserOptions": "main", "UserGetDefaultOptions": "main", "UserClearNewTalkNotification": "main", "EmailUserComplete": "main", "LoginFormValidErrorMessages": "main", "OutputPageCheckLastModified": "main", "ArticleDeleteComplete": "main", "ArticleUndelete": "main", "UserMergeAccountFields": "MediaWiki\\Extension\\Notifications\\Hooks::onUserMergeAccountFields", "MergeAccountFromTo": "MediaWiki\\Extension\\Notifications\\Hooks::onMergeAccountFromTo", "UserMergeAccountDeleteTables": "MediaWiki\\Extension\\Notifications\\Hooks::onUserMergeAccountDeleteTables", "EchoGetBundleRules": "MediaWiki\\Extension\\Notifications\\Hooks::onEchoGetBundleRules", "EchoAbortEmailNotification": "MediaWiki\\Extension\\Notifications\\Hooks::onEchoAbortEmailNotification", "PageSaveComplete": "main", "LocalUserCreated": "main", "RollbackComplete": "main", "UserSaveSettings": "main", "AbortTalkPageEmailNotification": "main", "SendWatchlistEmailNotification": "main", "GetNewMessagesAlert": "main", "LinksUpdateComplete": "main", "SpecialMuteModifyFormFields": "MediaWiki\\Extension\\Notifications\\Hooks::onSpecialMuteModifyFormFields", "RecentChange_save": "main", "ApiMain::moduleManager": "main", "SkinTemplateNavigation::Universal": "main", "PreferencesGetIcon": "main" }, "HookHandlers": { "main": { "class": "MediaWiki\\Extension\\Notifications\\Hooks", "services": [ "MainConfig" ] } }, "config": { "EchoEnableEmailBatch": { "value": true }, "EchoUseJobQueue": { "value": false }, "EchoEmailFooterAddress": { "value": "" }, "EchoCluster": { "value": false }, "EchoSharedTrackingDB": { "value": false }, "EchoSharedTrackingCluster": { "value": false }, "EchoSeenTimeCacheType": { "value": null }, "EchoMaxUpdateCount": { "value": 2000 }, "EchoMaxMentionsCount": { "value": 50 }, "EchoMentionStatusNotifications": { "value": false }, "EchoMentionsOnMultipleSectionEdits": { "value": true }, "EchoMentionOnChanges": { "value": true }, "EchoBundleEmailInterval": { "value": 0 }, "DefaultNotifyTypeAvailability": { "value": { "web": true, "email": true } }, "NotifyTypeAvailabilityByCategory": { "value": { "system-noemail": { "web": true, "email": false }, "system-emailonly": { "web": false, "email": true }, "emailuser": { "web": true, "email": false }, "article-linked": { "web": true, "email": false }, "mention-failure": { "web": true, "email": false }, "mention-success": { "web": true, "email": false }, "thank-you-edit": { "web": true, "email": false } }, "merge_strategy": "array_plus_2d" }, "EchoNotifiers": { "value": { "web": [ "EchoNotifier", "notifyWithNotification" ], "email": [ "EchoNotifier", "notifyWithEmail" ] } }, "EchoAgentBlacklist": { "value": [] }, "EchoOnWikiBlacklist": { "value": "Echo-blacklist" }, "EchoPerUserBlacklist": { "value": false }, "EchoPerUserWhitelistFormat": { "value": "%s/Echo-whitelist" }, "EchoCrossWikiNotifications": { "value": false }, "EchoNotificationCategories": { "value": { "system": { "priority": 9, "no-dismiss": [ "all" ] }, "system-noemail": { "priority": 9, "no-dismiss": [ "all" ] }, "system-emailonly": { "priority": 9, "no-dismiss": [ "all" ] }, "user-rights": { "priority": 9, "tooltip": "echo-pref-tooltip-user-rights" }, "other": { "no-dismiss": [ "all" ] }, "edit-user-talk": { "priority": 1, "no-dismiss": [ "web" ], "tooltip": "echo-pref-tooltip-edit-user-talk" }, "edit-user-page": { "priority": 1, "tooltip": "echo-pref-tooltip-edit-user-page" }, "reverted": { "priority": 9, "tooltip": "echo-pref-tooltip-reverted" }, "article-linked": { "priority": 5, "tooltip": "echo-pref-tooltip-article-linked" }, "mention": { "priority": 4, "tooltip": "echo-pref-tooltip-mention" }, "mention-failure": { "priority": 4, "tooltip": "echo-pref-tooltip-mention-failure" }, "mention-success": { "priority": 4, "tooltip": "echo-pref-tooltip-mention-success" }, "emailuser": { "priority": 9, "tooltip": "echo-pref-tooltip-emailuser" }, "article-reminder": { "priority": 1, "tooltip": "echo-pref-tooltip-article-reminder" }, "thank-you-edit": { "priority": 9, "tooltip": "echo-pref-tooltip-thank-you-edit" }, "watchlist": { "priority": 5, "tooltip": "echo-pref-tooltip-watchlist" }, "minor-watchlist": { "priority": 6, "tooltip": "echo-pref-tooltip-minor-watchlist" } }, "merge_strategy": "array_plus_2d" }, "EchoNotificationIcons": { "value": { "watchlist-progressive": { "path": { "ltr": "Echo/modules/icons/watchlist-ltr-progressive.svg", "rtl": "Echo/modules/icons/watchlist-rtl-progressive.svg" } }, "placeholder": { "path": "Echo/modules/icons/notice.svg" }, "chat": { "path": { "ltr": "Echo/modules/icons/speechBubbles-ltr-progressive.svg", "rtl": "Echo/modules/icons/speechBubbles-rtl-progressive.svg" } }, "edit": { "path": "Echo/modules/icons/edit-progressive.svg" }, "edit-user-page": { "path": "Echo/modules/icons/edit-user-page.svg" }, "edit-user-talk": { "path": "Echo/modules/icons/edit-user-talk-progressive.svg" }, "linked": { "path": "Echo/modules/icons/link-progressive.svg" }, "mention": { "path": "Echo/modules/icons/mention-progressive.svg" }, "mention-failure": { "path": "Echo/modules/icons/mention-failure.svg" }, "mention-success": { "path": "Echo/modules/icons/mention-success-constructive.svg" }, "mention-status-bundle": { "path": "Echo/modules/icons/mention-status-bundle-progressive.svg" }, "reviewed": { "path": "Echo/modules/icons/articleCheck-progressive.svg" }, "revert": { "path": "Echo/modules/icons/revert.svg" }, "user-rights": { "path": "Echo/modules/icons/user-rights-progressive.svg" }, "emailuser": { "path": "Echo/modules/icons/message-constructive.svg" }, "help": { "path": { "ltr": "Echo/modules/icons/helpNotice-ltr.svg", "rtl": "Echo/modules/icons/helpNotice-rtl.svg" } }, "global": { "path": "Echo/modules/icons/global-progressive.svg" }, "site": { "url": false }, "article-reminder": { "path": "Echo/modules/icons/global-progressive.svg" } }, "merge_strategy": "array_plus_2d" }, "EchoSecondaryIcons": { "value": { "linked": { "path": "Echo/modules/icons/link-progressive.svg" }, "changes": { "path": "Echo/modules/icons/changes.svg" }, "thanks": { "path": { "ltr": "Echo/modules/icons/userTalk-ltr.svg", "rtl": "Echo/modules/icons/userTalk-rtl.svg" } }, "unbell": { "path": "Echo/modules/icons/unbell.svg" }, "userSpeechBubble": { "path": "Echo/modules/icons/user-speech-bubble.svg" } }, "merge_strategy": "array_plus_2d" }, "EchoNotifications": { "value": { "welcome": { "user-locators": [ "EchoUserLocator::locateEventAgent" ], "canNotifyAgent": true, "category": "system-noemail", "group": "positive", "section": "message", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoWelcomePresentationModel" }, "edit-user-page": { "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserPagePresentationModel", "user-locators": [ "EchoUserLocator::locateUserPageOwner" ], "category": "edit-user-page", "group": "interactive", "section": "alert", "bundle": { "web": true, "email": false, "expandable": true }, "immediate": true }, "edit-user-talk": { "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserTalkPresentationModel", "user-locators": [ "EchoUserLocator::locateTalkPageOwner" ], "category": "edit-user-talk", "group": "interactive", "section": "alert", "bundle": { "web": true, "email": false, "expandable": true }, "immediate": true }, "reverted": { "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoRevertedPresentationModel", "user-locators": [ [ "EchoUserLocator::locateFromEventExtra", [ "reverted-user-id" ] ] ], "category": "reverted", "group": "negative", "section": "alert" }, "page-linked": { "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoPageLinkedPresentationModel", "user-locators": [ "EchoUserLocator::locateArticleCreator" ], "category": "article-linked", "group": "neutral", "section": "message", "bundle": { "web": true, "email": true, "expandable": true } }, "minor-watchlist-change": { "user-locators": [ "EchoUserLocator::locateUsersWatchingTitle" ], "category": "minor-watchlist", "group": "interactive", "section": "message", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoWatchlistChangePresentationModel", "bundle": { "web": true, "email": true, "expandable": true } }, "watchlist-change": { "user-locators": [ "EchoUserLocator::locateUsersWatchingTitle" ], "section": "message", "category": "watchlist", "group": "interactive", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoWatchlistChangePresentationModel", "bundle": { "web": true, "email": true, "expandable": true } }, "mention": { "user-locators": [ [ "EchoUserLocator::locateFromEventExtra", [ "mentioned-users" ] ] ], "category": "mention", "group": "interactive", "section": "alert", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionPresentationModel" }, "mention-summary": { "user-locators": [ [ "EchoUserLocator::locateFromEventExtra", [ "mentioned-users" ] ] ], "category": "mention", "group": "interactive", "section": "alert", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionInSummaryPresentationModel" }, "mention-failure": { "user-locators": [ [ "EchoUserLocator::locateEventAgent" ] ], "canNotifyAgent": true, "category": "mention-failure", "bundle": { "web": true, "expandable": true }, "group": "negative", "section": "alert", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel" }, "mention-failure-too-many": { "user-locators": [ [ "EchoUserLocator::locateEventAgent" ] ], "canNotifyAgent": true, "category": "mention-failure", "group": "negative", "section": "alert", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel" }, "mention-success": { "user-locators": [ [ "EchoUserLocator::locateEventAgent" ] ], "canNotifyAgent": true, "category": "mention-success", "bundle": { "web": true, "expandable": true }, "group": "positive", "section": "message", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel" }, "user-rights": { "user-locators": [ [ "EchoUserLocator::locateFromEventExtra", [ "user" ] ] ], "category": "user-rights", "group": "neutral", "section": "alert", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoUserRightsPresentationModel" }, "emailuser": { "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEmailUserPresentationModel", "user-locators": [ [ "EchoUserLocator::locateFromEventExtra", [ "to-user-id" ] ] ], "category": "emailuser", "group": "neutral", "section": "alert" }, "foreign": { "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoForeignPresentationModel", "user-locators": [ "EchoUserLocator::locateEventAgent" ], "category": "foreign", "group": "positive", "section": "alert" }, "thank-you-edit": { "user-locators": [ "EchoUserLocator::locateEventAgent" ], "canNotifyAgent": true, "category": "thank-you-edit", "group": "positive", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditThresholdPresentationModel", "section": "message" }, "article-reminder": { "user-locators": [ "EchoUserLocator::locateEventAgent" ], "canNotifyAgent": true, "category": "article-reminder", "group": "positive", "presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoArticleReminderPresentationModel", "section": "message" } }, "merge_strategy": "array_plus_2d" }, "EchoCacheVersion": { "value": "1.12" }, "EchoEventLoggingVersion": { "value": "1.12" }, "EchoEventLoggingSchemas": { "value": { "Echo": { "enabled": false }, "EchoMail": { "enabled": false }, "EchoInteraction": { "enabled": false } }, "merge_strategy": "array_plus_2d" }, "AllowArticleReminderNotification": { "value": false, "description": "This is a feature flag to the Article Reminder notification" }, "EchoMaxMentionsInEditSummary": { "value": 0, "description": "Maximum nubmer of users that will be notified that they were linked from an edit summary or 0 for no notifications" }, "EchoPollForUpdates": { "value": 0, "description": "This is the polling rate i.e. the time after which we check for notifications count on the client side. It also controls whether notification count will be displayed in browser title. If polling rate is 0 this means polling is disabled and notification count is also not shown in browser title" }, "EchoWatchlistNotifications": { "value": false, "description": "Feature flag to enable Echo notifications whenever a page on a user's watchlist is changed, replacing the built-in preference to send emails in that circumstance." }, "EchoWatchlistEmailOncePerPage": { "value": true, "description": "Whether to send email notifications each time a watched page is edited (if false) or only the first time the page is changed before being visited again by the user (if true)" }, "EchoEnablePush": { "value": false, "description": "Whether to enable push notifications" }, "EchoPushServiceBaseUrl": { "value": false, "description": "Request endpoint URL for the push notification service" }, "EchoPushMaxSubscriptionsPerUser": { "value": 0, "description": "Maximum number of push subscriptions that may be stored in the DB at any given time for a single central user ID." } }, "attributes": { "EventLogging": { "Schemas": { "EchoInteraction": "/analytics/legacy/echointeraction/1.0.0", "EchoMail": "/analytics/legacy/echomail/1.0.0" } } }, "manifest_version": 2, "AutoloadClasses": { "BackfillUnreadWikis": "maintenance/backfillUnreadWikis.php", "Bundleable": "includes/Bundleable.php", "Bundler": "includes/Bundler.php", "EchoArrayList": "includes/EchoArrayList.php", "EchoAttributeManager": "includes/AttributeManager.php", "EchoCachedList": "includes/EchoCachedList.php", "EchoCallbackIterator": "includes/Iterator/CallbackIterator.php", "MediaWiki\\Extension\\Notifications\\Iterator\\CallbackIterator": "includes/Iterator/CallbackIterator.php", "EchoContainmentList": "includes/EchoContainmentList.php", "EchoContainmentSet": "includes/EchoContainmentSet.php", "EchoDataOutputFormatter": "includes/DataOutputFormatter.php", "EchoDeferredMarkAsDeletedUpdate": "includes/DeferredMarkAsDeletedUpdate.php", "EchoDiffGroup": "includes/EchoDiffGroup.php", "EchoDiffParser": "includes/EchoDiffParser.php", "EchoDiscussionParser": "includes/DiscussionParser.php", "EchoEditUserTalkPresentationModel": "includes/Formatters/EchoEditUserTalkPresentationModel.php", "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserTalkPresentationModel": "includes/Formatters/EchoEditUserTalkPresentationModel.php", "EchoEmailFormat": "includes/EmailFormat.php", "EchoEmailFrequency": "includes/EmailFrequency.php", "EchoEvent": "includes/Model/Event.php", "MediaWiki\\Extension\\Notifications\\Model\\Event": "includes/Model/Event.php", "EchoEventPresentationModel": "includes/Formatters/EchoEventPresentationModel.php", "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEventPresentationModel": "includes/Formatters/EchoEventPresentationModel.php", "EchoForeignNotifications": "includes/ForeignNotifications.php", "EchoForeignWikiRequest": "includes/ForeignWikiRequest.php", "EchoMentionPresentationModel": "includes/Formatters/EchoMentionPresentationModel.php", "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionPresentationModel": "includes/Formatters/EchoMentionPresentationModel.php", "EchoMentionStatusPresentationModel": "includes/Formatters/EchoMentionStatusPresentationModel.php", "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel": "includes/Formatters/EchoMentionStatusPresentationModel.php", "EchoNotification": "includes/Model/Notification.php", "MediaWiki\\Extension\\Notifications\\Model\\Notification": "includes/Model/Notification.php", "EchoNotificationMapper": "includes/Mapper/NotificationMapper.php", "MediaWiki\\Extension\\Notifications\\Mapper\\NotificationMapper": "includes/Mapper/NotificationMapper.php", "EchoNotifier": "includes/Notifier.php", "EchoOnWikiList": "includes/EchoOnWikiList.php", "EchoPresentationModelSection": "includes/Formatters/EchoPresentationModelSection.php", "MediaWiki\\Extension\\Notifications\\Formatters\\EchoPresentationModelSection": "includes/Formatters/EchoPresentationModelSection.php", "EchoSeenTime": "includes/SeenTime.php", "EchoServices": "includes/EchoServices.php", "EchoSummaryParser": "includes/EchoSummaryParser.php", "EchoSuppressionRowUpdateGenerator": "includes/schemaUpdate.php", "EchoUnreadWikis": "includes/UnreadWikis.php", "EchoUserLocator": "includes/UserLocator.php", "GenerateSampleNotifications": "maintenance/generateSampleNotifications.php", "MWEchoDbFactory": "includes/EchoDbFactory.php", "MWEchoEmailBatch": "includes/EmailBatch.php", "MWEchoEventLogging": "includes/EventLogging.php", "MWEchoNotifUser": "includes/NotifUser.php", "ProcessEchoEmailBatch": "maintenance/processEchoEmailBatch.php", "RecomputeNotifCounts": "maintenance/recomputeNotifCounts.php", "RemoveInvalidNotification": "maintenance/removeInvalidNotification.php", "RemoveOrphanedEvents": "maintenance/removeOrphanedEvents.php", "ResourceLoaderEchoImageModule": "includes/ResourceLoaderEchoImageModule.php", "UpdateEchoSchemaForSuppression": "maintenance/updateEchoSchemaForSuppression.php", "EchoUpdatePerUserBlacklist": "maintenance/updatePerUserBlacklist.php", "EchoPush\\PushNotifier": "includes/Push/PushNotifier.php", "MediaWiki\\Extension\\Notifications\\Push\\PushNotifier": "includes/Push/PushNotifier.php" }, "AutoloadNamespaces": { "MediaWiki\\Extension\\Notifications\\": "includes/" }, "TestAutoloadClasses": { "EchoAbstractMapperStub": "tests/phpunit/Mapper/EchoAbstractMapperStub.php", "EchoExecuteFirstArgumentStub": "tests/phpunit/Mapper/EchoExecuteFirstArgumentStub.php" }, "ServiceWiringFiles": [ "ServiceWiring.php" ], "ConfigRegistry": { "Echo": "GlobalVarConfig::newInstance" } }