Commit Graph

1324 Commits

Author SHA1 Message Date
Tim Abbott c88684d1f5 Fix first message in narrowed views never appearing.
The message list data structure never had the rendered_idx values
initiatized except via _maybe_rerender (called when a message is
selected).  For the narrowed message list for streams with no messages
yet, we didn't select a message (as there was none to select); the end
result is that msg_list.append() will never rerender because it tries
to subtract undefined from undefined and gets NaN in its test for
whether it needs to rerender.

So fix this by initializing _min_rendered_idx and _max_rendered_idx to
valid values for the empty message list (the closed interval from 0 to -1).

(imported from commit 6afecb1569185a842a3a9108cedba7e88f8befad)
2013-03-07 13:24:46 -05:00
Jessica McKellar 9d821b9541 Tweak tutorial text about subjects.
Use less technical subjects, and make them good examples of actual
topics you'd want to discuss (previous examples like 'jQuery' might
leave people wondering "jQuery is a technology, not a topic, why is
that a subject?")

(imported from commit 23b74fe145ed2d325daa94a46e63c42c005b1459)
2013-03-07 10:14:13 -05:00
Reid Barton 6bb9ad4e3c Avoid cross-site logout attacks
Require POST method for /accounts/logout. This has the side effect of
automatically enabling Django's CSRF protection.

(imported from commit 44b1b6ebaadc1c03006e21ae54ac768e31234801)
2013-03-06 19:10:04 -05:00
Jeff Arnold 025b79d98b Don't change focus away from the PM recipient box on keydown
The typeaheads take some time to open and changing focus on keydown
sometimes prevents them from doing so before the focus is changed.

(imported from commit a8153704e60f3d6c34af55a3de5bd43071a15baf)
2013-03-06 18:42:52 -05:00
Waseem Daher f941a58ec1 Suppress enter-replies if a button or link has focus.
This is in response to the following bug report by Evan Broder:

FYI, it looks like if I accidentally tab to the "Formatting" link and
hit enter, it erases the message (and replaces it with a reply to
whatever the selected message is, I think?)

This is subtle and here's why: Suppose you have the focus on a
stream name in your left sidebar. j and k will still move your
cursor up and down, but Enter won't reply -- it'll just trigger
the link on the sidebar! So you keep pressing enter over and
over again. Until you click somewhere or press r.

Net-net though, I think it's a change worth making, because
it's good for keyboard accessibility.

(imported from commit b65bcc0abbc751718bb03d418c03961b9ed9e42b)
2013-03-06 18:10:20 -05:00
Tim Abbott 9f06f5344d tutorial: Remove stale 'Great, you did it!' text.
(imported from commit 224b2ce50f5c86fdcb902a3ac3cc25ada81d51e3)
2013-03-06 18:03:42 -05:00
Tim Abbott bb97019720 Make Tutorial bot's 'exit' reply the same type as the exit message.
I.e. if you sent a stream message, Tutorial bot will reply to that
stream, and if you sent a PM, Tutorial bot will reply with a PM.

(imported from commit 05b7d1848f6eb1f70dcd5fb365fba9daee52a5dd)
2013-03-06 18:03:42 -05:00
Tim Abbott 26a42bfd36 Clean up some copy/paste code in our copy/paste support.
Fixes #823.

(imported from commit a45e853ecdf258e03ceb13419794bd69505c01ce)
2013-03-06 15:38:23 -05:00
Waseem Daher c41fa46fb4 Always show the searchbar 'x'.
This simplifies a bunch of fragile resizing logic in our code,
and also addresses the Chrome Canary bug where clicking in the
searchbox causes the navbar to get huge.

This fixes Trac #764 and Trac #1039

(imported from commit fc8c3995109de384b71dfba2b986a8500ff7f08d)
2013-03-06 15:06:35 -05:00
Zev Benjamin 97344573ef Fix spurious rerender when navigating to a newly arrived message
We weren't properly incrementing max_rendered_idx before.

Fixes #1044

(imported from commit 1bf0ade2a168fde97dc662aaf42511d47b3e81f3)
2013-03-06 14:05:34 -05:00
Jessica McKellar 1f7a74e54f Add color swatches to the stream sidebar.
(imported from commit 16104eb351361a0fabbf7d4b71cb096b7cba0dd7)
2013-03-06 14:00:44 -05:00
Tim Abbott 821b77488d Properly rehighlight messages after rerendering of the message list.
The new message list system can rerender the message list on scroll,
but did not properly re-highlight any messages which were highlighted
at the time the scrolling was initiated due to an open compose box,
this time due to a bug where the meaning of "this" changes when we
moved the rendering code into the message list library.

(imported from commit 26d9716811b56a6f89ae22e68038ad560dcfee64)
2013-03-06 13:34:59 -05:00
Tim Abbott 1992583d82 Properly refade messages after rerendering of the message list.
The new message list system can rerender the message list on scroll,
but did not properly re-fade any messages which were faded at the
time the scrolling was initiated due to an open compose box.

(imported from commit 4bc7c172e8bb55acfaacc5e5460eb6a2ef9aebe2)
2013-03-06 13:34:59 -05:00
Waseem Daher 932aeb86b5 Add a tiny visual indicator that the message is sending.
This fixes Trac #1035.

(imported from commit f8d179f6f5e59922fdc5391624c6efb3da59395d)
2013-03-06 12:09:00 -05:00
Tim Abbott 618183d065 debug: Add verbose stacktrace function.
Zev and I found this useful for debugging what's happening inside
casperjs today.

(imported from commit 6fb42165c4ff138ba3417ac2ee0db92040e49fa4)
2013-03-06 11:36:15 -05:00
Luke Faraone 82d6039fdc Correct selector to apply to the descendants of .message_comp.
Previously we did the equivalent of a $('.message_comp').child('input'),
which does not search beyond the first level.

In addition, using a comma in a selector is essentially an AND, which
means the narrow search only applied to elements of the 'input' class.
So when debugging we saw a bunch of elements being selected and that hid
the bug for a bit.

Now we do a .find instead which will ensure we blur the correct
elements.

This closes trac #1045.

(imported from commit f44383ee9fc93406d031589ef914f5a003334ea7)
2013-03-06 11:22:04 -05:00
Waseem Daher c39aa0b0bc tutorial: Update script and use stream messages.
This now adds you to a special `tutorial-username` when you begin,
we send tutorial messages there, and we remove you from it when
you're done.

(imported from commit a93a90b9347a4f72536e96331ddfd1d47727ce71)
2013-03-06 10:39:51 -05:00
Waseem Daher ca127f8228 Allow tutorial bot to send messages to a stream.
But only allow them to send to tutorial-<<your username>>.

The idea being that this helps reduce potential abuse from this JSON
call. (Because otherwise, anyone could call into this endpoint and
have the tutorial bot send random messages to random peoples's
streams.)

(imported from commit 471d4348d7ad43858b5df240e4f1dceba006aab6)
2013-03-05 23:46:10 -05:00
Tim Abbott 8160795cdc compose: Only blur text boxes in compose box on hide.
Previously, we blurred all input/text boxes, including e.g. the search
box.  This probably won't impact normal operation, but this can be a
problem for our automated frontend tests which tend to have different
timing than real life.

(imported from commit ea84312bea2aae99d51b48cede0746e7a5b6e76e)
2013-03-05 15:48:34 -05:00
Tim Abbott d1fb74e627 Fix rebase issue with same_stream_and_subject being moved.
(imported from commit d3b4f066ea03d63e329491fd5c8d793ee30c0b47)
2013-03-05 15:10:28 -05:00
Tim Abbott a0c60ba236 Fix narrowing by subject when selected message has different stream.
We had a bug where if the selected message had the same subject as the
target message, but a different stream, narrowing by subject would
narrow to that subject plus the selected message's stream rather than
the target message's stream.

(imported from commit 4b196342318a06d8aeea46bf05e3d7416ecb6c5b)
2013-03-05 15:06:31 -05:00
Tim Abbott b1d1863604 Fix narrowing to pm-with lists not in alphabetical order.
Previously if you narrowed to
"pm-with:wdaher@humbughq.com,jbarnold@humbughq.com", you'd always get
no results because our filter was comparing your query against
message.reply_to, which is sorted in alphabetical order.

(imported from commit 40dc78640f3b010f11312176cfcf3c331fdf3337)
2013-03-05 15:06:31 -05:00
Tim Abbott 1d37238a89 Prettify display of narrowing in our search box.
(imported from commit ccb7f4798a949751a396845baf399591b5d83fb3)
2013-03-05 15:06:31 -05:00
Zev Benjamin ba1c170f02 Do just in time calculation of full date and time for messages
The most expensive part of adding the display time to messages is
calling time.toLocaleDateString() and time.toLocaleTimeString().
Most of the time, this information never gets seen, so we now delay
calculating it until just before the user would see it.  This cuts
the time to render a chunk of messages from >1s to ~200ms.

(imported from commit 6167e7a8e1c3b4ca77471fa346292be4ffa67ec8)
2013-03-05 12:48:33 -05:00
Zev Benjamin 4b3e4b118e Don't re-compute display time when rendering a message a second time
Adding the display times to messages is very expensive (> 1s for 400
messages in Chrome on my machine).  This commit doesn't directly
address that issue, but does mitigate its affects on scrolling speed
when rendering the next chunk of the message list.  After this
commit, rendering a portion of the message list for the second time
only takes ~300ms.

(imported from commit b22badb5dcce69be297f6403b1cb40950e46376e)
2013-03-05 12:48:33 -05:00
Zev Benjamin ebabe0caeb Avoid scrolling when rendering a new portion of the message list
(imported from commit f8a2f8ee13b20187df179d41dea5cc14de24e797)
2013-03-05 12:48:32 -05:00
Zev Benjamin 182eb86db7 Only render a small portion of the message list at a time
Long-term we probably want to pick the render window size and
re-render threshold based on the user's window height instead of
arbitrarily.

When we re-render we probably also want to ensure that the newly
selected message appears in the same location as it would have
before the re-render.

(imported from commit f044b7f2200822e8e6e8dba7108d087a69016134)
2013-03-05 12:48:32 -05:00
Zev Benjamin 134fc469ad Re-disable collapsing when narrowed by a search term
This seems to have been broken for a while.

(imported from commit a0bcbffaec53b30e9099befc59e7171d2b96aa68)
2013-03-05 12:48:32 -05:00
Zev Benjamin 5daf327f9d Add a function for narrowing by time travel
(imported from commit 1f8871309a34b0bfef79b671d308d6219f4377b4)
2013-03-05 12:48:32 -05:00
Zev Benjamin bc8bc8567b Make the decision of whether to collapse messages on a per-MessageList basis
This also renames the option to 'collapse_messages'.

(imported from commit 95307ee72b761b72e43d9c7a66f5ba76f7134d9e)
2013-03-05 12:48:32 -05:00
Zev Benjamin d05ac105fe Move clear_table into MessageList
(imported from commit 138c3103920413580f86fede115843ecfddc0691)
2013-03-05 12:48:32 -05:00
Zev Benjamin f6ba728a24 Move message rendering into the MessageList
(imported from commit c1e16b1d2fafe5c079991e7ae96a013e25bc8618)
2013-03-05 12:48:32 -05:00
Zev Benjamin 95309539bc Move same_{stream_and_subject,recipient,sender} into the util module
(imported from commit 0d79bc3ae29be16eba59acea8bc5fda2aba1d4de)
2013-03-05 12:45:12 -05:00
Waseem Daher e662db9c68 Increase the time we mark you as green or yellow.
One of Matt Goldstein's comments is that we often make you look
like you're not at your computer, even when you are, just because
you haven't checked Humbug for a while.

While it's important to have this be accurate, right now I think
we err on the side of showing you as not present. So I increased
some of the timeouts in an attempt to fix that.

(imported from commit 9fd8f432e6684ec1b33d1d932f37caa99c627959)
2013-03-05 11:26:55 -05:00
Tim Abbott a92f2a5229 Rename 'Narrow to messages containing' to 'Search for'.
(imported from commit 147164bb96bb4fdb451454956ac56f5d3b2424b6)
2013-03-05 09:32:59 -05:00
Tim Abbott ee3662d1da Move 'Narrow to' to text inside narrow.describe().
(imported from commit a5ccce0034f4c70b71958b26b60521b779837377)
2013-03-05 09:32:59 -05:00
Tim Abbott 021052a247 search: Remove unused variable search_active.
(imported from commit ebb907742fd38f60116fb0fe46fa622abd3b23e0)
2013-03-04 17:57:21 -05:00
Tim Abbott d5a185dca8 Add highlighting of search terms in "messages containing" narrows.
(imported from commit 47fca2f20650c32e976ab01e213463d4fb4ed655)
2013-03-04 17:57:20 -05:00
Tim Abbott 12bb641e9f Fade new messages that arrive while compose is open.
This might need to change after we merge zev's message list branch, but
it fixes the bug and performs well and isn't a lot of code.

And it has the nice property that it'll only fade messages within the
neighbors range, so there's no need to update the unfading code to
support this.

(imported from commit c562d7335bc5635c960321e1451e4ba0f4452ee9)
2013-03-04 17:29:16 -05:00
Waseem Daher 09a0471486 Update tutorial to reflect presence list on the right.
(imported from commit b3616337b5bcf2b07d7c5ba87f6c0ce185cc5889)
2013-03-04 16:27:13 -05:00
Waseem Daher c1269d9e42 End the tutorial if they don't send us a response.
But lengthen the length of time you're willing to wait for one,
as a consequence.

(imported from commit bbdcf29a8b9d479a08259e5ccabd464e09c18b58)
2013-03-04 16:27:13 -05:00
Luke Faraone d88107567a Remove "find in page" functionality.
This was a source of user confusion and didn't provide that much value.

(imported from commit fbe9405d8bc4cb6661baa7fe7583eab5ed73d886)
2013-03-04 10:59:41 -05:00
Waseem Daher 3ce48f8a45 Make layout more responsive.
To be fully responsive, we can basically never specify the width of
our container in a fixed number of pixels; otherwise we'll run into
the situation where there's an inordinate amount of wasted space on
our left and right.

So everything needs to change from, e.g. row to row-fluid,
and that has a whole cascading series of changes that that implies.

(imported from commit 7e2771d916f429548c65c0a00fc4c11397054656)
2013-03-03 11:04:57 -05:00
Tim Abbott 5502ea9f88 Don't open compose box when clicking on inline images.
(imported from commit 1603b117a322d31e92a3b6684ce8afe33bac0b7d)
2013-03-01 14:50:45 -05:00
Leo Franchi 7374fe53f1 Only show the "More messages below" if unread messages are in the home view
(imported from commit 6b1ded10519305bca935b093a74b59d7ab814c55)
2013-03-01 14:35:39 -05:00
Keegan McAllister ac1c111489 Fill in default recipient when composing while narrowed
Fixes #977.

(imported from commit 1abe26d94d5179a3dd1e970224a36c63bba9ff48)
2013-03-01 14:10:51 -05:00
Jessica McKellar bfbdb94ecf reply fading: get the table from current_msg_list.
(imported from commit 88e504b989a6ee66d162edb424d27765bd5f2ba8)
2013-03-01 13:29:04 -05:00
Jessica McKellar c516ce98e9 Calculate neighbors for replying-to messages fades based on window height.
(imported from commit 522025f16655fc1aa9776f08e991aab05a407ad4)
2013-03-01 13:29:04 -05:00
Jeff Arnold 06a44077aa Prevent multiple enters from sending duplicate messages
(imported from commit 872bb9971a6af3e352318665559e00b502dfb880)
2013-03-01 11:55:01 -05:00
Tim Abbott cad295b9d9 narrow: Fix incorrect default then_select_id.
Previously we defaulted to current_msg_list.selected_id, which was
fine if you were narrowing from the home view, but if you navigated to
a narrow with no messages in it and then clicked something in the left
panel or used the search bar, it wouldn't work.

Fixes trac: #870.

(imported from commit 5ee480d8d2b1fb300fccbe75e04135d977a1fc07)
2013-02-28 17:49:57 -05:00
Tim Abbott 096df2d3da typeahead_helper: Rename render_pm_object and cleanup usage.
(imported from commit 28bca00802e189daed22dcabba1241ef2625536e)
2013-02-28 17:49:57 -05:00
Tim Abbott 49af19aa71 Add support for narrowing by a message's sender.
Fixes #972.

(imported from commit 2514d14c94a071f2b3e6149a2bdaeaa00e0c847f)
2013-02-28 17:49:57 -05:00
Keegan McAllister e8dff94bfc Clear the search box on blur if not searching or narrowed
Fixes #978.

(imported from commit 5aefa1bf369e01e4cb6df15478080a793116628b)
2013-02-28 12:29:52 -05:00
Keegan McAllister db58ede658 Move some search UI code from ui.js to search.js
(imported from commit 4e761636769b320431d34d00bfed6b2ba888fa55)
2013-02-28 12:29:52 -05:00
Tim Abbott a689e704ac tutorial: Clarify the initial reply instructions.
The first change might somewhat address users asking "does it matter
which one I click on?" by not being specific that one should click on
_this message_.

The latter I think addresses a small confusion I've seen where people
try try to hit tab before starting a reply.

(imported from commit 708acdf4d4c80713795b96b1a59d681a88604670)
2013-02-28 11:37:53 -05:00
Leo Franchi 87d294de49 Prepend messages to all_msg_list when loading old messages
(imported from commit cbe862b2ac133a365d0da28f3b761868e01eb48f)
2013-02-28 11:36:41 -05:00
Jessica McKellar e3e5a0656d Wait until after reset_load_more_status to select a message upon narrow.
This is the fix for https://trac.humbughq.com/ticket/958 (Narrowing
moves the pointer) proposed by jhurwitz. Currently on master,
narrowing can cause you to end up wildly out of place.

This branch is not a perfect fix -- you do end up with the pointer on
the expected message after the narrow, but that message is centered on
the screen; better would be for that message to not move at all.

(imported from commit b89e4e2c896add20eceb609db46c46dc025fdce2)
2013-02-28 11:31:58 -05:00
Waseem Daher 6cceda503f Hide the 'Send' button when Enter sends.
Like Facebook does.

Fixes Trac #1019.

(imported from commit 62bd35026ed532d5cb35be9bef5eecd5f63b34de)
2013-02-28 00:00:27 -05:00
Waseem Daher dcba1e3f46 Cause shift-enter to insert a newline, even if enter sends.
This fixes Trac #1018.

(imported from commit 9f1bc3ef3c86077a8852ba7fd23a184a4eac9e68)
2013-02-27 23:42:58 -05:00
Jessica McKellar 6a56ed0c94 Add a button on the Settings page to declare Humbug bankruptcy.
(imported from commit 6ca635e997ada54b816abe3425980102ad8f5d2c)
2013-02-27 18:16:51 -05:00
Jeff Arnold fcd033e33e [schema] Save enter_sends on the server in the database.
(imported from commit 4d82f6aaf5918f155a930253c9cc334dbcc0d97a)
2013-02-27 17:25:29 -05:00
Jeff Arnold 221d3a6740 Introduce an "enter sends" checkbox that defaults to off
(imported from commit abd0f260acac9fa92c651dc677e636781d75e6fd)
2013-02-27 17:19:08 -05:00
Jessica McKellar 4e193377dd Fade out messages surrounding a reply message, to make mixing harder.
(imported from commit da150ad2f0877d058e1a60deb7a7632e52bd3533)
2013-02-27 15:02:47 -05:00
Waseem Daher 801723b45c Recenter your message in view after you unnarrow.
In Safari only, if you narrow to something and scroll all the way back
up to the top and then unnarrow, your position actually remains all
the way at the top!

We explicitly call a "scroll_to_selected" as the final step of
deactivating a narrow, which brings this message into view.

This doesn't seem to be an issue on Chrome and Firefox, but I'm not
quite sure why; something about the sequence of events.

(imported from commit fc73640351be03c02eb2f3c8a23de3327723f002)
2013-02-27 09:14:54 -05:00
Waseem Daher d3ebe22a58 Allow Safari desktop notifications.
Apparently the Safari version of requestPermission wants to take
a callback function as an argument and gets unhappy when you
don't give it to them.

I learned this tip from http://www.inserthtml.com/2012/07/html5-app/

But more importantly, from the draft spec at
http://dev.chromium.org/developers/design-documents/desktop-notifications/api-specification
mentions that requestPermission takes a callback function that is
invoked once the user accepts.

(imported from commit c1d98239028ffce2e294568c5711315f985160a3)
2013-02-26 17:51:31 -05:00
Zev Benjamin e7604e170a Make left sidebar HTML more standards-compliant
(imported from commit 4cfc7789d4b930ea074596ddf06d16638e91c9a2)
2013-02-26 17:18:56 -05:00
Leo Franchi 45322a2791 Always add messageds from get_updates to the home and all lists
(imported from commit d922fa2d80b339ef0f6b76c83d30a7c0fcc29888)
2013-02-26 15:09:55 -05:00
Reid Barton d5ac00aa68 Display timestamps as "Today", "Yesterday"
(imported from commit 7f24d1a86c5ffc9b02d35f43f60ad5cf9143f2e3)
2013-02-26 15:06:45 -05:00
Reid Barton 318ee5df7d Move timestamp updating to an exported function for testing purposes
(imported from commit 9d632eb03564899fe2c8ad937d9e2aaac94e1396)
2013-02-26 15:06:45 -05:00
Reid Barton 593af9daa8 Fix two comments in time rendering
(imported from commit 056c8eb7f77947ac967a73ace404f9262bf05923)
2013-02-26 15:06:45 -05:00
Leo Franchi 1300b684e5 Don't let clicking 'Show in home' change the scroll position
(imported from commit b760abdaa23f9549f15670b14fdaf57c45dc0aeb)
2013-02-26 14:13:35 -05:00
Leo Franchi 19d107e42b Add a home_msg_list that contains all messages shown in the home view
By splitting up all_msg_list and home_msg_list, we can properly add/remove
streams from the home view without having to jump through hoops.

(imported from commit 92767197759f7519197dfc58be951b60fa823fbb)
2013-02-26 14:13:35 -05:00
Keegan McAllister d4e02f10eb Set the favicon href directly on Webkit browsers
We still delete and re-create the node on other browsers.

Fixes #960.

(imported from commit 3f0862793042c4a52d18104060ac2fe2ad21b3e6)
2013-02-25 16:01:29 -05:00
Leo Franchi 64bb48421b Fix jQuery usage and properly show/hide messages table
(imported from commit b6d82a6e717b23ce88407499dc8edb4d4c609270)
2013-02-25 10:04:10 -05:00
Jessica McKellar 11a01dac6c When a narrow would have no messages and just be grey, show a notice instead.
(imported from commit 2b2b653805cb1ebdb545f83b20c01f1d6cbde9b7)
2013-02-23 14:38:25 -05:00
Jessica McKellar cf72ca441f Add the feedback bot to the people autocomplete list.
(imported from commit d32724ca647da5053677dbb7bc720465823d79f1)
2013-02-23 14:38:21 -05:00
Jessica McKellar c1d4bc58e8 Un-break get_updates when you have no messages.
(imported from commit 5221682c8dacdb8d57b4f65749a28f39f2875f3d)
2013-02-23 12:33:58 -05:00
Leo Franchi d08b8459ed Only show unread notifications in the title bar if a message is shown in the home view.
(imported from commit 795a6cb55d480c57e84ea5e17ef3afdc5d62d68b)
2013-02-22 17:05:36 -05:00
Zev Benjamin 6e4093a0a5 Fix the copy-paste code copying too few or too many messages
(imported from commit 2e379618b29cd5c8b168e3f4bdbaa278c5247462)
2013-02-22 15:52:51 -05:00
Zev Benjamin 296d7d89a3 Disallow replying when there are no messages
(imported from commit b2fb2d9508afcf0470665bd9d42bb50826d838e4)
2013-02-22 13:07:26 -05:00
Zev Benjamin 06d69f10d9 Remove superfluous call to MessageList.closest_id
(imported from commit 11d4f096517df4b9ed89f184a1d383c8a55697bc)
2013-02-22 11:46:05 -05:00
Leo Franchi ca0f414b60 Fix narrowing not marking as unread when backfilling messages
(imported from commit 91b164251b0c2f97bf70c0051216347e2a4616eb)
2013-02-22 11:41:35 -05:00
Leo Franchi 9fb5487473 Add a select_closest option to MessageList.select_id()
If we have removed a stream from the home view, and our pointer
that we load from the server refers to a message that is no longer
visible, we don't want to error out but rather select the nearest
message to our previously selected one.

(imported from commit d212f1fba7b06836d1d916b43042991625b6f41e)
2013-02-22 11:39:22 -05:00
Leo Franchi e6bd8271e0 Return undefined from MessageList.get() for consistency
(imported from commit 2fe76786921a1500c6ee7fc57af7de7cea667c73)
2013-02-22 11:37:47 -05:00
Jessica McKellar 947d389a33 Fix incorrect sidebar height, which makes you scroll past your messages.
(imported from commit 7244853c83ea884697f205ec5355403c5007d61e)
2013-02-22 09:58:12 -05:00
Jessica McKellar 015cfb594e compose: remove a recent bit of error handling for subscribe-and-send.
(imported from commit c22ae573904a4532386291e540b8a23dca389a82)
2013-02-21 22:31:25 -05:00
Jessica McKellar 41aa91d300 compose: give users an action to take on subscription errors.
(imported from commit 62b2500bb1993f70b8218cd58fb335de25b18480)
2013-02-21 22:31:25 -05:00
Luke O'Malley eec2487b9e Remove sub-and-send javascript and add 'X' to all error messages
(imported from commit 66fd42914e4fc33719c4f21ad401748989f20b49)
2013-02-21 22:31:23 -05:00
Keegan McAllister 56d183ea06 Remove lurk mode from web client and API examples
See #796.

(imported from commit e238ce571c3f30d8312b630df7048ad1d9cad6d2)
2013-02-21 15:11:10 -05:00
Leo Franchi 982a3fda9a Only ignore website messages from user when calculating unread counts
(imported from commit 95bd6f8c2ce0ad1f5d59e311107f81e4b07b33dc)
2013-02-21 15:05:59 -05:00
Leo Franchi 771eea22b8 Properly auto-complete usernames whenever they appear in a message box
(imported from commit 82ef65125731eb48fa029d16acc28add401ac633)
2013-02-21 14:24:55 -05:00
Zev Benjamin 48e7fed00f Fix the selected message when narrowing to a stream that has no messages loaded
We would previously scroll you to the top of the just-loaded block of
messages

(imported from commit 520e5588aa078313649677663c7feea4ca1d7145)
2013-02-21 13:29:17 -05:00
Zev Benjamin 4c9e3a167e Move message selection to an event-based system
Messages are now selected on a MessageList, which triggers a
message_selected event that other parts of the code can listen for.

(imported from commit 1da9e4121425c0ac4461b41b7aea169072e1512b)
2013-02-21 13:29:17 -05:00
Zev Benjamin ed51bd0432 Select messages on the MessageList instead of calling a global function
(imported from commit 0ea1c2695cda5ec415c42a450103e768cf2ff5db)
2013-02-21 13:29:17 -05:00
Zev Benjamin 9e9b4c8541 Make MessageList.selected_id an accessor method
(imported from commit 144d12ba8be2de02900ef06c3413f660144de8bf)
2013-02-21 13:29:17 -05:00
Zev Benjamin 36798c8d67 Select the closest message to the target after narrowing
(imported from commit e41fcb032af5a8653b7573cb87bbc879a2008343)
2013-02-21 13:29:17 -05:00
Zev Benjamin a91aa7f8f5 Move message filtering from add_to_table to add_messages_helper
(imported from commit 45b1149771a0d96af4c6267fc8457e49c3d10799)
2013-02-21 13:29:17 -05:00
Zev Benjamin 9cac51d0b5 Add MessageList method for finding the closest id in the list to a given id
(imported from commit 244239f44e018940c26626388fd56ff7ac017a80)
2013-02-21 13:29:17 -05:00
Zev Benjamin fc10556b84 Select a more correct message when narrowing by clicking on message's stream or subject
Previously we would select the first message in the block.  Now, we
only do that if a message that is selected will not be in the
resulting narrowed view.  If the selected message will be in the
narrowed view, we select that message once narrowed.

(imported from commit 4da5a3a0b597b58c2e028f1b29ac20ae3808a4d1)
2013-02-21 13:29:17 -05:00
Zev Benjamin e9b915c2b9 Remove global selected_message_id and persistent_message_id variables
Each message list now has a selected message id.

(imported from commit 041abc54ea42c636c30e39df4a2e838bb830e1aa)
2013-02-21 13:29:17 -05:00
Zev Benjamin 97160d79d4 Use the new MessageList for storing messages
(imported from commit 38a04d2ff504aa49189997b972318af7c944d528)
2013-02-21 13:28:23 -05:00
Zev Benjamin 814e3d6385 Implement a message list structure for storing messages and related information
(imported from commit 171de93636a215d9357c7fc4ee8fb71696d23fb5)
2013-02-21 13:27:45 -05:00
Zev Benjamin e19f9fd3d0 Also restore the scrollTop when the hash changes to '#'
(imported from commit 7b93c4692cca0a6e12b8e01560be7ae00240fa39)
2013-02-21 13:25:29 -05:00
Zev Benjamin b2eb4530d3 Fix comment spelling error
(imported from commit 347a860dfb0de2c49c2810f3aa041bc5c4f427d0)
2013-02-21 13:25:29 -05:00
Leo Franchi 36d953e2af Show messages to streams we were just subscribed to
(imported from commit f852be239da1f3385f9fc9861a3ed07a7f47a6da)
2013-02-21 12:10:53 -05:00
Jessica McKellar 382f94b5b5 Move presence information to a right sidebar.
(imported from commit c5533988606f1fc05de6b83eeb39f8f913f6ad42)
2013-02-21 09:23:59 -05:00
Waseem Daher 6913d16f28 Make your name and gravatar clickable as a way of returning home.
I kind of expect this to work, and hopefully this'll help with
people getting stuck on the "Settings" page in the tutorial.

(imported from commit 1159d884dcd331bcfb74864a0176fa293e8c3714)
2013-02-21 14:05:40 +00:00
Tim Abbott 63d7279cce Some small improvements to the tutorial text.
Most of them are just typos or funny punctuation, but this also adds
the word "above" after "You and Humbug Tutorial Bot" since otherwise
the user might try to click the text in the message body and be
confused.

(imported from commit dccaf4acd24db713acab261440f0a9d03860e0f4)
2013-02-20 20:59:36 -05:00
Keegan McAllister c7b88cc708 Disable backfilling 1,000 messages on idle
Right now the MIT realm has pretty bad UI lag with 1,200 messages loaded.  We
need to fix the root problem, but this commit at least makes reloading the page
a satisfactory remedy.

(imported from commit 93d47710891cfc4db9fa00beaa5ccd10113aa1c3)
2013-02-20 18:50:20 -05:00
Waseem Daher af1327230a tutorial: A first draft of a tutorial.
Here I have a sketchy but functional framework for dealing with
all of the async stuff that a tutorial requires, and an early
draft of what such a tutorial might look like.

I could probably go and remove the first-run message, but I'll
keep it around for now in the unlikely event that something I
haven't anticipated goes wrong in starting up the tutorial.

(imported from commit de9779a66a1b3fe790082decb324c90ec180b39b)
2013-02-20 23:04:50 +00:00
Waseem Daher b51dc36667 Add a tutorial.js file.
(imported from commit 58b72d08c0cd7815c3c54bd37c4a8033f32cc7ad)
2013-02-20 23:04:49 +00:00
Reid Barton 8b8f2707e7 Fix bolding of "Home", "All messages", "All private messages" when active
(imported from commit 759729b4b2c0ebac3e3f1c9f74617a2dbea50223)
2013-02-20 17:50:26 -05:00
Reid Barton 873f171fb3 Only perform scrolling functions when the home tab is active
(imported from commit a6bcbadfd94f6312af62648a90a9e4e9b0e97dbc)
2013-02-20 17:50:26 -05:00
Leo Franchi af58956f9e Only show All messages link in sidebar if there are non-homeview streams
(imported from commit b247b651e531debbac2ad34a15b9a758de936348)
2013-02-20 14:24:49 -05:00
Leo Franchi 8162d46d5c Mark as unread messages loaded in a narrow view older than pointer
(imported from commit 37362d1fbb4932f064753a5d3d335d9b2bec2964)
2013-02-20 14:05:49 -05:00
Leo Franchi 0e6ba5ebf4 Hide message table when adding/removing large number of entries
This fixes the issue where toggling show/hide on a stream in the home
view scrolls the page, because the removing and adding of rows in the
still-visible message table causes the cursor and scroll position to jump

(imported from commit 7454284a44af26379a0d2e7fce3683d98e3e4c48)
2013-02-20 13:49:24 -05:00
Keegan McAllister 4c037a938c Add title text to presence entries
(imported from commit 3c27607e59df222c4c8b3113a5efe7cdb23aa37d)
2013-02-19 18:31:26 -05:00
Keegan McAllister bf21c29ce1 Clean up and simplify ui.set_presence_list
(imported from commit edeadfbfc623150e87b7f47c9e46212e24784154)
2013-02-19 18:31:26 -05:00
Keegan McAllister cb45d88cea Get rid of constants activity.user_{active,away,idle}
We don't typically have these (see message type, etc.) and removing
them will allow simplifying the code.

(imported from commit fbefb08ee9b08c73f32c8150a6fa1060957aa8ad)
2013-02-19 18:27:36 -05:00
Keegan McAllister 0b5ba3090a Rename presence CSS classes for clarity
(imported from commit 14b3e80deaf5066210ff7e540b517597884219f3)
2013-02-19 18:27:36 -05:00
Leo Franchi 75fc80be60 Do not show self in presence list for MIT
(imported from commit adbbe0dd9728d4c88fa6865f3d5ae54e715868cc)
2013-02-19 17:36:22 -05:00
Reid Barton 61350d65d1 Render recent dates as weekdays, part 2.
This commit does the actual work of formatting recent dates as weekday
names and updating the format when the date is sufficiently far in the
past.

Also, silence a bogus jslint warning.

(imported from commit 503286fbd9c1e33a81cc7d78cf8d08d5e7f78c1a)
2013-02-19 15:58:25 -05:00
Reid Barton 59dab21fcd Render recent dates as weekdays, part 1.
This commit just moves time rendering logic to its own file, and does
not make any functionality changes.

(imported from commit d111d03c6abc8d9550fcf65e4f89eab8056d1ed4)
2013-02-19 15:58:25 -05:00
Leo Franchi 5d79bb6a20 Add a 'show in home view' toggle to the stream settings
(imported from commit af8bcc4df6fcd9f6ffed4ccb1b9be5261ffe619d)
2013-02-19 15:43:27 -05:00
Luke Faraone 85b6b551f2 Add a notion of "All messages" to the sidebar.
(imported from commit 740711d1fa925055b26249071f79fc0b287d78c1)
2013-02-19 15:43:26 -05:00
Keegan McAllister ebbbc4d8c2 Apply stream bar color class to the compose window as well
(imported from commit 3c3f3d1073a95ceff74a571f1b2c985a7b820c8e)
2013-02-19 15:33:35 -05:00
Keegan McAllister bb5f59d310 Use white text for recipient labels on streams set to dark colors
Fixes #577.

(imported from commit 0518e33b96bc0028fc80d533f6b8ec35fd5cdc04)
2013-02-19 15:33:35 -05:00
Keegan McAllister da7f6e0fe8 Add a helper util.memoize
(imported from commit 16b5c49580e30a51583bc0bc8b11293bba595b3a)
2013-02-19 15:33:35 -05:00
Reid Barton 968d1cd9ee Only show "More messages below" when there are unread messages
Fixes Trac #838.

(imported from commit 9b02820946698cf6ef76f1836b5fd6c3c50ed0f4)
2013-02-19 13:43:34 -05:00
Reid Barton 37b5a84af4 Track total number of unread messages
(imported from commit 0a6f270b8a4debf0cbb7e869ecbff59f39f22049)
2013-02-19 13:43:34 -05:00
Reid Barton bec83b2bc3 Minor style changes to process_unread_counts
(imported from commit 1cf468e4c2d6237772b3424e4941ee2481dc9bfd)
2013-02-19 13:43:34 -05:00
Keegan McAllister 00445c843e Restore the cursor position when shift-tabbing back from send button to content
Fixes #806.

(imported from commit ccdab39b52f3aee387be17f13c91ecfabee2b214)
2013-02-19 11:25:03 -05:00
Keegan McAllister 45dd9e8ec9 Remove Safari Tab-Enter workaround
These days we explicitly handle the Tab hotkey in composebox_typeahead.js

(imported from commit e554a20bf0517f928359ad83f8ba83abb22aa68e)
2013-02-19 11:25:02 -05:00
Jessica McKellar 2852692de5 Hide floating recipient bar on mousewheel scroll but not keypress.
That way it is visible more consistently when arrowing through
messages (arrowing causes scroll events).

(imported from commit ba629b907e4e593032a61a10b04f00e592fe8427)
2013-02-18 21:17:29 -05:00
Jessica McKellar 1b02928806 Only update floating recipient bar at end of scroll.
This makes scrolling much cheaper and reduces jerky scrolling.

(imported from commit 38b620bb13c498556a21962113a94e35a209d52b)
2013-02-18 14:58:58 -05:00
Waseem Daher 2b7b39fe1f Make 'New stream' and 'New PM' buttons work when not on home tab.
This fixes Trac #898.

Prior to this commit, we only changed the tab to #home in
compose.start; i.e. when a compose was not already in progress. This
means that if the composebox was open and we were on the settings
page, clicking one of these buttons would not work.

(imported from commit aa88a605cdcb61d5b6a1ece6292001c5f5a19c66)
2013-02-17 17:45:53 -05:00
Keegan McAllister ddcf2cb86e Set favicon from our generated images rather than using Notificon
We've been noticing a long delay between switching to a window with unread
messages and the time that those messages actually appear.  This got much worse
around the time we added Notificon.

Our hypothesis (supported by some testing) is that the work done by Notificon
in creating a <canvas>, drawing into it, serializing it to PNG, etc. is using
up some quota of background operations that would be better spent rendering
messages.

Switching to precomputed images should mitigate this problem.

Resolves #896.

May resolve #882 to our satisfaction.

(imported from commit a2d98a163486bdd35fdfb5351f96c5529ba5c7e9)
2013-02-15 16:19:50 -05:00
Keegan McAllister c0054f6335 notifications: Remove duplicated code
(imported from commit 3b6fe986ed51a3698460b2e6f984df6f71cc5f6f)
2013-02-15 16:18:24 -05:00
Leo Franchi a1234afc4b Make sure we have a full name for a user before accessing it
(imported from commit 20165ada3f04edd714e5d2e8ee31a388a1ff00de)
2013-02-15 15:56:14 -05:00
Jessica McKellar b8ad7f235a Replace the pipe character between stream and subject with a '>'.
It helps to clarify the relationship between subjects and streams.

(imported from commit 53ed623f3875939c5b6f812de54ccbe616cdb1db)
2013-02-15 11:01:06 -05:00
Waseem Daher f37f6b2d37 Don't show popover on right-click.
I experimented briefly with window.getSelection to try to determine if
any text was highlighted (and then we could've done something like
"Don't popover if text is highlighted"), but I couldn't quickly get it
to work in a robust way, so for now I am removing the feature.

(imported from commit 76048b8fd070675b480a2d29e2c8d7d6018633ec)
2013-02-15 10:50:17 -05:00
Luke Faraone 32a406a5cf Display a total count of the number of PMs you have pending.
This is accomplished by continuning to have per-conversation PM counts
but then summing them up into a global count.

We may split this off into per-conversation counts in the future.

(imported from commit 311e3b74715c3a01c0b75837e397a386ab65505c)
2013-02-14 17:32:22 -05:00
Keegan McAllister 6c12fd3909 Add a basic font size menu
(imported from commit ff0c27ccb177ddc69a31bf8997d31e7cfb5b78b5)
2013-02-14 14:39:32 -05:00
Luke Faraone a9e602c1bb Implement label counts for stream messages.
(imported from commit 45d3d5ba8c2be3ebed8385fb714044ac9419f3c2)
2013-02-14 13:44:06 -05:00
Leo Franchi 1201fc1144 Add semicolons to js statements to pass lint
(imported from commit b67d30c5944276309c4e41b29afa5e55122530d8)
2013-02-14 11:27:36 -05:00
Leo Franchi a86599fc28 Add grey idle icon
(imported from commit f04d74a999a16d0118fdccccf8dcffe9d3da6bb0)
2013-02-14 10:44:41 -05:00
Leo Franchi 6efcfdf593 Show the users themselves in the activity list, at top
(imported from commit e0b3e52719cd27fe1c2755840ea16a69f9d6169b)
2013-02-14 10:19:32 -05:00
Leo Franchi ddef0c3b28 Sort user list by name not email
(imported from commit cc13d1c65625727a923616e402e4c9fd2b5afbb4)
2013-02-13 23:03:18 -05:00
Tim Abbott 874309b959 Fix sending to stream names that are JSON strings.
(imported from commit 51ca1b577796a6f438d5bba4a9e8e0af3293b423)
2013-02-13 13:08:40 -05:00
Zev Benjamin d3f92eeab6 Remove narrow.from_popover()
(imported from commit 5214955658cdbd652777dda1c4351d89b5f220af)
2013-02-13 10:56:10 -05:00
Zev Benjamin bcd0bb80e1 Remove narrow.target() and pass the target explicitly
This fixes #861

(imported from commit 244deaae84db2e8c7c5ce3f9b9b25cc33bdd234d)
2013-02-13 10:56:10 -05:00
Waseem Daher 0f798c7783 Add an orange dot "away" status for presence information.
(imported from commit 7adaff6bee4e3ba3164d2d47b32da28e136c56af)
2013-02-12 17:34:57 -05:00
Jeff Arnold 04d31a12eb Let's not call an expensive function on every mouse movement
(imported from commit 762e4f51210afcc3d394841ee0708dba09e4bc01)
2013-02-12 17:09:35 -05:00
Jeff Arnold d0f422979b Change the favicon on notification (great for pinned tabs)
(imported from commit 025ad165d15b2e6d979c246776148f13ebc555fb)
2013-02-12 16:27:07 -05:00
Reid Barton 5d4206056e Dim the pointer when the window loses focus
(imported from commit ccea3148706ac4e96b0ecbefa5ba1623144c919b)
2013-02-12 15:31:49 -05:00
Waseem Daher 94ceac9980 Add an initial message to greet you.
(And to let you know that it's OK that you have no messages.)

This fixes Trac #850 for the case where you first log in.

(imported from commit 47741856e34f67bfc2cc91bdc21def75ab6fe09d)
2013-02-12 15:21:28 -05:00
Leo Franchi 7e09166f45 Remove sort by PM status in activity list
Now the sorting is done by activity status, then alphabetical.

(imported from commit 202df275f7502eb1c97d6f04880e67392f5cde0d)
2013-02-12 14:41:24 -05:00
Waseem Daher c3cb9a6246 Allow the stream and user lists to scroll with mousewheel.
The previous commit stopped the mousewheel event at .bottom_sidebar,
which means it was never getting to our individual scrolling lists.

(imported from commit 92d32c21bb596d0e14d887ff779a857223d45342)
2013-02-12 11:54:34 -05:00
Waseem Daher 55b05d7bd2 Have the stream list and user list share the sidebar.
This isn't perfect, because if, e.g. the stream list is super short,
it still takes up lots of space that the user list might want to use,
but it's an acceptable first pass solution, in my view.

(imported from commit 669737d769258c089b40ffea4abee3229902e857)
2013-02-12 11:54:34 -05:00
Jeff Arnold f93661e798 Make @**Jeff Arnold** only notify me, not every Jeff
(imported from commit 8e59eceebb4c5af298b0251c126b181cf5899d93)
2013-02-12 10:42:52 -05:00
Leo Franchi 495f7835c8 Make linter happy.
(imported from commit 0c30f2ef176249cd1a06a21946e51a20d6ca7a32)
2013-02-12 10:40:21 -05:00
Jeff Arnold 875e125fb9 Cause @all or @everyone to alert everyone
(imported from commit e2d1cd8b6ea4f2cbae82d052643a5b88e979931c)
2013-02-12 10:27:09 -05:00
Jeff Arnold e2f3a85dbd Clean up the notification code
(imported from commit 5bd811ba40b3f535d474ac53e22fd16816f9bac6)
2013-02-12 10:27:09 -05:00
Leo Franchi b30e277f5a One minute interval for keep-alive pings
(imported from commit f41ffc853c42e75a2e2cb365b73cceac44b7d723)
2013-02-12 10:22:11 -05:00
Waseem Daher 30bed51a65 Style the green 'online now' dot entirely in CSS.
This lets us clean up the HTML a little bit in preparation
for a later change which will cause the stream and people
lists to scroll independently of one another.

Also it feels a bit more fun.

(imported from commit b3b49149d7ec2960fd752fe50b41e55d363c1a98)
2013-02-11 23:15:19 -05:00
Waseem Daher 096e1b7727 Cause clicking on a person's name to start a PM with them.
This is actually a tricky one, because:
* Later, probably if we display an unread count by the person's
  name, the action on clicking them might very well be
  "Narrow to PMs with that person"
* But for now, while we don't have that, everything about
  historical precedent really does strongly suggest that
  clicking that person's name is going to get you a PM with
  that person.

So we implement that. For now anyway.

(imported from commit 4d461fd6edec122d542c4a97e23f2e400c31122e)
2013-02-11 22:36:20 -05:00
Keegan McAllister ca2b48e1ee Prevent scrolling in the stream/user sidebar from moving the message view
(imported from commit b2279b2bac07e29a41b3e5335d2e0d81eb196757)
2013-02-11 20:43:25 -05:00
Leo Franchi 83011f7f47 Show a user activity list in the sidebar
(imported from commit 95aaa55c7e4cc39f844518b5308866bedf2cd1c5)
2013-02-11 18:05:57 -05:00
Leo Franchi 6f18f4465d Don't add a person more than once to our people_list
The full name may have changed

(imported from commit 44cf37b3f5e17c28f0a6b0a4c75a5c22470a9516)
2013-02-11 17:58:46 -05:00
Keegan McAllister b0bdd7fe0b actions: Flip the popover to the top of the message when near the bottom of the page
From the "reimplementing GUI toolkit behaviors from the early 90's" department.

(imported from commit f3aac2e44c77a858f657233dc032cd52c60843e9)
2013-02-11 17:17:04 -05:00
Keegan McAllister f6cc8d3306 Make right-clicking anywhere on a message open the actions popover
(Except for links.)

(imported from commit 82ce229f3bbc647e9a35d93b063075fa68dbfe93)
2013-02-11 13:59:19 -05:00
Keegan McAllister 7fac4afbe7 Refactor show_actions_popover
(imported from commit 1cb7d7c6c032b0c38adc5b4a4e0752d554f07521)
2013-02-11 13:59:19 -05:00
Keegan McAllister 3609f5fdee Add helper narrow.from_popover
(imported from commit 6b20ce7e4eddff03351f5abe8f3f7c080876ea16)
2013-02-11 13:59:18 -05:00
Keegan McAllister 5052460b95 Generalize hover effect for stuff clickable to get the actions popover
Similar to the previous commit.

(imported from commit 4b9558ea204f637467f42995a69b0dbc1e0d8cac)
2013-02-11 13:59:18 -05:00
Keegan McAllister 03cf4199b5 Generalize the message hover effect
We now set a CSS class on the hovered message, which is used to
control email address visibility.

(imported from commit 787e24f71f20aa3a6452e57b94f5ca1a4c8bc32f)
2013-02-11 13:59:18 -05:00
Keegan McAllister 16d62fe5de Combine the actions popover with the timeinfo popover
The message timestamp is now always clickable, and the popover contains the
full long-form date and time.  This addresses one problem from usability
testing (see #470).

(imported from commit ad502dff128ad1c934fc0d3faaf5e2931c91c37e)
2013-02-11 13:59:18 -05:00
Keegan McAllister 520d7b1f97 Rename userinfo_popover -> actions_popover
(imported from commit fab5a44af1acaf93640a2f57ffc25b3e97f55d2e)
2013-02-11 13:59:18 -05:00
Jessica McKellar 0cbe53b9c7 Autocomplete @notifications to your bolded full name.
This is a stopgap to handle e-mail addresses like me@foo.com.

(imported from commit 804b477214d45f46373b2138d5ff9036644c87da)
2013-02-11 10:03:51 -05:00
Keegan McAllister aa644ab757 Remove direct use of x.attr('zid')
See https://wiki.humbughq.com/Code%20style#x.attrzid-vs.rows.idx
for why this is bad.

(imported from commit b341146704af3bb1b477b12d226096ab72b5e269)
2013-02-09 13:52:16 -05:00
Keegan McAllister 8399426b9c Remove incorrect 'title' argument when creating timeinfo popover
Bootstrap ignored this and instead used the title= attribute, containing the
full timestamp, which seems like what we want.

(imported from commit 8442835d61f89bd0bce75c05e17aabe85e0f417c)
2013-02-08 18:24:16 -05:00
Tim Abbott 000b02c068 Clean up code duplication in add_messages.
The interface is a little messy because so many of the inputs change
-- we need to better organize all these variables under centralized
'zfilt' and 'zhome' headings.

(imported from commit b247e86bf63ea2ea2c0d42ef23e8af0ce288d5dd)
2013-02-08 14:43:21 -05:00
Tim Abbott 2d9a21654b Fix messages being added to the home view out of order.
So here's the reproduction recipe:
(1) Find a narrow that doesn't have any messages since 4 days ago

(2) Directly visit that narrow in your browser (or wait for someone to
do a deploy and thus auto-reload)

(3) Wait until load_old_messages has been called at least once

(4) Un-narrow

(5) Scroll up, and notice that the 400 most recent messages are above
sets of older messages.

The cause is that the code in add_messages assumed that
selected_message_id was within the range of message already in the
home view.  This is true in most cases where add_message is being
called, but it is not true in the case that the user was in a narrowed
view containing only very old messages (And thus selected_message_id
would be older than everything in the home view).

We can fix this by tracking persistent_message_id separately and using
that for the relevant test in add_messages.

(imported from commit f0da2561ba68f729343b260adc398029fae6acf7)
2013-02-08 14:43:13 -05:00
Luke Faraone fd1d790b72 Don't show the stream list on Humbug for MIT.
(imported from commit d9f952aaeb910a7c57ce1174141686331224c8c0)
2013-02-08 12:02:05 -05:00
Luke Faraone 686c709788 Add a link to filter to all private messages
(imported from commit 115f84b42c14acdc8d1827bd8d914a9ac6acab43)
2013-02-07 15:35:46 -05:00
Luke Faraone 9c86db20fc Add support for "labels" in the left sidebar.
(imported from commit 5e942a8d0c7f459148a4961736f4c5305e0c51b4)
2013-02-07 15:35:46 -05:00
Waseem Daher 5dfd4485b5 Properly sort member list on streams page.
(imported from commit 702e78810278584fc8b2e217523ee38ff7907471)
2013-02-07 14:17:58 -05:00
Waseem Daher 87b1c91406 Don't show success notifications on subscribe.
A visual change in the form will already have made it clear
that the action succeeded.

(imported from commit 114bc3a9c9ee759993b8e2c80f7d9a479d365e21)
2013-02-07 14:17:58 -05:00
Waseem Daher bd6be38010 Slightly cleaner subscriptions page error handling.
Prior to this commit, successfully creating a stream (or unsubscribing
from a stream) didn't clear earlier error messages.

Here's how you could reproduce it:
* Try to subscribe to ""
  (You get an error)
* Now unsubscribe from something, or subscribe
  to a new stream
  (The error message does not go away)

(imported from commit c3c6fa6081df00378182ff0c3499e9d907577c04)
2013-02-07 14:17:58 -05:00
Waseem Daher e57d8883af invite: Only clear email addresses after successful invite.
Prior to this commit, we also cleared out all of your checkboxes,
which is frustrating if you wanted to invite another person to the
exact same set of streams.

(imported from commit 389f27ec35dc9bf8c9058c5ffa867929ac90f674)
2013-02-06 20:18:00 -05:00
Waseem Daher e98b4b9f1e invite: Draw lock by invite-only streams (and don't select by default).
(imported from commit 1ad8a033801f70d3c6491691eebef79bbce82b77)
2013-02-06 20:15:12 -05:00
Waseem Daher bff57ad983 Only draw the subscriptions-page lock icon at render time.
Because a stream can never stop being invite-only, we don't
actually need any Javascript to manipulate this besides what's
in the Handlebars template.

(imported from commit 30dc3b0baf623d88d03a643f18cd411dbe3eacfb)
2013-02-05 17:24:29 -05:00
Waseem Daher 4da5c83f64 Optionally draw a lock icon by the stream name in the main view.
If it's an invite-only stream.

(imported from commit 02bb80fee6df2cd32ded0c6f2c2b918b8aa8ac05)
2013-02-05 17:24:29 -05:00
Waseem Daher f20bd27cf9 Expose our invite-only bit to subs.js's stream object.
(imported from commit bd4d6f62331262cef5c9763d7e0e9acfd4890396)
2013-02-05 17:24:29 -05:00
Luke Faraone 914aa336c7 Don't send "in" operators to the server, as this is a client-side filter.
(imported from commit 1f3d3c09e24093e038d83985003af0b1c87d4ed8)
2013-02-05 15:34:37 -05:00
Luke Faraone 77d0a07e4f Don't add messages to zhome if the message's Stream has in_home_view=false.
We also introduce support narrowing to "home" and "all".

(imported from commit 53b8dea9c6045a0cde368b3163f6fd6ecde1c649)
2013-02-05 15:34:37 -05:00
Luke Faraone 3de93f2b2b Pass stream information in initial template.
This allows us to remove fetch_colors() entirely, and should speed up page
load a bit.

We also JSONEncoderForHTML instead of dumps so that the result is safe
to embed.

(imported from commit 013630911960e2ac1d0bae6f5df31ad342750594)
2013-02-05 15:34:37 -05:00
Luke Faraone e8afaa8b8e Return a dictionary in subscriptions/list instead of a tuple.
This will give us flexibility in the future to add new properties to the
list.

In order to support that, we now do a list comprehension rather than just
returning the gather_subscriptions list in get_stream_colors.

(imported from commit a3c0f749a3320f647440f800105942434da08111)
2013-02-05 15:34:37 -05:00
Jessica McKellar a9f5513181 subs: compare names using localCompare.
(imported from commit e4dcfe5147601221e720ea6622266402ed09f18a)
2013-02-05 10:12:00 -05:00
Jessica McKellar 4d170530cc subscriptions: stylize invite_only streams with a lock icon.
(imported from commit afa99dbc61ba66a6e9662780ef8daaa3d4f9e543)
2013-02-05 10:01:45 -05:00
Jessica McKellar 6d880c2147 subscriptions: make invite-only checkbox have an effect.
(imported from commit 7ee5c5c88efa4ab21395c03012c2921fd3c5192e)
2013-02-05 10:01:45 -05:00
Jessica McKellar 2e3b793ff2 subs: pop up a modal to specify subscribers on new stream creation.
(imported from commit 0c7614f3adf4022248dced4edaddb9fac11c0792)
2013-02-05 10:01:45 -05:00
Jessica McKellar ce0c43329b compose: split check_stream_for_send into into request and UI response functions.
In preparation for re-using the /json/subscriptions/exists request on
the subscriptions page.

(imported from commit 76eca95b952c4b60e583a050be711023ee5fedac)
2013-02-05 10:01:45 -05:00
Jessica McKellar 018f45d151 subscriptions: add HTML and templates for new stream creation modal.
(imported from commit d19991c7fcdd29feafa877ca8203034028b1e0b2)
2013-02-05 10:01:44 -05:00
Waseem Daher 8f434fb63e Have 'c' and 'C' behave identically to their buttons.
Prior to this commit, if you have the composebox open, pressing 'c' or
'C' clears its contents. This change makes it work more analogously to
pressing the 'New stream message'/'New private message' buttons.

(imported from commit 3de5bf83754d8ab86b1967ce2ba15f5846090667)
2013-02-04 11:46:17 -05:00
Jacob Hurwitz 1d113a4b03 Add the ability to show a custom notification in the bar
(imported from commit b7b763dc364e143409d862838322d63a05daacc1)
2013-02-02 01:16:26 -05:00
Jacob Hurwitz 61acc58947 Add a notifications bar when there are additional messages out of view
(imported from commit 38fa78f63fd520d0b1f09921ba064cba010a6f99)
2013-02-02 01:16:25 -05:00
Waseem Daher 3e28cbc545 Make 'narrow to messages containing x' the default.
As it currently stands, after the introduction of operators, narrowing
to messages that contained X would also trigger a find-in-page.

This stops that from happening, and then also makes the default action
of the search-bar-invoked-without-a-typeahead be 'narrow to messages
containing x' rather than 'find in page'.

(imported from commit 1beffce426c6b00449e7c1c803687a129747ed63)
2013-02-01 13:47:20 -05:00
Waseem Daher 768725cb7c Provide visual feedback that we're working on your invitation request.
This is a tricky one because it's kind of hard to see locally, but
there's a bit of a delay between when you click "Invite" and when we
get back to you. So we give the button a "loading" state so you know
not to click again.

(imported from commit 9c3389a3d06def777427c846d6106f6d9b30cc8b)
2013-02-01 11:26:46 -05:00
Waseem Daher ca68ca58a9 Clear out any old status messages when showing the invite form.
(imported from commit 5961823a3429b419b8d699b6a04e0ccd1607249c)
2013-02-01 11:26:46 -05:00
Jacob Hurwitz c3c79f5423 This magically makes the gear not move when the search box is focused
(imported from commit b562c358f3ba80877e8f03199638c236823d184c)
2013-01-31 19:07:13 -05:00
Zev Benjamin d5fdfd7be2 Make searching for multiple words be treated as the boolean AND of those words
(imported from commit d9e47dd25553cc31eeda615e3a5709436e883ab3)
2013-01-31 18:10:54 -05:00
Waseem Daher 6d5424c910 Put "find in page" as the last option.
Leo points out that if you type a stream name, we probably want
to offer to narrow you to that stream more than we should offer
to find that stream name in the page.

(imported from commit 803ac681ec2f759f4dabb68a40722a07b86a0cab)
2013-01-31 17:50:53 -05:00
Waseem Daher 6cefbde820 Make "Find" option read "Find x in page".
(imported from commit 5d95b996f4d944c285ca6f5bc0f75ea359cb4df2)
2013-01-31 17:50:52 -05:00
Jacob Hurwitz 6e8a972dad MIT should not say create stream
(imported from commit b08de8fb5e73150032fa05bbab464a47e5a4220e)
2013-01-31 11:31:23 -05:00
Leo Franchi 187aec7b0d Fetch ala time travel when narrowing to a message not in the home view
(imported from commit e5449e00f15b1cf234e7fdeecfc94234eb89a799)
2013-01-31 11:10:29 -05:00
Waseem Daher 0eca9fa595 Put 'narrow to messages containing' before 'find in page'.
This fixes Trac #740.

(imported from commit e40ffa149eac3c7d954d6cac617935496d366ce4)
2013-01-30 22:38:56 -05:00
Zev Benjamin 809ba94147 Hide subscriber list warnings when its associated subscription settings get shown
We were already hiding errors, but warnings would persist.

(imported from commit 1fcf69d2214bbfa4aaec0ef7e69632d60306176c)
2013-01-30 11:49:46 -05:00
Zev Benjamin 0c8580d991 Make adding yourself to a stream's member list the same as hitting the subscribe button
Fixes #733

(imported from commit 90d4dd0fec66dec552a7588702c16bac7d120495)
2013-01-30 11:49:46 -05:00
Zev Benjamin 56e29ba11c Add animation effects when hiding/unhiding the subscription swatch and regular settings
Fixes #727

(imported from commit 0d794e3e06c1b5238444712f032961b841e9eedb)
2013-01-29 15:58:51 -05:00
Jacob Hurwitz c82fd34cad Two fixes to the search bar:
1) Make the search hotkey (/) no longer clear the search box
2) Vertically center the "Search..." placeholder

(imported from commit 02dee6b72c4457e160f57d8604164e15e62f5f28)
2013-01-29 15:29:27 -05:00
Jacob Hurwitz ebf85b9075 Change the typeahead sorter so that it now puts name and email matches
(sorted by PM frequency) first, then all other matches (sorted by PM
frequency).

(imported from commit 5119de41c9c847e6972f12b4dafc59a7d010ea82)
2013-01-29 14:40:57 -05:00
Waseem Daher 86b87556a6 Don't jump to top of page when returning from another tab.
This fixes Trac #723 - Message view scrolls to top after reloading on another tab (e.g. settings)

(imported from commit d9134cec6879625d577c43a08d258af3f6dacc5f)
2013-01-28 23:21:43 -05:00
Keegan McAllister 02fd0fbb06 Don't strip leading/trailing whitespace from the compose box
Fixes #719, "Indenting four spaces doesn't create a code block in the first
paragraph".

(imported from commit 697535b2d25d7191b565d26b601bb98722794978)
2013-01-28 18:37:48 -05:00
Leo Franchi 639ec9380a Handle case where @-replies are not at beginning of msg
(imported from commit 2ed80845f49f48de71a5ea1db382dc4d9369f393)
2013-01-25 16:04:17 -05:00
Leo Franchi 64a08a5496 Parse multi-pm recipients to autocomplete nth names
(imported from commit 479d4e02356710636657226cf0dcd51b57503212)
2013-01-25 15:33:22 -05:00
Leo Franchi 4e78d18972 Lookahead on @-searches by removing the @
(imported from commit fd8b4dd19db4f291387397a3a795cf9ade5b195a)
2013-01-25 15:33:22 -05:00
Zev Benjamin 1ba381c4a9 Account for the new top navigation bar when setting the main div height
This fixes #704

(imported from commit 5e73bf38cf0cda661a4c7070eea760934b30e454)
2013-01-25 14:09:30 -05:00
Zev Benjamin 1099b01a19 Make spinners have a lower z-index than the top nav bar
(imported from commit 9e32122efdfc5b5f75e527e3df0ac4363b45191d)
2013-01-25 14:09:30 -05:00
Zev Benjamin c1bd8d821f Hack around loading indicator width calculations sometimes being slightly wrong
Under some unknown circumstances (it happens on Keegan's laptop) the
loading indicator text width calculation returns a result that's a
few pixels too small.  We hack around this by setting 'white-space'
property on the container div to 'nowrap'.  The container's div will
be slightly too small (and thus the text will stick out the right
side by a few pixels), but that's probably OK.

This fixes #698

(imported from commit 2e5b28fb3a1fca78c700af74a452bfafd09a2da9)
2013-01-25 14:09:30 -05:00
Zev Benjamin 2be4a612ff Force spinners to be centered in their enclosing elements
This should fix the weird positioning spinners had when they were
created while hidden.

(imported from commit 777d5c376a3f93b0b7b3b749877070b438b7c102)
2013-01-25 14:09:30 -05:00
Zev Benjamin 842edf31e8 Make the stream list have subscribed streams at the top
(imported from commit daa2037f97041e39cc6a54628c98d39a3c66c5bc)
2013-01-25 12:35:25 -05:00
Leo Franchi 56f4c96a98 Sort recipients by name prefix, email prefix, then pm order
This changes the sorting for autocomplete to:

* Properly prioritize case sensitive and insensitive prefix
* For recipients, prefix-search on email, then sort by most recently sent pm

(imported from commit 893c7a07d678644a418a69656180fadf0d6f374d)
2013-01-25 11:18:50 -05:00
Zev Benjamin 7fe78592fc Hide the color swatch and regular stream settings when not subscribed
(imported from commit 15fb70e1e18bcb9acc5f556a33b9a574cfbb874d)
2013-01-24 17:59:03 -05:00
Zev Benjamin 69a1903f86 Add the user to the member list of a stream when they're viewing the member list
(imported from commit a07c9c507f45c77ff82040f4b226c1a1a0177bd3)
2013-01-24 17:59:03 -05:00
Zev Benjamin 616bd3a1e1 subs.js: Factor out code for formatting and adding users to member lists
(imported from commit 5f929df5c0a105a3774e9e43255d17093ea1496f)
2013-01-24 17:59:03 -05:00
Zev Benjamin 4dbd51033a Hide subscription settings on unsubscribe
(imported from commit 28f08ffdf5ffc4af697563df19b4facb28e9c681)
2013-01-24 17:59:03 -05:00
Zev Benjamin e03fe9e3f1 Expand subscription settings of newly created streams
(imported from commit 6171014fd712b60d83b2a0ac2953d8065c00a585)
2013-01-24 17:59:03 -05:00
Zev Benjamin 2e7d411ef8 Remove redundant success messages from subscriptions page
The fact that the user sees a change (the button changes or a row
appears) makes it obvious that the operation was a success.  The
success messages were only serving to make the page scroll
confusingly when you couldn't see the top.

(imported from commit 471b9304f71bb8533c98d208b855d4d75c04a886)
2013-01-24 17:59:03 -05:00
Zev Benjamin df712b7794 Move the "create new stream" form into the subscriptions table
(imported from commit 6cfccf01b4253423e271a08c74f6077cbc10fce3)
2013-01-24 17:59:03 -05:00
Zev Benjamin 6082222a68 Don't try to show all streams on the subscriptions page for the MIT realm
The query fails anyway, so this is not a safety check.  This commit
makes it so that MIT users actually see their subscriptions instead
of an error.

(imported from commit ee635943728d7d9823e118d9fa51c402b1cd9bf2)
2013-01-24 17:59:03 -05:00
Zev Benjamin 3250e83e66 subs.js: rename render_subscribers() -> should_render_subscribers()
(imported from commit a7273c330ad94001cc008bcd06a60a0e11fb937c)
2013-01-24 17:59:03 -05:00
Zev Benjamin 0d9c2fd7f4 Show all public streams on the subscriptions page
(imported from commit 1f00e864a7ae653aad02328dff1b8683c5d585d9)
2013-01-24 17:59:03 -05:00
Zev Benjamin 72ebecf801 Do initial stream color fetch in subs.js instead of zephyr.js
(imported from commit e819e04951be037241b43c8c7061c7979038b7b8)
2013-01-24 17:59:03 -05:00
Zev Benjamin 6e05a72898 subs.js: Simplify subscriptions management
We now keep around the subscription information for streams that the
user unsubscribed from in stream_info and have a field that
indicates whether the user is currently subscribed.

(imported from commit 973e2f4bd4139157b03d7c1a372db93a1a5130f7)
2013-01-24 17:59:02 -05:00
Zev Benjamin 7f2252cfa8 subs.js: Factor out code to set stream color
(imported from commit 40c907976aef0d860d4963285be96430f719d0a7)
2013-01-24 17:59:02 -05:00
Zev Benjamin 8e7ac23d2b Make subs.js the keeper of the streams list
(imported from commit 566f529757bb83ad8dd4e52d3fc8c1b90c497ca2)
2013-01-24 17:59:02 -05:00
Jessica McKellar f53e31e118 If a web client is requesting message that are too old, force a reload.
If get_updates requests a message ID that is too old, Tornado will
return a 400, and currently the only way to start caring about newer
message IDs is to reload.

(imported from commit 1638d71868475ffd793162afc7a2731cab14bd75)
2013-01-23 11:33:07 -05:00
Waseem Daher 1f103231e4 Unbreak scroll-position-restoring for the settings page.
(imported from commit 81dcf4d81189764710506294ee4f9400ecd5d883)
2013-01-22 17:18:51 -05:00
Waseem Daher 34bc6c8034 More reasonably scroll when you switch to the subscriptions page.
(imported from commit 549521cb3f8125b90728d62ce0e334f5a6c1a9e5)
2013-01-22 17:18:51 -05:00
Waseem Daher 01ee0ccc9c Return to home view if a search is initiated from elsewhere.
(imported from commit a7453f269cabc2dd349a9711fcb6e84de18fecd7)
2013-01-22 17:18:50 -05:00