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)
If you search for "hello", then the word "hello" will once again
be highlighted yellow in the messages.
(imported from commit 172a40f1e288f9947ab3bfbff82b4a2f5ba5cecb)
One of the ugly parts of message_list.js is how it re-uses the message objects
from the server to hold handlebars template parameters. These objects are
shared between different message lists and re-renders, but are mutated by the
rendering process. The `dom_id` attribute is normally unset on summary rows,
and should not be used in the template. But when a message comes in with a
`dom_id` from another render, it can end up on the summary row, breaking
`rows.get()`.
(imported from commit ef6af65d5e995dffbd7234547786d6ea861920da)
When you read messages in a narrow and then un-narrow, collapse
adjacent messages read in the narrow into a summary row that can
be clicked to expand those messages.
Scoped to staging with feature flags.
The implementation of this within our current MessageList is rather ugly.
(imported from commit bcb3a39d8c0c334136fe86318f18ead03f0f50bf)