Commit graph

311 commits

Author SHA1 Message Date
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
Aaron Schulz 854aae01c8 Defer clearTalkNotification() updates as they often happen on GET requests
Bug: T92357
Change-Id: I3c5aca7748675a62c3f4a48ac53f14002eda95ac
2015-08-26 16:31:58 -07:00
Kunal Mehta 064c1f1514 Load only the EchoInteraction schema client-side
The other schemas are not used client-side, just server-side.

Bug: T105220
Change-Id: I5e5e7b01998cee38693c9f5e22da6e86a5e13e96
2015-07-08 13:17:35 -07:00
Kunal Mehta 4d8b977ff9 Get rid of disabled 'echo-notify-show-link' preference
This preference has been disabled since bug 47562, and doesn't make
sense to keep around given that the flyout is the main interaction most
users have with Echo.

Change-Id: I7e8ddf96dbde9a95ac01a0cc83bad396151d01bd
2015-07-07 17:10:49 -07:00
Alex Monk 6b5a76939b chmod 644 a few files
Bug: T104721
Change-Id: Iee1ef18d3227807110d4e25f0c48f17907adf8ad
2015-07-03 19:31:15 +01:00
Kunal Mehta 23f877fe76 Remove unused 'echo-error-preference' and 'echo-error-token' messages
They stopped being used in 08fc83b6de.

Change-Id: I439d15e6c894b7358ee8add0d9c882eb791909c4
2015-06-24 09:41:20 -07:00
Kunal Mehta 1298f2bb74 Don't hook into ourselves: EchoGetNotificationTypes (part 2)
Change-Id: I51600bbb26594323831d22bc35d34587ff146d47
2015-06-15 17:43:54 -07:00
Kunal Mehta df452abbb6 Don't hook into ourselves: EchoCreateNotificationComplete (part 1)
Change-Id: I5f0f3929a3b0396c98e0f3e74b69ddcee744a0e8
2015-06-15 17:41:10 -07:00
jenkins-bot e6ffb55eaf Merge "Use "elseif", not "else if" in PHP" 2015-06-02 01:01:54 +00:00
Kunal Mehta 4d52bc2534 Use "elseif", not "else if" in PHP
Change-Id: I3a84f1c3ec9d4522f5f7f461a680561c8aeda29e
2015-06-01 17:59:05 -07:00
Kunal Mehta 70761a124c Cleanup LoadExtensionSchemaUpdates hook
* Use standard "on{hook}" naming pattern
* Skip hook if using an external database server ($wgEchoCluster)
* Don't return true, it's not necessary anymore

Change-Id: I488e4636f9499c468b870966614b0762c2ade8ea
2015-06-02 00:55:54 +00:00
Kunal Mehta c2258dd7ce Kill $wgEchoCohortInterval
The Echo cohort study was finished in July 2013 and hasn't been used
since. The code was also checking in reverse order, for example it
checked registration before checking whether the survey was still
active.

EchoHooks::isEchoDisabled() was removed, and all callers were checked to
make sure they were also checking for anonymity.
EchoNotificationController::doNotification() will throw an exception if
the user is anonymous, since it shouldn't be possible to get an
anonymous user into that code path.

Bug: T101047
Change-Id: Iada2f6d2066c0f6bba5cc58aeb03d687632ac5a4
2015-06-01 17:53:29 -07:00
Kunal Mehta 94dd86f255 Simplify registration of EventLogging modules
Let EventLogging register the schema modules by using the
EventLoggingRegisterSchemas hook.

Don't modify $wgResourceModules at run time because that's a hack.
Instead register the module in the ResourceLoaderRegisterModules hook
itself.

Change-Id: I9457546c1ec38cf6896fe6f9f445fe1191afe72a
2015-06-01 11:58:37 -07:00
Kunal Mehta 1d4bf45d88 s/wfRunHooks/Hooks::run/
Change-Id: If26de025b0510027c8f1ba514a797c343a575d78
2015-06-01 11:36:35 -07:00
Aaron Schulz 02f618d620 Use DeferredUpdates::addCallableUpdate for generateEventsForRevision
* This diff part of this logic is fairly slow

Change-Id: Id9af5c18f852ba7f1c0d2b53257fe11cb87fc510
2015-05-18 12:59:36 -07:00
Matthias Mullie d150625ce1 Until seentime is recorded, we should treat notifications as unseen
Since we didn't use to save seen time, it is unreliable at first.
I decided to just show them as read then, since we couldn't know
if they had or hadn't been read.
However, it would make more sense to keep them unread until we first
save the time a notifiation is seen: it is in line with the current
behavior (where the badge just stays red, always)

Also fixed a problem where I meant to .get a value but had .set
instead. It wasn't noticable because that function is currently
only called when things have just been seen, so even though it
was wrong, it produced a good result.

Bug: T94634
Change-Id: I7ee447249527feb3914c76cfffd673bbda062b75
2015-05-06 10:53:45 +02:00
Matthias Mullie da07893647 Display red badge based on time of notifications vs last time panel was opened
I tried to stick as close to the existing code as possible.

Special:Notifications is slightly different from the overlay,
however. I made it add .mw-echo-unread class for consistency,
but that JS doesn't record seen time (it only loads older
entries), not does the CSS fadeout apply there (it marks
everything as read as soon as it's displayed, so different
behavior from overlay)

PS: I'm not sure about browser compat for the fadeout. But
even if some obscure browsers don't support this, meh. It's
not an "important" feature that can't be missed.

Bug: T94634
Change-Id: Ibb201823fb52ef8a3d5eaa39b0b724ede8d271d1
2015-05-01 11:39:45 -07:00
Tony Thomas 89b88ce61f Unreachable code in Echo hooks
Removed function EchoHooks::getDefaultNotifiedUsers

Change-Id: I5a2d219c3daea87705776f76744a8e7753e01fac
2015-04-20 21:51:23 +05:30
Erik Bernhardson 70639162f3 Allow multiple target pages per event
Bug: T85064
Change-Id: I338f3d73efb98a3bb66ef64fdeeb66e752a453c2
2015-03-31 07:56:52 +00:00
Erik Bernhardson 80ddd5549b Read revision from master when determining notifications to send
Bug: T93333
Change-Id: Ie41184f522f32835d278f69bc785ec71fddecc03
2015-03-21 02:57:06 +00:00
Timo Tijhof d833b09532 Update mock wgEchoConfig to also run on Special:JavaScript/qunit/plain
Follows-up 8d12ef9.

Tests were failing because wgEchoConfig was undefined and ext.base.js
accesses wgEchoConfig.eventlogging.

This mock should not be needed. Modules should be loadable at any
time and react to the current environment. If they should not do
anything, the client should be able to determine that. Perhaps
an isAnon() or some property wgEchoConfig to indicate this.

It only being loaded from beforePageDisplay() when logged-in is a
load optimisation, not business logic. wgEchoConfig should always
be there, or the code should handle the case of it not being there.

Change-Id: Ide90adf20e583921c9f3bd5cd37057995aa3d2c3
2015-03-21 02:47:47 +00:00
Ori Livneh ef502ed0ef Test if 'EventLogging' class exists, rather than deprecated function
efLogServerSideEvent() is deprecated and will be removed soon.

Change-Id: I79969b443e59a36a6d92ad33b3df98fb21f7f3b6
2015-01-07 10:27:52 -08:00
Kunal Mehta c2c3aba65f Capitalize class name properly
Change-Id: I980062dee776a2653ab74d392731af01b81889bc
2014-10-24 12:16:37 -07:00
Kunal Mehta fae2556494 Add UserMerge support
Depends on Id1726673 in UserMerge to allow specifying
a custom database object to use.

Bug: 67766
Change-Id: Iceb4b8d2fd53c50ed00a4aab9bc374f4bb716466
2014-10-17 10:08:59 -07:00
jenkins-bot f09f11d679 Merge "There is no welcome notification" 2014-09-02 07:34:24 +00:00