Commit graph

64 commits

Author SHA1 Message Date
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
Ebrahim Byagowi 88937d21c1 Native digits on 'mw-echo-overlay-title-text'
Change-Id: Icdd52ea0267ffbaa0e103070655735eff8423ca1
2013-10-13 19:34:03 +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
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
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
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
bsitu f79c6a2e0f (bug 48568) Bust IE browser ajax cache + some API clenaup
Change-Id: Iaacdf41d85dc31a07d3d981086bcd919ba1a40e2
2013-07-18 10:31:23 -07:00
bsitu 8817b53fe9 Fix two typos + one js integer casting
Change-Id: Ie5c4c39e94e5531dbfa48e8cde7b608967cec0c8
2013-07-02 10:37:31 -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
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
bsitu 6ffc1cac4b Add clickthrough eventlogging to Echo
Change-Id: I3d05d1aeca92f9a0265a522cc5027ae18394c5b4
2013-06-11 10:46:41 -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 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
bsitu 97e5e0a92b (bug 48304) Add 'Feedback' link to the Notifications flyout
Change-Id: I86e7b5e6762557743752e433a6e2a007596b1891
2013-05-09 16:13:38 -07:00
kaldari cd7ef2a52d Making sure moreinfo id is unique on archive page
Also adjusting position by 1 pixel!

Bug: 47889
Change-Id: I6e3dee7b5ce16c5de8ee564383d353a032623d25
2013-04-30 12:33:59 -07:00
kaldari b3391e42ff Only the 'Notifications' part of the header should be bold
When there are more new notifications than can fit in the overly
it shows a message in the header alerting the user. This message
should be in regular text, while 'Notifications' should stay bold.

Changed per Fabrice.

Change-Id: I21dc0ed516e5656c6d1965970d7a5f313e317aa9
2013-04-24 21:51:27 -07:00
kaldari 24b00328b6 Adding help button to flyout. Fixing ID name per conventions.
Change-Id: Id7243ba8e8599e1413203f951e96b73e2a6ceb9c
2013-04-24 21:36:03 -07:00
kaldari 9448c6cab0 Add 'Mark all as read' button to overlay
Button is only shown if there are more unread notifications than
fit in the overlay.

To avoid performance issues, this version only works for cases where
the number of unread notifications is less than the maximum count
(99 currently). Otherwise the button to mark all as read isn't
displayed (it's also limited on the server-side for good measure).

Bug: 47092
Change-Id: Ifcb0a436e2b31062741c441cca239d35ddefa0e1
2013-04-18 00:29:36 -07:00
Siebrand Mazeland d440540cf8 Add .jshintrc
Per https://www.mediawiki.org/wiki/CC/JS#Linting. Update a few files to
bring the tests closer to passing.

Change-Id: I08b190e8b44dbdbeb56de5c380d0ed4a8394aca2
2013-04-18 00:36:08 +02:00
kaldari 3800103c1c Better limits on number of notifications in the flyout
Change-Id: Ic53f6ebe530a73ef89204a96b22194a17d034a12
2013-04-09 17:43:57 -07:00
kaldari 47f720b81b Making some changes to the flyout links per Vibha
Entire link areas should be clickable

No longer a need for conditional link to archive

Change-Id: If4954f7da91ed823e7714cccb541e4f2e64b16b1
2013-04-02 17:47:40 -07:00
Kaldari 28fa282a65 Fixing issue with RTL display of badge and pokey
Change-Id: I49ab97ef062fd9a58da80ff0f5fbd21a72770855
2013-03-14 10:41:59 -07:00
Kaldari 4bd3ab66a4 Changing flyout title to be a non-linking header per discussion
Having two links to the archive page is redundant and the meaning
of the title as a header for the list is lost.

Change-Id: I8dce36309e10854b9ff799c82501b6d59df0c621
2013-03-08 21:18:32 +00:00
Bsitu 18f9b513d2 Merge "Fixing dismiss functionality for new checkmatrix system and categories" 2013-03-07 23:21:29 +00:00
Kaldari fcb5d99b37 Fixing dismiss functionality for new checkmatrix system and categories
Change-Id: I3b64c4853587d4d2d8f04fc97c9b3ddb15b520ed
2013-03-07 15:11:46 -08:00
Kaldari 1f88af134b Echo style tweaks per Vibha
Change-Id: I4111092e32213b50ccb0e8dee849a2edfb645827
2013-03-07 10:40:54 -08:00
Kaldari 8357f4bd75 Implementing new prefs system for Echo
Change-Id: Id745ed6cf1c92695569597fab6ea662bac8c76c0
2013-03-05 12:20:17 -08:00
Kaldari 16331eab92 Adding dismiss functionality to flyout overlay.
Change-Id: Ibfbdb2a9f170e1d9b30b50e8639aee25101e71d6
2013-02-14 11:01:03 -08:00
Kaldari 31258ba23e (bug 43974) making sure that badge is only applied to immediate child
Change-Id: I7039695e36d5641a605a25d1fa714d845b0be383
2013-01-15 17:29:06 -08:00
Kaldari 17cbe366c1 Docking overley to notifications link rather than side of window
Also adding okie dokie pokey

Change-Id: I7d37c2bfa622746d7f153653988c1eb800d0c261
2013-01-10 16:33:11 -08:00
Kaldari bc45a664d2 Determine number of notifications to display based on height of the window
Change-Id: Ib26182a543050e20a3dbc2975c8b6ff762d0a19c
2013-01-08 15:05:22 -08:00
Kaldari 05e186c7a3 Setting up flyout formatting as a separate formatting option
This is replacing the implementation I did for 'html-light'.
The reason html-light doesn't work is that we don't have any way
of reliably determining which parameter should be the one that is
linked to in the notification title (flyout notifications are only
supposed to have one link). With this system, the notification
definer can specify a separate message/params combination to use
specifically for the notification flyout. If they don't specify
these, it falls back to the normal title message/params.

Change-Id: I35394849cf99307eba4a76e079333d19514fdb5d
2013-01-08 09:53:31 -08:00
Kaldari 486813026d (bug 43432) Dock links bar at bottom of Echo flyout
Change-Id: I79d76929746b6ee7a788e1b4e363425781d5687e
2013-01-03 19:04:15 +00:00
Bsitu f94654389d Merge changes I388b8bbc,I85146f7e
* changes:
  Separating html and html-light formatting for notifications
  More work on our custom edit summary parsing
2013-01-03 18:51:40 +00:00
Kaldari d6ad22ed81 Separating html and html-light formatting for notifications
Change-Id: I388b8bbcce741005b34b87d7331e22d442ef1c9b
2013-01-02 17:52:07 -08:00
Kaldari 69e4d5f9a2 More formatting tweaks per Vibha
Change-Id: Id8c536fabe2151031eeafba697c16e0141710741
2013-01-01 01:28:11 +00:00
Bsitu 4f9d3efb07 Merge "(bug 43431) Link the flyout title" 2012-12-31 23:31:17 +00:00
Krenair 66c93904f1 Try to fix jenkins lint tests
From
https://integration.mediawiki.org/ci/job/mwext-Echo-jslint/142/console
18:54:22 >> modules/overlay/ext.echo.overlay.js: line 56, col 49, ['list']
is better written in dot notation.
18:54:22 >> modules/overlay/ext.echo.overlay.js: line 37, col 44, 'window'
is not defined.
18:54:22 >> modules/overlay/ext.echo.overlay.js: line 127, col 21,
'window' is not defined.
18:54:22 >> modules/special/ext.echo.special.js: line 58, col 49, ['list']
is better written in dot notation.
18:54:22 >> modules/special/ext.echo.special.js: line 112, col 25, Bad
line breaking before '&&'.

Change-Id: I2676a3e07d9d5f7419dd9030dbf218b2c0094cf1
2012-12-27 22:06:20 +00:00
Krenair da58d50b5b (bug 43431) Link the flyout title
Change-Id: I7bad541ee1f05f9135fd1ba23aecab7e864d8652
2012-12-27 16:50:00 +00:00
Kaldari d42b1db8cc Reworking overlay for edge cases - no notifications, or too many to show at once.
Change-Id: I6af535bf35c5594ed0c4dfad92defffff8b0e02e
2012-12-17 18:40:07 -08:00
bsitu 41139e43a4 Remove redundant 'mark as read' API call for read items
Change-Id: I95677fe378d8b1b6dcf90e22886670391aa7d451
2012-12-13 17:04:37 -08:00
Kaldari 704147d1d2 Fixes to the toolbar link for notifications per Vibha
New badge behavior - Show badge even if zero notifications
Enable long and short links - i.e. 'Notification (X)' or just '(X)'

Depends on core change https://gerrit.wikimedia.org/r/#/c/38258/

Change-Id: Idc2288a4ddd0bf788ccdadb96d4744d223edaf0a
2012-12-13 14:07:32 -08:00
Kaldari f519bca628 More formatting work on the overlay and base files
Change-Id: I8512c317d6c0a3db9e3fd0aa2b58a87f8f276b45
2012-12-10 18:02:19 -08:00
bsitu ad14fdbc57 Modification to all notification page
patch set 1:
	* Consolidate notification retrieval in API and Special page
	* Add load more function to special page with records as old as 7 days ago
	* Add support for browsers with javascript disabled

patch set 2:
	* Remove trailing whitespaces

patch set 3:
	* Fix some i18n issue
	* Fix variable names and some exta whitespace
	* Load core css files on special page rendering

Change-Id: Ic69e430b5eb196e5223a2bb6b1d447ef257d559b
2012-12-10 13:51:26 -08:00
bsitu 2a7e26e5af (bug 42074) All notifications… is sometimes unnecessary
Only show 'All notifications' link if there is notification to show

Change-Id: If3f87ef07b9aaa5a30d2e1e52c8f7a6d445d8eb4
2012-11-14 11:25:13 -08:00