Commit Graph

4664 Commits

Author SHA1 Message Date
Jeff Arnold
ec2f013723 Make the left sidebar and right sidebar more consistent.
Addresses Trac #1500.

(imported from commit ad59d6f78042ce89a99ad60c7c34f67144e9c776)
2013-08-13 16:34:16 -04:00
Jessica McKellar
f530e3b930 Display the email address for a stream in its stream page detail.
For now, only show it on staging.

(imported from commit fd07fad1c34578d8ddc2cddd1bb6bdcb72f354de)
2013-08-13 14:28:47 -04:00
Jessica McKellar
f7784a2f1d Add a handlebars helper for variadic compound AND conditions.
e.g., from a comment in the commit:

// Execute the conditional code if all conditions are true.
// Example usage:
//     {{#if_and cond1 cond2 cond3}}
//         <p>All true</p>
//     {{/if_and}}

We'll use this for the email forwarding UI, but it may also be
generally useful, and easy to generalize to OR.

(imported from commit da601f94d9da300213ff46be50255135c014eca0)
2013-08-13 14:28:47 -04:00
Luke Faraone
af4c34330b Switch to checking database is_bot field instead of using a heuristic.
This has the amusing side effect of showing all the Zulip bots in the
administration view because none of them have the is_bot 	 set.

(imported from commit cdec19d2109c092018c1f331aa32f345d1587683)
2013-08-13 14:20:18 -04:00
Luke Faraone
ecc42bc9f8 Add administrative panel to allow for user deactivations etc.
We now show a list of users and allow you to deactivate a user using the
same process as `python manage.py deactivate_user`.

We add a new menu item accessible from the gear icon which will eventually
have much more than just this, but we have a good start here.

Here we also add a property to UserProfile which determines whether you're
eligible to access the administration panel, and then have code which shows
the menu option if so.

This introduces a new JS file, admin.js.

(imported from commit 52296fdedb46b4f32d541df43022ffccfb277297)
2013-08-13 14:20:18 -04:00
Steve Howell
78d8153e6b Remove compose box flicker after sending messages.
We remove the calls to clear_box()/hide_box() and start(),
so that we don't mutate a bunch of UI elements needlessly.
Everything that start() does either never made sense in a
just-after-message-sent context, or it was necessary prior to
this fix only because of what happened in clear_box() or
hide_box().

This change closes out trac #1672, "Clean up always-open code."

(imported from commit bedaa719eb05e166a4bac562784da0cce8859700)
2013-08-13 14:12:29 -04:00
Steve Howell
8f11ce7485 Remove redundant calls to send_status.hide()
One of the calls was obviously a typo dup, and the other
call is already covered by clear_box().

(imported from commit 448dc4c0f265cc7260ea08f0468a7d1440903e3c)
2013-08-13 14:12:28 -04:00
Steve Howell
5248c68fb7 Extract compose.show_box_for_msg_type()
(imported from commit 886717cbc73d0d662ccbd96091e94b85864d0049)
2013-08-13 14:12:28 -04:00
Steve Howell
86b337ca75 Extract compose.same_recipient_as_before()
(imported from commit 2ba8589127e3a0e86c00bb52a22be01bcad48a5d)
2013-08-13 14:12:28 -04:00
Steve Howell
6314089e26 Extract compose.fill_in_opts_from_current_narrowed_view.
(imported from commit e89c6c7f42aa8fdfd77e879e6d9f43dd67744ea6)
2013-08-13 14:12:28 -04:00
Steve Howell
0879648f0e Remove respond_to_cursor flag.
The prior commit, which was a functional fix, made the
flag obsolete.

(imported from commit 203a080106b00e0355a1223f783bbe579430b4ad)
2013-08-13 14:12:28 -04:00
Steve Howell
2b2587d70b Stop using old reply recipient in always-open compose.
Due to the code removed in this diff, we would put you
back to your original reply stream/topic/sendee

(imported from commit 6e1f4666e3b32b057e692e015782780f7c734445)
2013-08-13 14:12:28 -04:00
Steve Howell
6686ca04d2 Remove feature_flags.always_open_compose from code.
The flag has been set to true for a while, so we removed
the flag and a bit of dead code associated with it.  This
change should not affect any functionality on any realm.

(imported from commit 8d457f52584173994d0e5e83ca326f892cd90057)
2013-08-13 14:12:27 -04:00
Steve Howell
ad10cecdd7 Extract mark_summarized().
(imported from commit 14a1c69392ec6ca8cb0ec72196368a195dd4c6fa)
2013-08-13 11:26:12 -04:00
Steve Howell
d27feeed62 Extract code to summary.js.
(imported from commit 51d958b27e53555f5f77d6e6b661eade57190e23)
2013-08-13 11:26:12 -04:00
Zev Benjamin
62f607fd5e Debounce fading on the leading instead of the trailing edge
(imported from commit 11d0e8938c1f29cfea0678330e7af9884844af21)
2013-08-12 18:07:30 -04:00
Jessica McKellar
29a64b6c59 Only suggest declaring bankruptcy once.
Use information from the server to figure out if we should prompt for
bankruptcy, rather than trying repeatedly inside load_more.

(imported from commit ccb8cb1ce482b8bf3d343e7324fef7981880282d)
2013-08-12 17:33:40 -04:00
Waseem Daher
9ea08a35c5 Refactor: move attachment-related code into compose.js
(imported from commit 4436f0799a9c1a00e964962d4d0d165e03b641b7)
2013-08-12 17:22:23 -04:00
Waseem Daher
dfb60ee966 File uploads using Dropbox.
(imported from commit c552133fc7025eca526fbfef24fd544260d7111b)
2013-08-12 17:22:23 -04:00
Waseem Daher
067bd390ac Remove kiosk mode.
We instead implemented the ~desired functionality here using the
API and a bot to make a totally read-only, static, slowly-updating
view into the Zuliverse.

This is the moral equivalent of reverting deb035b4c702fcdb0e660ed549fe74c682abb6d9

(imported from commit 9d743fe82f197b37f005e5a038f77cc4b8566024)
2013-08-12 16:19:53 -04:00
Waseem Daher
f44176020e kiosk: Suppress user-info popover.
(imported from commit bda1714a49ea0cfa4ad0ec6447c7bb3fcf8b866b)
2013-08-12 16:19:53 -04:00
Steve Howell
878ee2b3fd Move Filter class to filter.js from narrow.js.
1) The class Filter now lives in its own module.
2) The function canonicalized_operators() is now a class method on Filter.
3) The function message_in_home moved to filter.js and became private.
4) Various calling code had to change, of course.
5) Splitting out Filter helped simplify a few tests.

(imported from commit e41d792b46d3d6a30d3bd03db0419f129d0a2a7b)
2013-08-12 13:58:32 -04:00
Zev Benjamin
46eb90a238 referral: Clean up display of validation errors
* We now clear the validation errors when the input box is de-focused
* We make the left sidebar height accommodate the validation error messages

(imported from commit 4b39bfd3e8e8dd707722492a3f98967ee4ccf0ab)
2013-08-12 12:50:33 -04:00
Zev Benjamin
51beeba854 referral: Prevent empty form submission
(imported from commit cc012e84c21bc424adaaa79611f09415480a2ba5)
2013-08-12 12:50:32 -04:00
Zev Benjamin
16f2a6e284 referral: Only show "no more invites" message when you first deplete your invites
(imported from commit 831e8aa466c4c4e463e269bad75078d1328fe286)
2013-08-12 12:50:32 -04:00
Zev Benjamin
848242399c referral: Hide explanatary text after first referral
(imported from commit 91460b80e2f45b9eaf2f24b3c1eb75ded884c445)
2013-08-12 12:50:32 -04:00
Zev Benjamin
126fcd42d7 referral: Show feedback immediately and don't show errors
(imported from commit 3bf6071c4fdeeaa50ea05c60b4bf0244c78ebeb0)
2013-08-12 12:50:32 -04:00
Steve Howell
c4e168254c Fix too-much-fading regression and remove spurious classes.
To get to the bottom of the too-much-fading regression,
it was necessary to clean up the code, which was overly
complicated by multi-purposed functions.

The API for compose_fade now has these functions:

    set_focused_recipient
    start_compose
    clear_compose
    update_message_list
    update_faded_messages

Internally there is now a notion of "normal display",
so e.g. when you want a normal display, we call
_diplay_messages_normally() internally, which removes the
faded/unfaded classes from all messages.

(imported from commit 7eb2b0a163f29d9ebae26661f432fecc7c331e4c)
2013-08-12 11:54:27 -04:00
Tim Abbott
e2413e8137 Defer processing of get_old_messages results during tutorial.
Previously we would just discard the results of get_old_messages,
which meant that any messages sent either while you were doing the
tutorial or that you started out with (as in the case of the CUSTOMER3
experiment) would be lost until you reloaded.

(imported from commit f5280c091ab6ed7c2af6eb8fe49c0fa6b997ac97)
2013-08-12 10:17:18 -04:00
Waseem Daher
41e88c89d8 kiosk: Try to suppress notifications.
(imported from commit dfb37bbf1e119ceeb719906c2623c6ea70e3112a)
2013-08-11 21:31:17 -04:00
Steve Howell
e720737cb5 Tune fade/unfade bouncing from 150ms to 50ms.
This makes fade/unfade start sooner (good), but it might
re-introduce some typing sluggishness (bad).

(imported from commit 4e3112ed1ac931f2931182f91b60567ef2d72695)
2013-08-11 18:18:01 -04:00
Steve Howell
6591c79184 Un-debounce fade/unfade when starting a compose.
When starting a compose, call compose_fade.set_faded_messages,
which will immediately do fade/unfade logic, whereas before
the code path went thru debouncing logic.

(imported from commit 7d0b30435be32a7132dbf05bf064b03b925a2d42)
2013-08-11 18:08:36 -04:00
Steve Howell
6cc5c43e59 Move code into compose_fade.set_focused_recipient().
Move code from compose.update_fade() into
compose_fade.set_focused_recipient(), which makes it
so that we only have to send the msg_type.

(imported from commit c17665d9f34f525bdedcd36d39d3a112fa36a914)
2013-08-11 17:54:50 -04:00
Steve Howell
8190cdc9fb Avoid redundant O(N) work in unfade_messages()..
The code in unfade_messages() is O(N) over the number of
messages, but a simple flag allows us to track the fact that
all messages are unfaded, so we can short circuit the O(N)
logic in many cases.

A typical scenario now would be that you start typing a
stream while the topic is still empty.  Modulo debouncing,
every keystroke now leads to a call to unfade_messages(),
but this change only does real work the first time.

(imported from commit da07cf408bbdbf5b381ff3ec33a5e05e34eef5b5)
2013-08-11 17:05:13 -04:00
Steve Howell
37f8cc9294 Extracted code into compose_fade.js.
The compose_fade has three public exports:

    set_focused_recipient
    unfade_messages
    update_faded_messages

All code was pulled directly from compose.js, except for the
one-line setter of set_focused_recipient.  The focused_recipients
variable that used to be in compose.js was moved to compose_fade.js,
hence the need for the setter.

(imported from commit 462ca5d0d0bd58612d0197f3734a8c78de8c6d30)
2013-08-11 17:05:13 -04:00
Waseem Daher
0dcaf9ca3d Kiosk mode [unsafe].
"Kiosk mode" is a "read-only" Zulip suitable for embedding into
an iframe on another site. I say "read-only" in quotation marks,
because the account is still a fully-fledged active account on
the server, and we just tear out a bunch of stuff in Javascript
(that a malicious user could easily re-enable).

So in that sense, it's not actually safe in security-sensitive
environments -- malicious users logged in via kiosk mode
can do anything the kiosk-mode user can do.

(We need this functionality for the customer3 realm specifically;
 we'll possibly just tear this code back out once that experiment
 has run its course.)

(imported from commit deb035b4c702fcdb0e660ed549fe74c682abb6d9)
2013-08-11 15:57:21 -04:00
Steve Howell
dbcbeb17d4 Debounce update_faded_messages to once per 150ms.
This is an attempt to make the compose box less sluggish.

(imported from commit b1450216da0a92fc69e0d129a74e76eca37df1b5)
2013-08-11 12:01:24 -04:00
Steve Howell
35af96a807 Add hasClass() optimization for fading.
(imported from commit 859e5c2ad731e16d4b4a7de80e574ee5131888fc)
2013-08-11 10:49:11 -04:00
Waseem Daher
8aa80f6800 Disable browser spellcheck in desktop app.
This fixes Trac #1567.

This is kind of a big hammer approach, though. If we did support
spellcheck on other platforms (without doing more work), this might
actually potentially disable it.

But we don't, so this is mostly a non-issue for now.

(imported from commit 74dcb42b19c37e1e8d1e9a2b265e1e6ae0cc2c67)
2013-08-09 18:53:22 -04:00
Zev Benjamin
222f6194e2 Fix key lookup when canonicalizing operators
(imported from commit 59d460bfaa50c0872918d1e5a22efb98d15ce669)
2013-08-09 17:35:58 -04:00
Zev Benjamin
ec9322fc87 Use Dict everywhere we have keys based on potentially dangerous, user-supplied data
There are also one or two places we don't need to use it for security
purposes, but we do so for consistencey.

(imported from commit aa111f5a22a0e8597ec3cf8504adae66d5fb6768)
2013-08-09 17:35:14 -04:00
Zev Benjamin
0cfc8fae9f Add basic Javascript Dict implementation
(imported from commit 9f2fb089eb6e269549de26b37bd588355757d22c)
2013-08-09 17:20:14 -04:00
Zev Benjamin
e0eddabeb1 Add util.enforce_arity
util.enforce_arity takes a function and returns a new version which
throws an error if an incorrect number of arguments (as determined by
the function prototype) are passed.

(imported from commit 20e69a6dc7b6f8455726ab4fae8d5b7b04dc4103)
2013-08-09 17:12:23 -04:00
Waseem Daher
1f80302668 Use 12-hour time (with some exceptions).
(imported from commit 0cb3cfe23c8696368e3dc8ac51eaa5419928f6f5)
2013-08-09 14:32:02 -04:00
Steve Howell
6790ed79cc Add a unit test for activity.js.
This includes slightly invasive, but harmless, changes to
the production code.

(imported from commit ff40af504de2360ada866508da262e0d2e9f7ad9)
2013-08-09 13:11:59 -04:00
Steve Howell
cf1d94edef Add a test for stream_color.js (pick_color).
(imported from commit a49f96a4a7b61ef51c057e8a3f11c116d77ebb49)
2013-08-09 12:29:02 -04:00
Steve Howell
cc73619a9d Add unit tests to narrow.js.
This includes slightly invasive, but harmless, changes to
production code.

(imported from commit 847557c11088b75c836cc399d0af75353a8faa3a)
2013-08-09 11:59:32 -04:00
Steve Howell
48b4fed555 Use _.where and _.pluck in subs.subscribed_streams().
(imported from commit b6ff77f3d762c88ed6f04c9eb9ca9135b6eeb8ca)
2013-08-08 19:09:14 -04:00
Steve Howell
9c994265c6 Randomize stream color assignments.
This fixes trac #1357, which says that some users get annoyed
when the system keeps generating the same color for them, which
would happen if they didn't like #76ce90 and kept picking a
new color for their streams.

(imported from commit 0fdb726aad4009332cc056a5e98bb39e01ef414c)
2013-08-08 18:22:44 -04:00
Steve Howell
7d67716c21 Simplify code to generate new stream colors.
Instead of splicing up a cloned copy of stream_assignment_colors
every time somebody uses a color, we just rebuild a hash
of used_colors from our subscribed streams when we need to assign
a color, and we avoid calling into stream_color.pick_color() when
a stream already has a color.

This change has a slight functional impact in the situation where
a user unsubscribes some streams during their session, because
we weren't "reclaiming" colors before on unsubscription, but the
simple approach gets that for free.

(imported from commit adf360365bdf1ae9db99c533a0bde62d91f5dfe8)
2013-08-08 18:22:44 -04:00