Commit graph

68 commits

Author SHA1 Message Date
bsitu cac4050990 Mark notification as read upon visiting a page
Change-Id: I84493fbf742acd90645d484d42f049796a5e48ee
2014-08-14 14:10:55 -07:00
jenkins-bot f001382328 Merge "Add TargetPage model and mapper to notifications" 2014-08-14 20:18:44 +00:00
jenkins-bot 6c19cf53c2 Merge "Merge remote-tracking branch 'gerrit/two_tabs'" 2014-08-14 18:52:56 +00:00
Erik Bernhardson 4deca8b9d8 Merge remote-tracking branch 'gerrit/two_tabs'
Change-Id: Ie2c7abd1df09c501e86c6ef4c22fd8670163de4c
2014-08-14 11:51:43 -07:00
jenkins-bot d3d39ef55c Merge "Add support to mark all as read for "sections"" 2014-08-14 18:51:03 +00:00
jenkins-bot 1510733291 Merge "Revert "Revert "Merge remote-tracking branch 'gerrit/master' into two_tabs""" 2014-08-14 18:47:40 +00:00
Bsitu 483e7e80d5 Revert "Revert "Merge remote-tracking branch 'gerrit/master' into two_tabs""
This reverts commit b9574748a4.

Change-Id: I8a8334db446dd6a2d5363a1f6ab12369b813b026
2014-08-14 18:46:26 +00:00
jenkins-bot ec9fda274a Merge "Revert "Merge remote-tracking branch 'gerrit/master' into two_tabs"" 2014-08-14 18:32:38 +00:00
EBernhardson b9574748a4 Revert "Merge remote-tracking branch 'gerrit/master' into two_tabs"
This was supposed to merge master into the two_tabs branch, but it was accidently done against master instead

This reverts commit 06ee936e92.

Change-Id: I98da735b7d5c103399a2478286d1420243df6ba4
2014-08-14 18:27:19 +00:00
Cmcmahon ebc7192684 QA: committing Gemfile.lock
need to update mediawiki-api gem

Change-Id: Ifd682db5c73a6eda2f085364808bf6c1be21b98a
2014-08-14 08:52:30 -07:00
bsitu ff0784e7da Add support to mark all as read for "sections"
This also updates the way how mark all as read works

Change-Id: Ifb7b1b7b7feb4a5af65c79bb16b91a5a9c70166c
2014-08-13 17:16:19 -07:00
jdlrobson 92ee69b92d E2f: mark all as read behaviour
Also adds browser tests for the behaviour of the mark all as read button
to ensure it only clears message notifications.

Dependency:  Ifb7b1b7b7feb4a5af65c79bb16b91a5a9c70166c
Change-Id: I46e1de229e32d705e67cebde678ecea3f3633906
2014-08-13 17:08:16 -07:00
Erik Bernhardson 06ee936e92 Merge remote-tracking branch 'gerrit/master' into two_tabs
Change-Id: I92c94bd13bea02f43fa10aa3a05d671fe2e75116
2014-08-13 17:06:39 -07:00
jenkins-bot 7739dbedf0 Merge "Add method for fetching unread notifications" 2014-08-13 23:59:14 +00:00
Spage 8755b2e8cc Merge "QA: Browser tests for Echo notifications" 2014-08-13 21:10:34 +00:00
jdlrobson def2e070f7 QA: Browser tests for Echo notifications
* Someone links to my page
* Someone mentions me
* Someone writes on my talk page (if it's not a Flow board)
* When I register

Change-Id: I12d1c6867d996c19fbd836658e87acd418e03527
2014-08-13 13:16:37 -07:00
bsitu a7fbb53584 Add method for fetching unread notifications
* This will be used for the unread notifications in message overlay

* This will be used to "mark all as read" based on sections ( event types ),
  since we can't do updateJoin.  We could set a max update limit like 3000,
  and use this to do "mark all as read", this would handle majority "mark all as read"
  use cases. This would also prevent updating big amount of data on a web request

Change-Id: I2a9103a73d0aa91a52d5c0233e946a0ef979f96d
2014-08-13 13:10:38 -07:00
jdlrobson bee2fe3af1 Fix issue with tab visibility
Danny noticed a bug where if both tabs have unread notifications,
then when opening the overlay and clicking on the alerts tab, the user
would be reverted back to the messages tab.

Test stops this from happening again.

Change-Id: I6bbbbf61251957336de8856201412fa3569ab22d
2014-08-13 10:11:06 -07:00
bsitu 029668423d Add TargetPage model and mapper to notifications
This will be used for marking a notificaiton as read when
a user visits a target page. The new table should keep the
volume as low as possible for fast data loopup. records
should be removed from the table once it's marked as read.

Change-Id: I605cbc79adfc12d22bd889c5bb513d05c479fe6e
2014-08-13 00:48:07 +00:00
bsitu ad691fb838 Use array_merge_resursive when merging based on array keys
When two array have the same keys, we want to merge them into one array
rather than one overwriting another one

This was preventing count and rawcount from appearing inside the messages
and alerts object returned by the API.

Change-Id: I989b9b0994a33925faf52c6d99d8c46920e62cd6
2014-08-13 00:42:07 +00:00
jdlrobson 24e8a34c50 E2e: Show the correct value of unread messages in the tabs.
Change-Id: I976937cfe184f37abe78904e6f2cdc81f8190e80
2014-08-13 00:39:15 +00:00
jdlrobson 17d100f735 F11: Show mark as read buttons in notification list items
Change-Id: I1c132a3645188c8da8b04432dd3c1ce1006cca80
2014-08-12 15:02:03 -07:00
jdlrobson 8c61a6a416 E2d: Add the mark as read button to messages view
Don't mark messages as read until they have been acted on.
Show a mark as read button that marks entire list as read.

Change-Id: I4450a66cffd11c67b9a4ba9aac0fe958dc760e15
2014-08-12 14:49:19 -07:00
jdlrobson bb27de169e E2c: Hover behaviour of notifications panel tabs
Note no design was defined so have taken this to mean use
mediawiki ui for consistency purposes.

* Use mw-ui-active and mw-ui-quiet for tabs
* Update tests

Change-Id: If7a51b2286cdfe6e839dacc2476c9a578bc7f1df
2014-08-12 21:06:12 +00:00
jdlrobson 7870b6cac2 E2b: Reflect the count in alerts and messages tabs
Add test coverage.

Change-Id: Ia5658d2b0c230915cda9309a590b416b0aa73bfe
2014-08-12 14:00:41 -07:00
jdlrobson 9882898f92 Notification overlay Messages and Alerts sections
Shift to new API to support 2 tab view
When a new has no messages they will see the old style overlay with
Notifications heading. I have added tests to assure this is the case!

Later patches will:
1) Add the mark as read button only in message view
2) Note currently the tabs do not refresh when notifications is clear.
We need some kind of EventEmitter to make this sort of thing easier.

Change-Id: I62b590e81cd3fe867c4c13959cb43466aacfe2d5
2014-08-12 12:33:06 -07:00
jdlrobson 02d73ad720 QA: Add browser test for sign up notifications
Change-Id: I9a8debd8a220516adbcf86d4ccfa0019278171bb
2014-08-07 14:47:41 -07:00
jdlrobson e064126209 Hygiene: Split buildOverlay into smaller functions
Start with a getNotificationLimit and markAllAsRead function

Change-Id: Ice53af40a152f6c3b5a92683c574ef7dc2d01047
2014-08-06 20:28:55 +00:00
jdlrobson 8d12ef9a80 The first ever Echo QUnit tests
Also change coding conventions of Resources to allows use
array for scripts key.

Change-Id: I0c9f358ce3eb62adb07b68623e97c07993c9c45c
2014-08-06 13:26:42 -07:00
bsitu 427b7e2c38 Add support for splitting notifications into alert & message
Change-Id: I8eeeeb9a7a1539a258bc42584274897f9e7dc775
2014-08-05 14:50:54 -07:00
jenkins-bot 792b9dfc31 Merge "Add ability to run QUnit tests" 2014-08-05 18:45:29 +00:00
jdlrobson bb6eef198c QA: Add some basic browser tests
yippee ki yay!
Tests basic functionality
1) presence of Echo button
2) behaviour of clicking Echo button

Change-Id: I6334264e1ee73a59da1e7b0c3f18a1d43b565f3a
2014-08-04 16:22:01 -07:00
Erik Bernhardson 74a56e6fc4 Convert existing notifications to use user-locators
Replace implementation specific code with generalized user-locator
implementations that can be re-used by more notifications in other
extensions.

This patch adjusts the `user-locators` notification parameter to allow
arrays which facilitate passing options to the locator.

Previously(still works):

    'user-locators' => array( 'foo', 'bar' ),

New functionality:

    'user-locators' => array(
	'foo',
	array( 'bar', 42 )
    )

In the second example the callback specified by `bar` will receive
an EchoEvent as the first argument and array( 42 ) as its second
argument.

Change-Id: I7305279bc91d1e40e7054e2fd42a819a35526b82
2014-08-04 11:16:34 -07:00
jenkins-bot cf418a4ecb Merge "Generalize a couple implementations of EchoGetDefaultNotifiedUsers" 2014-08-02 00:10:42 +00:00
jdlrobson 5b46130173 Add ability to run QUnit tests
Point out there are no QUnit tests :-)
Add .jshintignore file

Change-Id: I02635b8620dda0110c04549724f50f561c5657fe
Note: See also 69034
2014-08-01 15:55:22 -07:00
Erik Bernhardson 71c7e02858 Directory reshuffle, add dev tools
* Port Flow Makefile to Echo
* Move resources to Resources.php

Change-Id: I75e96cc1e51a7768600ffc083550fc94ea9d1e6c
2014-08-01 22:38:41 +00:00
Erik Bernhardson f995de90c8 Generalize a couple implementations of EchoGetDefaultNotifiedUsers
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
2014-08-01 12:31:53 -07:00
jenkins-bot 1ba7583985 Merge "Introduce AttributeManager class" 2014-07-31 20:45:31 +00:00
jenkins-bot c9ed159ea7 Merge "Clear up cached Main_page title in test" 2014-07-31 18:52:32 +00:00
bsitu 267a56398e Introduce AttributeManager class
This is a precursor to splitting notifications into
alert and message sections.

Change-Id: Ic685f7026ab9b41407b51317780bbfadd05bf9f1
2014-07-31 11:41:00 -07:00
bsitu d3d99772b9 Replace EchoBackend with mappers and gateway
* 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
2014-07-31 10:29:52 -07:00
Antoine Musso 0dbff3bf16 Clear up cached Main_page title in test
In Echo tests/NotificationFormatterTest.php there is a test that ends up
invoking the Linker to create full URL for Main_page and pass it a
fragment.

Title::newMainPage() is really Title::newFromText('Main_Page') which is
cached.  Whenever the fragment is set, it stuck in the cache entry and
later call to Title::newMainPage() yields a Title object which has the
fragment.

That cause Scribunto tests (at least) to fail when Echo tests are run
before it because Scribunto tests expect a Main_Page title without a
fragment.

The ugly workaround is to have the Echo test to reset the fragment.

We could clear up the Title cache between tests though.

Bug: 68646
Change-Id: I625492fc8bf0dbd6e10275c3a728f5c1f85768c8
2014-07-29 13:56:28 +02:00
Thiemo Mättig e205992d0b Remove unused code and fix missing/broken documentation
General code cleanup as reported by the PHPStorm static code
analysis. I hope it's not a problem that I made a lot of very
different (but all very tiny) changes in a single patch. If you
want to merge this but you think it's better to split it into
several patches first, please tell me.

Change-Id: I2e2c4bb47f8d20e038d28e236e2ff813b30504af
2014-06-04 04:54:00 +00:00
Thiemo Mättig ab9c69dc28 Fix failing tests
Guys, your tests are failing. :-( I can't submit my other patch
because of this.

Change-Id: Ibba5b07205fd45edb73f562c9ca9429487dacafa
2014-05-27 19:39:52 +02:00
Kunal Mehta 8922b9dda6 Mark EchoTalkPageFunctionalTest::testAddCommentsToTalkPage as broken
Bug: 65336
Change-Id: I6a5f3e0d1e65436bce816027a78007040fcae108
2014-05-15 01:02:15 -07:00
Kunal Mehta e35e071e0b Remove namespace restriction for mention notifications
This is unlikely to cause issues since a signature is
still required.

Bug: 55491
Bug: 56311
Change-Id: Ice51ae05b581b98f1d8a90104e1707c3a590b39d
2014-02-21 21:06:05 -08:00
Erik Bernhardson fcd4f67c93 Catch catchable fatal errors when formatting echo notifications
Change-Id: Ieaf02ece716802309e85ed0e32a0a15fcd24c50d
2014-02-06 15:06:54 -08:00
Yusuke Matsubara 17fa9cadde Properly get timestamp position in DiscussionParser
The code was looking at the [0] element for the matched position
of timestamps, while preg_match returns it in the [1] element.

Bug: 53132
Change-Id: Ibfd3f2b86b007f28f73a137defb80276fb830d28
Follows-Up: I6c636b055bcd25760aee848aea71fe4044c7e1be
2014-01-30 07:28:51 +00:00
Kunal Mehta f2c876c4b5 Disable DatabaseBase constructor
Broke in I094185585dc844ca4d2d8b629107b2ab8f9bef39

Change-Id: I9ef09cfef07906cc5034a56f9b27eccd79f0d4ad
2013-11-07 15:51:46 -08:00
Kunal Mehta 61f1754d14 Unbreak the unit tests
Not all installations will have a user with the id of 2,
like jenkins. At some point User::getOption is called, which
requires loading the user from the database, except it
doesn't exist. At which point the user id is reset to 0,
so it becomes an anonymous user, breaking the test.

Since the MediaWiki test runner automatically
creates a test user, we can safely assume that there is
a user with the id 1.

The other failure was due to that $wgUser may not
always be 127.0.0.1. The test now directly just
calls $wgUser to avoid issues if another test has
altered the global state.

Change-Id: Iacf904d04f1ff5aaf584cb98c3083ef6d7d89cea
2013-11-01 08:13:11 +00:00