Commit Graph

305 Commits

Author SHA1 Message Date
Steve Howell 004d84f6e2 Redraw sidebar lock icon for stream privacy changes.
If you make a stream private/public from the Streams page
(which admins can do now), then we now correctly redraw
the swatch to have/not have the lock icon.

(imported from commit 35eb4ba12ad152e43b40f1bcf2c5db784a965dee)
2014-01-17 16:39:27 -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
Tim Abbott 7f174213ed Add an idempotent flag to the channel module.
(imported from commit d5b867d2a8f176cae76c8b68435c4fab318d998b)
2014-01-10 21:39:00 -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
Steve Howell 225b4c6925 Match full names in Streams autocomplete.
See #2137.  When you add a person to a stream on the Streams page,
the autocomplete will now match on the person's full name, not just
their email.

(imported from commit b250ea0dc61d54f7f2f330ef0616935d43234597)
2014-01-06 17:07:50 -05:00
Steve Howell 8606a88279 DRY up click handlers for admin stream privacy settings.
(imported from commit 1b684ae3e14647290911bd858165212adb418ca1)
2014-01-06 11:59:48 -05: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 492159c312 s/allow_rename/is_admin/ in subscription.handlebars
(imported from commit e5af8d97d0bcd63efd85e5745a8bb131b091f752)
2014-01-06 11:59:47 -05:00
Tim Abbott 795930c803 Add channel module wrapping our various JSON requests to the server.
(imported from commit 6489938678551ad8594822363ae6d1c9ae295496)
2013-12-19 16:52:47 -05:00
Tim Abbott 73643acd03 Fix muting the last stream in the home view.
(imported from commit b35e9903cdb8697a1010147854feb13060e9516d)
2013-12-18 14:30:17 -05:00
Leo Franchi baf2b5a275 Only scroll to a stream once the streams have loaded
(imported from commit 535c7900eae025a5ffc6d7167b8a56c20b1076d0)
2013-11-25 11:47:00 -05:00
Steve Howell 688cc4963c Rename sort_narrow_list() to build_stream_list().
(imported from commit 533dbe4171b859077c496f656f8c2476107b318c)
2013-11-22 14:52:04 -05:00
acrefoot dbd236b514 Autocomplete emails on streams subscriptions input
This resolves Trac #1867

(imported from commit 80ee6cc3a6b7ccacd8bd1bde71f1da8e3804ab79)
2013-11-19 16:43:37 -05:00
Jessica McKellar d1619b3f3c Use a more accurate "is admin?" check.
UserProfile.show_admin was intended to be a check for users that have
administrative rights in other realms, which we've harmlessly but
erroneously been using to check if they are an admin in their realm.

Use the more straightforward check instead, with a more intuitive
name.

(imported from commit d81050c7dbbb19e59c5e31750be303a4630e1456)
2013-11-19 14:31:02 -05:00
Allen Rabinovich ca4e6a0ff8 Updates to stream list
(imported from commit 426a8035e9661598f9bbfa6ae83883ca3ac6106e)
2013-11-13 14:59:07 -08:00
Jessica McKellar d43c01c911 Complete rebranding of 'in home view' to 'muting' the stream on the Streams page.
(imported from commit a56ef49eefedbcc1ae14ec8486dd3ca73bed1f43)
2013-11-04 10:29:38 -05:00
Jessica McKellar 69481a0843 Remove 'All messages' sidebar link.
Nobody uses it, and it causes confusion. (How is it different from 'Home'?)

For now, leave in the ability to get to the narrow, although we may
ultimately want to do away with it as well.

(imported from commit 35b3f27e39c4de3391bc5571b32f7242a29f4cfa)
2013-10-31 10:38:49 -04:00
Steve Howell 392197da28 Fix recent Streams page regression.
The Streams page should only show active public realms, even though
a user might have info about a "retired" stream in their browser.
I regressed this in 69b83d769 for "retired" streams.  A retired
stream is a stream that no longer has subscribers.  The bug
scenario here was that you could create a stream, regret it,
unsubscribe yourself, and then the stream never went away from
the Streams page.

This diff tries to be a little more explicit about building the
list of streams for the Streams page.  Basically you have two
sources:

    * Get only the subscribed streams from the internal
      data structures.

    * Get the unsubscribed streams by calling the back end
      for all public streams, and subtract out the subscribed
      streams.

I tested the following scenarios:

    normal stream with me: in Streams
    normal stream without me: in Streams
    my invite-only: in Streams
    their invite-only with me: in Streams
    their invite-only without me: not in Streams
    retired stream: not in Streams (but message colors are good)

See the email "custom query to get public stream names" for some
related discussion.

(imported from commit bc9224e68797b26b795399941117faa9d6858b39)
2013-10-25 13:50:34 -04:00
Steve Howell ac7eace8fb Remove subs.reload_subscriptions().
(imported from commit 72d831101033fb7db4b024781bf597f63345be79)
2013-10-22 15:51:19 -04:00
Steve Howell f34b2e4f75 Don't repopulate subscriptions on a stream rename.
We want to deprecate reload_subscriptions(), which was kind
of a big hammer to use when only a single stream is being
renamed.  Now we call stream_list.rename_stream() to update
the sidebar.

(imported from commit a77d09c0433d9b605b7baa7d7c61183bc8c37ba9)
2013-10-22 15:51:19 -04:00
Steve Howell b55a2bfc58 Avoid reloading subscribers when opening Streams page.
For a large domain like HS, we were pulling back about 100k of
text with subscriber emails when we opened the Streams page.
This was unnecessary, as the subscribers aren't shown until
you expand the stream, and there's already an AJAX call.

(imported from commit 69b83d769030d87318acefc364ac6ff3a2ec3605)
2013-10-22 15:51:18 -04:00
Steve Howell db398d5e41 Send ids, not emails, of subscribers when loading the page.
(imported from commit 26bbf38664d246476df7062432fa20add7d4cb11)
2013-10-22 15:51:18 -04:00
Steve Howell 9df7ee454d Eliminate transitional email forwarding flags
(imported from commit cc9305e554a381de5a36b7c353bbf53b71b2d43c)
2013-09-24 16:19:54 -04:00
Jessica McKellar a0ff47a449 Add frontend support for newer realms receiving stream notifications by default.
(imported from commit 6b7f8d7bc85177d0d85384ac4bed508afdec7e83)
2013-09-24 16:19:53 -04:00
Jessica McKellar e73e3d1bac Don't error out on a name change for a stream you're not on.
(imported from commit 8438087b3b6c66f41b9d9152661a93f01a086b28)
2013-09-18 16:09:48 -04:00
Leo Franchi 0cf588cd25 Show a warning and action button when @-mentioning someone not on the stream
(imported from commit 464d5a028f6a8f2698683e7317972dc0c7b9e336)
2013-09-17 16:49:47 -04:00
Jessica McKellar 91e8ec454c Remove stream list flicker on a stream rename.
(imported from commit f85b26c3c2179757d191090584f61576459ffdc0)
2013-09-17 16:23:08 -04:00
Steve Howell 031f5f5333 Call stream_data.set_subscribers() from subs.create_sub().
Use the stream_data API to set up subscribers, so we don't
leak the data structure details into subs.js

(imported from commit e95616f2eb535ecf0e1cef35a143a71ad88de5bc)
2013-09-17 10:32:12 -04:00
Jessica McKellar 6cd33870e9 Add the frontend UI for realm admins to rename streams.
(imported from commit ab52fe8639c312be118f0807615c9d5712d410e9)
2013-09-16 16:16:13 -04:00
Kevin Mehall 810dd89621 Maintain a list of people in the realm.
people_list and people_dict include the feedback bot and anyone you've
cross-realm PM'd with. Useful for autocomplete, but not for admin and
stream settings views.

Fixes the UI part of Trac #1772.

(imported from commit cdefd4e86980447aad5190e7fc8ae3666d66e3c3)
2013-09-09 12:13:33 -04:00
Scott Feeney 9c454dfe02 Track peer_add/peer_remove events on client side
This is the last step in getting a consistent client-side picture of who
is on a stream (provided non-MIT realm, and provided the local user is
subscribed to that stream).

(imported from commit 8bca722f169860ad4c1c92fdcb70d62c60f70fed)
2013-09-06 23:13:48 -04:00
Scott Feeney 7d3727d3bd Import subscribers list client-side when you subscribe to a stream
(imported from commit d42dfd6afc3778740934dad869ca86515dc966e5)
2013-09-06 23:13:48 -04:00
Scott Feeney dfaca2e9c7 Import initial subscriber lists from page_params.stream_list
(imported from commit b9679d30e4235efb6f47c2fa6c006790df616564)
2013-09-06 23:13:47 -04:00
Scott Feeney eb59d06aab Simplify subs member list rendering
(imported from commit 8772bc09341a89245c6013dcf106ce52c81abe7a)
2013-09-06 23:13:47 -04:00
Scott Feeney f386d87f8e Add "announce stream" option to frontend UI
When creating a new stream, this option lets you announce its
creation to everyone who you didn't explicitly add.

(imported from commit ae4140b4268b73e8b4bb54f5a6eea12fe07cd110)
2013-08-29 10:32:37 -04:00
Jessica McKellar ea1420d201 Add a (?) popover hint next to stream email addresses.
(imported from commit f365afcf7bd256d0417e67c69f9fa67c5b15d418)
2013-08-28 16:43:40 -04:00
Jessica McKellar 9ffc292a57 Update a stream name in the UI when it has been changed.
(imported from commit 1fb90a83a62243997d870e1b5da0590402bd8529)
2013-08-28 10:23:39 -04:00
Tim Abbott 8aa11a60f8 Fix tracebacks opening stream on streams page.
This was caused by a branch I was working on conflicting with the
stream_data.js split.

(imported from commit 995dcf1412114bd36404b8c7ef66eb6f1e89648a)
2013-08-20 17:15:56 -04:00
Tim Abbott 5f724a94ac Add support for invite-only streams in mit.edu realm.
This changes the mit.edu access rules from:

* Susbcriber list and inviting users to streams are unavailable

to

* Susbcriber lists and inviting users to streams are only available
  for invite-only streams

streams must still be made invite-only manually.

This both cuts down on the amount of code that is different between
the mit.edu user experience and the standard one, as well as paving
the way for us to invite-only streams for zcrypt.

(imported from commit 24e0e85428608c05c89eeea349338dd392e5489a)
2013-08-20 14:57:14 -04:00
Steve Howell 29c012dc74 Create stream_data.js module.
This pulls a lot of data-centric functions out of subs.js.

(imported from commit 0deed7d4bf5697e893af9bc9d888c2d5da8d9fa2)
2013-08-19 12:17:55 -04:00
Scott Feeney 0241ae4136 Fix "All messages" showing when it shouldn't
I haven't filed an issue about this since I just quickly found and
tracked down the bug, but the STR were:

1. Subscribe to stream foo
2. Hide foo from your home view
3. Unsubscribe from stream foo
4. Unhide other subscribed streams you've hidden from home view, if any

The "All messages" link would stay, although it should go away in this
case. The apparent cause was an incorrect assumption (when implementing
this feature) that the stream_info dict only contains subscribed
streams; in fact, we also populate it with streams you used to subscribe
to.

(imported from commit 67f95c8c8a211a4943a2de394919d15a0d5435d0)
2013-08-15 16:21:35 -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
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
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 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
Steve Howell e36fd929bc Created stream_color.js.
This is a pure refactoring that mostly just moves code from
subs.js to the new stream_color.js and updates module references
accordingly.  In order to prevent introducing some exports,
update_stream_color was given an additional "sub" parameter
and update_stream_sidebar_swatch_color was given an "id"
parameter.

Killed off unused initial_color_fetch var.

(imported from commit b7644ce67f50d31fb46f564d758d661eea776aa6)
2013-08-08 18:22:44 -04:00
Tim Abbott b600c9453d Rename humbug => zulip in subs.js local variables.
(imported from commit 33a3b46ebbf78bcb5cf5654f817acd2f4e7b5e9a)
2013-08-07 10:00:09 -04:00
Steve Howell de252b0ee9 Remove utils.memoize().
We use _.memoize() in the one place it was called before.

(imported from commit de15a61eed47551f0f539aacba6df3303c865299)
2013-08-06 18:22:11 -04:00
Scott Feeney 38abee8e66 Refactor code to show/hide "All messages" link
Code prior to this commit was functionally working, but semantically
flawed — returning false does not short-circuit _.each like it does with
$.each. It now uses _.every, as suggested by Steve.

In addition I renamed the function to be more descriptive, added a
comment, and eliminated needless double negation.

(imported from commit b0666dfa01b2677b4eaf577fe9ced90ed0db2438)
2013-08-01 10:16:32 -04:00
Scott Feeney a35fff90cc Replace $.extend
(imported from commit 2c1ee3c2714d388f2a71398fe81c049cc54ff94d)
2013-07-30 12:12:59 -04:00
Scott Feeney 8703134a23 Replace $.each with _.each
In a few cases the $.each was doing something imperatively that was
terser and easier to understand by using a different Underscore method,
so a few of these I rewrote.

Some code was using the fact that jQuery sets `this` in the callback to
be the item; I rewrote those to use an explicit parameter.

Some code was using $(some selector).each(callback). I converted these
to _.each($(some selector), callback).

One function, ui.process_condensing, was written to be a jQuery $.each
callback despite being in a totally different module from code using it.
I noticed this and updated the function's args.

(imported from commit bf5922a35f257c168cc09ec1d077415d6ef19a03)
2013-07-30 12:12:58 -04:00
Scott Feeney 375b1f9eb3 Replace $.map with _.map
(imported from commit 97c7a6612d8d56d19f8650db0ea8906afc0f20ef)
2013-07-30 12:09:18 -04:00
Tim Abbott bc4d7c687d Rename our custom JS events to use Zulip, not Zephyr.
(imported from commit 61ac456d394a6dbc14f3e9183a53313990db5059)
2013-07-29 12:11:26 -04:00
Tim Abbott 3bba0cc927 Move zephyr/static to just static.
It's not really a part of the server (aka the rest of zephyr/).

(imported from commit 27f6b6b064938ad927075a68d873e4b68710d279)
2013-07-29 12:11:26 -04:00