Commit graph

335 commits

Author SHA1 Message Date
WMDE-Fisch 272cb9a960 Bundle mention success and failure notifications
Adds common bundling including messages and icons.
Bundling relates to revision now.
Changed order how notifications are generated. Now errors will
show first, since they are generated last.

Bug: T140224
Change-Id: I1069aeb5523db8710da4e8e21065bf447d031e3c
2016-08-13 08:08:12 +00:00
jenkins-bot 8d21fb0c72 Merge "Prevent duplicate thank-you-edit notifications" 2016-08-05 22:09:23 +00:00
Stephane Bisson d18750b6fb Prevent duplicate thank-you-edit notifications
Avoid duplicate by looking if the notification
already exist.

Change-Id: Ie519d13cd0ab03919f70da90d58c82a214c74b49
Depends-On: I79194c41d6b2fd84ad658909a2941d9d3d28d94e
Bug: T128249
2016-08-03 14:49:23 -04:00
Moriel Schottlender 75f6c11524 Add a footer notice inviting users to visit the Special:Notifications page
Bug: T141414
Change-Id: I6d9f9db62ecb85e70f72a9eb5a09e8ea1c8eebc2
2016-08-02 13:59:04 -07:00
WMDE-Fisch 78632108fd Echo notifications for successful mentions
Adds new notification type and icon for successful mentions.
Complements existing test to consider successful mentions.

Bug: T139623
Change-Id: I7a77b40e8b14c95cadb9023065ee916247feacf9
2016-08-01 13:40:55 +02:00
jenkins-bot 5f04fc334c Merge "Redo the notification badges" 2016-07-29 22:53:34 +00:00
Moriel Schottlender 9ab351352f Redo the notification badges
Bug: T115845
Bug: T140900
Depends-On: Ic666540d70de52f
Change-Id: I34e2736490319989a3a251a43fbe8080ab960b00
2016-07-27 11:51:05 -07:00
jenkins-bot 0815c41560 Merge "Echo notifications for mention failures" 2016-07-27 11:27:55 +00:00
WMDE-Fisch 868190bbf6 Echo notifications for mention failures
- Adds global "$wgEchoMentionStatusNotifications"
   to activate mention status notifications.
   (must be set before extension is loaded)
 - Adds notification types and icon for some basic mention
   failures.
 - Adds failure and stats for anonymous IP.
 - Adds check for links to user subpages.
 - Adds config var for max mention notifications allowed.
 - Bundles notifications.
 - Refactors test for the event generation and adds tests
   for unknown users, user links with subpages and failures
   for too many mentions.

Bug: T136326
Change-Id: I388bdc3714feb9a2865a5ad10dbeabb0a6a09a4f
2016-07-27 13:00:25 +02:00
Matthew Flaschen c0a464e425 BREAKING CHANGE: More ISO 8601 for seen time
* Add ISO 8601 date format to notification output

  This is actually supposed to be the only output date format used,
  per https://www.mediawiki.org/wiki/API:Data_formats#Timestamps , but
  I'm not doing anything to deprecate the others right now.

* Change wgEchoSeenTime to use ISO 8601.  mwgrep and extension grep do
  not show any usages.  However, since it is a breaking change, to
  minimize disruption, I'm also using this opportunity to change
  'message' to 'notice'.

* Remove wgEchoInitialNotifCount.  I was going to also change 'message'
  to 'notice' here too, but then I saw it was totally unused.
  (It was read in Echo to populate a JS variable, but then it was
  unused.)

* Make sure the Special:Notifications page aggregation by days is
  done by local days, even though the timestamp per item is still
  UTC. This is to make sure the days are displayed correctly in
  the local timezone.

* Change all reverse sorting callbacks to handle comparisons of
  ISO 8601.

Bug: T141413
Change-Id: I20271345c7d350dc3e7f467288e5cdc98e6250cc
2016-07-27 02:42:08 +00:00
Moriel Schottlender 35a5384900 Change 'pt-notification-message' to 'pt-notification-notice'
And change all CSS and JS dependent calls/tags based on the new
tooltip message and ID of the personal tool <li> item.

Change-Id: I136fabe5710f90da10eb8d4afe92acdb77571eec
2016-07-21 11:19:17 -07:00
Stephane Bisson 24caf50ff6 Dynamic bundles
To allow individual notifications to be
marked as read/unread or moderated,
bundles are created by grouping associated
notifications when they are fetched for display
instead of when they are created.

From a product perspective, this change doesn't
introduce moderation or expandable bundles but
it counts each individual notifications.
For instance, the bundled notification
"3 new topics on PageA" now counts as 3
notifications.

Bug: T93673
Bug: T120153
Change-Id: Iacd098573efd92bb1e3fcd7da4cd40cea9522f15
2016-06-27 09:49:13 -04:00
Roan Kattouw 617cd3d29e Add index on notification_event
So we can easily query the notification rows that belong to
a given event row. This is needed for the removeOrphanedEvents
maintenance script to run efficiently.

Change-Id: I99fc31a62b37259d7000577583c8e8a599e400f9
2016-06-14 19:57:06 +00:00
Stephane Bisson b06b2294c9 Allow the primary link to set all bundled notifications as read
Bug: T136368
Change-Id: If07369cb168d1a085f297293e713d65e49997264
2016-06-14 08:49:23 -04:00
jenkins-bot db322eec76 Merge "Don't set title to Main Page for user-rights notifications" 2016-06-09 17:15:51 +00:00
Roan Kattouw cc3c38458b Don't set title to Main Page for user-rights notifications
I mean, WTF? It might make sense to set it to the user's
user page I suppose.

Change-Id: I584c1150e4c98bb814e30bf6a6d3eb3e49ef6408
2016-06-09 17:15:03 +02:00
Roan Kattouw 4c6cadfb27 Add script to remove orphaned event rows
Bug: T136425
Change-Id: Id42a893be81176f37d9d5e3fd7e850d3a6d42e10
2016-06-07 23:34:53 +02:00
jenkins-bot 2d3a031b47 Merge "Add diff link to page-linked notification" 2016-05-26 23:33:58 +00:00
Brad Jorsch 14046ada09 Update for AuthManager
* Replace AddNewAccount hook with LocalUserCreated
* When AuthManager is enabled, use it instead of AuthPlugin when
  checking if the email address can be changed.

Bug: T110285
Change-Id: I7e28c574ae6e3b5443e39b38e12a9bded31c283b
2016-05-26 12:10:45 -07:00
Roan Kattouw 71eacf3fad Add diff link to page-linked notification
Will only show for new instances, because the information
will be unavailable for old ones.

Bug: T135959
Depends-On: I3d894acaf3d85b790e5034c7d9f76bf94672f445
Change-Id: I04620678dd0ebffb3b1a92a9a0587cb7557d77f4
2016-05-23 12:23:30 -07:00
jenkins-bot 62d401de78 Merge "Fix indenting in onResourceLoaderGetConfigVars hook method" 2016-05-20 15:47:46 +00:00
addshore 99272a779c Specify public access in Hooks methods
Change-Id: I26a513a14e0c152e8801c99e27f24261d03caed6
2016-05-20 11:10:51 +01:00
addshore 5756b556da Fix indenting in onResourceLoaderGetConfigVars hook method
Change-Id: I2d9e982ee9c60aee0b75e76a5a56b9b7b2bbec65
2016-05-20 11:09:51 +01:00
jenkins-bot 5a2faf26da Merge "HTML email formatter using presentation model" 2016-05-14 00:29:30 +00:00
Roan Kattouw 0e2f1a9c18 Add $wgEchoCrossWikiNotifications flag to disable cross-wiki notifications
This is needed because global tables and cache keys will attempt to be used
even for users who don't have the preference enabled.

Bug: T135266
Change-Id: I6208a12d46c8cd0275a232663cd50ac2bd2fed1c
2016-05-13 13:52:54 -07:00
Mark A. Hershberger 50611ad682 Respect editmyprivateinfo for email
Had set this so that users on a corporate wiki couldn't modify their
email, but saw that Echo wasn't respecting it.

Bug: T135152
Change-Id: I1c7840e4f0648ab20ccc89ae281eb86cddad516c
2016-05-12 11:21:10 -07:00
Stephane Bisson 6f6e10084c HTML email formatter using presentation model
Bug: T121067
Change-Id: I77f466f0b507ffa49a9714ddba95bea8db1d8438
2016-05-12 09:29:24 -04:00
Roan Kattouw b5bec3ad24 Use new OutputPage parameter in OutputPageCheckLastModified hook
Depends-On: I044a5920b703a2d61a74c2d83d184b77caebb8f3
Change-Id: I6c4290baaf1f2d9e5ec098bc4ea2b23762b4f70f
2016-05-11 17:58:44 +00:00
Roan Kattouw d2d420a3c4 Don't cache pages with outdated global notification counts
When updating notification counts, we already called User::invalidateCache(),
which bumps the local user's touched timestamp, which is taken into
account by OutputPage when computing the last-modified timestamp of the response.

However, this only works for one wiki, while the changed global count
needs to be displayed on every wiki. To accomplish this, track the
timestamp of the last update in NotifUser, and hook it into
OutputPageCheckLastModified.

Change-Id: I22c88a017f18a28179906049ee423c2d7e81c939
2016-05-11 10:53:13 -07:00
jenkins-bot f08b108e2e Merge "Replace mark-as-read-on-click with ?markasread= URL parameter" 2016-05-04 01:09:27 +00:00
Roan Kattouw 7942a2de79 Replace mark-as-read-on-click with ?markasread= URL parameter
Notifications were being marked as read in response to a click event
in JavaScript, but that causes a jarring effect in the UI, and it's
not reliable (the browser could abort the AJAX request).

Instead, add ?markasread=XYZ to the end of every primary link URL,
where XYZ is the event ID.

Bug: T133975
Depends-On: Icb99d5479836fea25a47451b5a758dd71f642f71
Change-Id: I8047d121584b43e6172463a50ad0e0de5f7fa73c
2016-05-03 00:20:03 -07:00
Roan Kattouw 0807c3c5ad NotifUser: Refactor getNotificationCount() and friends, add caching for global counts
Previously, getNotificationCount() only looked at local notifications,
and foreign notifications were added in separately by getMessageCount()
and getAlertCount(). This didn't make any sense and resulted in
counter-intuitive things like I4d49b543.

Instead, add a $global flag to getNotificationCount(). If $global=false,
the local count is returned as before, but if $global=true, the
global count (=local+foreign) is returned. If $global is omitted,
the user's cross-wiki notification preference determines which is returned.

Update getLastUnreadNotificationCount() in the same way, since it had
the same issues.

Also add caching for global counts and timestamps, using a global
memc key.

Bug: T133623
Change-Id: If78bfc710acd91a075771b565cc99f4c302a104d
2016-05-02 16:16:57 -07:00
Roan Kattouw 4f7f1a3a09 Repurpose survey call-out in the footer for beta feature invitation
Removing the info popup because we don't have to show
a privacy notice when linking within the wiki.

This adds a database query to every page view for logged-in
users; If78bfc710, once merged, will fix that.

Bug: T117669
Change-Id: I8451db34ae8e94264e4921ecd6df6e4b32c7623a
2016-04-27 07:23:30 +00:00
Matthew Flaschen 5ecc6aa7c8 BREAKING CHANGE: Change $wgEchoDefaultNotificationTypes to be logical
Merge and deploy at the *same time* as:
* BounceHandler - I3c669945080d8e1f67880bd8a31af7f88a70904d
* mediawiki-config - I13817c139967ed9e230cfb0c87c5de66da793c96

Despite claiming to be about categories, $wgEchoDefaultNotificationTypes
was actually configuring both categories and types (which go inside
categories).

For example, 'thank-you-edit' is a type, but 'emailuser' is both
a category and a type (when used as a category, this has special
effects at Special:Preferences).

Since types and categories can and sometimes do have the same names,
this leaves no way to properly and clearly configure them.  It also
makes it difficult to document what is going on (as required by
T132127).

Split into three variables:

$wgDefaultNotifyTypeAvailability - Applies unless overriden

$wgNotifyTypeAvailabilityByCategory - By category; this can be and is
displayed at Special:Preferences

$wgNotifyTypeAvailabilityByNotificationType - By type; this cannot
be displayed at Special:Preferences. To avoid confusing the user,
we introduce a restriction (which was previously followed in practice,
AFAICT) that types can only be overridden if the category is not
displayed in preferences.

Otherwise, it can look to the user like a category is on/off, but the
types within might have the opposite state.

Due to this configuration change, this is a breaking change, and needs
coordinated deployments.

This also lays the groundwork for T132127

Also change terminology to consistently use "notify type" for web/email.

It was mixing between that and output format (which unfortunately
sounds like the API format, e.g. 'model').

Bug: T132820
Bug: T132127
Change-Id: I09f39f5fc5f13f3253af9f7819bca81f1601da93
2016-04-22 19:08:12 -07:00
Kunal Mehta f35251fce6 Never show a negative number in the notifications badge
If we calculate a negative number should be shown, just show 0 instead.

Bug: T130853
Change-Id: I6e061525d034276cbb9e307eff53b77ddb06ef9a
2016-04-11 01:20:08 -07:00
jenkins-bot f082457d27 Merge "Revert "Add GENDER support to tooltip messages"" 2016-04-02 15:07:59 +00:00
Siebrand 543d75c472 Revert "Add GENDER support to tooltip messages"
There was no need to merge this, and I suggest it is reverted. Parameterless use of GENDER is supported
 already.

"{{GENDER:|male|female|other}}" will switch for the
current user.

This reverts commit c8b80f2003.

Change-Id: I15a0bd79abea9d9f0e9b0547c87e848ebf88b5de
2016-04-02 13:41:56 +00:00
jenkins-bot e9de6bbc29 Merge "Add GENDER support to tooltip messages" 2016-04-01 09:58:38 +00:00
Justin Du c8b80f2003 Add GENDER support to tooltip messages
https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Echo-pref-tooltip-mention/es

Change-Id: I10228205785527b273c1fd06af85fcc26df9e583
2016-03-31 22:50:17 -05:00
Moriel Schottlender e50ef3841a Add footer notice widget for invitations for feedback
Add a mw.echo.ui.FooterNoticeWidget that includes a link to
a feedback survey, and three config variables:

* $wgEchoShowFooterNotice: Enable this feature per wiki
  (Defaults to false)
* $wgEchoFooterNoticeURL: The URL for the survey
  (Defaults to '')
* User preference 'echo-dismiss-feedback-alert': determines
  whether the user permanently dismissed the feedback alert.
  (Defaults to false)

Bug: T128937
Change-Id: I918a70beaba7b173e764519fe4fe0f780b61082d
2016-03-18 17:02:31 -07:00
jenkins-bot 8b15325346 Merge "Make plural support for large values (100 or more) explicit in l10n" 2016-03-17 21:53:40 +00:00
jenkins-bot c7cdd8bf20 Merge "Always show a cross-wiki notifications preference, even if the beta feature is disabled" 2016-03-17 10:05:03 +00:00
Matthew Flaschen cac85b635f Make plural support for large values (100 or more) explicit in l10n
This involves:

* Making this value no longer admin-configurable.
* Changing getNotificationCountForOutput to return only a single value
  Since there is no + in the formatted value anymore, we can actually
  use the same value for both.

  This is a B/C break, but hopefully worth it to simplify the method
  call.

  For now, the excess parameter is just marked unused.  It could be
  removed at some point if the translations are updated.

This must be merged at the same time as:
* Flow - Ibfa56b1af9e8c56b4c5f900e0d487bc09688b2a2
* MobileFrontend - Ibf784b279d56773a227ff261b75f2b26125bbb63 (well, MF
  can be merged first)
* translatewiki - I2a4b6938aed49e4101deb6b9351c43656a863490

Also, change 1 to One/one, per Siebrand on the task.  This can easily
be dropped/undone if we don't want it.

Also, remove reference to no-longer-existent notification-page-linked-bundle

Bug: T127288
Change-Id: Iabeaae747f99980c0610d552f6b38f89d940b890
2016-03-16 18:43:16 -04:00
Roan Kattouw cc88450477 Always show a cross-wiki notifications preference, even if the beta feature is disabled
In the non-BetaFeature case, put it in the Notifications tab instead.

Bug: T129077
Change-Id: I116bec24e0725b3d84276593a50f4315981d2ab1
2016-03-11 11:59:49 -08:00
Kunal Mehta c99a93dd5c thank-you-edit: Cast counts as integers before comparing
Because somehow we're ending up with 100 !== 100 in the logs.

Change-Id: I9c24b5dca3fea7d52fc0e0a52e53702385eb0fb1
2016-03-11 11:30:15 -08:00
Matthew Flaschen 07c962e82f thank-you-edit: canRender for deleted page and extra fix
Don't try to render if page was deleted, and fix 'extra' parameter
(was breaking message key and thus rendering)

Bug: T129641
Change-Id: I5d0fdfd3921427993211969eb5793f8e9e7667a8
2016-03-11 13:59:27 -05:00
Kunal Mehta 26a8bc2450 Defer onPersonalUrls() DB writes to post-send (try #2)
This reverts commit e372f3ce6f.

The previous attempt was broken because
EchoTargetPageMapper::fetchByUserPageId() returns a list of
EchoTargetPage objects, not a single one.

Bug: T117531
Change-Id: Id02a025e3736a7b92d9d6fb8adf29ef674f8e2fa
2016-03-09 11:07:50 -08:00
Kunal Mehta 51dd4fd109 thank-you-edit: Only call User::getEditCount() once
And rename $editCount to $thresholdCount for clarity.

Change-Id: I115b2dfabf472c855c186d05fa4e31aa7c9c3d6c
2016-03-08 17:05:05 -08:00
jenkins-bot acdcb5c895 Merge "Revert "Defer onPersonalUrls() DB writes to post-send"" 2016-03-09 00:11:50 +00:00
Catrope e372f3ce6f Revert "Defer onPersonalUrls() DB writes to post-send"
Causes fatals in production for some reason.

This reverts commit 93387806c2.

Bug: T129299
Change-Id: Ie90aa493e2940fae9d6f380b95f87a4cc7e04622
2016-03-09 00:00:11 +00:00
Roan Kattouw e85c3832bb Add debug logging for when the thank-you-edit code detects a race condition
We seem to be discarding *all* thank-you-edit notifications as
race conditions now.

Bug: T128249
Change-Id: I1f284bd13e89fe2205c4c87a6c0f4a7dfe1c8bd1
2016-03-08 12:04:45 -08:00
Aaron Schulz 93387806c2 Defer onPersonalUrls() DB writes to post-send
We calculate how many messages and alerts are being marked as read, and
subtract them from the count since the database and caches won't be
updated until the end of the request.

For performance, we also get the event_type while doing the
EchoTargetPage lookup query to avoid having to query it individually
later on.

Bug: T117531
Change-Id: I0d9302adf1b4b07a4ff26a04b00d4498aa3fe7ee
2016-03-08 01:41:52 +00:00
Kunal Mehta 8d99490108 Try and avoid race conditions with thank-you-edit notifications
Wait until after the main transaction has been committed before checking
whether they have the right number of edits.

Bug: T128249
Change-Id: I38cc0f96e97fda3692340cc8906144a002594ef2
2016-03-03 21:48:01 -08:00
Stephane Bisson eb873aaa60 Include cross-wiki notifications in unread count
* Client-side only. The backend already counts those.

Bug: T124109
Change-Id: I62e49524bc8cea1ef2d77255e29ff8a919bd1ee7
2016-02-29 16:02:05 -05:00
Kunal Mehta 3a29b1112f Add some debug logging to thank-you-edit notifications
Bug: T128249
Change-Id: I074cfa51e1d45a6dcc5a1316ef4e83e20319f8a6
2016-02-28 22:13:25 -08:00
James D. Forrester 23ebee2a61 Provide three more edit threshold congratulatory notifications
Change-Id: Icd213fe7dd7ab8451432d35d6ee289c49449d5d1
2016-02-26 15:51:25 -08:00
jenkins-bot e0b5d8c397 Merge "Don't process null edits (or other warnings in article save process)" 2016-02-24 21:39:36 +00:00
Stephane Bisson bbef0c15b4 Remove footer from email notification excerpt
Bug: T127098
Change-Id: I7de634ddcde65cb006afc18e95d83229ecbda6c1
2016-02-24 07:48:38 -05:00
Matthias Mullie e22675c880 Don't process null edits (or other warnings in article save process)
Bug: T123843
Change-Id: I5ce4deb2ad71ae6355fae31bbce68dc147aa0137
2016-02-24 09:27:18 +01:00
Kunal Mehta 7fbec72803 Always show the messages flyout icon
Bug: T127731
Bug: T124372
Change-Id: Ie97229b7ef34cd807f16c76ceae0682c425c53b4
2016-02-23 01:21:28 -08:00
Stephane Bisson dff7e8072b Include reason in user-rights notification body
Bug: T126277
Depends-On: Ib9bb28a7a77602e3e729fd0bf13ab8259e15b006
Change-Id: I4941c4ba16ee95798767d858792090609b47b4e4
2016-02-16 01:51:07 +00:00
jenkins-bot 5019802f29 Merge "Introduce congratulatory notifications for reaching edit thresholds" 2016-02-12 22:19:04 +00:00
James D. Forrester 5031539327 Introduce congratulatory notifications for reaching edit thresholds
Bug: T124003
Change-Id: I21c6570e178fd03d969a516bdb31a6da9735d242
2016-02-12 14:11:21 -08:00
Stephane Bisson 09928f1ed2 Add email body preview to emailuser notification
when the subject line is left with the default
generated value, we take the begining of the
email content to add a preview in the
notification.

Bug: T121831
Change-Id: Ib7c646f6709c7100ef51186f84fe14807d6a211a
2016-02-12 14:50:17 -05:00
jenkins-bot f0ca5a5f0d Merge "If user only has foreign messages, the messages badge should not be suppressed" 2016-02-10 21:02:15 +00:00
Stephane Bisson 442f812774 Add subject to email notification body
Bug: T121831
Change-Id: Ib1a9212202d2c84de8d968d043f65e24b2d94fae
2016-02-10 12:34:26 -05:00
Matthias Mullie b9f2d026a6 If user only has foreign messages, the messages badge should not be suppressed
Bug: T124372
Change-Id: Id9699c56e9b8c6af77e74cbfc48b6e4e3464b3a5
2016-02-10 13:25:50 +01:00
jenkins-bot 18bffba313 Merge "Display revert edit summary in revert notification body" 2016-01-18 19:46:49 +00:00
Stephane Bisson d7d70a06a1 Display revert edit summary in revert notification body
Only display when it's different than the pre-populated
edit summary (Undo revision 123 by User).

Bug: T121808
Change-Id: I5a00ff174fd31fdbf776a06b7b9375f63b921677
2016-01-18 10:14:15 -05:00
Roan Kattouw 4548917278 Update info and discussion links for beta feature
Change-Id: Id3badc50d9e86a39c2da448e454c5f30716539ad
2016-01-15 13:51:40 -08:00
jenkins-bot 5670a247f0 Merge "Add cross-wiki as a beta feature" 2016-01-13 09:01:04 +00:00
Moriel Schottlender 386fb0e8b4 Add cross-wiki as a beta feature
This commit only adds the beta feature parameters and preference.
The API will need to check whether the feature is enabled.

The beta feature option is behind a feature flag
$wgEchoUseCrossWikiBetaFeature, that must be set to true for
the beta feature to appear on the wiki.

Bug: T114237
Change-Id: I61e1bd62571e55f7f685f64e0c37e7702875e407
2016-01-13 00:54:17 -08:00
Justin Du 889dcc6584 Use the double speech bubble icon in the Messages panel
Bug: T119377
Change-Id: Icc7d751ef307fab9f8914728aac229fa28f1a860
2015-12-16 18:02:48 -06:00
mhutti1 ea64fe4770 Redirect anonymous user to login page from Special:Notifications
Added code to redirect the user and display a short message informing
them of the need to login.

Bug: T118873
Change-Id: I2145bc1502dbd19d660302d9f19e0d4a2ad5ad50
2015-12-08 11:55:15 -08:00
Kunal Mehta 0790125dd4 Don't export unused wgEchoOverlayConfiguration/wgEchoHelpPage JS variables
And make the if conditional a little easier to read: is logged in versus
not anonymous.

Change-Id: I76784b74caabd1ea0a5f0f506661a1682c865394
2015-11-12 10:42:54 -08:00
Kunal Mehta 20be6beb7c Fix page-linked notifications
This hook is now executed through the job queue, so $wgUser will not
accurately be set.

This depends upon I083736a174b6 in MediaWiki core to actually work.

Bug: T116485
Change-Id: I176fec492d136b097ada79a308e6822832705472
2015-10-27 16:17:25 -07:00
Edward Chernenko 5189fc0ff2 Support UserMerge into anonymous user
When UserMerge is used to merge an account into anonymous user,
we shouldn't attempt to operate on MWEchoNotifUser for $newUser,
as it would cause an exception.

Change-Id: I726e6115d2c30e1579dae55e57cc800aa61d9d7c
2015-10-12 18:34:01 +03:00
Siebrand Mazeland 33126b69aa Update formatting
In preparation of Code Sniffer based updates.

Change-Id: Id5d43332b44a37665d57dc24ef8c432bc65b2f6a
2015-10-03 23:28:54 -04:00
Kunal Mehta b1cbcb32a0 Remove duplicate 'MediaWiki' prefix from echo.unseen stats
Caused metrics to be reported as 'MediaWiki.MediaWiki.echo.unseen'

Change-Id: Ie141b896d0574b081a362b06043d842c2a897df0
2015-09-22 17:46:22 -07:00
jenkins-bot 3c43555c55 Merge "Use UserGroupsChanged hook instead of deprecated UserRights hook" 2015-09-22 18:24:40 +00:00
Kunal Mehta 073ade0a77 Use UserGroupsChanged hook instead of deprecated UserRights hook
Bug: T113357
Change-Id: If63b08493bcd49be9608d20a0d6fee0b3b205d58
2015-09-22 11:16:59 -07:00
umherirrender 07761b632e Add an emailuser web notification
When an user sent an email to another user with [[Special:Emailuser]] or
action=emailuser, give an echo for the target user to be lookup in his
mailbox.
This option is off by default. It is only useful as web notification,
because an email notification would go to the same address.

Bug: T56130
Change-Id: Ie279457daf51e1c34c998197ce9e76c78ee705e4
2015-09-22 01:58:17 +02:00
Kunal Mehta b539621b7f Split up ext.echo.nojs into badge and notifications styles
And rename "nojs" to "styles". It was supposed to mean base styles that
are used by no-JavaScript and JavaScript mode, but it confused people.
Hopefully "styles" is clearer.

Change-Id: Ie8d668fb0d95a9162392c5fa7c3200bcacef1025
2015-09-16 12:52:12 -07:00
Kunal Mehta 31c770741a Don't depend upon ext.echo.logger in ext.echo.init
The logger code for clicktracking is only needed after something has
been clicked, so we don't need it in init.

* Move EventLogging initialization into Logger.js
* Add ext.eventLogging dependency server-side if needed

Change-Id: I46ff3c62b05c24dd2bb18a1574df17f9d2823125
2015-09-16 12:52:07 -07:00
Kunal Mehta c726c1ecab Measure how likely users open flyout if they have unseen notifications
If users are likely to open the flyout whenever they have unseen
notifications, we should preload some more resources to make those
intial openings faster instead of lazy-loading everything.

On the server-side, we will increment the MediaWiki.echo.unseen metric
whenever we serve a page when the user has unseen notifications. Then on
the client we will increment MediaWiki.echo.unseen.click if they opened
the flyout while having unseen notifications.
By comparing the two graphs, we can determine how likely users are to
click on the flyout whenever they have unread notifications, and how
useful preloading extra resources will be.

Change-Id: I14e9aa7f03d6ef275042b8a2c4cb0e5b5a64c0d7
2015-09-16 10:18:17 -07:00
jenkins-bot 1d9481f43c Merge "Only load ext.echo.ui if the user clicks the echo badge" 2015-09-16 17:14:51 +00:00
Kunal Mehta 9e75474b5f Split out .mw-echo-alert styles back into a separate module
Change-Id: Ia946eb3b7cd917f84b7ab57a280f55a3eadfcebf
2015-09-16 17:02:22 +00:00
Moriel Schottlender c5905962ab Only load ext.echo.ui if the user clicks the echo badge
There is no need to load the entire of Echo's ui module (especially
since that includes ooui widgets and their styles) on every page load.
There's only need to load the entire module if and when a user clicks
the Echo notification badge.

Also, make the echo.dm model accept an external fetchNotifications
promise so we can send the API request alongside loading the echo UI
and "feed" it into the DM for processing.

CSS adjusted to make the "jump" between the nojs and the js buttons
seem less jumpy.

Bug: T112401
Change-Id: I516e655ffd198511d694489a0702c5c713a5fd68
2015-09-15 17:11:46 -07:00
jenkins-bot 6c298f9145 Merge "Don't show orange alert if you are viewing your user talk page" 2015-09-15 23:01:26 +00:00
Kunal Mehta e4d8002d74 Don't show orange alert if you are viewing your user talk page
We cannot count on the user_newtalk flag being cleared since that
happens in a deferred update.

Bug: T107655
Change-Id: Ie954ed7c5a4e784c3feb86288943a56cfb9c23c0
2015-09-15 08:50:48 -07:00
Roan Kattouw f2ed7a6a53 Don't load unused Echo JS/CSS on mobile
MobileFrontend has its own implementation of the notifications
flyout, so don't load any of Echo's code. We do still need
ext.echo.nojs on Special:Notifications though.

Bug: T112571
Change-Id: If4d84810070ccd48a8007a3ff80733a7db30fdb3
2015-09-14 23:12:59 +02:00
Roan Kattouw 5b1fc2b818 Hack around OOUI's icon pack being too large by creating our own
Bug: T112401
Change-Id: Id2a527dc1f4846985beb2cc4d5562a27d5636d55
2015-09-14 22:21:45 +02:00
Roan Kattouw b046a1062d Don't load oojs-ui.styles on every page
We don't really need it to render the no-JS version
of the notification badges (the only rule we were missing
was background-repeat: no-repeat;) and it significantly
increased the amount of render-blocking CSS.

This means we do need to call setupOOUI() ourselves
in order for our get_class( OOUI\Theme::singleton() ) hack
to keep working.

Bug: T112401
Change-Id: I148f8ac19dfe62cc84abe03e1a2ff00683d515c1
2015-09-14 12:38:44 +02:00
Kunal Mehta 957c2b0c98 Only use inverted icons for skins using the MediaWiki OOUI theme
Otherwise it causes flashes due to colors changing in skins that don't
use it, like MonoBook

Bug: T111821
Change-Id: I03acdbcbfa3912b439a18187d52944931e94506a
2015-09-10 10:22:37 -07:00
Moriel Schottlender 73e3ed3717 Add a tooltip to the notification badges
Since the nojs "base" version uses the automatic title creation
of the personal tools, the message keys were adjusted accordingly,
and the old unified message was removed.

Bug: T108190
Change-Id: I1f242f530aa68562aa4dc885156586c22c4df618
2015-09-08 14:03:34 -07:00
Moriel Schottlender e650df6644 Separate 'seen time' for alerts and messages
Bug: T111285
Change-Id: I277f94ae705d3323ac8612111d7fd704b36793cb
2015-09-03 13:14:15 -07:00
jenkins-bot e6e507a9ee Merge "Use db-replicated objectcache for storing last seen time" 2015-09-02 22:50:43 +00:00
jenkins-bot da6544e275 Merge "Split alerts and messages in Echo" 2015-09-02 22:50:40 +00:00
Kunal Mehta 35c4a37918 Use db-replicated objectcache for storing last seen time
So we're not abusing user preferences for the last seen time.
EchoSeenTime is a small wrapper around ObjectCache that handles the
fallback to user preferences during the transition.

All JavaScript code now needs to use mw.config.get('wgEchoSeenTime').

Bug: T95839
Change-Id: Ia45ba5e30eb4564250539d04d5886d2598ebd49a
2015-09-02 22:42:35 +00:00
Moriel Schottlender 1ac72cc01a Split alerts and messages in Echo
Split the notifications into 'alert' and 'message' badget with two
different flyouts. Also clean up styling and module behavior.

** Depends on ooui change Id4bbe14ba0bf6c for footers in popups.
** Depends on ooui change Ie93e4d6ed5637c for fixing a bug in
   inverted icons.

** MobileFrontend must also be updated to support the new modules
   in this patch  I168f485d6e54cb4067

In this change:
* Split notifcations into alert and messages and display those in
  two different badges.
* Create two separate flyout/popups for each category with their
  notifications.
* Create a view-model to control notification state and emit events
  for both the popup and the badge to intercept and react to.
* Clean up module load and distribution:
  * Create an ext.echo.ui module for javascript-ui support and ooui
    widgets.
  * Create an ext.echo.nojs module that unifies all base classes that
    are needed for both nojs and js support, that the js version
    builds upon.
  * Create a separate ext.echo.logger module as a singleton that can
    be called to perform all logging.
* Clean up style uses
  * Move the special page LESS file into nojs module so all styles
    load properly even in nojs mode.
  * Transfer some of the styling from JS to LESS for consistency.
  * Make the 'read more' button load already with the styles it
    needs to look like a button, since its behavior is similar in
    nojs and js vesions, but before its classes were applied only
    by the js, making it inconsistent and also making its appearance
    'jump' from a link to a button.
* Delete and clean up all old and unused files.
* Moved 'Help.png' icon from modules/overlay to modules/icons for
  later use.

Bug: T108190
Change-Id: I55f440ed9f64c46817f620328a6bb522d44c9ca9
2015-09-02 15:36:37 -07:00