Commit graph

561 commits

Author SHA1 Message Date
jenkins-bot d27daff8cb Merge "Initialize 'mark as read' button hidden unless needed" 2015-09-30 20:31:56 +00:00
jenkins-bot a2741d9eb2 Merge "Also override Modern's :hover styles" 2015-09-30 20:27:09 +00:00
Moriel Schottlender f6c9e68577 Mark notifications as automatically read only after the popup loads
We've corrected this behavior for updating seenTime but not for setting
the notifications as read if the widget is configured as
'markReadWhenSeen' which produced unexpected issues with updating alerts.

This is fixed in this commit.

Change-Id: I4d2420a81d2b8409749ad1621b2d56bdd14e8c6e
2015-09-30 11:42:53 -07:00
Moriel Schottlender 287d383acf Initialize 'mark as read' button hidden unless needed
Only show the button if the notification is unread and also not
markReadWhenSeen.

Bug: T113629
Change-Id: I68c6bc43a9e5996e9c8377f36f07cfe430d6e5e6
2015-09-30 11:36:41 -07:00
Kunal Mehta bae6ac30b8 Also override Modern's :hover styles
Modern has duplicated styles for `#p-personal li a` and
`#p-personal li a:hover`, so duplicate our styles too to make sure they
fully override Modern.

Bug: T114080
Change-Id: Ib3da29532e9f0939379f3988a629bd6b7b1fabb8
2015-09-30 11:25:59 -07:00
Roan Kattouw d15615ea89 Close popup when badge is clicked
Bug: T114106
Change-Id: I9c1e9bb9826bd301bff8f80bedee011184843f72
2015-09-29 17:02:48 -07:00
Roan Kattouw 07754e8b71 NotificationBadgeWidget: Fix button icon positioning for change in OOUI
OOUI now uses absolute positioning for these icons, which breaks
the centered text model we'd like to use. Longer-term we should
use a different widget for these buttons, or perhaps a widget of
our own, but for now let's hack around that by undoing the
absolute positioning.

Change-Id: I8cc1fd69eeedde00facec80d82a21d5cc5610992
2015-09-29 16:23:10 -07:00
jenkins-bot 156dad4faf Merge "Fix Echo popup alignment in RTL" 2015-09-29 23:10:08 +00:00
Moriel Schottlender 16ddd5c7d7 Fix Echo popup alignment in RTL
Bug: T114184
Change-Id: I2b2b8c332efbcf0e646bf77f688433559da7b628
2015-09-29 16:05:31 -07:00
Moriel Schottlender 44bf7ac839 Do not reset an option that has no reset method
The placeholder method has no reset, skip it when resetting the
options.

Change-Id: I4936c5c9dde870b574b035384abcdf0b746d9b4a
2015-09-29 15:58:34 -07:00
Moriel Schottlender e0cd881aeb Mark all read button should always start invisible
Whether the button should appear or not is updated when the badge
is updated, based on having unread notifications. But during construction
the button should be hidden.

When we do update the badge, the button should only appear if there
are unread messages and if the current widget is not 'markReadWhenSeen'
to avoid having the button 'flash' while notifications are marked
read.

Bug: T113629
Change-Id: I002db9e3d8990b5a2cd67bf5d120b1c7eb454362
2015-09-28 20:37:01 +00:00
Moriel Schottlender 3ea86361a4 Rewrite browser tests for Echo
The new oouified echo popup makes the tests invalid; this commit
rewrites those tests.

Also by doing this commit we are upgrading to Selenium 1.4.

Change-Id: I26215558768d55be449276c55b4b745c3a458ecb
2015-09-25 15:50:59 -07:00
jenkins-bot a206bdd9ef Merge "Make middle-clicking badge work" 2015-09-24 23:16:07 +00:00
jenkins-bot 55d30ecb26 Merge "Add intermediate metrics for API and ext.echo.ui loading response times" 2015-09-24 23:06:01 +00:00
Kunal Mehta 480f8863c6 Add intermediate metrics for API and ext.echo.ui loading response times
And add a FIXME for our existing metric possibly being wrong if the API
request finishes before the ext.echo.ui module is loaded.

Change-Id: I918187dd276193b7602f60527b423ca06cb7e2d0
2015-09-24 14:33:21 -07:00
Moriel Schottlender e664cb220f Update seen time only if the popup is actually open
The notifications can be populated from the popup and outside of it.
We should update the seen time only if the request came from the popup
itself, and only if it is still open by the time the api request
has finished.

Bug: T113645
Change-Id: Id91ddabb85fd582be1890ea420d0559e0cdca167
2015-09-24 14:23:23 -07:00
Roan Kattouw 6efd060169 Make middle-clicking badge work
* Ignore non-left-button click events on initial badge
* Pass href into OOUI badge widget

Bug: T113555
Change-Id: I963aa5193435c46075df6d7204de335b51ecffd4
2015-09-24 10:35:55 -07:00
jenkins-bot 286aab802d Merge "Remove 'initiallyUnseen' class when the popup closes" 2015-09-24 01:37:37 +00:00
Moriel Schottlender 9514aa01ab Remove 'initiallyUnseen' class when the popup closes
The popup automatically updates itself every time it is opened.
If there are unseen notifications, they should be updated when the
next fetch happens, which means we must take off that class so
that the animation doesn't repeat itself.

Change-Id: Ib4173631efa1c5a3a3509e0797e60397397bd009
2015-09-23 16:58:57 -07:00
Moriel Schottlender c4485b91a7 Prevent the badge icon from flashing red when updating notifications
If the popup is open, whatever is coming in is immediately 'seen',
so we shouldn't flash the badge as red.

Bug: T112823
Change-Id: I9fe78ed11506de3c82043141f994e1ca96c5880b
2015-09-22 17:24:58 -07:00
Moriel Schottlender 091587142d Replace the orange bar with talk-page link, don't remove it
The orange bar is replacing the 'talk' link; when it is removed, it
should actually be replaced back to being a regular 'talk' page
and not be completely removed from the page.

Change-Id: I930d321952e85ee79acbbd162ab763b4eea63ff1
2015-09-22 15:36:14 -07:00
jenkins-bot 32d8991013 Merge "Move timing.MediaWiki.echo.overlay stats into ext.echo.init" 2015-09-22 21:41:03 +00:00
Kunal Mehta c8eea64259 Move timing.MediaWiki.echo.overlay stats into ext.echo.init
We really only care about measuring the timing of the first click,
because that is the one that loads OOjs UI and fires an API request.

Bug: T113387
Change-Id: Ib37d31b07c45d546c75251a57a848e3ae0f4bf1b
2015-09-22 12:04:35 -07:00
Moriel Schottlender 8bc0c98b6f Remove talk page notification bar if all messages are read
Bug: T106033
Change-Id: I5133896c204be701e0fae582af91c906175f39d1
2015-09-21 12:06:34 -07:00
jenkins-bot 61158920f8 Merge "Replace entire <li> element to produce button and popup separately" 2015-09-19 15:59:19 +00:00
Moriel Schottlender 429b11148b Replace entire <li> element to produce button and popup separately
We need the button to remain a standalone <a> element so it preserves
the exact same styling as the output we're getting from the PHP. the
only way to do this is to create the widget as the entire <li> and then
replace the original.

Bug: T112218
Change-Id: Ib6fd4369d46cb7f37b14675d63bbce9950abcd48
2015-09-19 17:56:29 +02:00
Moriel Schottlender 0e02fb2cde Update the API when a single notification is marked as read
The status changed internally but was never passed to the API.
This commit fixes that mishap.

Bug: T112826
Change-Id: I1a6d2a871eae837860eb1f21df28134d5e747cd7
2015-09-18 16:05:35 -07:00
jenkins-bot 09ba053c57 Merge "Correct unseen animation in notifications" 2015-09-18 11:10:09 +00:00
Moriel Schottlender d67e474d46 Correct unseen animation in notifications
The unseen animation should display whether the option is unread or
read, because it should point out notifications that were unseen/new in
this session even if they are immediately marked as read (in cases
where the configuration is 'mark read when seen', like in alerts).

However, the animation itself switched by default to white background
which is an 'unread' state. This made cases like "mark all as read"
mark the notifications as read but still have a white background as
if they are unread, and yet have no 'x' button because they are actually
read. (Bear with me here)

This commit organizes the animation better. We now have a proper clear
naming for the two animations - unseen-to-read and unseen-to-unread and
we use unseen-to-read as default. unseen-to-unread is used when
the -unread class is applied and the other cases should reflect the
correct state of the option read/unread status.

Bug: T112826
Change-Id: I7fe8ea5dcf8c3e31d16213313be34b2350d03655
2015-09-18 11:02:38 +00:00
jenkins-bot 1b590d4308 Merge "Show a default message if no notifications are available" 2015-09-17 23:52:48 +00:00
Moriel Schottlender 1474a21d4a Fix a code comment to make it much clearer
Change-Id: Ibd7c1e050f0d0790c1712a950568e3f9b09965ca
2015-09-17 16:43:36 -07:00
Moriel Schottlender 5e8e18ee48 Show a default message if no notifications are available
Bug: T112251
Change-Id: Ia17c50a11ea0a49041795332ba79bd3cbda5b548
2015-09-17 16:25:54 -07:00
jenkins-bot 24d83a8a32 Merge "Make the footer links readable in Modern" 2015-09-17 22:19:52 +00:00
Kunal Mehta 233da11ebd Make the footer links readable in Modern
White on white isn't readable :(

Change-Id: Ie352961048ef9788a53da4b1cfeddd5808284b68
2015-09-17 15:15:54 -07:00
jenkins-bot c64cdbd293 Merge "Handle API fetching errors" 2015-09-17 22:11:14 +00:00
Moriel Schottlender fd0aed5ae4 Handle API fetching errors
Bug: T112251
Change-Id: Ifb9c63cd056b0cc0e7076c73e98155cef445038f
2015-09-17 15:03:28 -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
Moriel Schottlender 8a8d1c4ff9 Adjust margins for the notification badge in MonoBook
Change-Id: Iae8c9a855fa407990548691d46974303fcc77ad9
2015-09-16 17:03:46 +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
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 0c5869c216 Use math to compute badge padding in nojs
More clearly indicates how those numbers get there, and fixes
a discrepancy of 0.02em.

Change-Id: Idbc33878953fda85185cada5550f99a1076b9036
2015-09-14 18:47:29 +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
jenkins-bot d72a235854 Merge "Fix vertical alignment of 'Mark all as read' button" 2015-09-13 19:19:34 +00:00
jenkins-bot c73d29e324 Merge "Don't clear notifications when refetching" 2015-09-12 10:51:17 +00:00
jenkins-bot bfe49365db Merge "Link directly to notification preferences in flyout" 2015-09-11 17:53:51 +00:00
jenkins-bot 3b58c3985f Merge "Let action buttons center align" 2015-09-11 17:07:57 +00:00
jenkins-bot 158cab5c24 Merge "Wrap notifications with a link for native click behavior" 2015-09-11 17:07:54 +00:00
Moriel Schottlender bfd27ae712 Wrap notifications with a link for native click behavior
Remove the behavior of the SelectWidget 'choose' and instead wrap
the notifications with their primary url links. That way, the click
handler returns to browser native response, and we gain automatic
behavior for ctrl+click, middle click, and regular click.

CSS had to be adjusted as well.

Bug: T112004
Change-Id: If10a4d3be71a8cf3ce966f15b922da0b9a2ddcc7
2015-09-11 09:48:00 -07:00
jenkins-bot 6de9f78a4d Merge "Make links non-white in the notification popup in Modern" 2015-09-11 16:45:14 +00:00
Kunal Mehta 0eb5d53375 Link directly to notification preferences in flyout
Bug: T112254
Change-Id: Id468763ac2f678dde0794ff401147e8be834ce0c
2015-09-11 08:15:26 -07:00
jenkins-bot 892b3d7a8c Merge "Use localized numbers in the badge" 2015-09-11 13:04:45 +00:00
Ed Sanders e77d088499 Let action buttons center align
Bug: T112188
Change-Id: I98cee8f70c05dc82e574e5867107975cfec37a19
2015-09-11 12:32:23 +01:00
eranroz 381b7be7d8 Avoid flashes: late debounce causes annoying flashes
Validate elements are updated before replacing elements in the DOM.

Bug: T112168
Change-Id: Ia9556b0b9e9f5b0132be5a61a2cde7bb4dc5606e
2015-09-11 11:09:17 +00:00
Kunal Mehta 7ae462f5e4 Use localized numbers in the badge
Bug: T112224
Change-Id: I6df892bf92f5de0e0552a7b12c9799be640839bc
2015-09-10 21:29:56 -07:00
Moriel Schottlender 7ad8cc24d0 Make links non-white in the notification popup in Modern
Change-Id: Icceeb916efceb8c2395aae7b30b054b274645f02
2015-09-10 17:05:30 -07:00
jenkins-bot 0ed0f43da9 Merge "Override padding for links in personal tools in Modern skin" 2015-09-10 22:56:43 +00:00
Ed Sanders eef9cb8cf6 Fix vertical alignment of 'Mark all as read' button
Change-Id: I6292737cede797bb1c197e6b2a5092cd6554da6d
2015-09-10 23:44:25 +01:00
jenkins-bot 34e1ffa59a Merge "Restyle buttons to be fully clickable" 2015-09-10 22:43:31 +00:00
jenkins-bot b5a31ed9d0 Merge "Add constructed class and messages names in comment for greppability" 2015-09-10 22:42:36 +00:00
Ed Sanders 1301a8f3f9 Add constructed class and messages names in comment for greppability
Done in one place but missing in two others.

Change-Id: I671326c05e15dfad1fca06f66d6847fcca0c2737
2015-09-10 23:38:26 +01:00
Moriel Schottlender b1b9b6e257 Don't clear notifications when refetching
Make the popup header the pending element to give the user a visual
indication that the notification widget is being updated, but don't
clear the notifications before loading more from the database.

Bug: T112186
Change-Id: If2b724fab07ef5b7caf5cab3e44fe326470ac0e7
2015-09-10 15:24:21 -07:00
Ed Sanders 48dc79be11 Restyle buttons to be fully clickable
Also use framed buttons (which these sort of are) as they
have hover styles.

Bug: T112188
Change-Id: I750a18a90c655cc7916e050b5e300300a4437b69
2015-09-10 23:08:33 +01:00
Ed Sanders fbd05031fc Remove unnecessary calc() from css
The expression is evaluated by the LESS compiler.

Change-Id: I7922d1ff2306ce880c6c9c011fda7576eea8e183
2015-09-10 22:53:31 +01:00
Kunal Mehta 5c49d1482b Override padding for links in personal tools in Modern skin
The flyout is now part of the personal tools, so Modern's styling of
`#p-personal li a` now affects it. Override that for links in the flyout
so it doesn't look super silly.

Bug: T111825
Change-Id: Ie67ff2d7803362bd7214bade27383282620799b9
2015-09-10 13:41:18 -07:00
jenkins-bot d36f940f06 Merge "Align popup footer buttons to take 50% width each" 2015-09-09 20:47:50 +00:00
Moriel Schottlender a37e764d3d Align popup footer buttons to take 50% width each
The alignment of the buttons was done haphazadly before, using
padding. This should be done better; we should calculate the buttons
width to be 50% of the width of the popup.

Since the popup accepts a width config, we know what its value is,
and can calculate the proper width. The width was added to the
variables.less file for continued use.

* Added popupWidth config variable to the badge widget
* Added OO.ui.ButtonGroupWidget to place the buttons in for
  consistency and styling
* Added calculated width styles to both footer buttons
* Added corrections for MonoBook

Change-Id: Iad2c947da06241e9303cf1f35574177a0f602bbb
2015-09-09 13:37:24 -07:00
jenkins-bot d220eacd60 Merge "Only show 'mark all as read' AFTER there are notifications" 2015-09-09 20:13:55 +00:00
Moriel Schottlender 71999b28c4 Only show 'mark all as read' AFTER there are notifications
Hide the 'mark all read' button while we fetch notifications.
We can't mark all as read before there are any actual unread
notifications in the popup anyways.

Change-Id: I38ace6a3f8b7898bdcd82ce650947f0c7ef319e2
2015-09-09 11:50:54 -07:00
Pau Giner b6712be9a3 Reduce distance between notification badges
Notification badges are conceptually closer together than the rest of toolbar elements.
So it makes sense to move them closer visually too.

This is just a small CSS adjustment to compensate for the default margin
that items in the menu get. If there is a cleanner way to achieve the same,
feel free to refactor.

Bug: T108190
Change-Id: I06403f67c24f045c125c505dca2101f9eed79594
2015-09-09 11:36:18 -07:00
jenkins-bot 9a2262d694 Merge "Use #pt-notifications-alert to get Special:Notifications link" 2015-09-08 21:13:53 +00:00
jenkins-bot 582017e82f Merge "Add a tooltip to the notification badges" 2015-09-08 21:11:43 +00:00
jenkins-bot 05d350b122 Merge "Show unread notifications first in the popup" 2015-09-08 21:08:26 +00:00
Kunal Mehta aae891d839 Use #pt-notifications-alert to get Special:Notifications link
Users who have never received a message will not have a messages badge.

Bug: T111783
Change-Id: I5e2b9834f4bc2f30948d1799215e29b16cb64c3e
2015-09-08 14:08:14 -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 7310a6b387 Show unread notifications first in the popup
Change-Id: Ib4947cee84a28a2850a86032528fa75bf472c5fa
2015-09-08 13:57:00 -07:00
Moriel Schottlender 2ec0ccad78 The return of the 'mark all as read' button
For some reason during the readjustment to the model/view the
mark all as read button was not toggled when it should have been.

It is now.

Change-Id: I05c32e9cb02e94b4e3dc3e2bcd9cead0eb802015
2015-09-08 13:46:57 -07:00
jenkins-bot 6e142da08e Merge "Align notification badge higher on the personal navigation bar" 2015-09-08 03:40:51 +00:00
Moriel Schottlender f4fd809e56 Only send api request if the popup is opening
Listen to 'toggle' instead of onAction so we can only send api
requests for notifications if the popup is in the process of opening
and not when the button is clicked to close the popup.

Bug: T111667
Change-Id: I39aea942ff5a87a13043cccdb696ef8952ca61db
2015-09-07 17:11:31 -07:00
Moriel Schottlender 327466a2d3 Align notification badge higher on the personal navigation bar
Bug: T108190
Change-Id: Id25213689c2ec9a6031bd120020c0b5ebde6e14f
2015-09-07 16:32:57 -07:00
jenkins-bot 1502371c2a Merge "Fix the badge icon update" 2015-09-07 19:11:31 +00:00
Moriel Schottlender 36191fc290 Fix the badge icon update
Make sure that when the seen state changes, the badge icon adjusts
in case there are two different icons for seen and unseen states.
Also organize a bit the unseen/unread status in initialization.
And separate and update the icons in the popup head to always fit
the status and icon of the badge.

Bug: T111432
Change-Id: I891a36c6eace9302b370a3efaf5aa6f57192c17f
2015-09-07 12:05:14 -07:00
jenkins-bot 04edd414cf Merge "Specify firstHeading rule for .mw-special-Notifications only" 2015-09-07 05:22:01 +00:00
Moriel Schottlender dbefd3b6f0 Specify firstHeading rule for .mw-special-Notifications only
The rule to make the firstHeading limited in height should only
apply to the design of the Special:Notifications page, and not
everywhere on MW.

Bug: T111628
Change-Id: I6636ed7f4ad0ccc7bbf83ace51dda62d09e09a5c
2015-09-06 22:05:34 -07:00
Moriel Schottlender 311c3aad8f Restore echo.alert styles
Change-Id: I079d59b9d9dfea5b53dc2fb73d0a054ba3d7e270
2015-09-04 16:36:01 -07:00
Moriel Schottlender fc2711ebc4 Create an 'initiallyUnseen' class for initially unseen notifications
This is so that the animation definition remains on the notification even
after it is marked as seen.

Change-Id: Ifd19cd5cd003a4e29d0c42788d51aca985e0b859
2015-09-03 15:37:02 -07:00
Moriel Schottlender ea1f23e04d Don't wait for the API to update seen status of notifications
First update the notifications as seen, then send the api request
for updating the seen time. Update the actual seen time from the
api response so the time is always in sync with server time.

Change-Id: I97717cfda7b665dcbc3add90712069700f44adf6
2015-09-03 15:06:14 -07:00
jenkins-bot 20a380cd9c Merge "Add a border between the popup head and notification list" 2015-09-03 21:34:51 +00:00
Moriel Schottlender 820eaa2726 Add a border between the popup head and notification list
Bug: T111432
Change-Id: Ic10edbafa96ab76416165237228f0f259bd9f5f7
2015-09-03 14:28:56 -07:00
jenkins-bot 61516ebe53 Merge "Separate 'seen time' for alerts and messages" 2015-09-03 21:17:06 +00:00
Moriel Schottlender e650df6644 Separate 'seen time' for alerts and messages
Bug: T111285
Change-Id: I277f94ae705d3323ac8612111d7fd704b36793cb
2015-09-03 13:14:15 -07:00
Moriel Schottlender f6a12f1051 Correct 'primaryLink' to 'primaryUrl' everywhere
Change-Id: Id42940460f7825541f9bc6e65ff864035591f47e
2015-09-02 16:59:55 -07: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
Kunal Mehta 686a8ab5a4 Measure how long it takes for the flyout to open
Bug: T56486
Change-Id: I12bfbfb186e8ab2bfe22052402ad4c71b2e6bd81
2015-08-11 16:57:29 -07:00
Kunal Mehta bce9dbab18 Link to localized Special:Notifications in overlay footer
Re-use the localized link from the badge.

Bug: T59350
Change-Id: I4b859a07b253894ac776519971cc130548350321
2015-07-06 17:57:59 -07:00
Legoktm 2257dd2a56 Revert "Pass uselang=user to the API instead of figuring it out client side"
This breaks pages using ?uselang=xx where "xx" is not
the user's language.

This reverts commit 0919b01e75.

Bug: T103935
Change-Id: I219810451b991cef88bac62cf880bfda6f98e930
2015-06-25 17:16:13 -07:00
Kunal Mehta 78dc653c80 Remove dead dismiss code
mw.echo.setUpDismissability was removed in 08fc83b6de, and will
never be called since the class is never set.

Change-Id: I1e13bbabaeb7df21c161d4cf4205a1564e1d81d9
2015-06-07 18:30:49 -07:00
Kunal Mehta 70d95fbad0 Use mw.Api.postWithToken to automatically re-try badtoken errors
Bug: T101664
Change-Id: I93188099e24102b47384c08113e8dbd26dac8df1
2015-06-07 18:11:48 -07:00
Kunal Mehta 7a196ce358 Remove pre-MW 1.22 compatability code
Change-Id: Ia59464f4a9a5589d84e5028cdabb33aa95df4209
2015-06-07 17:34:26 -07:00
Kunal Mehta 0919b01e75 Pass uselang=user to the API instead of figuring it out client side
Change-Id: I09add693567af577c14c646d2b6b943716e0522e
2015-06-07 17:30:00 -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
Roan Kattouw 518101e495 Actually pass jscs
Removed exemptions from .jscsrc and fixed the code to make jscs still
pass.

Kept the dangling underscores exemption because leading underscores
are (for now) used as a naming convention for private functions in
this repo.

Change-Id: I18964f8469f52c294276527d92cb6bf9f48c2576
2015-05-04 19:28:01 +00: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
Matthew Flaschen 0dbf078f8d Make sure eventId is int for client-side events.
Bug: T95169
Change-Id: Ic15b963a3656f8886532d1b990befe327159d56e
2015-04-15 00:18:38 -04:00
Tina Johnson 0e810f0510 Make links in Echo's notification footer blue on hover
Links on the notification footer, "View edit" / "View changes", needs
to be blue instead of grey to be consistent with the Mediawiki interface.
The link turns blue upon hovering, just the way it is currently set
for other links on notifications like the page title.

Bug: T57367
Change-Id: Ibaaff52b9d4bdfc5beca442e10734dd5cf8886d7
2015-03-14 00:41:11 +05:30
Matthew Flaschen b930dfaf47 Use mw-ui-anchor class
This is now required to actually pick up the MW UI progressive
color, so there's a slight visual change (wrong blue => right blue).

Fixes T72818

Bug: T72818
Change-Id: I719eb20a3940904ab45f8376280e20432a3b2d80
2015-03-02 20:16:31 -05:00
jenkins-bot bf0378e57a Merge "Fixed CPB flyout notification count" 2015-02-18 04:33:41 +00:00
Divya 562168b261 Fixed CPB flyout notification count
Added ext.echo.updateNotificationCount to notify other extensions
about updates to the notification count.

Bug: T67178
Change-Id: I7f4e34f2c1808b249db010018dd1b49a8dde246a
2015-02-18 04:31:34 +00:00
bearND e359b304db Make current Echo overlay tab dark gray and bold
mw-ui-quiet gets dark gray and bold.
This way it is easier to see which is the current tab.

Bug: T71929
Change-Id: Ie7e21cd71a385d216402d393344cf76d3ed45d23
2015-02-02 15:22:59 -07:00
Amir E. Aharoni 91847e96c6 Fix the overlay chevron position for RTL
Bug: T78330
Change-Id: Ie438042bc24b8ace429eec68c8b75c09da56aa95
2015-01-09 17:50:51 +00:00
Amir E. Aharoni 94cb6103c2 Cleanup whitespace in modules/overlay/ext.echo.overlay.less
According to
https://www.mediawiki.org/wiki/Manual:Coding_conventions/CSS#LESS

Change-Id: I361909fcea67fa5e0e3cbb69711ede91417c4e2e
2015-01-09 19:50:08 +02:00
Timo Tijhof 4fdae24555 overlay: Remove needless specifity in .mw-echo-grey-link selector
Binding it to the element name should rarely be needed as it only
adds complexity with no clear benefit.

Nesting classes should also rarely be necessary as it basically
requires the code will never be embedded in or itself embed something
from another component (otherwise you'd clash with that other component's
class name, and if you don't clash, then it wasn't neccecary to
nest the class in the first place).

If the class is overlay-specfic it should be renamed to something
like '.mw-echo-overlay-grey-link'. Keeping it as-is and applying
directly though, as it doesn't appear overlay-specific.

Change-Id: Ied601058c8e501914113d542f88542c83157d5a0
2015-01-06 22:04:12 +00:00
Roan Kattouw e3c4ddc1ae Don't make the notifications list 5px taller than the screen
The max-height of the notifications list was hardcoded to
the height of the window minus 134 pixels. I don't know
where this value came from, but it doesn't seem to take
borders into account. The correct value appears to be
139 in Chrome and 140 in Firefox, so I changed it to 140.

Also, this really really should not be a hardcoded value.
This 140 value can be measured in JavaScript; that's how I
derived it. Even better, oojs-ui has a mixin called
OO.ui.ClippableElement that automatically does this for you
AND automatically adjusts the height when the window is resized
as well.

Change-Id: I17bc2c5333e5c3d5dd720e6bccf8cbbdbb4abe6c
2014-09-23 15:00:21 -07:00
grunny 3093c7a69f Remove use of deprecated "hover" pseudo-event
The "hover" pseudo-event was deprecated in jQuery 1.8 and removed in
1.9. This is logged as "JQMIGRATE: 'hover' pseudo-event is deprecated,
use 'mouseenter mouseleave'". This fix switches to using the .hover()
method which appears to be the original intent as two functions have
been used which .hover() supports, whereas .on() only accepts one
handler. Now the class change works as expected.

Change-Id: Ib28801293b72f8f344455b5f308876d185abc8bd
2014-09-19 03:02:43 +10:00
Erik Bernhardson 8ee843fab5 Hygiene: Dont quote object property keys
Change-Id: I93d669a26f85b4eb5c5e0e06e314b89894f12385
2014-09-12 16:00:07 -07:00
jdlrobson 4ff74ddd50 Hygiene: Alter how initialisation of the overlay works
Restructure code so MobileFrontend can make use of it
Kill ext.echo.desktop

Change-Id: I984373ba54206d447c54a435dbf60e8f6e814be1
2014-09-12 22:49:51 +00:00
Shahyar c0446f683f Set text colors in overlay to mwui light gray, and increase title font size
Change-Id: I24f796df1abee02557db2f4817ad70c227dd8d8f
2014-09-11 19:13:44 -04:00
jenkins-bot 9e925cf021 Merge "Switch the order of Alerts and Messages tabs" 2014-09-10 22:00:17 +00:00
jenkins-bot 34290fb80a Merge "Localize numbers of alerts and messages" 2014-09-10 16:08:45 +00:00
Matthias Mullie adfb235de0 Switch the order of Alerts and Messages tabs
Change-Id: I864d45336c23331543ff6aaea8ec6512d4fba0c3
2014-09-10 15:31:09 +00:00
jenkins-bot 4156e030c8 Merge "Remove (X) next to Alerts/Messages if there is one section" 2014-09-09 23:28:35 +00:00
jdlrobson 2cacf82efa Restore QUnit tests to reflect alert as default tab
This reverts the tests and amends them after the
application of commit 5da9eac08a.

Luckily nothing appears to be broken.

Change-Id: I67acfe5dc74ef750d5443dd619dbb114623ee233
2014-09-09 13:23:37 -07:00
bsitu 75d5c9b9a3 Remove (X) next to Alerts/Messages if there is one section
Change-Id: Ibf66328e31bfefb3d588196c3f4babfa65bb52f3
Eg: Alerts(X) becomes Alerts
2014-09-09 11:12:38 -07:00
Matthias Mullie b090b749de Messages/Alerts text is tiny in Monobook
Just like all other text elements in the overlay: set the font-size to 13px
Not sure why this was em & rest px. 13px is equivalent to the current 0.8em in
Vector.

Change-Id: I29d67f21cc2af7209469299ab228ebe7dac98af7
2014-09-09 18:01:36 +02:00
bsitu 9c55aa0fc8 Colors are backwards for flyout section link
Also make active section link not clickable

Change-Id: I7f391929382489e8bad5ab56fea9f2ef7b2978b0
2014-09-09 16:31:23 +02:00
jenkins-bot 4aa508b6a8 Merge "Default to alerts tab" 2014-09-08 21:42:29 +00:00
Erik Bernhardson 5da9eac08a Default to alerts tab
The only exception is when there are new message notifications but no new
alert notifications.

Bug: 70461
Change-Id: I06daa3f7d526beeb878eb343c169e01acd49e71f
2014-09-08 13:18:51 -07:00
Amir E. Aharoni ce6b730e74 Localize numbers of alerts and messages
Change-Id: Ifc502afaed3fc04e7addb5383e3ed0c3c4efe439
2014-09-08 16:14:19 +03:00
bsitu d9f697414f mw.echo.overlay.updateCount() no longer exists
If you have an unread notifications not in the initial
load of special page, clicking load more would throw
an error

Bug: 69714
Change-Id: I9af588780b2ab8481ba252ddc21bad0601de7a0b
2014-09-05 21:37:12 +00:00
Erik Bernhardson f5985169cc Allow .mw-echo-title-heading outside special page
This class was only being applied to notification output
on special pages and not in the overlay, move it so it can.

Additionally:
* bolds .mw-echo-title-heading same as the anchors it works with
* clean up a repeated rule against `.mw-echo-title a`

Change-Id: I579252399b39746f5aa2cfc51b5cd3b9b8b2cdb0
2014-09-04 18:59:30 -07:00
jenkins-bot abb7655297 Merge "Add support to retrieve unread + read notifcations for section" 2014-08-20 17:37:51 +00:00
bsitu 8e2de3f02b Add support to retrieve unread + read notifcations for section
Change-Id: Ife3750400315f545f5f3e54ac9847f56c2efe9be
2014-08-19 16:54:48 -07:00
jenkins-bot 715ad180a2 Merge "Hygiene: Mega clean up the Echo footer code" 2014-08-19 20:25:04 +00:00
jenkins-bot 8d5421c9cb Merge "Fix line height/size of notifications" 2014-08-19 18:55:10 +00:00
jdlrobson 75cda20a31 Hygiene: Remove unused directory
Let's not use old unused things lying around... it just confuses
people.

Change-Id: I30cecb58fbdce0129e0385be3680ca4a2c6c36f8
2014-08-18 21:11:19 +00:00
jenkins-bot a3449bfb67 Merge "Hygiene: Stop using id for footer" 2014-08-18 17:27:00 +00:00
jdlrobson 088ba0a152 Hygiene: Mega clean up the Echo footer code
Lots of duplicate unused css. This simplifies it drastically.

Change-Id: Idfcca27840410f0287e30478e7978255234127d0
2014-08-18 17:26:40 +00:00
jdlrobson dc45eb246f Fix line height/size of notifications
Previously too cramped and not in relative font.

Change-Id: Idfc2d24a4896883630aee7c105cf67c8a8005a57
2014-08-15 14:02:17 -07:00
jdlrobson 965a8b8a2f Hygiene: Stop using id for footer
No need. Class works perfectly fine here.

Change-Id: I8188e759ad3eed971d5847b23d49b333d80b509f
2014-08-15 17:43:56 +00:00
S Page af2abe84a5 "put a comment nearby with the resulting keys"
Per https://www.mediawiki.org/wiki/I18n#Using_messages
Comment-only change.

Change-Id: I468a79bee19fc5486b564b1a0ec7eb66c9dfa852
2014-08-14 19:01:45 -07:00
jdlrobson 178ec1b816 Fix size of 'mark all as read' button
Change-Id: I2b760e70e60f001824b66e3652dafefaf7f6a32f
2014-08-14 15:10:32 -07:00
jdlrobson 1c6f5906d0 Hygiene: Kill dead code
Not serving any purpose...

Change-Id: I151e80a79bcaba3d9037fc9f21533a4e9161f60f
2014-08-14 14:29:40 -07:00
jdlrobson 8b381e2081 Hygiene: clean up messy less file
Change-Id: I8c76e92b8a4d79cd26ac7ed54c20bdae54e0b5bd
2014-08-14 14:18:42 -07:00
jdlrobson 5ff3189146 Prevent horizontal scroll bars in Firefox
Use inline block and width to force truncation of the flow topics

Bug: 69563
Change-Id: I62fc95a58dbdf0f21e36e67e1941e4e35585e2d2
2014-08-14 13:21:49 -07:00
jenkins-bot 4b472dd9f2 Merge "E2f: mark all as read behaviour" into two_tabs 2014-08-14 18:48:42 +00: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
jdlrobson 81610bfb5a Create notification overlay in the body
This removes the need from the super specific selectors.
It also allows us to create multiple notification elements
on a screen.

Change-Id: Ife5291a315915779689943ffc18ac73d77351d0e
2014-08-13 13:24:05 -07:00
jdlrobson 106c2d2215 Create chevron using pseudo elements
IE8+ supports the pseudo element. The world will not explode if
IE6 and 7 do not have the chevron.

This simplifies code by dropping the use of the pokey element

Note: I know we can drop using the image too but I decided not to do
that in this patch.

Change-Id: Ia9ac434461e63bc2cf8554060126995ac65a3531
2014-08-13 13:14:41 -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
jdlrobson 24e8a34c50 E2e: Show the correct value of unread messages in the tabs.
Change-Id: I976937cfe184f37abe78904e6f2cdc81f8190e80
2014-08-13 00:39:15 +00:00
bsitu 7f4f6c5228 Truncate text in Echo notifications
Automatically truncate text with ellipsis on single lines of title

Change-Id: I0ef9eeb9f9d3403f79ee9960b075fb7062150a1d
2014-08-12 23:53:52 +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 66dd838ed7 Kill mark as read button
This is being redefined as part of the introduction of notification
tabs.

Change-Id: I2211bf6727f661ca7fcd6023aaddb3f2b5ac53ba
2014-08-12 18:42:57 +00:00
jdlrobson 4470d91e54 Hygiene: Break out _buildNotificationList
Make various properties of the overlay properties of
EchoOverlay to reduce need for function parameters

Change-Id: I70ec0c650d58322aad93d71292a836d7cf7e7474
2014-08-08 15:45:02 -07:00
jdlrobson ccc0e713a0 Hygiene: Introduce EchoOverlay initialisation class
Not as scary as it looks. The change to _buildOverlay simply changes
indenting, and cleans up to reflect new parameter. Tests still pass ;-)

Kill noticationLimit concept
Only expose what's necessary on mw.echo.overlay

Change-Id: I2671a41af8188c14ad4c910396afa0d9000b6051
2014-08-08 14:35:07 -07:00
jdlrobson f4eadb5e0a Ensure override is more specific
is definitely more specific then
So let's make sure the override always works.

Change-Id: I8e1623357185ad7b55ddc9d60ab98984721075ae
2014-08-08 11:30:25 -07:00
jdlrobson df66e80648 Regression: Fix styling of new unread notifications
Change-Id: Icf9f1bc21c084070a21865232cdac5d978be0731
2014-08-08 10:44:18 -07:00
jdlrobson 71a1ec3f6f Reduce specifity of Echo css
The #p-personal only is needed to override the ul padding.
Let's make this explict.

Change-Id: Idf538d2a09ffc4d325d4fb3061564d8dd11b1e60
2014-08-07 21:07:14 +00:00
jdlrobson 1896424e9a Hygiene: use self where possible
Change-Id: I30e9d6ea8b59e168fc5b151f215c3592f475bedf
2014-08-06 13:30:42 -07:00
jdlrobson 0ff4295a88 Hygiene: Move the overlay initialisation code into a separate file
Change-Id: I4dcdf9708b700c57679ff878275c5560a62e3a06
2014-08-06 20:29:35 +00:00
jdlrobson a815733447 Hygiene: Move code for header into _getTitleElement
Change-Id: Ic53933189bf51772a88689794a7633ba8ba0ac2c
2014-08-06 20:29:30 +00:00
jdlrobson f02d3f059d Hygiene: Add _getFooterElement method
Continue to shrink down the size of buildOverlay

Change-Id: I69b339947bfe4d5e73c6d293f0ae5e9e494ec6ca
2014-08-06 20:29:25 +00:00
jdlrobson 9b30d33549 Hygiene: Refactor out mark as read button code
Change-Id: Iad935174925bd1c16e51bbc36c84b48769e9780c
2014-08-06 20:29:01 +00: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 01b0f912f3 Hygiene: More LESS cleanup in ext.echo.overlays.less
Change-Id: I2d2daad00a11a156dc0ac693ea99322c9470cc6f
2014-08-05 11:37:43 -07:00
jdlrobson 430628ccc1 Hygiene: Port all Echo css to less.
No changes.
Makes styling code more readable.

Change-Id: Ie45f2cd3671bee5b88ba92ca2946d6e77cd59508
2014-08-04 11:43:27 -07:00
Legoktm a09d4cbaf5 Revert "New hooks for external integration to notification intiialization"
No usecase has been provided, and additionally the hooks
are not documented. Bartosz also points out that
mw.hook calls are asynchronous and memorized.

This reverts commit 9d3561afaf.

Change-Id: If735b46996fab3def835a54223412ef6d3105395
2014-07-26 01:05:35 +00:00
Erik Bernhardson 9d3561afaf New hooks for external integration to notification intiialization
Adds two new hooks to allow extensions to tie into the notification
loading process.  Between these two hooks and the new isInitialized()
method any extension can run code whenever a notification is displayed.

Change-Id: If351835be5f65ca098e2d235ea8c8e4dc40ae2b4
2014-07-21 16:08:56 -07: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 0656e7594a Avoid line break in the "All notifications" footer link
Tested with latest Firefox and Chrome as well as Opera 12.

See bug 57327 for full description, please.

Bug: 57327
Change-Id: Ibf6e7d590754402f4cfafa3a3db55bb0c6aa525e
2014-06-04 04:53:25 +00:00
Juliusz Gonera c9cff5c600 Always show the overlay when badge clicked
The badge is always close to the top of the window (if it's visible), so
this is not necessary. Also, this behavior is definitely not desired
for the upcoming fixed header beta feature (the badge will always be
visible as a part of the fixed header).

Change-Id: I66e8a50b1139f7bcd005cfb3c3576578efe6a653
2014-05-15 23:45:03 +00:00
tinajohnson.1234 19dacca2e2 Added keyboard shortcut (ESC key) to close notifications flyout
Notifications flyout is closed when ESC key is pressed.

Bug: 53588
Change-Id: I220affcc383c943ca9d977bc4014d45904ce06c2
2014-04-06 11:40:10 +05:30
aude 5dfc53c990 Remove usage of wikiGetlink deprecated function
Change-Id: I59ecfdcdf834d265b9a911c37fd9a35fd2588ec7
2014-02-24 12:56:04 +01:00
bsitu 7637e1283d Automatically mark invalid notifications as read upon request
Change-Id: I8f72daf1b49bcb42037c1415f806bab3472d8e39
2014-02-05 16:53:04 -08:00
jenkins-bot a065dea8af Merge "Catch exceptions formatting notifications" 2014-02-05 23:26:28 +00:00
Erik Bernhardson 425a4a09fa Catch exceptions formatting notifications
Provide users a better user experience by catching and logging
errors with Echo notifications.

Bug: 60906
Change-Id: Iee93a05c6eed468af8bbfa60249df0819c49c45b
2014-02-05 13:55:27 -08:00
jenkins-bot 6857a6e719 Merge "Don't show the overlay if the badge is not near the top of the window" 2014-01-30 01:36:17 +00:00
roopak 57103b8f29 Changed the font size used for subheading in notificatons
Changed the font size of notifications which was earlier too small
and also the accessibility was also too low

Bug: 60239
Change-Id: I20be3cd2277e865ee694070f119999b7b170547c
2014-01-21 18:50:20 +05:30
jenkins-bot 6cd68481bf Merge "Add new messages indicator from a hook" 2014-01-12 15:16:35 +00:00
Bartosz Dziewoński 3dc2b10b78 Don't show the overlay if the badge is not near the top of the window
Bug: 58728
Change-Id: Ia714425078c277d65af99389c95014d87e138e8c
2014-01-12 14:37:32 +00:00
jenkins-bot 3932d39a10 Merge "Make sure the overlay is visible, even if the badge is near the edge" 2014-01-12 14:06:14 +00:00
Bartosz Dziewoński a46fb8ac83 Make sure the overlay is visible, even if the badge is near the edge
We just shift it a bit to fit it on the screen.

Bug: 58728
Change-Id: I61847ed7b9f08ce6618a903bb4f5e0d6afb07e9b
2014-01-12 14:58:27 +01:00
Kunal Mehta 1240492018 Add new messages indicator from a hook
So it works for users without JavaScript

Bug: 56974
Change-Id: I0652a740ca7156257d4459931d80872877339c0d
2014-01-12 03:31:46 +00:00
kaldari f1e0a73abd Add logging support for mobile boolean flag in EchoInteraction
See also: I8db8d3c4eb2bb396195c42073a95ac8530fe869d
Change-Id: I3cb6b9cff91a927b03d30e5f3fec9984cf3f790b
2013-12-24 19:45:51 +00:00
m4tx fb438a1a17 Prevent "Mark as read" and title-overflow text from overlapping
If the echo-overlay-title-overflow text is too long, it's wrapped into multiple lines now.

Bug: 55919
Change-Id: Ib1d252ab26be7d73cbf71c6fb19d84b80d8d30c8
2013-11-30 01:53:59 +01:00
jenkins-bot 4b4e955ae7 Merge "ext.echo.overlay: Unbreak removal logic" 2013-11-10 02:46:46 +00:00
jenkins-bot d810a6f573 Merge "ext.echo.overlay: Various minor consistency fixes and cleanup" 2013-11-09 02:15:36 +00:00
jenkins-bot 55f40efe9d Merge "ext.echo.overlay: Only build the 'mark all as read' button if it's used" 2013-11-05 00:23:02 +00:00
MatmaRex be1cbc4e60 ext.echo.overlay: Unbreak removal logic
Apparently three wrongs make a right: hiding the overlay still worked.

* '#pt-notifications a' click event handler was not correctly checking
  for events comig from inside the overlay due to a missing dot before
  class name
  * But if it were correctly checking, it would not be hiding the
    overlay pokey (just its body) due to a copy-paste error
* Instead the clicks were handled by the 'body' click event handler,
  which did not correctly check for events coming from
  '#pt-notifications a'

I made things right again. The user-facing behavior is the same.

Change-Id: I02aba0e25ba4d81b234b327f120e0e2ff13d117c
2013-11-01 22:38:42 +01:00
MatmaRex c6b65f674a ext.echo.overlay: Various minor consistency fixes and cleanup
Change-Id: Id3b0f4fd7253282b190d6b2ed5fc78b714295e96
2013-11-01 22:15:08 +01:00
MatmaRex 4c8fd7843b ext.echo.overlay: Only build the 'mark all as read' button if it's used
Otherwise a new copy will be created every time the user opens and closes
the popup, and jQuery will hold on to each one forever (because it has
events bound), leaking a minuscule amount of memory.

Change-Id: I70c713be839f826fc27d07b04260c166f9052020
2013-11-01 20:23:05 +01:00
MatmaRex dc1443f57f ext.echo.alert: Restore orange background on Monobook
Core styles for Monobook include high-specificity background: transparent;
rule for #p-personal li a, we need to match it to set our background.

Also change hover behavior: switch to a deeper orange instead of
default white, similarly to how the badge already behaves.

Partially reverts I682182fe.

Bug: 56214
Change-Id: I9f343264c395ecf09c1e34e03d208ec2119fb622
2013-10-27 15:30:22 +01:00
Kunal Mehta 790f4bee9e Remove "Talk:" prefix from "You have new messages"
Bug: 49324
Change-Id: I51d9fc5c891d4489fcb5bce74b0428575f1df7f6
2013-10-21 11:56:20 -07:00
jenkins-bot de93be2b47 Merge "Revert "Notification overlay is partially hidden in RTL language"" 2013-10-16 17:33:31 +00:00
Bartosz Dziewoński 4ad3cb4674 Revert "Notification overlay is partially hidden in RTL language"
Ugly workaround for bug 55779. Let's not do this.

This reverts commit 67bcecff5d.

Bug: 55629
Change-Id: I5f5503aa1d1f7c93b11bf82cfcd73370a991783c
2013-10-16 09:49:09 +00:00
jenkins-bot 2ba05992be Merge "Notification overlay is partially hidden in RTL language" 2013-10-15 15:59:28 +00:00
Ebrahim Byagowi 88937d21c1 Native digits on 'mw-echo-overlay-title-text'
Change-Id: Icdd52ea0267ffbaa0e103070655735eff8423ca1
2013-10-13 19:34:03 +00:00
bsitu 67bcecff5d Notification overlay is partially hidden in RTL language
bug: 55629
Change-Id: I820386379fbea64fb88cfc1a1966ee08680f5c59
2013-10-11 19:06:58 +00:00
Timo Tijhof 72c8aba10e alert: Make selectors less overly specific and clean up js
Follows-up 383a818.

* There is no need for the additional element ("a") or
  descendant ("#pt-mytalk") selector.
  It isn't overrriding anything, only hardcodes details that make
  it harder to maintain or extend this stylesheet. For example,
  there is a gadget that makes  user messages green instead of
  orange, it now was required to hardcode the "#pt-mytalk a" part
  of the selector eventhough those are subject to change.
  Separation of concerns.

* Cache/reuse the jQuery object instead of executing the same
  query to the document, again. It also avoids a potential bug
  where the second query matches different elements (e.g. after
  appending alertMessage, there could potentially be an additional
  nested anchor link; there isn't now though, as the message is
  plain text).

* Add comment about weird echoNewMsgAlertDisplayed variable.

Change-Id: I682182fe15a868969f25fa5bfe2412e2a6f3dddf
2013-10-06 23:52:47 +00:00
bsitu 3b3ed1e3bc Fix some notification badge related issue
* In some languages like persian, the number 0 is represented as '.', we can't compare
  '.' with either 0 or '0' to detect the no-notification status of the badge

* The markread API doesn't respect uselang param, it would return 0 instead of . in a url with uselang=fa

Note: we need to provide raw and formatted count in the API since client side javascript
      doesn't provide fancy function like $wgLang->formatNum()

bug: 54575

Change-Id: I0a49828253ec346ed27c5b9a976f8bdff4e1fa90
2013-10-02 11:25:05 -07:00
kaldari 08fc83b6de Cleaning up Echo 'base' module.
Removing unused functions and declaring correct dependencies.

Targetting to desktop and mobile so it can be used by both.

Also removing dismiss-related code from the formatter.

Change-Id: Icccce64cfb3c564ab468a93ccdba9c5a61687fd5
2013-09-23 11:29:49 -07:00
bsitu 2b57fbd3c2 Split the Echo API into their own write/read APIs
Change-Id: I0ab85c91c6fbe17e9a1c7dc9e504980f629a5065
2013-09-18 14:28:41 -07:00
bsitu 06e7317472 Archive page and overlay should respect ?uselang=xxx
In addition, any message used in the email should be
sent in the user's language.

Bug: 52992
Change-Id: I3585f28d4ec97b86a467958bdfd603791f293d52
2013-09-09 13:44:05 -07:00
jenkins-bot 7591f85e43 Merge "Make items on notifications flyout behave like links" 2013-09-05 17:22:37 +00:00
jenkins-bot 5899f3d4f1 Merge "ext.echo.special: Cross-skin adjustments" 2013-09-04 16:22:47 +00:00
EBernhardson (WMF) e3bdd61952 Merge "Preventing empty payloads from being created when using summary" 2013-09-03 17:40:42 +00:00
kaldari d1463ea6a7 Preventing empty payloads from being created when using summary
Also making sure that footer has some amount of separation from
the notification title even if there is no payload.

Change-Id: I85a1a7989539044a0b0b53e76e70ddee9bb7165c
2013-08-29 15:10:06 -07:00
MatmaRex b916c85353 ext.echo.badge: Remove defunct CSS rule
The space after colon on this line is actually a non-breaking space
(&nbsp;), which is not allowed in this place according to CSS syntax.
Therefore all browsers ignored this rule (logging an error like
"Invalid CSS property value") and the shadow was never shown.

We could fix the rule instead, but I'm pretty sure users are used to
this by now, and in my opinion it looks better without shadow.

Bug: 53490
Change-Id: I1fd508d2059bec5cd79a6dcdce8dc9be6e6d4229
2013-08-29 19:40:34 +00:00
bsitu 37812cd058 Long text content should wrap in overlay footer links
Bug: 53111
Change-Id: I15865a9808b342e52d2d03e9a3ec8bd2bc8312d0
2013-08-23 12:59:56 -07:00
MatmaRex 6cade7eba3 Make items on notifications flyout behave like links
We want the notifications in the flyout to behave just like links,
including standard middle-click and Ctrl-click behavior. The simplest
way to do that would be to actually make them links - but the area can
contain a few other links, so we can't do that and have to resort to
ugly hacks.

Or do we?

Turns out that while browsers won't accept HTML containing nested <a>
tags[1], such a structure is valid XHTML, and it's possible to create
such structure in HTML mode using DOM manipulation. It works like one
would expect: the entire thing is clickable, but inner <a> tags' hrefs
override outer ones.

Firefox even had a request to make that work[2] which was happily
fulfilled.

Tested the basic case [see below] on Firefox 22, Opera 12, Opera 15
(which uses the Blink engine like Chrome), IE 8 and IE 6 and it works
the same on all of them. Tested the XHTML variant [see below] on all
of the above except for the IEs which don't grok XHTML and it exhibits
the same behavior.

[1] Simple test: $('<div>1<a>2<a>3</a>4</a>5</div>').html() is
    "1<a>2</a><a>3</a>45", not actually "1<a>2<a>3</a>4</a>5" like one
    might expect.
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=331959

----

The test cases used are below. When trying out the XHTML one make sure
that the browser uses application/xhtml+xml MIME type; saving the file
with .xhtml extension should be enough.

XHTML:
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <body>
  <div>1<a href="http://google.com/">2<a href="http://example.com/">3</a>4</a>5</div>
  </body>
  </html>

HTML:
  <!DOCTYPE html>
  <html>
  <body>
  <script type="text/javascript">
  var div = document.createElement('div');
  var a1 = document.createElement('a');
  a1.href = "http://google.com/";
  var a2 = document.createElement('a');
  a2.href = "http://example.com/";

  div.appendChild( document.createTextNode('1') );
  div.appendChild( a1 );
  a1.appendChild( document.createTextNode('2') );
  a1.appendChild( a2 );
  a2.appendChild( document.createTextNode('3') );
  a1.appendChild( document.createTextNode('4') );
  div.appendChild( document.createTextNode('5') );

  document.body.appendChild(div);
  </script>
  </body>
  </html>

----

Bug: 52319
Change-Id: I311eca70f025ce92129c828cd88f96686b7cff72
2013-08-06 13:23:33 +00:00
MatmaRex dd87542a40 ext.echo.special: Cross-skin adjustments
Out of the default MW skins these only seem to affect CologneBlue.

* Reset padding and list-style-image on ul#mw-echo-special-container
  ourselves, do not rely on the skin doing it
* Use transparent background on .mw-echo-notification (and
  semi-transparent black on hover) instead of solid white and
  light grey to accomodate colored skin backgrounds

Change-Id: I2c178627e4dbe889c4958afc41e4969aaa45a717
2013-08-04 14:56:32 +02:00
MatmaRex 02bf709c97 Do not offset the heading of Special:Notifications from the left
Bug: 52508
Change-Id: Ia9f5a82b1c297d0e1de09bf228a2bbadccb98739
2013-08-04 14:34:33 +02:00
MatmaRex c351851277 ext.echo.special: Move #firstHeading styling from JS to CSS
Also some code cleanup in the part about converting subtitle links
into header icons.

Change-Id: I25eacb9c512fd6883a65df3af97608749b53b228
2013-08-04 14:34:30 +02:00
jenkins-bot 347cdf3247 Merge "Revert "(bug 51640) wgUserNewMsgRevisionId is null with only one rev"" 2013-07-30 20:47:16 +00:00
Bsitu 63c1d25d3a Revert "(bug 51640) wgUserNewMsgRevisionId is null with only one rev"
This reverts commit b9e5b2f64a.

Change-Id: I64cd03dd0789f482221f8f38bbf9a034025e45f9
2013-07-30 20:45:03 +00:00
bsitu 372b5f2f28 (bug 52225) Some javascript and css fix for IE7
1. clone() breaks the flyout layout in IE7
2. inline-block needs some adjustment for IE7

Change-Id: I014318aacb15000f132c4e4af74f5ea40a064712
2013-07-29 12:52:29 -07:00
jenkins-bot f1cc118b1f Merge "Remove override of skin behaviour for inline anchor's text-decoration" 2013-07-24 12:11:11 +00:00
bsitu b9e5b2f64a (bug 51640) wgUserNewMsgRevisionId is null with only one rev
wgUserNewMsgRevisionId is null with only one revision and that revision is
not viewed, this makes it not reliable for determining if there is new
message.  We just switch to check against $user->getNewtalk() instead.

We can still use wgUserNewMsgRevisionId to generate diff links if desired

Change-Id: I4cf50a944aada03151bd17f3610bd59b3bfb2bf2
2013-07-19 11:50:43 -07:00
bsitu f79c6a2e0f (bug 48568) Bust IE browser ajax cache + some API clenaup
Change-Id: Iaacdf41d85dc31a07d3d981086bcd919ba1a40e2
2013-07-18 10:31:23 -07:00
Timo Tijhof 467cb69645 Remove override of skin behaviour for inline anchor's text-decoration
Bug: 51617
Change-Id: Iea2d960e5d41420611e6eb8f6e1a9e9d58d6dce0
2013-07-18 15:42:08 +00:00
jenkins-bot 8a0eca6bc2 Merge "Making header widths consistant on archive page in Echo" 2013-07-12 22:32:53 +00:00
kaldari 8056c44d8d Making header widths consistant on archive page in Echo
Change-Id: Ie31f0fbf737e91d324996473b6e192bd91676ffb
2013-07-12 15:31:21 -07:00
jenkins-bot 7eb57c25bf Merge "Updating Talk notification icon" 2013-07-06 00:19:39 +00:00
Bsitu f5c9a828c4 Merge "Revert "Bug 49269: Echo markup adjustments"" 2013-07-02 22:11:42 +00:00
Bsitu 6231a712e3 Revert "Bug 49269: Echo markup adjustments"
This reverts commit 8ff2c4dec3.

Change-Id: I3936c574854640c49689d42586fbddde6a9e45bb
2013-07-02 22:07:16 +00:00
jenkins-bot 66007528f6 Merge "Bug 49269: Echo markup adjustments" 2013-07-02 18:38:59 +00:00
jrobson 8ff2c4dec3 Bug 49269: Echo markup adjustments
separate into multiple ul elements with headings dividing them
This removes need for unnecessary styling rules in mobile web

Change-Id: I8acaef726ea0cc639054cf36d6c3649c7ab25bee
2013-07-02 11:36:02 -07:00
bsitu 8817b53fe9 Fix two typos + one js integer casting
Change-Id: Ie5c4c39e94e5531dbfa48e8cde7b608967cec0c8
2013-07-02 10:37:31 -07:00
kaldari c3badbfd08 Updating Talk notification icon
Change-Id: I9f41c361cf6249afbf115d98c7ac4f2dcab2f9f9
2013-06-28 11:56:07 -07:00
kaldari 972e14672f New primary and secondary link behavior for Echo
See https://www.mediawiki.org/wiki/Echo/Feature_requirements#Flyout
and https://www.mediawiki.org/wiki/Echo/Feature_requirements#HTML_single_email_notifications

Also includes some related style changes per Vibha

Also removing feedback link from overlay since it's no longer needed

Change-Id: I94aed697e87126ed8ad6d1d416c99bafaa53ac53
2013-06-27 16:12:16 -07:00
Krenair ab592dad6f Cleanup JS
* Add missing spaces after 'function'
* Remove underscores from identifiers
* Don't use typeof for undefined with local variables and object properties
* API ok/err is deprecated since MediaWiki 1.20 (< 1.22-alpha), use .done and .fail

Change-Id: I5ca3403ee263a0c3e6709618e48e896340952337
2013-06-23 01:25:29 +01:00
Krenair 7da252eec4 Use mediawiki.api instead of $.ajax
Change-Id: Iea98b6cb338c8b7ebbf244073bb8fe481e5e7655
2013-06-19 21:31:38 +01:00
jenkins-bot eb84e56e65 Merge "Never underline the badge" 2013-06-14 23:04:13 +00:00
Matthew Flaschen ecf7f1f261 Add overlay hook for user scripts.
Bug: 48502
Change-Id: I720d4fe65a6501b552dbef21cb258c027dc18867
2013-06-13 21:27:26 -04:00
bsitu 01e244c8a3 Remove quote around javascript object property name
Change-Id: I5cc7f4179066ab694a67d4c578ed4a562f533ade
2013-06-12 10:51:55 -07:00
kaldari 0558ab1571 Calling functions explicitly due to context
When I changed mw.echo.special.initialize to be called as a
callback from $( document ).ready(), rather than being called
explicitly from the closure, it changed the context, which got
assigned to _this. This broke some of the function calls.

Change-Id: I602a58a82ee91646901d0ab1c8b7bb4b22b3437a
2013-06-11 18:01:41 -07:00
kaldari 902ce9cc04 Don't run mw.echo.special.initialize until DOM is ready
To fix rare race condition in Safari

Change-Id: I2ae556ff6e44f291e761d2937203a3376f4a3177
2013-06-11 14:20:08 -07:00
bsitu 6ffc1cac4b Add clickthrough eventlogging to Echo
Change-Id: I3d05d1aeca92f9a0265a522cc5027ae18394c5b4
2013-06-11 10:46:41 -07:00
jenkins-bot 738d816a6c Merge "Fix some JS issues" 2013-06-10 21:57:13 +00:00
Amir E. Aharoni 5631117ca2 Never underline the badge
If link underlining is on, then the number in the badge
will be underlined. This is probably never needed, even
if the user wants to underline regular links.
Set text-decoration to none in all cases.

Change-Id: Ifaca38a8f0a6a3c8df39502a3da582f639ec6333
2013-06-07 19:44:20 -07:00
Derk-Jan Hartman c638d44190 Echo: Better support for non-default skins, as well as no Javascript
This provides some rudimentary styling support to make Echo usable
with the Modern skin.
It also fixes the Notifications special page so it is styled
correctly in Modern, CologneBlue, or with Javascript turned off.
Also some more tweaks for Monobook skin.
Retiring the 'feedback' link from the special page, per PM.

Bug: 47932
Change-Id: I633a93a78f5a78d0642a3a059fa6f7208f99cec4
2013-06-07 11:36:19 -07:00
Krenair 745330367b Fix some JS issues
Brought up by Krinkle in Icebfe86b (PS4):
    * 'ok' and 'err' properties of Api are deprecated, use promise interface
    * Use 'api' instead of 'Api'
    * $( '<a>' ) instead of $( '<a/>' )
    * Expected space after 'function' keyword

Change-Id: I0199db902174551bcf9269edafb1fef1df118b13
2013-06-06 00:09:28 +01:00
kaldari 5ca8b8f1c7 Suppressing underline on hover for notification badge
Change-Id: I663c5f0d1f03bc8159579892a7d313a535ec48d3
2013-05-30 15:45:16 -07:00
kaldari 43d95d153e Slightly reducing badge and alert sizes
Change-Id: If3c93582dbbdcab14b10ad9fe2926dcc94186756
2013-05-23 11:59:20 -07:00
kaldari f9481040d5 Switch to using our own badge instead of jQuery.badge
With this change we will no longer be relying on JS for the badge
functionality. This will prevent the flash of unstyled content,
and allow wikis to locally override the styling (since the unread
class is now applied immediately).

I also went ahead and made the badge styling more closely match the
talk page message alert styling per Vibha.

Also removed the old full link optional behavior since we weren't
using it, and it would have been a pain to maintain.

Bug: 48165
Bug: 48001
Change-Id: Ie85d66afd5181d487d0bb2776ae14b121ea50d88
2013-05-23 10:34:47 -07:00