This heavily refactors SpellView and adds infrastructure for receiving and reporting Errors raised by the web-dev iFrame. The web-dev error system, the Aether error system, and the Ace html-worker avoid disturbing each others' errors/annotations (though currently Aether+web-dev errors won't coexist), and they clear/update their own asynchronously.
Show web-dev iFrame errors as Ace annotations
Add functional error banners (with poor messages)
Improve error banners, don't allow duplicate Problems
Refactor setAnnotations override
Convert all constructor calls for Problems
Add comments, clean up
Clean up
Don't clear things unnecessarily
Clean up error message sending from iFrame
Add web-dev:error schema
Clarify error message attributes
Refactor displaying AetherProblems
Refactor displaying user problem banners
Refactor onWebDevError
Set ace styles on updating @problems
Clean up, fix off-by-1 error
Add comment
Show stale web-dev errors differently
Some web-dev errors are generated by "stale" code — code that's still running in the iFrame but doesn't have the player's recent changes.
This shows those errors differently than if they weren't "stale", and suggests they re-run their code.
Hook up web-dev event schema
Destroy ignored duplicate problems
Functionalize a bit of stuff
Fix ProblemAlertView never loading
When a new version is created, the latest version is updated, then
the new one is made. If making a new one fails (most commonly due to
a name conflict), the latest version is left in a broken state. Set up
the new middleware to revert changes to latest version in this case,
and update the level handler to use the middleware. Also added
warning logs if models do not have editableProperties or postEditableProperties
set.
Address some code review feedback
Correct error code in test
Don't try to send emails to empty addresses
Add tests for subscriptions
Add tests for Next Steps email
Fix specs
Add reason for disabled test
* Switch from auth.loginUser to User.loginPasswordUser with Promise
* Remove a cascade of unused views that were using auth.loginUser: StudentLogInModal, StudentSignupModal, HourOfCodeView
* Also remove auth.createUser
* Take `/server/routes/auth` and move most of the logic to `/server/middleware/auth`, refactoring to use generators.
* List all `/auth/*` endpoints in `/server/routes/index.coffee`.
* Fill in testing gaps for `/auth/unsubscribe`.
* Add debug log when `sendwithus` is not operational, so it 'works' in development and testing.
* Use passport properly!
* Track Facebook and G+ logins in user activity as well as passport logins.
* Fix error property name -> errorName
* showNotyError can handle Backbone error callbacks where jqxhr is second param
* showNotyError correctly shows JSON error message or name
* Add timeout to showNotyError