* 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
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
* Do not cache campaign
* Instead have an on leave message if there are unsaved changes
* Propagate campaignIndex values to campaign and levels so that they signal a change in order
The save modal seems to have a lot of issues with identifying what models have
changed. I tried using different methods, but none were consistent. Moving on
to other bugs.
Fix link to /teachers/classes (fixes bugquest#20)
Fix edit button color/icon (bugquest#23)
Fix bugquest#34
Fix password input width (bugquest#33)
Center new pasword text
Fix teacher password reset endpoint (bugquest#4)
Refactor+use NewHomeView logic for user page button (Fixes bugquest#2)
Refactor teacher-password-reset endpoint
This makes it much easier to prevent collisions with other logic when PUTing new User attributes.
Add regression test for converting to teacher account
Fix email verified links, require login (fix bugquest#16)
Fix me having stale emailVerified value (Fixes bugquest#40)
Don't show JoinClassModal to students
Add paragraph to JoinClassModal (fixes bugquest#14)
Update change-password label text (fixes bugquest#30)
Fix prompting for login on Account Settings page (bugquest #10)
Show validation errors for teacher password reset (bugquest#36)
Show yellow progress dot in My Classes if anyone has started (bugquest#55)
Remove confusing text (bugquest#100)
* 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
This updates TeacherClassView and ActivateLicensesModal to use the
new state-based rendering system, making it much snappier and less clunky
feeling, and improving data consistency.
Features also included in this:
- Hover details for progress dots in TeacherClassView
- ActivateLicensesModal has an "All Students" option and better handling
when you switch classrooms in the dropdown
- Unenrolled/Unassigned students are shown separately in Course Progress and
can be enrolled/assigned from there.
Add Back to Classes button on demo-request submitted view
Delete temporary patch file
Show unenrolled students separately in Course Progress (incomplete)
Migrate TeacherClassView to use orchestrator-style events, add unassigned students section, replace bootstrap tabs with state-based tabs
Convert missed instance variables to be in @state
Fix merge errors
(in progress) Convert a bunch of stuff to use state and events (removing student needs fixing)
Fix up modal interactions, some bugs
Switch state to be a Model, sync up course dropdowns
Convert student sorting to use state model
Add hover tooltips to TeacherClassView Students tab
Don't keep tooltip open when you mouse into it
Add dateFirstCompleted and Course Progress tooltips
Course Overview progress tooltips
Refactor ActivateLicensesModal
Refactors:
Uses state object for view state
Passes back the updated users in 'redeem-users' event instead of modifying given collection
Features:
Add 'All Students' dropdown option
Don't forget checked students if you change classroom from dropdown,
but only enroll the ones visible when you click "Enroll (n) Students"
Separate enrolled students; improve style
Rearrange error text
Disable enroll-students button when none are selected
Remove console.logs
Move style-flat variables to another file
This prevents .style-flat from being copied in multiple times to the resulting CSS.
Show Unarchive button when on the page for an archived class
Move text to en.coffee
Only sort students on first classroom sync
Fix merge error
Handle sessions missing completion date in view logic instead of migration script
Listen to classroom sync more than once in case it gets unarchived
Fix typo
Fix race condition with loading next level
Return an empty object for next level instead of an error;
Supermodel has a race condition when some of the models fail to load,
when we override an error response as "success".
Fix next level spec
Remove comment per Scott's request
* Updates spade.js vendor file, adds a sublime-project for developers to use
* Moves server logic away from handlers
* Moves session update logic to middleware, sets up server schema to autorender IDs as ObjectIDs
* Modernizes the supermodel loading scheme and switches from constructor to initalize
Display leaderboard ads on campaign and play views.
Do no show ads in classroom, picoCTF, or to teachers.
Add no ads blurb to subscription features matrix.
Scale game UI for ads on short screens.
Closes#3491
Renaming request quote to request demo
Changing create class wording to set up class
Showing different UI if teacher or not
Adding gameplay screenshots to homepage
Update request demo email
Closes#3449
* Make work there are multiple network requests and only one fails
* Test for i18n attributes instead of English translations so Travis works
* Various PR changes
This fixes#3264. Checks were failing in cases where no gold amount was
set and tier was 0. Checks are now using existential operator to ensure
null/undefined.
Removing trial subscriptions
Updating trial page copy
Adding special HoC trial
Introducing a new course prepaid property endDate, which won’t be
returned or redeemed after the date.
* Handling prepaids with strings for maxRedeemers
* Add link to TeacherCoursesView from HourOfCodeView
* Show only course instances with classrooms attached in TeacherCoursesView and StudentCoursesView
* Add event tracking to HourOfCodeView
* Add not-logged-in handling to TeacherCoursesView
* Fixed a GET prepaids bug
* Have course instances created for hour of code have hourOfCode property set to true.
Making sure LayerAdapter doesn't wait for ThangType to load the image more than once.
LayerAdapter skips rendering if there's a prerendered sprite sheet whose image is not loaded.