Commit Graph

3582 Commits

Author SHA1 Message Date
Allen Rabinovich a222efff66 Fix overflow in stream list and clean up dropdown toggle.
This fixes Trac #1328.

(imported from commit 497147d71c529d0fcfdcb9199c850823b1a4778d)
2013-06-12 16:35:48 -04:00
Waseem Daher 2927b3c3b6 Replace "info" with "chevron down" for message context.
(imported from commit a12d3ce9adfe6b3c019f252f9361a9f6da59ebaf)
2013-06-12 16:35:36 -04:00
Waseem Daher 275d851c56 Draw our left sidebar dropdown arrow in a more reasonable place.
It was previously way way too indented.

(imported from commit c40980451a8851321496c744d379b0d95e19a0f8)
2013-06-12 16:35:36 -04:00
Waseem Daher fda6bfdd4e Make skinny navbar gravatar more consistent with our visual styling.
(imported from commit b9a84dd490bddbdfea85668ad1fcf3c29da2c837)
2013-06-12 16:35:35 -04:00
Waseem Daher 9d62c49c83 Make left sidebar gravatar more consistent with our visual styling.
(imported from commit 0a859184d89fbcfb3ab4e7311f3b86a2f9d89d88)
2013-06-12 16:34:59 -04:00
Allen Rabinovich b7694e5109 Widen the message feed.
(imported from commit 76816ff7b43748d4a16c4b7a5def5ec68262dec3)
2013-06-12 16:34:18 -04:00
Allen Rabinovich d729cb49ce Replace some of the skinny navbar glyphicons with vector icons.
(imported from commit c94a7fa3e0cd303933b2a3824e9f9526b891fa5d)
2013-06-12 16:34:17 -04:00
Allen Rabinovich 743ccda154 Change stream/subject separator to a right chevron (>).
(imported from commit ae64fdc2cac57857431b8962feff40c7be3aaa7f)
2013-06-12 16:34:17 -04:00
Tim Abbott a0bdefb71d Fix 'undefined is not an object' traceback with update_active_status.
This seems to only happen with Firefox for some reason.  We've had
similar issues with other ajax endpoints, so this is probably not the
long-term solution, but I'd like to get this traceback fixed now.

(imported from commit aa552fb56882ae2c73e352c7baf9532a88c5cf0a)
2013-06-12 16:21:10 -04:00
Tim Abbott 34904c51a3 Sync the local user's API key into test database.
(imported from commit 999334fea0d922ced506b454163e640a35a30509)
2013-06-12 16:21:10 -04:00
Steve Howell d740d7c082 Show user-uploaded avatars on the website.
Show user-uploaded avatars on the website for users who have
UserProfile.avatar_source == 'U'.  (Continue to show gravatars
for other users.)  This includes the home page, the visible-phone
div, and the settings page.

This fix does NOT address a few things:
* There is no GUI to actually upload user images yet on the website.
* The !gravatar syntax in bugdown will continue to show gravatar images
  only.
* We are not changing identicon behavior.

(imported from commit 9f5ac0bbe21ba56528048233aab2430e4dd431aa)
2013-06-12 15:34:51 -04:00
Steve Howell ac7c8d18bf [schema] Add avatar_source column to UserProfile.
(imported from commit b4a6788002851b2e8b6f7be61b11af57378c0ee6)
2013-06-12 15:34:40 -04:00
Kevin Mehall a2dc6eb082 Don't hide the compose error immediately after showing it. Trac #1360.
(imported from commit 45d1bc7f771d553d370fcab837abf70aec4f4c11)
2013-06-12 14:26:36 -04:00
Steve Howell e753fd8088 Simplify setup for Humbug internal users.
I moved the list of internal users out of populate_db.py and
into settings.py, and I removed some dead code related to sqlite.

(imported from commit 1e080716dc296c05f51cdd229911082469de64bd)
2013-06-12 11:42:18 -04:00
Leo Franchi 8f75beb9ec Shrink and move connection error to sidebar
(imported from commit 08d7a0106a1faeece81398eeb6a7aa5d8b55ef23)
2013-06-11 17:33:17 -04:00
Leo Franchi 71e14674aa Be more judicious in our showing of errors
Don't show an error banner for any uncaught JS exception, as often the app
will continue to work fine, and there's no way to dismiss it other than
reloading the page.

Also, don't show a transient "could not connect to humbug" error if
the check-for-messages-in-narrow request fails.

(imported from commit 2c634ba088b58c17fa5b2e3353b0589d40b8e357)
2013-06-11 17:33:17 -04:00
Kevin Mehall 5b4493926f Clicking a message that is being edited should not open the
main compose dialog for a reply.

(imported from commit 0a91b3c2ddba12ec33daf993dd13c1e7a7f4065c)
2013-06-11 13:53:59 -04:00
Kevin Mehall b906112c87 Use buttons instead of links in message edit form for the correct
default keyboard behavior. Trac #1322

(imported from commit 2724022f7aa8286b72145dd442c93501f201f6ef)
2013-06-11 13:53:59 -04:00
Kevin Mehall 1989974d43 Fix comment to describe the file it's in rather than a file it may
have been copied from.

(imported from commit 889b5d421c43c62d17a108ae112eff4b7807539f)
2013-06-11 13:53:59 -04:00
Kevin Mehall a08ce5023c Revert "Start compose when box gains focus, whether by click or tab. Trac #1245."
It makes the stream and subject sometimes not auto-fill when replying.

This reverts commit 86603aefbbcd5f766b0c397583483810948046de.

(imported from commit 934e991566fa7a082ab8e2ba661ec973bce46b85)
2013-06-11 13:33:17 -04:00
Kevin Mehall 63babd642c Start compose when box gains focus, whether by click or tab. Trac #1245.
(imported from commit 0c67f6b4eb2387b5e85bcff6d8ea9ed8889ffaea)
2013-06-11 13:17:43 -04:00
Steve Howell c2ab6428b8 Handle shifted hotkeys better.
Treat shift-space like page-up.  Let the browser handle
shift-page-up, shift-escape, and similar keystrokes.

(imported from commit 31d5c5eb1dd4af7228c5e7794fb4cffc4bd8e88b)
2013-06-11 11:49:53 -04:00
Steve Howell 19adec9d2c Make hotkey.js less error prone to modify.
I extracted get_event_name(), which should help isolate
the problem of identifying keys from the specific mechanics of
dispatching actions for given keystroke events.

(imported from commit 058c0749016dc17cce554788e10ccb32438e9dfe)
2013-06-11 11:49:53 -04:00
Leo Franchi 76c9e27a76 Disable composebox experiments on prod
(imported from commit a553320e7d775978ee31af0f8920cbfeb705f5cb)
2013-06-11 11:41:34 -04:00
Tim Abbott 96ad1dd379 Properly escape stream/subject in left sidebar recent subjects narrows.
(imported from commit 4154d0dcd69af66b3a6bb07678c64e5eb39e6b07)
2013-06-10 17:26:21 -04:00
Kevin Mehall da11e2e8df Make error messages visible (trac #1294).
ce4e860a introduced CSS `.alert{display:none;}` because alerts are
always included in `/signup/` and shown by JS. Use a new `.alert-hidden`
class for this purpose to avoid breaking other pages.

(imported from commit 199ba35dd3356bd4093aac2a54181331b3993ee8)
2013-06-10 16:42:43 -04:00
acrefoot 10d63dff9a stop emails regarding bad hotkey parsing
Why are our tests so incomplete?

(imported from commit 8d94a95f514edeb6ddb74774224fee062af3b5df)
2013-06-10 15:34:11 -04:00
acrefoot b3be518b5a Fix previous hotkey fix
re-enable 'j' and 'k' hotkeys.

(imported from commit 61a9025c4b0560f9f6ce4e9699e191c40106fcde)
2013-06-10 15:19:11 -04:00
Zev Benjamin 03b40d180c Add logging filter for checking that the app is actually deployed
(imported from commit 77bd7e008fdea4033e18a91d206999f9714e0f74)
2013-06-10 14:59:29 -04:00
Zev Benjamin 7d999160ab Move logging rate-limiting code
The new file can't be called logging.py because then it would be
annoying to import the system logging module within it.

(imported from commit 71d116e4be98d45b09dda049a43142a82647b727)
2013-06-10 14:59:29 -04:00
Luke Faraone 95a45b8c97 Update name of bridge.notify → bridge.desktopNotification.
The function is getting renamed on the bridge due to a conflict.

(imported from commit 086866d3b08b1cfb8a46ffcc59902175a98aa8e8)
2013-06-10 14:58:13 -04:00
Waseem Daher eaad981def Remove font size menu.
This, in effect, reverts ff0c27ccb177ddc69a31bf8997d31e7cfb5b78b5.
The rationale here is that actually we look pretty good with the
browser's own zoom/font-size-resize in Chrome and Firefox, and it's
better to let the browser handle these kinds of changes than us.

(imported from commit 5949b57bdaf20d4fdf2bbd7ed89d1285a8b8e453)
2013-06-10 14:57:29 -04:00
Leo Franchi 0fa857d524 Add a fixed: option to bootstrap.popover and use it
(imported from commit fe8768b8a320df7670c204880bffb3932568cc5e)
2013-06-10 14:25:28 -04:00
acrefoot b27bb3fc33 Check e.which on hotkey events for charCode != 0
"(" and "↓" share the same e.which, but only "(" has a non-zero
charCode. This commit will start checking for non-zero charCodes
for directional keys.

(imported from commit bcb8c3c5ef2c13708fd04cca5f4d8b0f65beaa84)
2013-06-10 12:39:39 -04:00
Leo Franchi f4132ace48 Fix bankruptcy event sent to graphite
(imported from commit b016ab41ddc2636b76a49c9eb33b7becd387557d)
2013-06-10 09:17:43 -04:00
acrefoot da361b9208 jbarnold composebox UI experiment
1) When you send a message, restore the focus to the composebox, targeted at the same recipient
2) If the composebox is completely empty and you press up or down, have that close the composebox and take the appropriate action
3) If you started the compose via a reply option (r, enter, click), don't refocus the composebox if the cursor has changed.

(imported from commit 84545e49d06959eb62e7fd2b22e1387383df6d1d)
2013-06-07 17:39:31 -04:00
Steve Howell f213c3d223 Fix today's regression with ever-growing subject pane.
I tried to remove the line of code that removes the old
subjects as part of rebuilding the new ones, but that line
of code is still needed in places.

(imported from commit 97621553c267a79f33d34537a67101464bdac434)
2013-06-07 16:33:33 -04:00
Steve Howell 0c8ede3bc5 Collapse subject list when narrowing to PMs or @-mentions.
Previously, we would only collapse the old subject list if
the new narrow had a stream operator.

(imported from commit 664f984d932d0968a9b901f2a09272e11138843d)
2013-06-07 14:27:09 -04:00
Steve Howell 0087ad1131 Allow subject counts to increase from zero.
Before this fix, you could expand a stream, and then any
subjects that already had a zero count could not be
incremented when new messages came in, until you rebuilt
the subject list again.

(imported from commit 98c95e201f6ec745d7c857da6f42495c8bf88ee0)
2013-06-07 12:28:06 -04:00
Steve Howell cc8a04cb71 Update unread counts for Uppercase Subjects.
(I also introduced a couple local variables that would have
made this and similar problems a bit more convenient to debug.)

(imported from commit 6793c16ffb17514fd9b5a069d384d2c74dac6111)
2013-06-07 12:07:23 -04:00
Steve Howell 224fcebfc9 Extract viewport.is_below_visible_bottom().
This encapsulates logic about things covering the viewport
inside of viewport.js.

(imported from commit 429e979fb0ab288d94064b75280a8b053f9a2aa4)
2013-06-07 12:03:07 -04:00
Leo Franchi 3cb34cf246 Rate limit jira and beanstalk API endpoints
(imported from commit ea299df983d53ee3f917f3c7314e78e813fe95a2)
2013-06-07 10:32:41 -04:00
Tim Abbott f41d9c8c5d Fix traceback when clicking on right sidebar unread counts numbers.
If you clicked on the unread counts span inside the right sidebar
links, e.target would not be the link itself but instead the count
span inside the link, so the extraction of the user's email address
was incorrect.

(imported from commit 559d93622078e4d909f60de794df3f039ea7e5f2)
2013-06-06 17:50:33 -04:00
Tim Abbott dbeaeeaa3f Fix buggy computation of a user's name for user actions popover.
(imported from commit 4ee8aab9ece6ebf699c706cf0368180e714dcd6f)
2013-06-06 14:18:49 -04:00
Tim Abbott 16ffd539af Fix computation of original pre-editing message contents.
(imported from commit ebbdc2580cd502bfb2fb07fa144ab6f815b960e7)
2013-06-06 14:18:49 -04:00
Leo Franchi 68b890ac0a Make name completion pop above instead of below, and increase to 5 maximum names
(imported from commit e663b8e6815c282c6233cd8ed560a82dccc6c507)
2013-06-06 14:11:27 -04:00
Steve Howell 1cd113db10 Move message_viewport_info() from ui.js to viewport.js
The message_viewport_info() function encapsulates our logic
around the compose box and other elements blocking the viewport,
so viewport.js seems like a more logical home for it.  It also
makes ui.js, one of our largest modules, a little bit smaller.

(imported from commit 7838668b28175e161b87a6d7a8124b73012f0ff3)
2013-06-06 11:59:45 -04:00
Leo Franchi 29d0b923d1 Ensure we get strings out of .data()
(imported from commit e6fb4b658f6b3505e017e5582ac5eb0ede58d1c4)
2013-06-06 11:26:14 -04:00
Leo Franchi bfd2952876 Don't assume 2nd-operator subject means first-operator is a stream
(imported from commit e60ec8387dd843fe504fd5d82808ffd42470518a)
2013-06-06 11:26:14 -04:00
Tim Abbott 871e1b65d3 Don't highlight message edit diffs on prod for now.
(imported from commit 2bfba46c42216f5b4e83098f22291a089d527d7d)
2013-06-06 10:40:17 -04:00
Tim Abbott 0ad1094e45 bugdown: Add custom per-realm filters to linkify certain strings.
I've tried to do this in a way that's scalable and easily configured,
so that we can add new such filters for customers on-demand without
needing to add anything other than a bit of configuration.

Once we're confident in the arguments to this system, I think we'll
want to move the regular expression lists into the database so that we
don't need to do a prod push to modify the regular expression lists.

The initial set of regular expressions are:
(1) Linkifying e.g. "trac #224" in the Humbug realm, so we're exercising this code.
(2) The various ticket number things CUSTOMER7 uses for the CUSTOMER7 realm.

(imported from commit 992b0937b9012c15a7c2f585eb0aacb221c52e01)
2013-06-05 17:48:21 -04:00
Tim Abbott ceacf6f97e tests: Don't call bugdown.convert() directly.
(imported from commit 495e8a050d8bb69e33ae7c0da06ffbec96e11c31)
2013-06-05 17:48:21 -04:00
Steve Howell 5a826040d8 Clean up code for unread counts and notifications.
The core simplification here is that zephyr.js no longer has:

  * the global home_unread_messages
  * the function unread_in_current_view() [which used the global]

The logic that used to be in zephyr is now in its proper home
of unread.js, which has these changes:

  * the structure returned from unread.get_counts() includes
    a new member called unread_in_current_view
  * there's a helper function unread.num_unread_current_messages()

Deprecating zephyr.unread_in_current_view() affected two callers:

 * notifications.update_title_count()
 * notifications_bar.update()

The above functions used to call back to zephyr to get counts, but
there was no nice way to enforce that they were getting counts
at the right time in the code flow, because they depended on
functions like process_visible_unread_messages() to orchestrate
updating internal unread counts before pushing out counts to the DOM.

Now both of those function take a parameter with the unread count,
and we then had to change all of their callers appropriately. This
went hand in hand with another goal, which is that we want all the
unread-counts logic to funnel though basically one place, which
is zephyr.update_unread_counts().  So now that function always
calls notifications_bar.update() [NEW] as well as calling into
the modules unread.js, stream_list.js, and notifications.js [OLD].

Adding the call to notifications_bar.update() in update_unread_counts()
made it so that some other places in the code no longer needed to call
notifications_bar.update(), so you'll see some lines of code
removed.  There are also cases where notifications.update_title_count()
was called redundantly, since the callers were already reaching
update_unread_counts() via other calls.

Finally, in ui.resizehandler, you'll see a simple case where the call
to notifications_bar.update() is preceded by an explicit call
to unread.get_counts().

(imported from commit ce84b9c8076c1f9bb20a61209913f0cb0dae098c)
2013-06-05 17:47:34 -04:00
acrefoot d021aebf54 Update API Docs to talk about Bots and how to create them
Since we've made it easy to use bots instead of creating entirely new user accounts
for things which act as bots, we've needed to update the documentation. This commit covers
the static html documentation we have on humbug's API.

(imported from commit 4ddbf0331588b0f463a9920b4cd363b68e811ca5)
2013-06-05 17:17:00 -04:00
Waseem Daher a58876e733 Make all "a"s have cursor: pointer by default.
In specific, this solves the problem of the links in the stream
"right-click menu" not having the little hand icon, uncovered
in our last usability study.

But even better, it also sets a more sane default -- if you're
an "a" and you *don't* want the hand, you have to explicitly
remove it.

(imported from commit 38c0b42f3b7fd5b2b3dff99e8c4c4a2e8aa62833)
2013-06-05 17:08:00 -04:00
Leo Franchi 72295b0c15 Fix case where redis-py returns an int instead of a string from TTL
(imported from commit ad1d9b43e4776cd6ce0c51573799767b2cf9bd96)
2013-06-05 16:56:25 -04:00
Leo Franchi 21b1090f39 Warn if TTL of redis key is -1
(imported from commit f44ccef6dee190f531537fc8f3af9354c737a17f)
2013-06-05 16:49:30 -04:00
Leo Franchi b815d7ea83 Properly calculate expiry of keys we add to Redis
(imported from commit 42fda34ed1cd1eb9411defa1c0cbf53ef0de7a7b)
2013-06-05 16:49:30 -04:00
Tim Abbott a2a696dacf Add unread counts to the user sidebar.
Because of spacing issues in the right sidebar, the unread counts
appear to the left of the person's name, not the right.

It's kinda awesome that this is only 20 lines of code.

(imported from commit f5a4ea27bc4cd2e8157746ce7524a600b638930b)
2013-06-05 16:44:49 -04:00
Zev Benjamin 300e57fcbd Fill memcached caches synchronously before restarting the server
(imported from commit a45fa845e94a1fc6e96a1aafca31e9a6fc2b7526)
2013-06-05 16:33:43 -04:00
Zev Benjamin 2f7f0da27f Use a per-deployment memcached key prefix
Some cache keys used by Django (like sessions) will not have the key
prefixes, but those values shouldn't change across most restarts.

(imported from commit 2fe61028111fe9d5700432214a611b3341412654)
2013-06-05 16:33:43 -04:00
Zev Benjamin 826b895a2c Avoid using djcache directly
(imported from commit 2a8f0135c7e31ecc30628420e521c8f708c656c5)
2013-06-05 16:33:43 -04:00
Zev Benjamin f38fb33388 Lighten edit diff colors
(imported from commit a2f5778890cbc031f1b95f55a91689e5ee5332e3)
2013-06-05 14:26:46 -04:00
Steve Howell 8be0ea972a Cosmetic: move function up in file.
This just moves keep_pointer_in_view() to be adjacent to recenter_view()
in the file.

(imported from commit 27056e2a949ffef262ac21130436f7303fd2935f)
2013-06-05 13:50:02 -04:00
Steve Howell 042cd8f222 Handle large/gigantic messages when recentering.
(imported from commit d57e702f504a9a3e6b7049a19217671902df4ab7)
2013-06-05 13:50:01 -04:00
Steve Howell 4c8a293750 Scroll more like barnowl again. (but closer to the edges)
We are moving back to a barnowl-ish scrolling algorithm for
the arrow keys, where when you have a message selected toward
the bottom of the screen, hitting down arrow and up arrow
effectively puts the originally selected message at the center
of the screen.  In order to avoid unnecessary scrolls, we
are making it so that you can move the pointer closer to the
edges.

(imported from commit c08233d6d2034a04469b8f424b39d94a230cafe0)
2013-06-05 13:50:01 -04:00
Leo Franchi 92256ab48f Add a TESTING_DEPLOYED settings key, and don't send stats for it
(imported from commit cd73317814a240f7df180f546a9eb6937bb368bb)
2013-06-05 12:57:47 -04:00
Leo Franchi 5a8cc44ba8 Don't autoselect all users in create stream listing
(imported from commit dae00c632d860386255d063db295d707b396b18a)
2013-06-05 12:57:47 -04:00
Leo Franchi b5cadeca73 Backport bootstrap-typeahead click fix to make clicking on autocomplete more reliable
This is the patch described here:

https://github.com/twitter/bootstrap/issues/2715
92189b87ad

That commit has not been upstreamed to bootstrap due to bureaucracy issues.

(imported from commit 3c4a109b58f403569a41f5048ab347a800f029c2)
2013-06-05 12:02:08 -04:00
Steve Howell c7ab489260 Remove dead code in notifications_bar.
I removed references to the following:
    on_custom
    custom_message
    current_message
    show_custom_message()
    clear_customer_message()

(They were not being used anywhere.)  Also, show() does not
receive a msg parameter any more.

(imported from commit 8ec347b40fc9fa582317d68e85c98258cf3fba2f)
2013-06-05 09:35:21 -04:00
Tim Abbott 34e2edb220 Change tutorial instructions for how to reply.
(imported from commit 5204ff60763da990ea27d572adb6810324c0d764)
2013-06-05 09:29:27 -04:00
Zev Benjamin 4bf3cf1c67 Fix whitespace
(imported from commit 27ad5cda6ce439f81fb0ab231ef43303f2d70736)
2013-06-04 19:33:20 -04:00
Zev Benjamin 5a1f036db3 Use Diff Match Patch instead of difflib for HTML diffing
Diff Match Patch provides more human-readable diffs.  For example,
try replacing "mouse" with "sofas".

(imported from commit 7ced81202ce85d5ef69888c59912e3e44c38cfc8)
2013-06-04 18:18:36 -04:00
Zev Benjamin 0c20f48636 Show changes to edited messages using color highlighting
I didn't use red and green for fear of it not being visible to
color-blind users.  We may need to tweak the colors.

(imported from commit 59c4f1dac549a248783e4c3b3ec472d8cb690df5)
2013-06-04 18:15:45 -04:00
Zev Benjamin df53f54cbd Add library to diff HTML fragments and mark changes
I would really like to parse the HTML we produce from the library to
ensure that we don't generate malformed-HTML.  This is unfortunately
hard because we both want pretty strict parsing and we want to parse
html5 fragments.  For now, we just do a basic sanity check.

We also may want to switch to Google Diff-Match-Patch, as that can
clean up the resulting diffs.

(imported from commit 3772f92135cfd7423c335335f861f2c11462a8db)
2013-06-04 18:15:45 -04:00
Zev Benjamin 835dd6673a Only reselect the selected message on rerender if it's not -1
We could get into this situation when someone is doing a search and
someone else edits a message while the results are still loading.

(imported from commit 99e371fd75c7ae7dc98a0c03bc434e434da44b94)
2013-06-04 16:21:56 -04:00
Zev Benjamin 1d2c1a00bc Improve error reporting for trying to select an unknown message
(imported from commit 4fdc09d11e35eeed2510de6668d5a982c915f8c0)
2013-06-04 16:21:56 -04:00
Zev Benjamin d95ea89f54 Fix a "can't read property 'id' of undefined" user error
`current_msg_list.get(id)` and `rows.get(id,
current_msg_list.table_name)` are not interchangable in terms of
checking for whether we have a message.  The former checks whether
the message is in the current message list while the latter checks
whether the message is in the current message list and currently
rendered.  `message_edit.end` only operates on rendered messages.

(imported from commit 203ee612bfd0aa94571dde9b601e948b3c6f6cbb)
2013-06-04 15:39:51 -04:00
Zev Benjamin 6bd61f458d Don't throw an exception if someone edits a very old message
Previously, if you didn't have a message that someone else had edited
in your message list, you would get an exception because we weren't
checking whether we actually had the message or not.

(imported from commit 33a5c6e7fe95b5397a32df5c7b5f6714d71e1e5f)
2013-06-04 15:38:42 -04:00
Leo Franchi 23b4ad3b02 Add a redis_check management command
(imported from commit 04a272ca8d8288f7e3b1a54fd5d73629bde938a0)
2013-06-04 09:43:09 -04:00
Leo Franchi 0b5b1dafc4 Add a rate limiting system to our backend
(imported from commit a1218618918b4dedc77307e2f277665e7dd8fa22)
2013-06-04 09:43:09 -04:00
Leo Franchi 4b2a2d01e6 [schema] Add a rate_limits column on UserProfile
(imported from commit 3682212d91ce5a91cc2e7d5611da0265518cf18a)
2013-06-04 09:43:09 -04:00
Luke Faraone a73e86cd9f Keep the desktop client updated as to the app's new message count.
(imported from commit c8deb2a773ee5c82f9d2decdced936f2f18dd4e0)
2013-06-03 13:10:25 -07:00
Luke Faraone c5d3ca0247 Send notifications over the JS→C++ bridge if it exists.
When determining if desktop notifications are enabled, we can check whether
there is a "window.bridge" element.

Now when it comes time to actually send out notifications, we can just test
again for the existence of "window.bridge" and if so, shunt the data over
it.

(imported from commit 8104c91ea9da7bc485c86a3c21edc88905d2f47b)
2013-06-03 13:10:18 -07:00
Steve Howell 3ee4161ace Allow pointer in more places.
Before this fix, the code would restrict the pointer to be above
either the 1/2 mark or 2/3 mark of the page, depending on your
scrolling direction.  This fix makes it so that the system leaves
your scroll and pointer alone when between the 1/5 mark and 4/5
mark.  This means the user can read more messages on the screen
at a time before getting paginated.

(imported from commit 98f6319bf63181dd331e037ac20a0c15518725ea)
2013-06-03 11:04:01 -04:00
Steve Howell 40ce4e0acc Streamline recentering code.
When you make a call to set_message_position(), you already
know that the pointer is gonna be onscreen, so set the flag
to suppress scroll pointer updates.  This should be faster and
also avoid future confusing bugs where recenter_view() and
keep_pointer_in_view() run for the same event.

(Both callers to recenter_view pass in the selected message,
and then the calls to set_message_position() set the scrollTop
so that the selected message shows onscreen.)

(imported from commit f1a6f189b7899b280a6316ea7eb03f015d3d4ae3)
2013-06-03 10:41:04 -04:00
Jessica McKellar a63b0e31a7 Say if a realm is open in the internal signups Humbug.
(imported from commit 5745f3b2fbfbbdc2681628ef1ccb637cc1abb9f3)
2013-06-02 15:12:28 -04:00
Jessica McKellar 79d494282d Use a case-insensitive wrapper around retrieving a realm by its domain.
We were previously able to create realms for different casings of the
same domain.

(imported from commit c13a86c9eb9fb4934bebcda7a578e2a071dd1962)
2013-06-02 15:12:28 -04:00
Jessica McKellar 83a8ed048f Remove unused imports in zephyr/lib/.
(imported from commit 54fa64f34d29ede939d18f3834249b7bff4490e5)
2013-06-02 15:12:27 -04:00
Jessica McKellar bd5bc4fcf7 create_realm: be able to specify an open realm.
(imported from commit 227b89c51c45b2a3fcd343b2a6a986f5212c1b9c)
2013-06-02 15:12:27 -04:00
Jessica McKellar 048a53c1ce Make do_create_realm aware of restricted_to_domain.
(imported from commit bee8d79cd5f5d4165e2a573eb3a91123857be6cd)
2013-06-02 15:12:27 -04:00
Jessica McKellar 67a25614df Remove unused reply argument to do_create_realm.
(imported from commit 6f56c0748a989a8d7163d20f6d9d243c8d96ce87)
2013-06-02 15:12:27 -04:00
Jessica McKellar 088984b31a Don't let CUSTOMER4 users invite new users to the realm.
As requested by the facilitators: only they should be able to invite
new people.

(imported from commit 636e332759b9ad56a8d45115d92326a929472c14)
2013-06-02 13:23:04 -04:00
Leo Franchi df6a93ddb6 Log time spent in markdown to statsd
(imported from commit 736a4ddf0716cf365cfaafd8f22a88de00d126bd)
2013-05-31 15:57:53 -04:00
Leo Franchi a906e1609d Remove 'PM' from missed message subject as we also email you on @-notifications
(imported from commit 0993bae5b6a1e40b462a314c41bd5c2d47b4bc8c)
2013-05-31 15:54:57 -04:00
Steve Howell 303b8174ac Fix trailing whitespace in a couple Python files.
(imported from commit a8338773aa4ff10add6f06c699b395890b9ed3ee)
2013-05-31 15:25:35 -04:00
Steve Howell e558b5bf23 Fix whitespace in code.
(imported from commit 4bb750f886ccffc22d54140c10d39f0f91725156)
2013-05-31 14:19:47 -04:00
Steve Howell cd13488959 Show fade effect in left pane for new mentions.
This also changes the color for the blink effect when you
get private messages.  For simplicity sake, we use the
same color for private messages and mentions.

(imported from commit 46b0f7af1dccefe575004e7676990e5c854a3dcc)
2013-05-31 14:07:34 -04:00
Jessica McKellar b895780c7c Make narrow.operators always return an array.
Previously it could return an array or boolean, and this inconsistent
interface had several latent bugs where consumers of the API only
considered it returning one or the other type.

This also fixes a specific bug a user triggered by being narrowed to
nothing (/#narrow) and clicking in the compose box.

(imported from commit 64ca2a37a9f288066f89b0ddec6638e010704eb0)
2013-05-31 13:51:53 -04:00
acrefoot 6ae117ea5f Re-focus on the compose box after a send, auto-move cursor
Re-focuses on the compose box after a send, under these conditions:
1) narrowed to stream+subject -or- responding to PM/huddle
2) compose was initiated by clicking on a message or hitting "r"/"enter"
3) cursor has not moved since you've started the composition

Additionally, if you are thus narrowed, we will move your cursor when you've sent
a message to that message, assuming that such a message initially appears visible.

(imported from commit 373c858081694e6fc9994639340a847d66edb566)
2013-05-31 13:43:05 -04:00
Steve Howell 66b93d5cfd Fix barnowl style scrolling w/r/t fixed elements.
This change fixes the barnowl scrolling so that the ratios of
1/5, 1/2, and 2/3 are all relative to the visible viewport.

The core part of the fix is that we need to call
ui.message_viewport_info() to get the correct offsets for
the top/height of the actually visible viewport  Because
this function is fairly expensive, I didn't want the
helper functions needlessly re-calling it.  I could
have passed the helper functions the structure, but at
that point it was simpler to inline their functionality.

(imported from commit fb10d99313d568e85acfa70703c4651466acbc21)
2013-05-31 12:51:50 -04:00
Tim Abbott 6100d61f8f Remove 'narrow to messages sent by' from message popover.
Now that this functionality is accessible from the right sidebar, we
don't really need it here.

(imported from commit 34eaef4e1200f9fc673a681f0be87d8008033e83)
2013-05-31 12:24:33 -04:00
Tim Abbott 4558c5e008 Fix tab bar handling of search for 'sender:'.
(imported from commit c054ffee10943a4e6835d4466d57818df6efc7e4)
2013-05-31 12:24:32 -04:00
Tim Abbott 3be4a010e8 Add a sidebar actions popover for the right/user sidebar.
Currently, this is accessed by clicking anywhere in the sidebar region
other than the text of the person's name itself, which does the
existing narrow behaviour.  Later we can make it do something clever
with hovering pulling out the popover or something, but that's
potentially a significant design project I think this is good enough
to be useful.

(imported from commit a2cc5dc851661117a6d438ca48a1ce7585d4eb63)
2013-05-31 12:24:32 -04:00
Tim Abbott 878cd4cf3e Move stream sidebar rows into a handlebars template.
(imported from commit f1f2acecec0a0a1ff86bffc2a0244e015535ce86)
2013-05-31 12:24:32 -04:00
Tim Abbott 4e3ea12dc1 Rename stream sidebar variables/functions to be less generic.
(imported from commit 1d9fe6cd8da513b7a283c08862ce887159fe498e)
2013-05-31 12:24:31 -04:00
Tim Abbott 7d20a697d6 Move user presence sidebar to a handlebars template.
(imported from commit 1f505bbda4ed67da94db8d97e8e58cb2c462d056)
2013-05-31 12:24:31 -04:00
Tim Abbott 74cfadfb74 Rename sidebar_stream_actions to stream_sidebar_actions.
I think it's more intuitive.

(imported from commit bd9939a994e1f9f93fd71d9c71963debfedfff89)
2013-05-31 12:24:31 -04:00
Leo Franchi 56af48cd50 Split wildcard mentions from personal mentions, only email on personals
(imported from commit 18971d9e40dd2c93ef9c30edc963da33e3c65309)
2013-05-31 12:24:31 -04:00
Luke Faraone 905cf9b3ff Always create a new PreregistrationUser in generate_invite_links
Previously if you had been invited twice to use the app this management
command would fail with your address, since the email address was no longer
unique.

Now by unconditionally generating a new PreregistrationUser object we avoid
this problem.

To test, invite a user to Humbug via the webapp twice, then generate an
invite link for them manually. The latter operation used to produce a
traceback, but now works.

(imported from commit b6c816187e6302b3cb3eea2928565b3a12046c4b)
2013-05-31 12:24:30 -04:00
Leo Franchi 0524c14c8c Ignore leading spaces in search box
(imported from commit 098a8f288c8264cc804b737f804b866c64c0ff5b)
2013-05-31 12:24:30 -04:00
Jessica McKellar f6be3289c1 tutorial: fix out of date references to message formatting and feedback locations.
(imported from commit 8f5b088a4a26d34d5f0c7280b50892763144e4da)
2013-05-30 17:43:55 -04:00
Jessica McKellar e4c0438936 onboarding: center the Done button on the sticky app popover.
(imported from commit e64432d94ef5b3f74527d7d4b5782ccac9ff9520)
2013-05-30 17:43:55 -04:00
Jessica McKellar f51d0ce001 onboarding: only show the app popover on mouseover once.
(imported from commit 45d9c7de583e3243e0e65f09392fb15ad5ea2043)
2013-05-30 17:43:55 -04:00
Steve Howell bbd2322586 Show unread counts for mentions in left pane.
(imported from commit b4511b1d95f58010904c97f55d6189dd2a97cf1b)
2013-05-30 16:59:22 -04:00
Tim Abbott 47b4283c4b Only use numbers and letters in our API keys.
(imported from commit f845fd092695286b83a2e4c9a5708df778c5b770)
2013-05-30 16:42:14 -04:00
Steve Howell 468de0a29f Fix autoscroll mousemove bug.
We had a couple places where autoscroll would
mysteriously midway through scrolling, and it
was because scrolling generates mousemove
events.

(imported from commit 666e5e5af81fdcc5cc56c314d1264dbec970c067)
2013-05-30 15:04:42 -04:00
Steve Howell 3f1b3af002 Add "Mentioning messages" to the upper left sidebar.
Treat "mentioned" messages like "starred" messages for narrowing.

Lots of ugly copy/paste here.  There might be opportunity for
some cleanup in places.

(imported from commit e7629890d42643c0000e1cc85422b2a0690f2cc4)
2013-05-30 14:45:01 -04:00
Keegan McAllister 0df77527f1 Remove files minified by upstream
We now don't use these at all, and they are likely to confuse us later e.g.
when modifying third-party files.

(imported from commit 2034949111466b22b1830ec087f30fa34445fcbd)
2013-05-30 13:51:47 -04:00
Zev Benjamin 441e4296e0 Add copyright notices to third-party files
These will get slurped into the minified files we generate.

(imported from commit 46375d6d8c382bf681c192d2e6a0cb6d941bdac0)
2013-05-30 13:51:47 -04:00
Keegan McAllister 5e2c493ea5 Remove CSS/JS comments that were making their way into minified code
We will provide our own copyright and license comments in the files
that need them

Also remove the byte-order mark from spectrum.css.  It would appear in the
middle of the file, and there's no need in UTF-8 anyway.

(imported from commit dc32113e88bc6533f37f3378ffeac26f2050d0e7)
2013-05-30 13:51:47 -04:00
Zev Benjamin 6e0a5e0293 Add notice of inclusion of third-party code
(imported from commit 62d141e6ebd3368bd1cb3154d6903f9408f2b77c)
2013-05-30 13:51:47 -04:00
Keegan McAllister 52e0aa59a6 Minify third-party JavaScript and CSS in production
(imported from commit 943d712bc460640d7a689ac678922d9c5bf7aa9c)
2013-05-30 13:51:47 -04:00
Keegan McAllister 371d0dbaa0 Identify app.js source map using a special comment
If we're going to minify third party code, the size heuristic may not hold
anymore.

(imported from commit 78ada1fee1446e78b3b1ad299ee3e975d1cd9002)
2013-05-30 13:51:46 -04:00
Keegan McAllister 5aafdc7cf9 Set input language for Closure Compiler to ECMAScript 5
Some of the third-party files use constructs not valid in ECMAScript 3 (the
default).

(imported from commit 9292bf23a4860353944c18a6f413b4828cc63e11)
2013-05-30 13:51:46 -04:00
Keegan McAllister 16883781f8 Import non-minified xdate.dev.js
(imported from commit 0466815f429afd604460e9995ea5eb0d9e665d90)
2013-05-30 13:51:46 -04:00
Keegan McAllister 86835295d6 Import non-minified jquery.ba-throttle-debounce.js
(imported from commit b0c8651ef65f243049dd600b21af4a233630d462)
2013-05-30 13:51:46 -04:00
Keegan McAllister befbb04bda Import non-minified spin.js
...and upgrade spin.min.js to match.

(imported from commit 653dfd1a720e01e03f2a9d89581d0dd45b6eed14)
2013-05-30 13:51:46 -04:00
Keegan McAllister 7d5f2cb2cd Switch away from CDN for jquery and jquery-validate
We're going to minify these together with everything else.

(imported from commit 929538ac119a82a0d96446a48da90c162a317417)
2013-05-30 13:51:46 -04:00
Keegan McAllister 243ccf10d0 Normalize directory names for jQuery plugins
(imported from commit 46a4c97f176066fcb56e7943f7b3c25cdc089e4d)
2013-05-30 13:51:46 -04:00
Tim Abbott 2b1799b71c bugdown: Fix handling of twitter-format links that aren't actually tweets.
(imported from commit 60512147d8d303ff07cf1e86306fd14b1490e708)
2013-05-30 10:29:41 -04:00
Tim Abbott 1cf2d993a6 Fix un-narrowing while the home view messages are still loading.
The bug we experienced here was that if you loaded the page in a
narrowed view, and then un-narrowed before the first block of messages
for the home view arrived via load_old_messages, then
narrow.deactivate() would re-select ID -1 in home_msg_list.  This ends
up calling recenter_view() on the message, which in turn tries to
access the message with message id -1, which fails.

We do sometimes re-select a message ID in order to recenter the view
properly when we prepend messages to a message list, so we can't make
this always a nop; instead we add a check for id -1 in the
message_selected.zephyr event handler.

(imported from commit 66f84a586e59d99aaf0e4ba2cda9fe597b033145)
2013-05-30 10:29:04 -04:00
Steve Howell b34fc4d78f Fix intermittent bug w/page downs at bottom of feed.
There was an off-by-one error in how we determine when
the message list was scrolled all the way to the bottom,
and this undermined our handlers for page down and scrolling
to get the pointer all the way to the bottom.

(imported from commit f80d11582b40726246e69c817a502b311081c730)
2013-05-29 18:42:38 -04:00
Steve Howell fc2c5eb70a Revert "Experimental navigation: t and b keys"
This reverts commit 13fb245f86ab84b1d2faea9d2a1f2145cd4aa907.

(Waseem wanted to hold off on adding more hot keys.)

(imported from commit 97c25ffa01fd7058fc90a278887d85b7d82a268a)
2013-05-29 18:10:43 -04:00
Leo Franchi 3979b4379d Fix activity checking by message flag updating
(imported from commit 3c534ba674f5ff2fe8a7cdafe0e80bde6fea7d79)
2013-05-29 15:39:53 -04:00
Tim Abbott f79ebeb92d active_user_stats: Track user reading.
(imported from commit 3e8ff76c1f355686af74b1dc4081a7c130deb2e9)
2013-05-29 15:39:53 -04:00
Jessica McKellar 80b13bdb73 Fix incorrect space character in several e-mail prompts.
(imported from commit 41bdbce2225a5eb5ab4057467d599d1341fcd9a5)
2013-05-29 15:23:26 -04:00
Jessica McKellar d845605221 integrations: add SVN documentation.
(imported from commit 54e47c9e0aba7aecda6e868eb46bcf169b792ea9)
2013-05-29 15:23:26 -04:00
Jessica McKellar 606e64b4d5 features: document message editing and missed message e-mails.
(imported from commit 991a2489092820f2fd76438abfdc24d957791de5)
2013-05-29 15:23:26 -04:00
Tim Abbott 7927edb374 Ensure your dev environment API key matches your ~/.humbugrc.
(imported from commit d4d0699ce912685ede445ed677c46dfeefa68b42)
2013-05-29 15:11:24 -04:00
Tim Abbott abd9e4e635 Use proper randomization when generating new API keys.
Previously we were generating API keys deterministically using a hash
of the user's email address; this is clearly not a good long-term
approach.

(imported from commit 14d0c7c9edbc45b3ae1d17a43765ad9726338d4d)
2013-05-29 15:11:24 -04:00
acrefoot c58ac9cc0c Re-focus on the compose box after a send
Re-focuses on the compose box after a send, but only if
the compose-box was opened by responding to the message
at the cursor (by hitting "r", enter, or clicking on the message)

(imported from commit 8e7560c8ea31397b57b2bc3e2e7d9dd996226a6f)
2013-05-29 13:07:45 -04:00
Steve Howell b3cb196452 Stabilize pointer after reply-to clicks..
The reply-to autoscroll was using a flag that was redundant
to suppress_scroll_pointer_update and then updating it prematurely,
which caused the pointer to move when you clicked on a message to
reply to it.  Now the pointer goes to the message you replied to.

(imported from commit e2f49fd6bd0da9a3f4b58c0eb08192ef0ee9abf0)
2013-05-29 10:11:39 -04:00
Tim Abbott ab093e7d9a message_edit: Fix traceback saving message edits.
Now that we sometimes call message_edit.end() twice, we need to check
if we've already cleaned it up.

(imported from commit 4e0efa14ba78df0a86b2ae97b99fa1be6197df88)
2013-05-29 10:11:08 -04:00
Leo Franchi 81bb2603eb Replace statsd.py with a call to statsd
(imported from commit 086b9c565b0e3bc88aa3dcd0fb76024ec21d8556)
2013-05-29 09:59:28 -04:00
Leo Franchi bd921c6a04 Allow mentions in PMs
(imported from commit 4d354eb3abb153706a577312724fa40fd2559f92)
2013-05-29 09:48:14 -04:00
Steve Howell 975b984aee Slow down pointer adjustments at the bottom of the messages.
The main point of this fix is to move some more scroll-related code
into viewport.js, but it also fixes a bug where the size of #main_div
was not accurately representing the full height of the message list.
Making the calculation more accurate narrows the window where we
do pointer adjustements on mousewheel moves.

(imported from commit 5d821f459284c4dbd5ff8056001e54caf4355f1d)
2013-05-28 17:23:22 -04:00
Allen Rabinovich acbff5682f Add paragraph spacing, a slightly larger gravatar, +1px to line-height, and a bit more padding between messages.
(imported from commit c495c0f747e671318e737ddfaea5ff801fc12a97)
2013-05-28 13:54:52 -07:00
Tim Abbott 968ef85ff8 Display the blank for new bots below existing bots.
(imported from commit 813fbf969d0fef508db1dc4acd02c1fc98f427fb)
2013-05-28 16:41:31 -04:00
Tim Abbott e33812d1ff Style the notification settings section.
(imported from commit 319c55993e9a9f88d61eeba31db8cea37b0cb7e7)
2013-05-28 16:41:30 -04:00