Commit Graph

227 Commits

Author SHA1 Message Date
Allen Rabinovich d6617a991c Remove mobile device indicator from template
(imported from commit 48a10a75b30c3f51a6dfa5af43ca138e391289d4)
2014-03-12 21:15:19 -04:00
Allen Rabinovich 40164f4398 Move mobile indicator to the right and style it properly
(imported from commit 19f6bd27b30c355c1720d43580f5b6ff6c1c0b4a)
2014-03-11 13:06:23 -04:00
Luke Faraone bd20a756f9 Show a mobile icon in the presence list when relevant
We show a user as "on mobile" if:
 * They are only active on mobile
 * They are inactive on all devices and can receive push notifications

(imported from commit 0510b9371727cd19c72f6990df7112921c36ad48)
2014-03-11 13:06:23 -04:00
Waseem Daher 4397c25976 Wrap 'Receive audible notifications'.
This resolves Trac #2366.

(imported from commit 0de4b20e0310980181716f7a29a82a4228a16b1b)
2014-03-11 13:06:23 -04:00
Waseem Daher 96f6939284 Fix a few more unstyled 'cancel' buttons.
(imported from commit 1d8145fe1576af62b73be0badad9de1b75da816a)
2014-03-06 21:59:53 -05:00
Waseem Daher fb00ee79a0 Fix unstyled button on Settings stream notification propagation.
(imported from commit ebc046e8d0f29a6bbf64005c70f32522a366fa6b)
2014-03-06 12:45:06 -05:00
Waseem Daher 91fb286b0d Properly style integration-edit buttons.
(imported from commit dbbe831bbc86b24ba37fa9cb06dfdba32a1e8867)
2014-03-05 17:43:00 -05:00
Waseem Daher ae326c066f Properly style 'Cancel' button in edit dialog.
(imported from commit 8c63567f7f696175b7293fabe26fea2d9c60a15a)
2014-03-05 17:33:01 -05:00
Waseem Daher a9f01e382a Switch streams page over to use consistent buttons.
(imported from commit c4d7f658f361a759a38951349e027ac3e279fe9b)
2014-03-05 17:23:23 -05:00
Waseem Daher 66ecc7a6f2 Slightly tidy up realm name change 'Save' button on admin page.
This commit got lost in an earlier rebase.

(imported from commit 36bfad56fc08f443c3721c880cb4dd3427fd0541)
2014-03-05 16:43:10 -05:00
Waseem Daher 095c82ecc4 Actually switch to Bootstrap3-esque buttons.
(imported from commit ddcecb8c5a63324a666ffe170e2d5a76171776c9)
2014-03-05 16:24:54 -05:00
Waseem Daher 6ef234ba80 Slightly tidy up realm name change 'Save' button on admin page.
(imported from commit dfa8d4a08d1e2f505f4edf8b0ef5314da47292a1)
2014-03-05 16:24:54 -05:00
Jason Michalski eebbf0d4ee Show the new bot's default stream settings in the edit view
(imported from commit d6f1872e0dedd57ebde31da2caf075804195dfb0)
2014-03-05 14:16:19 -05:00
Jason Michalski 17b579911e Add UI to set listen on stream during bot creation
(imported from commit b481a55c16f853766c82883b4c6c86de5c87759e)
2014-03-05 14:16:18 -05:00
Jason Michalski 538d76e6ed Add UI to create bots with a default send to stream
(imported from commit 1333de89a75bd972ec85be7f11f6ea11d4fa34cd)
2014-03-05 14:16:18 -05:00
Leo Franchi 6f67d94fc4 Split the recipient row of a message group into a partial
(imported from commit 660514daf932235b7c47ac4c22f963da17c7fc8b)
2014-03-04 10:09:40 -05:00
Jessica McKellar 87635b9e32 Convert settings from static HTML to a template.
This will make life much easier for handling update events.

(imported from commit 66b101eb5fae89b4eec6fc797fee8be26ac99bfb)
2014-03-03 16:08:32 -05:00
Jessica McKellar 07bb7b2fee Give users the option to propagate global stream changes.
This helps the common case of not liking our default of having audible
and desktop notifications enabled, and not making users adjust the
settings on every existing stream to fix it.

(imported from commit be75edb2c1385d1bd9a289416e2dffd8007f5e0a)
2014-03-03 16:08:32 -05:00
Jessica McKellar d89696291f Remove Notification (?) explanation popover.
(imported from commit f261f87c9571a76b8b0e2538ccb3bb4826ef449e)
2014-03-03 16:08:31 -05:00
Jessica McKellar dfc462c24d Grey out per-stream notifications when you mute the stream.
This helps clarify that muting trumps notifications in most cases.

(imported from commit 1a6df169219d9501b1232cc7d2c64abec6fd03ea)
2014-03-03 16:08:31 -05:00
Jessica McKellar 53021bf7d3 Pass per-stream notification settings between frontend and backend.
(imported from commit 42e9b80a4c55e0911d457991d53ce71ca31625bb)
2014-03-03 16:08:31 -05:00
Zev Benjamin a547043831 Fix search highlighting for message content and topics
Previously topics weren't being highlighted at all and messages had their
highlighting persist across different narrows (because we were only checking
whether the message object had a match_content property, not whether it should
currently be used).

(imported from commit 44c91c6d5799dcdf765e19e1a17bd727ce80c918)
2014-02-27 20:25:33 -05:00
Allen Rabinovich ccfaee8412 Add left side color bar
(imported from commit cdba90d3a4e693838338b0a93cae38a741aa28c4)
2014-02-27 20:25:30 -05:00
Leo Franchi 54e8bb872c Use the dark color classes for recipient rows when needed
(imported from commit a77409964a185e6a8856e0577cc95bc78aa96e6d)
2014-02-27 20:25:27 -05:00
Leo Franchi f22885223f Remove message id list from group divs
(imported from commit 620a219b5e11db79bfea971fe40deb09173deb10)
2014-02-27 20:25:24 -05:00
Leo Franchi b4e4a98de6 Split out single message template into a partial
(imported from commit 4670a5b5006d038ddbe94683cf2ea2c0be27f5ab)
2014-02-27 20:25:24 -05:00
Leo Franchi 568c33f294 Render messages as groups of divs instead of individual rows
Now that we no longer use tables for our message list, we can
more logically group messages together.

(imported from commit 9923a092f91a45fe3ef06f2f00e23e4e3fb62a37)
2014-02-27 20:25:23 -05:00
Leo Franchi 748e5b6da6 Remove disabled summarization code
This experiment has been disabled for everyone for a while: if we
bring something like this back, it is not likely to be exactly the same,
and will be different enough to require a different implementation.

As it is, the summarization code was making a few code paths (rendering
especially) more complex, and is worth removing for simplicity's sake.

(imported from commit 6ac8cdc9f7077a5a1da01ab4268aba3db0bc43f8)
2014-02-27 20:25:23 -05:00
Allen Rabinovich 7822be5cd9 Fix failing stream sidebar node test
(imported from commit 3187a8f34389bf1f0b37e80edec9fb56f7281306)
2014-02-18 12:50:32 -07:00
Allen Rabinovich cff698d210 Restyle unread markers
(imported from commit 70a363cb50eebdd0bd2f11ab56074e46301117b3)
2014-02-18 12:50:32 -07:00
Allen Rabinovich 56f1c023ab Redesign elements in left sidebar
(imported from commit 37ae516325a4bd4db7a9e45e7862af6fee3af46e)
2014-02-18 12:50:32 -07:00
Allen Rabinovich cdd43baf5d Add sticky class and an extra recipient bar wrapper
(imported from commit 17724a9e31d5baa5a011ead6d521dd7a4e6fe0e2)
2014-02-18 12:50:32 -07:00
Allen Rabinovich dc71961dd9 Fix showing stream names on dark background
(imported from commit 82185ac2717b380e81656630d34f377094d16c38)
2014-02-18 12:50:31 -07:00
Allen Rabinovich 78a3da7fbe Fix issues with message editing and status message layouts
(imported from commit 3ec5c6ccf6c20a6c102075887b6ff36afc613bdd)
2014-02-18 12:50:30 -07:00
Allen Rabinovich ee3cb60e3c Redesign styles for message pane
(imported from commit 394249d58f1cc3b976b432bbc421b99510e7fff9)
2014-02-18 12:50:29 -07:00
Allen Rabinovich 8f90baf1eb Remove borders around messageboxes
(imported from commit 7ffaf256773daa2c2d79a6043c6e252e283fbaa9)
2014-02-18 12:50:29 -07:00
Allen Rabinovich 34f9cf3aa6 Restyle subject editing form
(imported from commit f2093939fa8069b73e7c785a4dd835eab4c825cd)
2014-02-18 12:50:29 -07:00
Allen Rabinovich dbdc0a9721 Switch message pane headers to new design
(imported from commit f640641553779450f9d9d15e5586ef38e068367b)
2014-02-18 12:50:29 -07:00
Allen Rabinovich 29250a6692 Move crumbbar to header and change visual appearance
(imported from commit 435e3b46b615f6c496be10b7d170ed3e4201787d)
2014-02-18 12:50:29 -07:00
Steve Howell f1ee2c6503 Put "Link to this conversation" lower in the message menu.
(imported from commit 73d75ac40f097c161f7168a5590c069c1b9e0641)
2014-02-18 13:19:39 -05:00
Steve Howell bbfd33185c Remove narrowing options from message chevron menu.
Remove the options to narrow by topic/person from the menu,
because there are better ways to do this in the UI, and
remove the time travel option, because the "Link to this
conversation" achieves mostly the same effect.

(imported from commit b7e0cfe64c0760e5a7bf7a8c9c05ed1a5b747300)
2014-02-18 13:19:39 -05:00
Steve Howell 580b6949cc Remove reply-to-person-only option from message chevron menu.
(imported from commit 469ebc9b01ee60eb8c0a673099e0dc735ea95a0e)
2014-02-18 13:19:39 -05:00
Steve Howell 64ff916ca2 Be concise in popover menus.
Say Edit/Reply/Collapse/etc. and omit phrases like "this message".

(imported from commit bcf0a8690683c1e0d54b7a6a58fe78b787271357)
2014-02-18 13:19:38 -05:00
Waseem Daher 98737a012e Properly prepopulate realm name on admin page.
Also, don't call it that.

(imported from commit baacd95be5b01373aa9423071ca72d917480e341)
2014-02-13 13:18:18 -05:00
Steve Howell bb0608b55a Use real stream ids in our stream-related UI widgets.
Before this change, we were using sequentially generated ids
on the client side to identify streams.  Now we just use
the ids from the server.  The goal here is to reduce the
confusion of having two different ids attached to a stream.
Also, not that it matters a ton, but this also means that
the browser basically has an immutable id for each stream
that is future-proof to reloads, multiple create_sub calls, etc.
It also a bit easier to grep for ".stream_id" than ".id".

(imported from commit 057f9e50dfee127edfe3facd52da93108241666a)
2014-02-10 13:23:27 -05:00
Steve Howell eea8c0d1d5 Allow admins to change the realm's name in the UI.
(imported from commit 2873f872069a41c91beb87728f64fa526dd8a326)
2014-02-04 11:33:19 -05:00
Jessica McKellar ec88b3abaf Give admins the ability to unsubscribe people from streams.
(imported from commit 7ec130a233a2976ad0be6f8a7b59c33ce0e0cf3f)
2014-01-31 11:23:14 -05:00
Jessica McKellar c4c5ac210e Convert stream member list to a handlebars template.
We had been concatenating strings.

(imported from commit 2d50d3f750a450029d39553ea9cd99ef824a149b)
2014-01-31 11:23:13 -05:00
Jessica McKellar 7085dca1ce Fix the Admin page not working for newly-knighted users.
Previously, while you'd get the event saying you'd been knighted,
which would make the Administration tab visible, clicking on the tab
would error out because the admin page HTML was never sent over on
page load (since you weren't an admin at that point).

(imported from commit 90ad351533515bebece630d67baf4b142d320754)
2014-01-29 12:41:22 -05:00
Jessica McKellar 3d234e1b84 Update admin page language on deleting streams.
(imported from commit 3670c65e3fe9e79855b1c0ffaa08f48368de9856)
2014-01-29 12:41:21 -05:00
Jessica McKellar 20f2baa614 admin: Show a lock icon next to private streams.
(imported from commit 26829016cf219b55aef0ef45187667b0a9bd86fd)
2014-01-29 12:41:21 -05:00
Jason Michalski 62435e167f Add frontend stream description event handling
Update the stream page when receiving stream description change events.

(imported from commit 84f6f3846a3197f14a24611cdc06350fae90f9dd)
2014-01-24 14:47:44 -05:00
Jason Michalski 4104f00229 [schema] Add description to streams and display it
A description was added to the streams and it is now displayed on the
subscriptions page. It can not be set in the UI yet.

(imported from commit 81d08b65eee42dba87cd99dd5bd30106c4eb6c6a)
2014-01-24 14:47:44 -05:00
Jason Michalski 0c9271212d Added a admin settings div to the subscription template
(imported from commit 8aaa55d90a78ab1c4b182efeb4cac5b7d0677822)
2014-01-24 14:47:44 -05:00
Jessica McKellar ebd6408ec7 Make the tutorial shorter, and visually highlight important concepts.
(imported from commit 543d0ff838edbc2148df4b8d08331c793c7af4f6)
2014-01-23 17:06:27 -05:00
Leo Franchi 883122b129 Allow editing of locally echoed messages that failed to be sent
(imported from commit eff8d55af7a1ff123ed2a2e45e58ff74de96beac)
2014-01-23 16:28:55 -05:00
Leo Franchi 00f64113e9 Support locally echoing messages when sending
(imported from commit 00b5c5f9b933d119553c32cadff0f17b9f7c2879)
2014-01-23 16:28:55 -05:00
Steve Howell 5a3d338937 Hide "Make admin"/"Remove admin" button when deactivating a user.
(imported from commit 0d925d68c1beecf3fee7dd5de47930a4ad9ce3cf)
2014-01-17 17:34:31 -05:00
Steve Howell 59ac5cce72 Reformat admin_user_list.handlebars template.
(imported from commit 0e6f92d2cd4ab7c4d9c94f6827fda9231c9d42fe)
2014-01-17 17:34:31 -05:00
Steve Howell a9e621fff4 Extract stream_privacy.handlebars partial template.
(imported from commit 77d614a549f5a337442936a002d422db1913e298)
2014-01-17 16:37:47 -05:00
Steve Howell ec91ece6ed Remove "Create new stream" UI for restricted users.
If a user is not allowed to create new streams, then do not
show the "Create new stream" UI at the top of the settings page.

(imported from commit b97626938d8b612317c2189f7eca0d4bd27fc274)
2014-01-16 14:43:57 -05:00
Steve Howell 447c99aa66 Add UI for admins to add/remove admin power from other users.
(imported from commit b7e81316f1f1e3c7b7f7dd5dac5db8e70f1ee209)
2014-01-16 13:41:54 -05:00
Jason Michalski 68335d9124 Remove hidden inputs from the tab order on the stream page
Inputs are given a tabindex of -1 in the handlebars templates, this is
added and removed in the show and hide events of the bootstrap collapse.

(imported from commit 2c54c39edc396d3d18330df4583d901690dd71fa)
2014-01-10 21:38:58 -05:00
Allen Rabinovich 827cd50849 Fix invisible unread marker issue
(imported from commit a1cc8465758b7e9daf110a32038feeeef0427715)
2014-01-06 11:41:05 -07:00
Steve Howell badeb70be2 Allow admins to change public/private on streams.
This is the UI piece that finishes the features to let admins
make streams private or public.

(imported from commit 1a193165a6304dc358982e9850a75965fb3a03fd)
2014-01-06 11:59:48 -05:00
Steve Howell 34af2b0828 Extract subscription_setting_icon.handlebars
(imported from commit 574f43d8479e066687312a7a232f243347bd1d7f)
2014-01-06 11:59:47 -05:00
Steve Howell b3d307b465 Extract subscription_type.handlebars
(imported from commit 1a16ed0d51dae23f830043f52046c8fb50f91a48)
2014-01-06 11:59:47 -05:00
Steve Howell 492159c312 s/allow_rename/is_admin/ in subscription.handlebars
(imported from commit e5af8d97d0bcd63efd85e5745a8bb131b091f752)
2014-01-06 11:59:47 -05:00
Allen Rabinovich 1b59bb82b9 Fix the overflowing message pane issue.
(imported from commit 07f73e7a8d13792220f3ca08f50c21eb12d454b6)
2014-01-06 08:39:58 -07:00
acrefoot 0d08acaa1b Transition from tables to divs for the message list.
This breaks our casperjs tests.

(imported from commit c63181c73a24eed4a80bfa56966d1f0871c5edb2)
2013-12-19 18:28:11 -05:00
Tim Abbott 91fc3fb7d7 Reindent some sections of message.handlebars.
This is in preparation for the tables=>divs move.

(imported from commit 6ca3201b780af197c8f1e9321b222d412aa8b977)
2013-12-19 18:24:47 -05:00
acrefoot c30f2bbe3e slightly stricter linting of html templates
(imported from commit 5bd0aa3c49d6ff95559a73bd5f134cc50ae98ce9)
2013-12-17 12:05:23 -05:00
Steve Howell 1c67fdb95d Move user list unread-count logic to templates.
When we rebuild the user list from scratch, set the unread
counts in the templates to avoid multiple DOM updates.

(imported from commit 2d0c9b0fb99b382332e464ba7c3caad95e05363e)
2013-12-17 10:59:25 -05:00
Zev Benjamin a9d37ebfb9 Align names in group PM list
(imported from commit 21d6a28b8ade617968a1fe9b07d804f0372fb64c)
2013-12-06 17:54:05 -05:00
Jessica McKellar b66bccb068 Make the more 'topics link' a bit more muted.
(imported from commit a2c01af9ed5e993209b3be538bf303acb5428bbd)
2013-11-27 18:34:21 -05:00
Steve Howell eb9f7a04b7 Rewrite topic zoom to fix bugs and make cleaner.
In the first cut at topic zoom, I was re-rendering the
streams list, but this created glitches with orphaned
list items.  The reproducible bug was that unread counts
on unshown streams weren't updating.

In the new approach, I keep the elements more permanent, and
I just hide and show them as needed, either through jQuery
show/hide or permanent CSS selectors.

I got rid of toggle_zoom(), so that we just explicitly zoom
in and zoom out in all situations.  In particular, when we
narrow, it's more clear now that only stay zoomed in when
we're narrowing to the same stream as before (including topic
narrows within that stream).

When you zoom in, the number of topics is no longer limited
to 30, since that was kind of arbitrary anyway.  (In practice,
the number of topics is usually well under 30, anyway, due to
the way we track them on the client.)

(imported from commit 5b6c143dee9ba9fe557d8cc36335ff28efb4b0de)
2013-11-26 18:19:49 -05:00
Steve Howell 78e936fc36 [staging] Add "Show more topics..." link to topic lists.
This link lets you zoom in to more topics.  We only show it if
there are topics that we had to hide to respect the max-5 limit
along with other rules of when you show topics.

This is feature flagged to staging only.

(imported from commit 9915004ec2eb3df7416fe45c0e60cebcd7fecfea)
2013-11-26 10:34:09 -05:00
Tim Abbott 3378fc74c7 Enable conversation narrows (but not single-message narrows) for everyone.
(imported from commit 48123d77f9f9dc5d858718888dedf763328a9774)
2013-11-25 14:00:28 -05:00
Tim Abbott 8952d8d428 Add 'narrow to this conversation and time' narrowing.
(imported from commit 3bc5ea09d333c2caa37557419d54d48bbbb5a639)
2013-11-25 14:00:28 -05:00
Tim Abbott be2d546ffe Fix narrowing links in message popovers.
This should make it possible to either open these using middle-click
or copy the links for e.g. putting in a bug tracker ticket.

(imported from commit 0c531453cdd7197f932079c245700948b416a3d5)
2013-11-25 14:00:28 -05:00
acrefoot 4cd1d69ea0 Add the ability to unsubscribe all users from a stream
This resolves Trac #2022

(imported from commit 23d5129a6bec40c33eaf71953cd41ec387646a39)
2013-11-22 17:12:51 -05:00
Allen Rabinovich e10549a310 Lighten the message controls and show them on hover
(imported from commit 09953116ebef779ea99327ff7c76428e908e2e31)
2013-11-21 11:05:07 -08:00
Jessica McKellar 2c841042ae Allow admins to rename any topic.
(imported from commit 5b557e8244e5196c9aa0ee29d4efb00986434528)
2013-11-19 14:31:02 -05:00
Leo Franchi 9ca8288918 Do not use display: none on file inputs, as some browsers will not let you trigger clicks on them
(imported from commit f05b18f7ad3f4235d33a1142db7e662f97eff308)
2013-11-19 12:35:11 -05:00
Steve Howell 1c91d1a5bc Clean up back end HTML templates.
The check-handlebars-templates script now looks at most of our
back end templates to try and find imbalanced tags.  This commit
fixes a bunch of the existing templates.

(imported from commit fad4a5d85d68160370dd588b41d6f125f64d198f)
2013-11-19 10:43:56 -05:00
acrefoot e2c388c49c Attempt 2: Notifications in the composebox
This moves the notify-not-in-view notifications into the composebox area.
It also tries to be a bit smarter about what action it links and what it displays.

(imported from commit 1c79bd0d9ef972059a006b17501a09b72e961ee3)
2013-11-18 16:09:34 -05:00
Steve Howell e7e2f0ee6e Use "Username" consistently for bot emails.
(imported from commit 481609759e8bf051c99d4a983dcc8f8620837462)
2013-11-18 15:28:11 -05:00
Tim Abbott 9e8346f6d7 Display owners for bots on the admin page.
(imported from commit d1a80ab8f784ab7e7249cc020b1980bd45434abd)
2013-11-16 11:35:26 -05:00
Tim Abbott b55e406f93 Display deactivated users at the bottom of the admin users page.
(imported from commit 1a5d5d64fffc9ed7633d468b975dd56c28f85ccf)
2013-11-16 11:35:26 -05:00
Steve Howell f5093ddc50 Clean up admin_user_list.handlebars.
The inactive flag wasn't really supported, and the
activation_toggle_button class was misleading, since
we don't yet toggle in both directions.

(imported from commit 0c8511021dd580c86df4e80092a6dd49e32773f9)
2013-11-16 11:35:25 -05:00
Steve Howell edeb3263c1 Add bots to admin page (and sort humans/bots by name).
(imported from commit 8a13702b427155b5f4f5102d79ef434e98035600)
2013-11-16 11:35:25 -05:00
Steve Howell ee28e5e2f6 Relax 80-char limit on status messages (/me).
(imported from commit e9de2cb6c394f5b764e988e279f0fb3cfd38c6e8)
2013-11-14 13:51:07 -08:00
Allen Rabinovich ca4e6a0ff8 Updates to stream list
(imported from commit 426a8035e9661598f9bbfa6ae83883ca3ac6106e)
2013-11-13 14:59:07 -08:00
Zev Benjamin d610f2511f Fix search highlighting
The handlebars "../" syntax is the worst.

(imported from commit eadc9fbd47e384b618c06b30ab979b1c372649ff)
2013-11-13 17:28:48 -05:00
Steve Howell cb11780ded Remove whitespace from message template to make tests pass.
(imported from commit f577bae7651aab096e35ff9cb384a17fdc10fd97)
2013-11-12 16:47:32 -05:00
Waseem Daher 632ec1db47 Don't bold sender status when you use /me.
(imported from commit a88628bb5354f4be3db31e161e744d349e15c570)
2013-11-12 14:36:52 -05:00
Steve Howell 56c39728ba Support /me syntax.
If a user types "/me runs to the store", we put "runs to the store"
in bold after their name.

(imported from commit fbc11e99244e1c8fa1c03e4753e706957fcd449e)
2013-11-12 10:49:10 -05:00
Leo Franchi cc2d17d7c0 Allow omission of EMAIL_GATEWAY_BOT and stream emails
(imported from commit 51412d2a46bbacd6537ef892e7b6bdf33ac94079)
2013-11-12 10:32:34 -05:00
Steve Howell 52ec258122 [staging only] Show Recent Group PMs in right sidebar.
Show up to 10 of your recent group PM conversations in the right
sidebar.  Clicking on the links narrows to the huddle and opens the
compose box for the huddle.  The green circles have opacity
proportional to the number of users present in the huddle.

This is feature flagged to staging only.

Some of this code was written by Allen before commits were squashed.

Known issue: unread counts disappear on certain refresh events.

(imported from commit 3b44665150ba20594d8b0295cb30df03601c1d52)
2013-11-07 16:54:13 -05:00
Steve Howell 3fcbfeaa80 Move "Edit this message" higher in the info menu.
For messages that you sent yourself, it is more likely that you
will want to edit the message than reply to yourself, collapse
your own message, etc. from the info menu, so we make it the first
option.  This should make it easier for keyboard users to edit
messages.

(imported from commit 94c5036a4ae85ed091c95eae2545e78887a09598)
2013-11-07 10:43:09 -05:00