* Clients check updated achievements as well as new ones
* Clients do not wait to keep checking
* Update achievement points along with everything else in EarnedAchievement.upsertFor
* Fix various bugs
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
In TeacherClassView, when a teacher assigns a paid course to any unenrolled
student, the view automatically enrolls those students, rather than requiring
the teacher to enroll those students manually first. Update copy throughout.
Also add back (smaller) padding to progress dots in TeacherClassView.
Add Campaign factory
First basic tests for HeroSelectModal in demo flow
Implement HeroSelectModal for demo flow
Improve tests
Disable empty test
Fix text inconsistency around 'me'
Just listen once
Add HeroSelectModal events test
Don't reuse destroyed modal
Fix inconsistent modal close behavior
Fix tests
Improve image gallery
Add How to Copy/Paste section
Fix modal close button
Add specs for image gallery
Fix up i18n
Fix render resetting scroll
Address code review feedback
Ensure afterRender is called
School now optional
N/A placeholder on district field and don't save it if it's n/a
Updating required field error UI a bit, and there is some larger
refactoring needed here later.
NCES phone number for district only entries will currently be a child
school, will fix later.
Closes#3818
Update classroom and gameplay Ux to surface practice levels as 3a, 3b,
etc.
Update next level logic to leverage practice levels based on per level
completion playtime thresholds.
Patrol buster and patrol buster A are live for testing.
Fix a few classroom Ux progress hover bubble info bugs.
Closes#3767
* 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
This was a race condition where the view would trigger a render
before courses loaded, and the template required them when it had
some of its other resources.
Use selected hero in Course mode play
Show selected hero on Courses (in progress)
Add hero select modal
Use short names, only show warriors
Use box-shadow instead of borders
Add tests for HeroSelectModal
Refactor modal opening test
Address code review feedback
On Windows/Chrome, the first click of the g+ button shows a popup
blocked warning, because the action is deferred while loading the
gplus library. Have the modals load the library first, and enable the
buttons when they're ready.
Hide TeachersContactModal after sending message
Fix GET /db/level/:handle/session, more extensively test
Fix EnrollmentView number of students input to stop losing focus on input
Fix EnrollmentsView syntax
Fix ActivateLicensesModal "Get Enrollments" button when already in the enrollments page
Update EnrollmentsView with new credit numbers when ActivateLicensesModal closes
Hide search box in TeacherClassView "Enrollment Status" tab
Tweak EnrollmentsView styling
Fix EnrollmentsView tests
Fix AnalyticsView
Make EnrollmentsView more explicitly handle undefined and empty array prepaid groups
Remove log
CoursesView handles JoinClassModal cancel
Re-enable EditStudentModal set password button when the form changes
Fix course instance tests, next level endpoint bug
Fix EditStudentModal tests
* Refactor several related endpoints and views
* Redesign EnrollmentView, add TeacherContactModal
* Add "Enrollment Status" tab to TeacherClassView
* Delete PurchaseCoursesView and related files
* Style-flatten RemoveStudentModal
* Fix error handling in ActivateLicensesModal
* TeacherCoursesView loads faster by only loading course campaigns, and not load prepaids
This adds the ability to verify email addresses of a user, so we know they have access to the email address on their account.
Until a user has verified their email address, any teacher of a class they're in can reset their password for them via the Teacher Dashboard. When a user's email address is verified, a teacher may trigger a password recovery email to be sent to the student.
Verification links are valid forever, until the user changes the email address they have on file. They are created using a timestamp, with a sha256 of timestamp+salt+userID+email. Currently the hash value is rather long, could be shorter.
Squashed commit messages:
Add server endpoints for verifying email address
Add server endpoints for verifying email address (pt 2)
Add Server+Client endpoint for sending verification email
Add client view for verification links
Add Edit Student Modal for resetting passwords
Add specs for EditStudentModal
Tweak method name in EditStudentModal
Add edit student button to TeacherClassView
Fix up frontend for teacher password resetting
Add middleware for teacher password resetting
Improve button UX in EditStudentModal
Add JoinClassModal
Add welcome emails, use broad name
Use email without domain as fallback instead of full email
Fetch user on edit student modal open
Don't allow password reset if student email is verified
Set role to student on user signup with classCode
Tweak interface for joinClassModal
Add button to request verification email for yourself
Fix verify email template ID
Move text to en.coffee
Minor tweaks
Fix code review comments
Fix some tests, disable a broken one
Fix misc tests
Fix more tests
Refactor recovery email sending to auth
Fix overbroad sass
Add options to refactored recovery email function
Rename getByCode to fetchByCode
Fix error message
Fix up error handling in users middleware
Use .get instead of .toObject
Use findById
Fix more code review comments
Disable still-broken test