* jQuery selector for finding the min tweet ID on the page was wrong: it should stick to just top-level tweets.
* Tweet model default ordering was by creation date, which does not jibe with the infinite scrolling's assumption that we can cut a boundary by ID. Changed the model ordering. Also updated the collect_tweets cron to order by ID.
Before, when a revision that needed review was the first-ever revision of a translation, it would show as up to date (green). Now it shows as Needs Review.
* Drop the `Activity` class and table, replace with `Action`.
* And associated renaming.
* Define the concept of an `ActionFormatter` and a base class.
* Add a README.
* Implement a one-off {for} switch for alternating between FF3 and FF4 during AAQ.
* Load in new questions_config.
We don't update the question_config product keys ("desktop" -> "fx36", "beta" -> "fx40") because that has all sorts of Consequences that would take longer than we have to sort out. For example, the ability to edit questions about obsolete products without losing data would require access to nonexistent product keys in order to determine the proper extra_fields. Filed bug 639930 about addressing this.
The API is available at /postcrash. There is one required GET parameter: s.
A request without an `s` parameter is a 400.
A request with an `s` parameter that does not return a result is a 404.
A request with an `s` parameter that returns a result is a 200. (Or 304.)
All responses are cached for 24 hours and have Content-type: text/plain.
If an article matching a crash signature is found, its URL isreturned without
a locale. This will cause SUMO to use our Accept-Language localization
fallback when a user visits the URL.
Adds the default permissions for upload.imageattachment and switches the
views to check for the correct permission. Also ensures that del_image_async
returns JSON and improves test coverage of that view.
In test_answer_notification, change the person who posts the reply to someone other than the asker so an email gets sent to the asker so we can test it.
Put the number of solutions, and number of answers, below the avatar and name
of the person answering a question.
Not the prettiest thing ever but it does the job until we can get some love
and time from UX.
* Move the "busy" spinner outside the Refresh button (but still close enough to catch the eye after clicking Refresh) so we can re-use it for Filter menu changes.
* Grey out hidden tweets when they show up in using the All filter.
Tweet now uses tweet_id as its pkey. The surrogate key wasn't really useful, and this makes it simple to turn reply_to into a Django ForeignKey so we can traverse it for the Answered and Unanswered filters. Cascading deletes are okay for replies; it doesn't make sense (UI or otherwise) to hang onto replies to tweets we no longer have.
* Fixed home page to use product logo sprite
* Need the wiki_syntax styles to be last so they don't get overriden easily
* Tweak so only div.selections renders when it is needed
* Confirmation email
* Post-AAQ page for already active users is the DESKTOP question, what to do??
* First-step icons
* OS/Fxver/plugins
* (optional?) One-line Ask bar (like search box, submit label is "Ask")
* mobile tests
Still asserts the existence of the notice, including both the
DOM element and the text, but does not insist that the text be
in any particular language.
Also clean up unnecessary call in wiki.views.py [bug 632165]
And style document properly: #wiki-doc and #doc-content stuff.
Fix showfor JS to use <ul> properly.
Questions section require wiki documents created:
* Desktop home for mobile - Common Questions
* Mobile home for mobile - Common Questions
[bug 631622, bug 631624]
* Add an is_active column.
* Add stub implementation for confirmation email.
* Update .notify() to send a confirmation email and raise an ActivationRequestFailed exception if the email message fails to send.
* Add function Event._activation_email, which receives a watch and an email and returns an EmailMessage.
* Make questions anonymous watches work, add extra views for confirming/unsubscribing from watches.
* Add Event.get_activation_url() for use in email templates.
* Add Event.get_watch_description() for events to describe their watches in string form. This comes in handy when sending out emails, to explain why the receiver is getting this.
* Catch SMTPRecipientsRefused exception and show message about it.
* Update wiki tests.
* QuestionEvent abstraction for common __init__() stuff
* QuestionReplyEvent, QuestionSolvedEvent for new answers/new solutions.
* WatchQuestionForm tests, also don't allow logged-in users to override what email the notification goes to. (I.e. improve WatchQuestionForm validation)
* Update templates to reflect new notification.