Commit graph

94 commits

Author SHA1 Message Date
jdlrobson d7cc28fbcb Properly scoped style improvements to Echo OOUI dialog in desktop Minerva
This reverts commit ca5e5c85af and then
scopes the rules.

Bug: T241090
Bug: T242493
Change-Id: I0e6a4f6d235f34dc8f05a5e7ea5272d6465b80aa
2020-02-11 07:41:23 +08:00
Esanders ca5e5c85af Revert "Style improvements to Echo OOUI dialog in desktop Minerva"
This reverts commit 5b628b5109.

Bug: T241090
Bug: T242493
Change-Id: Id4a7ac9748ed7f934e9c47f4ade0c2f87da4488d
2020-02-10 20:24:17 +00:00
Daimona Eaytoy c256faf968 Remove hack for PHPUnit's Stub interface
This partly reverts commit c19c88567b.

Bug: T192167
Depends-On: Ia12658554c94497a204b7f65f1a6f7b1fa0310ac
Change-Id: I4ef736d87d05f74920ce88f57b0ad824986adb26
2020-01-23 12:34:48 +00:00
Roan Kattouw e771f57af8 Hide "system" categories in notification preferences
Make sure that the system-noemail and system-emailonly categories are
hidden, the way the system category is, by setting their no-dismiss
setting to "all". This should be unnecessary, because e.g.
system-noemail doesn't allow email, so just setting no-dismiss to "web"
should suffice, but
EchoAttributeManager::isCategoryDisplayedInPreferences() isn't smart
enough to see that. Doing it this way is also more future-proof for if
we ever add more notification methods in addition to web and email.

Change-Id: I00641d43a4eb1d3e2d3ea285682cf900733b1855
2020-01-06 10:59:51 -08:00
Umherirrender c25962ce47 Move test-only classes to new TestAutoloadClasses declaration
Bug: T196090
Change-Id: I1348c07c688cce6e9cd65669c824561bac1a1eff
2019-12-31 00:23:54 +01:00
jdlrobson 5b628b5109 Style improvements to Echo OOUI dialog in desktop Minerva
* Make sure the badge for desktop when initialised points to the
right thing
* Make sure the dialog takes up the full screen and the Clippable bug
does not interfere with the display of the pane

Bug: T241090
Change-Id: I6c5588ee689633cef413ef27449aeeea341d7a97
2019-12-20 20:38:36 +00:00
jenkins-bot 8b6efb51bb Merge "Add preference to not receive digests about read notifications" 2019-12-12 11:14:30 +00:00
Ben Houghton 9ae45afdfd Add preference to not receive digests about read notifications
Allows users to opt out of receiving daily or weekly digests containing notifications
they have already marked as read on the web.

Bug: T169386
Change-Id: Ib47248678f88095492fb6896530be5a9f5bb43ca
2019-12-12 06:30:13 +00:00
Pppery db78c1552e Add support for watchlist events
Bug: T203941
Change-Id: I9bcd13cb0a547393696dde0e977b7761cc1fea68
2019-12-11 16:39:02 -05:00
Daimona Eaytoy c19c88567b Hack: back-compat for PHPUnit's Stub interface
Until PHPUnit7, the Stub interface came from phpunit-mock-object, and it
was at PHPUnit\Framework\MockObject\Stub. Then, phpunit-mock-object was
merged into PHPUnit, and:
 - The interface above was moved to PHPUnit\Framework\MockObject\Stub\Stub
 - The FQSEN above started pointing at a completely different interface
 
This is a temporary hack to allow upgrading to PHPUnit 8, and MUST be
removed as soon as the upgrade is complete.

The :string typehint is also necessary in PHPUnit8, and it will work
with PHPUnit 6 as well.

Bug: T192167
Change-Id: I07cebd07088bced5c5ddc62936f0098dfa39e151
2019-11-18 16:58:18 +00:00
Martin Urbanec 2f26e7cc59 Create system-emailonly category
I need this category to be able to complete T231395,
it doesn't make sense to web-notify user they were renamed
since renaming kills user session, so when they log in,
they already know.

Bug: T231397
Change-Id: Ib49a42969a2134bb89c17f62a7aea7db820374fa
2019-10-30 17:51:39 +00:00
Roan Kattouw 79ee7582f2 Make EchoSeenTime cache type configurable
Defaults to MainStash, but can be configured to use a different cache
backend by setting $wgEchoSeenTimeCacheType to a string that keys into
$wgObjectCaches.

Bug: T222851
Change-Id: Ifb935cc8be4618f7794ee79a234fc66d5cc5728a
2019-10-18 11:32:03 +00:00
jdlrobson d3c0494a17 Dormant mobile notifications overlay lives in Echo
This code will be enabled when Iba1d7863171268066bf7597182c57a0a2041497f
relinquishes the responsibility for rendering the Echo notification badge
and wiring up of the related JS.

It makes 3 assumptions:
1) Minerva will expose a VERSION property on the skins.minerva.scripts module
to tell Echo it can begin control of the functionality
2) A new hook `SkinMinervaReplaceNotificationsBadge` will run on the server side
allowing Echo extension to render the Notifications badge in Minerva.
3) A new client side hook (echo.mobile) will fire whenever the Echo dialog is opened or
closed.

All code relating to Echo inside MobileFrontend and Minerva is
moved here.
CSS for the modules is kept in Minerva as skinStyles

This code remains dormant until Iba1d7863171268066bf7597182c57a0a2041497f lands.
It pre-registers a "to-be-created" hook SkinMinervaReplaceNotificationsBadge that
substitutes the Minerva badge.

It also watches the export value of skins.minerva.scripts for a VERSION value - when
this appears it will take the signal that it should manage the frontend code.

In the new system the mobile specific code is limited to the mobile version of
Minerva. The desktop version of Echo loads on Minerva desktop - presenting an
opportunity in future to consolidate both implementations to use the same component.
The mobile version of Vector and Timeless for example will load the mobile overlay
(with existing styling issues that we don't need to worry about right now given
we don't officially support skins other than Minerva as mobile)

Testers:
* Check require( 'ext.echo.mobile' )(); inside initMobile
inside ext.echo.init does not fire until
Iba1d7863171268066bf7597182c57a0a2041497f is checked out.

Depends-On:  I1a66939d2b596094b419de40b370e79f09c85581
Bug: T221007
Change-Id: I09c27a084100b223662f84de6cbe01bebe1fe774
2019-10-09 12:36:11 -07:00
Roan Kattouw 7dacde99d1 Remove unused dependency on ext.echo.styles.notifications
This module only contains styles specific to Special:Notifications, so
ext.echo.ui shouldn't depend on it.

Change-Id: I14fc0076ab634d3bc5082402a9e069d76cf16d07
2019-08-07 16:48:55 +02:00
jenkins-bot 495a6c8acd Merge "Remove ext.echo.base" 2019-08-01 00:24:25 +00:00
Roan Kattouw 5c3e30b78a Remove ext.echo.base
It became unused and was deprecated in 1ac72cc01a.
That was almost 4 years ago, back when these definitions were
in PHP instead of JSON.

Change-Id: Icbd5ee8df1fc339ffb2df9f05c35a9dcd545a3d1
2019-07-31 22:53:23 +00:00
shivanshbindal9 6be1eee1db Display notification text for incoming notification
As now polling is used to update the notification count on header icons.
If there are any new notifications then a snippet containing the header
part of the notification will appear using mw.notify().

Bug: T226130
Change-Id: Id38c8ebedebd4c68b9cef0635043d6f9304784dd
2019-07-31 17:54:20 +05:30
Roan Kattouw a3bfd725ea Bundle logger-related config vars with ext.echo.logger module
There's no real reason for these to be in MakeGlobalVariablesScript
because they don't really depend on the request context: they were being
omitted if the user was not logged in, but we can just check the user's
logged-in status in JS instead.

Bug: T221151
Change-Id: I2df6d7e061545d342bc3068dccd5ce2f6e85fe78
2019-07-23 21:48:42 +00:00
Roan Kattouw d378e4e3b9 Use packageFiles instead of startup module for config vars
Remove wgEchoMaxNotificationCount and wgEchoPollForUpdates from the
startup module and put them in the ext.echo.init module.

Change-Id: I03f9a3953aa97ead1a29c13a992a02404a6d0b68
2019-07-18 15:29:27 -07:00
Dayllan Maza b3df45dc34 Add option to mute/unmute notifications on Special:Mute
The hook (SpecialMuteModifyFormFields) is used to append
the option to mute/unmute echo notifications from a specified user.

Special:Mute handles posting and saving the fields, the only
requirement is that the field name is the same as the property
that wants to be modified, in this case 'echo-notifications-blacklist'

Bug: T220163
Depends-On: I2b3eee0802cb086091f35ecce13ae77a8e7d518d
Change-Id: I77b3ccfdce9b501eb8ecd58c0d7bbecb78029a7e
2019-07-18 15:47:24 +00:00
jenkins-bot eca3df8519 Merge "Add mediawiki.jqueryMsg as a dependency to ext.echo.init" 2019-07-11 22:11:40 +00:00
shivanshbindal9 d6e740ac86 Add mediawiki.jqueryMsg as a dependency to ext.echo.init
On certain special pages, either notification count in the title is not displayed or is displayed in an improper format.
This was because mediawiki.jqueryMsg is not loaded. This patch adds mediawiki.jqueryMsg as a dependency to ext.echo.init module

Bug: T225259
Change-Id: I6b76742b326d66ca08b4bf5c53ab95c4919249e7
2019-07-11 12:03:36 +00:00
Amir Sarabadani 67246b9873 Stop autoloading test classes
There's no need to laod test classes, phpunit finds them
and it just makes $wgAutoloadClasses in production bigger with no value.

Also it makes moving tests around harder

Change-Id: I59ed7bb55cf6d57bdaf614476cf6db7640b1143b
2019-07-10 17:38:35 +02:00
jenkins-bot e5cd928e13 Merge "Add visual cue to indicate change in notification count" 2019-07-02 00:19:37 +00:00
shivanshbindal9 1a035e1287 Add visual cue to indicate change in notification count
* Adds notification count(alert+messages) to the title
* The count is updated immediately when notification count changes
* This functionality is feature flagged(wgEchoPollForUpdates)

Bug: T225259
Change-Id: Ic92c50d9885b0e4325b253338023d37adf8d35d0
2019-07-01 14:31:36 -07:00
Isarra 0c0c0e596f MonoBook: Remove outdated skin styles and clean up some
Due to using ooui, and a lot of the styles being a lot more generic
in general these days for wider skin support, most of the skin
styles still included with Echo are no longer necessary or may even
be actively breaking things.

Remove a bunch of that, including some of the stuff for T226594 etc,
as we now have a more elegant solution in the skin itself.

Bug: T226684
Bug: T226594
Depends-On: I0ed21a78feb1b1298c30b969a1c80a4323e74043
Change-Id: Id3193a07f023eb0abc30fa24afe10da042fea876
2019-06-28 03:18:24 +00:00
Isarra 15600e27b0 Modern: Make the text less bloody tiny
Just reuse MonoBook's ui.overlay styles. Both skins are doing the
same thing with this regardless, hence why they have the same
problem without these styles.

Bug: T184295
Change-Id: Ide06d00a55f7f546462af951d97c73a649ebcc0b
2019-06-28 02:46:41 +00:00
Isarra 28dd2e0413 Modern: Remove outdated skin styles
Due to using ooui, and a lot of the styles being a lot more generic
in general these days for wider skin support, most of the skin
styles still included with Echo are no longer necessary or may even
be actively breaking things.

For Modern, basically just remove everything; nothing here seems to
apply anymore. Also frees us up to just fix the badge positioning
in the skin itself, and leave future maintenance up to the skin
maintainers, if anyone cares.

Bug: T226684
Change-Id: Id28bbc01b3b344dfeb39be1380a64c1368924289
2019-06-28 02:40:10 +00:00
jenkins-bot a32d18d73e Merge "Make Notification count update without page reload" 2019-06-18 23:39:41 +00:00
shivanshbindal9 43bff91c68 Make Notification count update without page reload
* MVC is used to change the count of notifications on header icons.
* The Widgets are loaded after 60secs or icon click, whichever occurs first.

Bug: T219222
Change-Id: I2d034a76d5c3abe55894dd1dd10e28713344c5bb
2019-06-18 04:49:59 +05:30
jenkins-bot 21354c66a2 Merge "Remove badgeicon module, use OOUI icon instead." 2019-06-05 19:08:33 +00:00
shivanshbindal9 c86a1a5cf3 Remove badgeicon module, use OOUI icon instead.
Now that OOUI's "alerts" icon pack includes all the icons we need, we can use it and get rid of the badgeicons module.

Bug: T139779
Change-Id: I8218530ed2cdd2d81c1fc24509f36ea2b6742bd9
2019-06-05 12:29:17 +05:30
Roan Kattouw c8f757a278 Split system category into system and system-noemail
This will allow us to remove notify-type-availability for individual
types, and manage all of it on a per-category basis instead.

Bug: T221264
Change-Id: I78ed6782be8b819cf25cceabb4ea794b15eacafd
2019-04-24 14:08:59 -04:00
Stephane Bisson d5c5480df2 Make thank-you-edit notifications configurable
Add a preference in the notifications section to allow
disabling the 'thank-you-edit' notifications completely.

This is useful to editors active on several wikis. They can
disable it in global preferences and stop seeing them globally.

Bug: T169924
Change-Id: If6716bb98ed2309813536a5834e03833fb537dcf
2019-04-24 08:55:46 -04:00
jenkins-bot 0174b81a3a Merge "Remove all traces of cross-wiki beta feature" 2019-04-19 23:25:04 +00:00
Stephane Bisson 2fb8db3bca Remove all traces of cross-wiki beta feature
Bug: T221260
Change-Id: I447b5220220fdad68a55629ba5a532db720ca8da
2019-04-17 22:18:13 -07:00
Stephane Bisson 1017054b88 Cleanup transition flags
$wgEchoSectionTransition was introduced when we moved some notification
types between sections (alert, message).

$wgEchoBundleTransition was introduced when we made bundles dynamic
and expandable.

Both flags have been OFF for years and are not needed anymore.
This patch removes all traces of them.

Bug: T140710
Change-Id: I16a5d54b09e71997f80208db6f4fbdb040d03ab1
2019-04-17 22:07:14 -07:00
jenkins-bot 1454df1ebe Merge "Add maintenance script to recompute notification counts" 2019-04-17 00:24:41 +00:00
Roan Kattouw 754ec9ef11 Add maintenance script to recompute notification counts
Generally applicable, but intended for users affected by the
login-success phantom notifications bug.

Bug: T220762
Change-Id: Ica428bfc19e0555564ca04d80ac5009197401aaf
2019-04-12 17:48:01 -07:00
Roan Kattouw c80305c52f Disable notification emails for article-linked
This was attempted in I6f87797701, but didn't work. The reason is that
notify-type-availability can't be set on a per-notiifcation basis for
visible categories, only for hidden categories. For visible categories,
it has to be set at the category level.

Bug: T219444
Change-Id: I6b6dd1ae6be549de0f6026841966f87527dd2365
2019-04-12 16:58:18 -07:00
Roan Kattouw f0476b7009 Remove unused messages
Also clean up references to nonexistent messages in qqq.

Change-Id: I3811da1b1420318e5bf747f26244a4bb00d68cc5
2019-04-10 03:37:18 +00:00
Stephane Bisson 754338fe48 Convert PresentationModelSection from trait to class
This trait was using private fields from its host classes
($this->event, $this->language). It created a weird coupling
situation where the host class uses the trait and the trait
uses the host class. Effectively a circular dependency.

Also, phan is complaining about it in
I65ae6adc10941c05a2646e551b1baa829e4e8654

Change-Id: Ib2796b7ca62ecd7ece19583d7ca83e4252a5d878
2019-04-05 16:57:48 -04:00
Ed Sanders 0aa30161ab Update help icon from OOUI, update name, provide RTL variant
Change-Id: I0b2751f163c07d2c0aff4d71fcb06e25cd9fe03b
2019-04-02 23:49:05 -07:00
jenkins-bot 585cb37650 Merge "Hard-disable notification emails for article-linked" 2019-03-28 19:40:31 +00:00
James D. Forrester ab1e818ba3 Hard-disable notification emails for article-linked
Bug: T219444
Change-Id: I6f87797701ce23561000d4a064df88298379b5e2
2019-03-27 13:12:25 -07:00
jenkins-bot 0f4db5a054 Merge "ext.echo.dm: Remove unreachable lazy-creation code" 2019-03-23 20:51:33 +00:00
Timo Tijhof 99ce7178c0 ext.echo.dm: Remove unreachable lazy-creation code
This boilerplate at the beginning of most files is an anti-pattern from
very early 2011 frontend experiments (I take full blame), where I didn't
understand (or had confidence in) the load order of scripts. I won't
remove it all at once, as that requires careful review of dependencies.

But this one file seemed like low-hanging fruit. The "ext.echo.dm"
contained a file that lazy-created `mw.echo` as empty as empty object,
and `mw.echo.config` as `{ maxPrioritizedActions: 2 }`.

The "ext.echo.init" module loaded on every page already does the same.
Remove this file and depend on that module instead. The same modules
will be downloaded, in the same way, and in the same order as before.

What changes is that the order of execution is now defined instead of
implied, thus making the dm-version of it redundant.

In practice, while fragile, the load order was already consistently
running init before dm. I found this through code coverage analysis in
Chrome DevTools, <https://phabricator.wikimedia.org/F28421786>.

Change-Id: Iaed7cf0e47479ce8ce76aee1bfe479d82b4f61ed
2019-03-19 20:16:37 +00:00
Timo Tijhof 3f83f2eb36 Merge 'ext.echo.controller' module into 'ext.echo.ui'
This is not used anywhere else and doesn't appear to be something
that is intended to be usable or loadable as its own entry point.

The name 'ext.echo.ui' could be improved to better reflect the
bundle purpose it represents, but thats a breaking change for a
separate commit at the discretion of the maintainers' preferences.

Change-Id: If9cf287917a51de96a36d534b7c0cfadf1accf9a
2019-03-19 19:55:04 +00:00
Roan Kattouw ae75a8118a Remove notification_bundle_base
No longer used in the new bundling system.
Also removes indexes that contain bundle_base.

Bug: T143763
Bug: T131415
Change-Id: Ibf94cdc471a11cb14995fee6a55af0d227b50aa5
2019-03-04 13:22:17 -08:00
Umherirrender 833731c572 Remove non-functional maintenance script testDiscussionParser.php
It is calling an undeclared function, I have not found it in older
version of that class.

Change-Id: Ia9a432e1b90c76e8f1295c0afe4d12817bc232ae
2019-03-03 16:46:17 +01:00