So that it is, in fact, navigable via keyboard shortcut. It's not the
most beautiful way to do this; in the ideal world the layout would be
more properly responsive and could fill up the screen for you when you
have the room for it.
The issue is that the version of Bootstrap we're running doesn't
easily allow for variable-sized modals, and the hassle of showing
and hiding a div manually didn't seem worth it.
The pixel sizes are specified manually as well, in a way that
isn't particularly responsive, because of a few competing
desires:
1) For them to appear side-by-side when wide enough
2) For them to stack when not wide enough
3) The fact that they're awkwardly between a span2 and a span3,
so we can't just use the Bootstrap responsive layout stuff
Finally, the diff here is best viewed with -w. (I also swapped the
order of Narrowing and Navigation, which unfortunately clutters the
diff.)
(imported from commit 62cfa7959d48ce515562713eb48f9d9b33c8cc16)
... so that I can send the user to a narrowed URL and even if they're
not logged in, after logging in, they will arrive at the intended URL.
Fixes trac ticket #662.
(imported from commit 1fe10883b181ba096596ec2b32daefd0fdfbc9c6)
I'd like to phase this out in favor of something you actually
see only when you don't use Tab-Enter, but that's more challenging
than I'm prepared to tackle right this second.
(imported from commit eeda53b0ed69d0e528b00ea9e7c7a20edb35df34)
If you're currently composing a message and you click one of those, it
now no longer clears out your old message contents, making it more
analogous to the job the old selector used to play.
(imported from commit b935a3bf307bdbd82f1ee7db31d3a3c89c623195)
Accomplished by:
- Hiding the stream/PM selector
- Eliminating the "tab to send" reminder
- Moving send and formatting links to the right
- Reducing the size of the 'subject' box
- Generally tightening up whitespace
To be fixed later in this series:
- A Tab-Enter reminder
- Completely eliminating the stream/PM selector
(imported from commit 7efe04adcbe373f99a36d3ba23b32944c17aa099)
CasperJS can't handle them; window.webkitNotifications.requestPermission()
throws a type error. We can revisit this when we want to write tests for the
notification code.
(imported from commit 90f4d6ac3ddb387e74051b9af2c230698fa94479)
This view lives at /accounts/accept_terms, and (after getting an acceptance
from the user) sends an email to all@ documenting the acceptance.
(imported from commit 8f64286ab02887fd6544fa274b2967f6499b6dbc)
Show the buttons iff
- the search input is focused,
- the search input has non-empty contents, or
- we are narrowed.
(imported from commit f5c98471a2db4ab522160960dd1271471a9db555)
Add maxlength attribute to the textarea which displays a tool tip (in Chrome)
for the user, telling them they are over the limit, so that the error is caught
before the send_message step (which is too late for Create and Send).
Fixes trac ticket #166.
(imported from commit 36b211a17f42dc8345e2235b4b4ca74c8f4e86c4)
CSS height percentage was not working because parent div has an undefined
height, so instead it is set to 40% of the window height on resize (and initial
load) via JavaScript.
Fixes trac ticket #24.
(imported from commit 2c6a8489585c4bf70c44469ce8628264ec3fbc36)
Hopefully this will make things slightly more discoverable;
the previous solution (putting a prompt in the initial text)
was not that discoverable.
(imported from commit f6a7fce1bfd27bda412522768e981b2ffc39f474)
"Send to stream" is confusing. Also, "Send to stream" is
asymmetric with the strangely verbless "Private message".
This reverts commit bb81f78948de20e78726c0cfbdeb91d7d21f32bf.
(imported from commit 1639e197d7acb2cc1d4ffd8dc67d3f3ca6712d0b)
This allocates more horizontal space to the date columns, which prevents them
from wrapping onto two lines.
(imported from commit 25105136850f74de0fd7c873a9365639db0984d5)
feedback-bot and zephyr_mirror will need to be updated and restarted
when this is deployed to prod.
(imported from commit fe2b524424c174bcb1b717a851a5d3815fda3f69)
Make it so the image is not squished, change some paragraphs into
headers, and wordsmith a bit.
(imported from commit 81295e1a8ddd4f1ecd4532c4dfb8a38467bb530e)
This is an interim strategy for user education that'll be a stopgap
until we build something in the app itself.
(imported from commit 9022d4ceffca98e127f7045f73c012857fe6fc54)
The tabindex on this link doesn't actually do anything, because of the Safari
tab workaround. I added it anyway in case we remove that workaround later.
(imported from commit 11f31f2561907300b350c11732be88589d736f94)
This fixes a bug where you could click on the already-selected mode button, and
it would switch modes without changing which button is selected.
(imported from commit 263ee0b52ba844c52a3a60968bb1bbff73482412)
This restores the time-travel functionality and fixes Waseem's laundry
list of problems with its original UI.
(imported from commit e30e02c25af994435adb815d26284b3669c945a4)
We never implemented this; the link goes to a 404. And it's unlikely that we
will get to it soon, because we currently use email address as the unique
identifier for a user.
Since it can't be changed, we remove it from the 'Settings' tab entirely.
It's still visible in the sidebar, anyway.
(imported from commit a18c0726fb67baf04429a90e36a383cacd03ad8a)
If Javascript breaks or stops working, the previous hack means that
Tab-Enter stops working on Firefox and Chrome (since the tab key now
needs to select two divs before it gets to the Send button.)
By putting the one div *after* the Send button, we ensure that this
keeps working gracefully on Firefox and Chrome (and presumably IE), at
the expense of Safari in this specific case.
(imported from commit 9c9a613b1b1718ff8f0b9ef7497ebb13db0ddc64)
The main problem with this code is that the error message doesn't go
away until you reload. To fix this, we need to add a noblock option
on get_updates.
(imported from commit dc45af397bcf06a218bda5dd224ebd5fdf3462db)
If we don't do this, we get all kinds of nasty shadowing where
references to 'search.whatever' seem to be references to the
HTML input element, rather than our search.js module.
(imported from commit 4e4b562ddf895baea9619316d9fab27ae5e9fc4e)
Previously we bypassed the big buttons on the left bar and clicked on
the anchor tag inside the compose box. This bypassed the
compose.start() call.
(imported from commit 2b627825596c8d3c21441e58db895b8e488e624b)
Personals are now just private messages between two people (which
sometimes manifests as a private message with one recipient). The
new message type on the send path is 'private'. Note that the receive
path still has 'personal' and 'huddle' message types.
(imported from commit 97a438ef5c0b3db4eb3e6db674ea38a081265dd3)
And having the onchange there e.g. breaks shift+tab in the subject
field after you've entered new text into the subject field
(imported from commit 080e81bd847a1b6d3defadb62b6c3640910e5aa0)
This seems to fix the page-scroll issue and is also a little less
ostentatious.
Fixes https://trac.humbughq.com/ticket/243
(imported from commit 5fdbcc62a251303d134aea46a0755984df125c63)
This reverts commit 429e055d3eca65af8bc0fe58481a7becf9ced66a.
There is some inconsistency between the names 'huddle' and 'personal' that is
breaking things.
(imported from commit 4c81853fca9d88d13ce8f23e2d6884c33cdc57d2)
This means you can click the label to focus the corresponding box.
Also, it's more consistent with our other HTML, and may have accessibility
benefits.
(imported from commit c40de1e4137eb8ce5c69775ebcae346af9ae4e32)
This makes the Home link modal (when on the Home pane, it unnarrows
you; when on a different pane, it returns you to your feed in whatever
state you left it).
Fixes Trac #5.
(imported from commit 3181f17035d78a9916ab7a3ad336f34cb66d3cdf)
This reverts commit 1a52ceaf00670e0861f5b7f043da78baff6bebe5.
It actually makes the composebox somewhat glitchy,
which I didn't notice locally.
(imported from commit cee0fac9bb61a710923301de1d51f86f7ffa5067)
This also cleans up the autocomplete source specifications,
making the three typeaheads all look fairly consistent.
(imported from commit e72655d715db74cfc9ab45b51e7e2ff9e8ea84c5)
So that the 500 error view will render properly, even though no variables are
set. We keep the variable static_hidden, which by design is not used on the
500 page.
Fixes#240.
(imported from commit 3c7534f896479b7d7edbe5ef13958481e169a13c)
For users logged in to Gravatar, this goes directly to the page where you
change your avatar. For those not logged in, it's a more directed path to
logging in or signing up, compared to the gravatar.com front page. However
it's less clear why you are signing up for a new thing, so maybe that's bad.
Also this link uses HTTPS; it seems we can't get that without the 'en.' prefix.
(imported from commit e03f97ef5ed2ff6593a9b349176da5fd056c4514)
This isn't used by our CSS or Javascript, and we're trying to get rid of the
"zephyr" name.
(imported from commit c3cae24168088eef2bb64944d9a1bd1d8be4b59d)
Here we introduce a new manage.py command, activate_mit, which takes a
number of usernames and sends out emails to the users with instructions on
how to activate their accounts.
(imported from commit f14401b55f915698e83ff27b86434f53e64685f3)
Documentation variously says to disable on the form or on the input box, e.g.:
https://developer.mozilla.org/en-US/docs/How_to_Turn_Off_Form_Autocompletionhttp://msdn.microsoft.com/en-us/library/ms533486%28VS.85%29.aspx
However, at least in Chrome, disabling on the form produces an ugly
"This webpage has disabled autocomplete" message if you try to arrow
down on an input box as if there were suggestions, so I've just put it
on the input element. This still works on recent versions of Safari
and Firefox.
(imported from commit b47f438d6e1d930d7d6871070858c97c6479a0ae)
This reverts commit 074011dfe7dfa4d3cb331b32fc6cf465f98d095f. For
some reason this introduces some buggy behavior, and if anything I
should debug it more locally first.
(imported from commit 182193e6bb466a5668c2bb64e41712a793fa7ca2)
The order is:
- Stream/huddle selector buttons
- Stream name or huddle recipients
- Subject (in stream mode only)
- Body
- Send button
In huddle mode you can't Shift-Tab back to the selector buttons. I'm not sure
how to fix this.
We leave gaps in the numbering, BASIC style, to simplify future changes.
(imported from commit 562742c8e7d31620eac3ef171397d830b5eb3bb8)
Ideally this would be part of hiding zhome, but right now zhome/zfilt are
assumed to the tables themselves, and changing that seems unfortunately
invasive. And it's not crazy to think of the "loading controls" as a logically
separate thing that we might show/hide independently.
Longer term, we may want an indication in narrowed view that there could be
more messages on the server.
(imported from commit eb72d720da7c03f6f1378ae18ab6e973bf98247f)
Known issues:
* Not all of the options in the menu are functional yet
* The wording isn't totally perfect on some of these options;
I kind of want to use a 'first name' in some of them.
(imported from commit 5a333fb939fcca7e0d0ecb2c43e79501139ac0db)
Embedding this in index.html won't work anymore, because the Django FastCGI and
the Tornado servers might have been started at different times.
(imported from commit 187909d0593449cf2989857671f9ca526723e451)
The key property is that we never reveal the non-public directory name
4nrjx8cwce2bka8r to a not-logged-in user. This makes it less likely that
random people from the Internet will download all our client code while we're
still in private beta.
(imported from commit 7428e847e0a1a34152cb6dc2b677c1b47290c202)
There were two issues:
* The people_list population changed and I failed to noticed
* Typeahead source updating never worked before because calling .typeahead()
more than once does not change the data source
(imported from commit fda14029f4cd37260d82e7bb5689f5022e1b0d28)
When the window is narrow, vertical space (particularly in
our navigation menu) is at a premium, so let's be more
parsimonious.
(imported from commit 72628827bc108f4d9f2d47a11c48e0e772b769d4)
If its div comes after the currently_narrowed_to span, it appears
on its own, second line, for some reason.
(imported from commit d0b24f8e3aba3a6fdbe5624ba92ac81456e06634)
This is one approach, anyway. Another is to keep it inside
message_list, which is what we (currently) do in the composebox.
(imported from commit 64c69b931012e3d21b7a10e3909f7a13f7dcfc4f)
Django's escapejs prevents breaking out with an embedded </script> tag.
It only works on bare string contents, not JSON-ish lists and such. So we
generate stream_list and people_list with template loops now.
(imported from commit 07fe4bebaa3fa11bc479b4378b8989560ce77f6f)
This has been disabled since forever, but we've mostly been assuming it's
enabled. Let's actually turn it on and see what breaks.
(imported from commit a194ba4b77b5290c31b46401d400bece68a33e6d)
There are other focus issues related to switching between a class
message and huddle during composition, but this fixes the immediate
problem.
(imported from commit ec7ebc1c68e52942e9eaa0ea61e0de2f6ccae521)
This also helps us manage checking, case-insensitive, for
subscriptions while preserving the casing used by the class creator
for display.
It also fixes a bug where the class_list would become out of sync with
your true subscriptions, allowing you to appear to send messages to
classes to which you had unsubscribed.
(imported from commit 5e8d017bcfb27a71c52f7517733eda7b926d721b)
This also prevents the "bounciness" associated with the fact
that the stream/huddle selector was an absolutely positioned
div relative to the bottom of the compose window.
(imported from commit 413003a83c187efd45d0281f7cb6c9d0bd550674)
Potential downside: If you were narrowed and went to, e.g.,
settings, you would lose your place. If we wanted to be more
fancy we could have this code fire only if you were already
on the #home tab.
(imported from commit 5e8d90ba255076a11aa6f7a58c447156729ca23f)
href="#" will cause the browser to jump to the top of the page, which
breaks everything in the scrolltheworld world, unless you suppress the
event.
(imported from commit ae03cbb9e8a82f28e8536f29485e9e947e7e76c2)
This actually is a bit cleaner than our last approach,
because (I believe) we run our scroll handler code
even after the final scroll event, which prevents the
pointer from getting hidden by rapid scrolls.
(imported from commit 3bde4e8f067cd2406f90c04425c6e4ffb81ea784)
The issue was that our 'button' was actually a link with href='#',
and we didn't actually cancel the event; so it jumped to the
top of the page.
(imported from commit e66decb3a202ea22176ec539a1ec1d405faf0117)
I'd like it to ultimately be the case that if you make the window
too narrow, the menubar goes to the very top and has small icons.
(imported from commit 0a5fe548d4d848c0358c9780df7af1fe1abc93fa)
Try to adhere to Bootstrap grid system a bit more consistently.
Unstyle subscriptions page for consistency.
Still not sure why the "affix" jumps when we switch to "Subscriptions."
(imported from commit 1c28de4e2ef3d6ed3d1bdcfd143eadefba2b46cb)
It causes problems when [un]narrowing, and we already do the rest of formatting
on the server side.
This reverts commit 90af0192b37bbebbf56d5e7c50f182485ddbca10.
This reverts commit df7e355648d2c4d6319de049933547ed96402fd8.
(imported from commit 99d87f0826ec2f49741f86fad6524ed93e76723f)
scrolling-tab used to be used to target which tab would be a recipient
of the scroll events generated by PgUp, PgDn, etc. Since we now let
the browser handle these natively, we don't need to worry about it.
(Instead, when we hook the 'scroll' event, we should make sure that
home screen.)
(imported from commit c555d960da995a09b370867c96d17f4ce4f2171f)
I would like to have split this into several commits, but it's hard to do
incrementally, because functions need to be defined before their use in global
data.
(imported from commit 31533396b236f3b657950b073982c317256f082a)
My expectation is that you may or may not get to "Search" by clicking
something like this.
(imported from commit 3f09286b1a8fa80455d6f6d55997f6f829fbad15)
Previously, when we narrowed on a super-long class/instance or
a huddle with lots of people, the box overflowed. This is an
attempt to fix that, even if it isn't the prettiest.
(imported from commit 4eb58726a4c4714bd5435a791ad8fea0eabb58ed)
This required some serious retooling of the table,
and some thinking about the interactions between
table-layout: fixed and colspan.
And some of it is still a little magic-number-y.
(Like that 97% width on zephyr_compose_box -- without
it, the stream compose box looks weird in Chrome,
but not Firefox.)
(imported from commit 20c426ad2dae5efa3107890b28976a957bb3d1e3)
We add a few templates for django-confirmation. We define a
"PreregistrationForm" which is validated by accounts_home, which then
generates a confirmation object and emails the user. This required creating
a new table for a PreregistrationUser with an email and status (confirmed)
field.
The register function now no longer accepts a "email" field in the form
and deals only with confirmation IDs to determine the email used to sign
up a user.
(imported from commit 4fcde04530aa7ad4de84579668daee7290b424ac)
But do keep the pointer on the screen as you scroll, and smoothly
scroll all the way up to the top or all the way down to the bottom.
(imported from commit 6acad2a16339ee5eeeebd62a853000c21e4b7152)
Previously, we were trying to expand a variable which wasn't defined. We
correct that here. Furthermore, we don't right-align the gravatar if
its being shown in the settings panel by removing the "profile_picture"
class.
(imported from commit 1ae09d1a44aca87962f971af82393bf4ece6d16c)
We will probably re-style this eventually.
Also, the animation freezes during template rendering. And the HTML is a "give
up and use tables" situation.
(imported from commit 847374b616dc7ce909834f23d5ed9522aa457254)
Split off some content previously placed into base back into index.html.
Move content previously localised in accounts_home to a new content_base
for use in the non-app version of the site.
We wrote up some copy and styled it according to taste.
In our new signup form, we no longer collect a short name and instead
extrapolate from the email.
(imported from commit cd734b13a4bda7f304129379524c4cc96b77b24b)
Benchmarks [1] show it's much faster than ICanHaz, though we will have to work
to realize those gains.
[1] http://jsperf.com/jquery-template-table-performance/77
(imported from commit b037a6f15e27fd49af88f814ff949811dbcd48f2)
In this commit we also remove the navbar from base.html for implementing
further changes as requested by Waseem.
(imported from commit 85a8ea82ff0e271120adde83e15eb671b5584722)
Put all the 'API'-ish URLs in the /json/ namespace so that
/subscriptions and /subscriptions/add, etc. can be real
user-facing URLs if we want them to be.
(imported from commit 1455a32d27e44547ab1874b6289243cb40c85dde)
Now that 'manage_subscriptions' only removes subscriptions,
let's name it that. Also, since both functions now only
act on one subscription at a time, use them in the singular.
(imported from commit 52cfc7b36eb1533da7aec1bc3a6e460151a56da8)
I don't love some of these icons, so I view them as pretty temporary.
(I'd like, e.g., settings to be a gear.)
(imported from commit 0433f226082acc37392e97b20648be8eee704b7b)
We no longer break random things! Its pretty grand, actually.
This reworks and reverts commit fbadd6e854722e41cccd2535748ee47f4efd657b.
Conflicts:
zephyr/static/js/zephyr.js
(imported from commit 534a120290855d3bf2cf979ac174267c2d07bf68)
For now the idea is that if you're in the search view (or the
subscriptions view) and you click 'New Message', we should
snap you back to the main view.
This may or may not be the right behavior in the long term.
(imported from commit 43c24e1af9e80225ff9be8a62f4c8c925960436a)
Previously we were iterating through all zephyrs twice on the server, now
we are moving part of that to the client so the client has an index of
Zephyrs that it generates itself as part of add_message.
(imported from commit c07a6c36911fa2eae6f216c34331be34b2aa8178)
Take a look with 'git show -w' to ignore whitespace changes,
there are some tiny tweaks to try to make sure we close
tags that we weren't properly closing.
(imported from commit 44cba1b8859842fd85a39a3062963af617556ca8)
You don't care about that content anymore. We probably want to clear
even more aggressively than this.
(imported from commit 29f6910a12e1b722f5801db644b04f54cf5bfd63)
I still don't love it visually, but it's getting there.
Some obvious issues:
Personals window is totally unstyled
Clicking 'new message' should perhaps give you a fresh new window
not something prepopulated with old stuff. Think about this.
(imported from commit 8b28fd084d550db404eabbe63c056fa6866c0697)
Put a little 'x' by the class or class-instance indicator, to make
it more analogous to the planned behavior of the view-in-context
search box.
(imported from commit fa01001cffa6a6094ba5fbdcbdc965addb2efa1c)
The purpose of this is to ensure that we can reference a zephyr by its ID
and get all the data about the zephyr; in the future we may not have all
such data stored in TRs as we do now.
(imported from commit 9128ddd01b46396fd276124ca1e6430538d3dd63)
Today I'm of the mindset that searching is a fundamentally
distinct operation than narrowing, so this reflects that.
(There would be a separate screen and UI for searching,
I guess.)
(imported from commit 432a4088612dafd06184bec228b63056961325dd)
unhide -> show_all_messages
narrow_indicator -> currently_narrowed_to
narrow -> searchbox
This is a little clearer about what these buttons/functions
do, which will be useful as we add a little more complexity
associated with searching.
(imported from commit b51e745ea71c212d6735e04011eaea5e71bf6d5a)
I'm not exactly sure that this is the interface we'll want for
this, but it's the start of an experiment.
(imported from commit ea18a9b05106546475bc151229955ddafd8e7b8e)
This was a historical artifact of how that used
to be a search icon right by a textbox.
(imported from commit 6f73bc8b5d174e4c07f1503ffd08650110e80420)
I have some serious concerns with this implementation,
but I think it's still an incremental improvement.
(imported from commit 6ed8d2545c727e25bf85b98a1528dbf3d155bc92)
This is mostly working; things that need to be implemented:
- Ask users for their Real Name
- Personal replies need skinning
- Miscl UI changes to match mockups
(imported from commit 3638cf5ec2ba2306004ba6db6fa4c25c47f76517)
Here we check if a class exists. If not, we prompt the user to create, sub,
and send his message to the class. If the class exists but we're not subbed
we prompt the user to sub.
This commit also added a decorator to views.py and refactored out some
redundant code.
(imported from commit 7234ef6c080f2a6de6ff0922635dddd90032f7fe)
Note that realms aren't actually used for anything, aren't prompted
for, etc, so this is mostly just a schema change and the refactoring
needed to allow setting the realm in the future.
(imported from commit b8b483dcc9601b288702284879e9c99707a50a5c)
Here we pull in the jqueryui library and a style sheet to provide a widget
to do autocomplete for various fields. We populate a list of all ever-seen
classes, instances, and people (C/I/P) into JS arrays and then pass them to
jqueryui.
Each time a new C/I/P appears, we reinitialise the autocomplete functions
so they will notice the new data.
(imported from commit f1ab69c99d21f68ccf40c015bd43960f463c6ff2)
Previously, if hamlet wrote to iago, and then hit "r" on his own message,
the form would prompt hamlet to reply to himself. Now, Humbug will DTRT and
prefill the form with iago instead.
(imported from commit cb3260d1d0bc89b184dac84ebf1e5642d0bc1606)
Ideally this would be expressed as an event handler bound to the
in every place that the pointer changes, but I haven't found a way to
do that yet (this is easy for *inputs* but not arbitrary DOM
elements).
(imported from commit c190e23f5ed5fd3e3a4823b763682d611ec5b446)