There are a variety of generic strategies you could define to choose
which users should be notified about an event, such as 'users watching
the title' or 'talk page owner' (User_talk only).
This adds a new way to generically implement these in Echo and expose them
to other extensions rather than having each extension implement these
generic strategies themselves.
This patch only converts one notification, edit-user-talk. The remaining
notifications will be converted in future patches. The first user of this
will be Flow for notifying all users watching a particular talk page in
I4e46a9c003fbdde274b20ac7aef8455eab4a5222
The users watching title implementation provided here is minimalist, a larger
refactor to accomidate pages with thousands of watchers is being handled
in I3d3fa9328f348bb48682d3658622952ce82d3925
Change-Id: I19bb6a794d22565f3bb5421de92426d390197796
* Get rid of EchoBackend by separating responsibilities into smaller objects
* Move main fetchNotification logic from API to a more appropriate place
* Add more unit testing coverage
Change-Id: I42f4d7566543332588431c21c220c0d64d026b70
Otherwise, it explodes when trying to run tests via PHPUnit:
Error: 1146 Table 'osmiumwiki.parsertest_echo_notification' doesn't exist (localhost)
Change-Id: I8a3e0171ab022e8e2973ea8bed9aacba73a35f34
This will allow users to disable them if they wish to.
By default, both web and email are enabled for all users, which
is the current default.
This also fixes a bug in the EventLogging portion where user rights
changes would be logged with a user id of -1, instead of the
actual user.
Bug: 55337
Change-Id: I026b9392b085e295fbcd375095c9aed682fc29a2
If a user is watching his/her own talk, an edit to the talk page
may trigger an echo notification and watchlist notification. We
only want to send one of them
Depends on core patch: https://gerrit.wikimedia.org/r/#/c/114682/
Bug: 53569
Change-Id: Ib1bb71e047789d3a857f028aaa45384022bb35c7
Fallback to 'emailsender' message if not set
Change-Id: Id136692b80b7582a515501672259394e8db74112
Follows-Up: Id20e4ec1cdae94fadb278146cd72d5a9b247dccf
* 9e4e58bce8d10f65cf298b39f48e86c41b6a82b8 separated mediawiki.ui.button
into a separate module (for modularity, and potentially to allow
wiki content to use mw.ui buttons by default in the future).
* Currently, the button code is in both mediawiki.ui and
mediawiki.ui.button for backwards compatibility. However, it will be
removed from mediawiki.ui when existing uses transition over.
* Echo does not use any mw.ui features other than buttons.
Change-Id: I429d8f2424d6218439eed01fe5ea6497e7697ba2
If a user is mentioned in an area that does not have a section
title (for example, the lead section of a talk page), use the new
'notification-mention-nosection' message, to avoid an awkward and
incorrect "[[Page#|]]".
Bug: 52507
Change-Id: I40628b76c460c79008053222c9780bb23549731d
Cache groups should only be used when it is worth to have the
module(s) in a separate request. Echo is relatively small and
stable in terms of cache combination, not worth it to force
its modules to be in a separate http request as all other modules.
Change-Id: I198b5664d662c93c593d048efcfaf4aac765a6b9
Core styles for Monobook include high-specificity background: transparent;
rule for #p-personal li a, we need to match it to set our background.
Also change hover behavior: switch to a deeper orange instead of
default white, similarly to how the badge already behaves.
Partially reverts I682182fe.
Bug: 56214
Change-Id: I9f343264c395ecf09c1e34e03d208ec2119fb622
This patch updates Echo to revision 6081131 of Schema:Echo, adding a 'rev_id'
field and the code to populate it. The patch also increments the logging
version identifier to 1.5.
Bug: 46045
Change-Id: I4ac1a25c306b0e0983a3490a29fe3dc4aa4bfc6f
* In some languages like persian, the number 0 is represented as '.', we can't compare
'.' with either 0 or '0' to detect the no-notification status of the badge
* The markread API doesn't respect uselang param, it would return 0 instead of . in a url with uselang=fa
Note: we need to provide raw and formatted count in the API since client side javascript
doesn't provide fancy function like $wgLang->formatNum()
bug: 54575
Change-Id: I0a49828253ec346ed27c5b9a976f8bdff4e1fa90
mediawiki.api and mediawiki.Uri are desktop-only modules that are
not actually needed by ext.echo.base. Moving the dependency
declarations to more specific modules so that ext.echo.base is
usable by mobile notifications. ResourceLoader is smart enough to
not double-load them, so there should be no performance difference.
Also removing unused 'cancel' message.
Change-Id: I9fa8c4501e038ded9125c3b43e5207c355af2db9
Removing unused functions and declaring correct dependencies.
Targetting to desktop and mobile so it can be used by both.
Also removing dismiss-related code from the formatter.
Change-Id: Icccce64cfb3c564ab468a93ccdba9c5a61687fd5
The current message key is notification-learn-more, but this message key
is not defined in the language file, it should be echo-learn-more
Change-Id: I4e2f19e3663727ff8c4083fd295c80cb350297c4
To test the HTML email:
1. install the latest version of php-mail and php-mail-mime package, they are required
by the core sendmail function to send HTML email
2. set $wgAllowHTMLEmail = true before loading Echo in LocalSetting.php
Change-Id: Ia4b98b14e135742b84f1b0e04589b0efdd24e954
Echo preference change is already captured in the general
preference change eventlogging, this is just a duplicate
Change-Id: I49cd2ad5776a670e2cd28414e156f5201087ded0
Provides the first step of adding and populating a new database field
for Echo oversight deployment. The new field is populated via a
maintenance script and Event::loadFromRow will accept both new and old
results. Everything will still run when the 2 now unused fields are
later dropped from the db.
Bug: 48059
Change-Id: I24d4b61a061f94ed9aaaa6087f33b2ab37f773cd
This provides some rudimentary styling support to make Echo usable
with the Modern skin.
It also fixes the Notifications special page so it is styled
correctly in Modern, CologneBlue, or with Javascript turned off.
Also some more tweaks for Monobook skin.
Retiring the 'feedback' link from the special page, per PM.
Bug: 47932
Change-Id: I633a93a78f5a78d0642a3a059fa6f7208f99cec4
Detects changes to different parts of the document as independent from each
other. Refactored parser passes all tests the previous parser passed plus
a number of new tests which fail with the original parser.
Change-Id: I65fdc6d9f922cbe9ff684332945def3776c70d30
With this change we will no longer be relying on JS for the badge
functionality. This will prevent the flash of unstyled content,
and allow wikis to locally override the styling (since the unread
class is now applied immediately).
I also went ahead and made the badge styling more closely match the
talk page message alert styling per Vibha.
Also removed the old full link optional behavior since we weren't
using it, and it would have been a pain to maintain.
Bug: 48165
Bug: 48001
Change-Id: Ie85d66afd5181d487d0bb2776ae14b121ea50d88
Implements whitelists and blacklists for notification agents to assist
in filtering out unwanted notifications from bots.
Bug: 47946
Change-Id: I0d7e071067c6974fb90cf6c0ba1bd159f46bd5df
Adjusted the edit-user-talk event creation to detect and record which section
of the talk page was edited. Flyout, special page, and email messages have
been adjusted to use this section title as a URL fragment when available.
Bug: 46937
Change-Id: I161e2ffda2f2540f64de90cc621fb3b69479d0db
While writing tests i noticed that this is dead code that will never be called. It
was originally used but several commits have piled up to cause its deprecation.
Upon review of the git history it seems the general idea behind content-* turned
into the 'payload' key. the commentText formatting was moved to payload for future
use, the i18n keys have been pruned.
Change-Id: I5ef360759db53d54a834afc8b71e9c8807de0284
Instead of introducing a brand new option for this notification, we just
use the existing enotifusertalkpages
Change-Id: Ia63c9b1f4f52007004fa2860115b675aae4872fa
This patch makes Echo talk page notification mimic the existing Orange Bar and Email talk page notification
for minor edit.
For the Orange Bar, minor edit notification is sent if the editor does not have nominornewtalk
permission.
There are additional rules for the email, minor edit notification is sent if global $wgEnotifMinorEdit
is true and notification recipient has enotifminoredits option on.
Change-Id: Ib3835c4dd57a3686b227c44710a14ab06cded166
Previously Echo prevented all user_newtalk data from being generated
for logged in users. This broke the hasmsg API and also prevented
anyone from being able to implement client-side growlers or alerts
based on this data. The new approach is more conservative - it allows
updates to the user_newtalk table, but prevents the alert itself
(orange bar of doom) from being displayed to logged in users. This
will provide more flexibility for future development regarding talk
page alerts (both for extensions and gadgets).
Note: This change is dependant on the new core change I2105bdd2.
Bug: 47962
Change-Id: I3f35a56b3f1795c2b21a6e4af8fc93b5e61b7d3c
Also registering UserLoadOptions hook (oops!)
Finally, getting rid of old override system that is now obsolete.
Change-Id: Ie264981eb20f1e3d3c83721bc376d79e2f5a1430
Catches people who have opted out of old style talk page notifications and opts them out
of equivalent new ones.
Needs $wgRecentEchoInstall = true in LocalSettings.php so it can be turned off when no
longer needed.
The migration has 1 million rows to write on enwiki so will take some time
Change-Id: Ie6201df378bf8df813b3d461ea9a8521d99b1bb9
* Icon can be defined using a path or a URL
* Extensions don't need custom CSS, but add icon through BeforeCreateEchoEvent
* Sites set their notification icon in LocalSettings.php or equivalent
Bug: 46585
Change-Id: Ifc02b653d07de19229dfb2604305e32f3bd595fe
This was being used as the icon for the welcome and user rights notifications,
but is completely inappropriate for any site other than Wikipedia.
WMF will probably want something like this in their config:
if ( $site === 'wikipedia' ) {
$wgEchoNotifications['welcome']['icon'] = 'w';
$wgEchoNotifications['user-rights']['icon'] = 'w';
}
Bug: 47650
Change-Id: Idd41567ffcb468dd3d040d2a5a61d1e3f9f7f5fa
Default settings for existing users are intended to be low volume and not annoying
New users need more encouragement and incentive to return
Change-Id: Id37ad8289a5c968ae8be6a8c424a19d6cbc7e071
Button is only shown if there are more unread notifications than
fit in the overlay.
To avoid performance issues, this version only works for cases where
the number of unread notifications is less than the maximum count
(99 currently). Otherwise the button to mark all as read isn't
displayed (it's also limited on the server-side for good measure).
Bug: 47092
Change-Id: Ifcb0a436e2b31062741c441cca239d35ddefa0e1
If this pref is turned off, we revert to the old orange bar talk
page notifications. Depends on core change Ifc8fbaf8.
Bug: 46550
Change-Id: If21f3aac51e484c5e077c7f4b5a2218e8b71ed2a