Commit graph

1704 commits

Author SHA1 Message Date
Scott Erickson
2aa647fa29 Guard against trial-requests and signups being done on the same computer but by different people 2016-07-08 15:33:12 -07:00
Matt Lott
34971861cc 🐛Fix license inquiry licensesRequest parsing 2016-07-07 17:14:50 -07:00
Scott Erickson
af9f7201d0 Finish new CreateAccountModal 2016-07-07 15:56:41 -07:00
phoenixeliot
e9b7543242 Start new CreateAccountModal 2016-07-07 15:56:41 -07:00
Matt Lott
87b9d74dc1 🐛Analytics sub page sponsor recipient null check 2016-06-29 15:22:38 -07:00
Matt Lott
63e38c82b2 Update school counts page with geoip and 10+ buckets
Placing teachers and students in unknown districts and schools if we
have geoip countries and states/regions.
Placing teachers/students in unknown schools if there are 10+ students.
2016-06-29 15:01:04 -07:00
Matt Lott
d6951559fd Update school counts page
Exclude HoC users via course instances
Include teacher/students via trial requests without NCES data
2016-06-28 16:41:36 -07:00
Matt Lott
1685e92f6e 🐛fetchNextLevel req.user null check 2016-06-28 09:45:27 -07:00
Matt Lott
d72e4eb750 Practice levels Ux and next level algorithm
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
2016-06-27 14:05:42 -07:00
Matt Lott
5edffa8fcd Update license request sales contact selection 2016-06-27 10:56:05 -07:00
Scott Erickson
20b3102baa Redirect artisan events to artisans slack channel instead of dev-feed 2016-06-27 09:49:07 -07:00
Matt Lott
85c1c16818 Add 2 month close date to license request opps 2016-06-26 19:53:35 -07:00
Matt Lott
425115ad37 Remove level type 'hero-practice', use level.practice 2016-06-25 08:38:59 -07:00
Matt Lott
18de9ab298 Create call tasks and opps for license requests 2016-06-23 06:12:51 -07:00
Matt Lott
73698129a0 Make level practice threshold available in editor 2016-06-21 16:41:47 -07:00
Matt Lott
df90935aba Admin school counts page 2016-06-21 09:33:06 -07:00
Scott Erickson
38d19a142a Add checks to keep User purchased.gems from becoming NaN
Also sought to more thoroughly protect earned.gems.
2016-06-20 16:44:07 -07:00
Scott Erickson
99bae92fcb Fix GET /db/level/:handle/session for sessionless requests 2016-06-20 14:35:52 -07:00
Matt Lott
e0170d0339 Add hero-practice level type and threshold to schema
Filtering out hero-practice levels from classrooms until the Ux
supports them.
2016-06-19 20:23:32 -07:00
Matt Lott
4622337d82 Update licenses needed form
Ensure the needed licenses are in the subject resulting email.
2016-06-17 15:40:07 -07:00
Scott Erickson
514fce349a Include ladder levels in level stats in teacher views, clean client test logs 2016-06-17 15:15:13 -07:00
Scott Erickson
490ea8d1bc Add state to delighted data if state was populated by nces 2016-06-17 13:53:49 -07:00
Rob
b4baad82b0 Don't set up the analytics log model in proxy mode. 2016-06-17 11:41:43 -07:00
Scott Erickson
0581ffde82 Clean server test logging 2016-06-17 10:35:22 -07:00
Scott Erickson
ca83ed05e4 Only require user sessions on /db requests that are not GET 2016-06-16 16:00:45 -07:00
Rob
41f062fce8 Don't make log collection plural. 2016-06-09 17:38:36 -07:00
Rob
3a9f0adba8 Switch to using actual node server to receive log events 2016-06-09 17:00:35 -07:00
Scott Erickson
0d5bf6b4de Merge branch 'username-login' 2016-06-08 15:48:46 -07:00
Matt Lott
6019beac25 🐛Fix license request email parsing
Caused by
https://github.com/codecombat/codecombat/commit/a6bb706cf295e2680fe77ff1
3e91d3da59487b53
2016-06-08 14:53:30 -07:00
Scott Erickson
69f3ee3a5b Allow username login, tear out a bunch of related stuff in change
* 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
2016-06-08 13:55:19 -07:00
phoenixeliot
c191f63c15 Revert all of my sendwithus changes
Revert "Fix more sendwithus things"

This reverts commit 9d4215d99d.

Revert "Fix some missed sendwithus changes"

This reverts commit 08bc32e005.

Revert "Fix email tests"

This reverts commit fcb2ce8504.

Revert "Use SendWithUs versioning"

This reverts commit 81d9e19221.
2016-06-06 16:54:15 -07:00
phoenixeliot
9d4215d99d Fix more sendwithus things 2016-06-06 16:48:21 -07:00
phoenixeliot
08bc32e005 Fix some missed sendwithus changes 2016-06-06 16:38:20 -07:00
phoenixeliot
81d9e19221 Use SendWithUs versioning 2016-06-06 15:53:11 -07:00
phoenixeliot
d9959db856 Fix sending invitation emails 2016-06-06 13:43:41 -07:00
phoenixeliot
0d4a88a957 Strip spaces in classCode on fetch and join 2016-06-06 11:30:20 -07:00
Matt Lott
a6bb706cf2 Update licenses needed form email contacts to include NL 2016-06-03 20:20:19 -07:00
Matt Lott
51a37d9edc Update licenses contact us form email routing 2016-06-02 15:32:54 -07:00
Matt Lott
50ee20d3ae Send teacher contact us form emails through Close.io 2016-06-02 11:13:52 -07:00
Scott Erickson
5e8b402c3d Switch POST /db/classroom/:id/invite-members to refactored version 2016-06-02 10:27:20 -07:00
Scott Erickson
6e48d700bc Merge branch 'update-invite-to-classroom'
Work was duplicated. Merging in changes from branch, but leaving
the master version as is in this commit.
2016-06-02 10:20:19 -07:00
Rob
c20ee729ca Merge branch 'bug-smash' 2016-06-01 16:45:01 -07:00
Scott Erickson
ee0195ab21 Require req.user in all /db routes 2016-06-01 09:53:28 -07:00
phoenixeliot
9bea73b199 Use course invite template v3 2016-05-31 16:14:24 -07:00
Scott Erickson
d4c5d418ff Improve CampaignEditor saving, particularly level order
* 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.
2016-05-31 15:09:26 -07:00
Matt Lott
59608a5bc2 🐛Fix clan page loads for a really long time
Fixes #3336
2016-05-31 14:54:40 -07:00
Matt Lott
794f4aadc9 🐛Contact Us emails must be sent from approved email 2016-05-31 14:33:49 -07:00
Matt Lott
bf6f3f53af Delay MailChimp subscribing after account creation by 30min 2016-05-31 14:18:50 -07:00
Matt Lott
abc42298c6 Delay MailChimp subscribing after account creation by 30min 2016-05-31 12:30:36 -07:00
Nick Winter
2cbbeaaddf Fix #2720: serve default wizard over https 2016-05-31 09:30:07 -07:00
phoenixeliot
8bb5251797 Fix potential undefined error in logging 2016-05-27 11:27:04 -07:00
phoenixeliot
438e8e426c Fix potential undefined error in logging 2016-05-27 11:22:33 -07:00
Matt Lott
72b8674237 Add error message for closeIO.getSalesContactEmail 2016-05-26 17:02:58 -07:00
Matt Lott
4bb3ac1f0a Replace Anoner with Anonymous
Closes #3686
2016-05-26 16:54:24 -07:00
phoenixeliot
9bc35db7a6 Include teacher name in course invite email data
In preparation for changing the sendwithus template.
2016-05-26 16:24:13 -07:00
phoenixeliot
c9ece55d49 Fix console.log to log.debug 2016-05-26 16:15:09 -07:00
phoenixeliot
77ba873da9 Add tests for teacher password reset endpoint 2016-05-26 16:07:55 -07:00
phoenixeliot
dfcbbb7c9c Log classroom forbidden errors for debugging 2016-05-26 14:54:11 -07:00
Nick Winter
feeca7a586 Sending HTML emails now so that Front will eat them 2016-05-26 13:34:36 -07:00
Matt Lott
6246ac0955 Send request licenses emails to Close.io sales contact 2016-05-25 16:03:08 -07:00
Scott Erickson
b0ad8b2573 Fix GET /db/level/:handle/session
When making a course session and user has a HoC course instance (no associated classroom)
2016-05-25 10:26:12 -07:00
Matt Lott
e218af8418 Terminology change: enrollments/credits => licenses
Closes #3676
2016-05-25 09:27:47 -07:00
Nick Winter
21c83fe55c Handle the missing classroom error properly I think 2016-05-25 09:04:35 -07:00
phoenixeliot
a1a55a9b6d Remove revoke functionality 2016-05-24 16:05:40 -07:00
Scott Erickson
8dbc86ca04 Fix bugquest bugs
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
2016-05-24 14:10:56 -07:00
phoenixeliot
3d705e5d70 Fix bugquest 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)
2016-05-24 14:10:17 -07:00
Scott Erickson
f0fa88206d Add Enrollment start/end dates, remove self-serve
* 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
2016-05-24 14:07:28 -07:00
phoenixeliot
8496343a02 Improve student account recovery
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
2016-05-24 14:07:28 -07:00
Nick Winter
71e20395c9 Fix submitted code not being present sometimes before submitted code compression 2016-05-24 13:42:37 -07:00
Scott Erickson
a89782b9c6 Fix /auth/unsubscribe for emails with + in them 2016-05-18 16:50:05 -07:00
Matt Lott
6f6d65a005 /courses/update-account page
Allows a user to update their account based on their current role of:
individual, student, or teacher

Closes #3647
2016-05-18 06:06:28 -07:00
Scott Erickson
f6b3016d85 POST /db/classroom/-/members joins any free course instances, rather then CoursesView doing so 2016-05-16 16:47:08 -07:00
Matt Lott
a062e49c50 Send teacher contact form inquires to schools support email 2016-05-12 13:22:28 -07:00
phoenixeliot
0aac07cb37 Use new template for course invite email
This uses a new template for the version with the course code added, so that
I don't have to sync up changes to the template with deploying the code to
production, and so I can test it separately in staging beforehand.
2016-05-12 13:14:20 -07:00
phoenixeliot
b2cfaf3b13 Add non-URL join code to classroom invite emails 2016-05-12 11:19:05 -07:00
Matt Lott
a208a514d2 🐛Add null check to sub_sponsor endpoint
Causes exception when sponsor has deleted their account.
2016-05-12 11:03:35 -07:00
Nick Winter
2faca0419b Fix another error I saw in the logs 2016-05-08 20:59:58 -07:00
Nick Winter
d0be5c1f22 Handle a couple errors I saw in the logs 2016-05-08 10:05:26 -07:00
Scott Erickson
f7a6d354af Add school and teacher names to invite email context 2016-05-06 13:28:19 -07:00
phoenixeliot
8223122a6b Refactor and update teacher-dashboard
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
2016-05-06 13:13:11 -07:00
Scott Erickson
0ed99565d3 Make delighted profiles for teachers only, instead of all users 2016-05-06 12:45:11 -07:00
Nick Winter
e4c904463c No more transpiledCode 2016-05-05 13:22:30 -07:00
Scott Erickson
93f940e196 Refactor, spec and fix GET /healthcheck
For #3469
2016-05-05 13:11:39 -07:00
Scott Erickson
b125f9b2fa Refactor rest of /db/campaign routes
For #3469
2016-05-05 13:11:39 -07:00
Nick Winter
22007fff9b Make multiplayer work in esper mode 2016-05-03 22:26:48 -07:00
Scott Erickson
3ea562780d Fix /db/trial.request to handle when there is no req.user 2016-05-03 14:54:35 -07:00
Scott Erickson
f44f201548 Add POST /db/achievement/names, fixes #3577 2016-04-29 13:37:47 -07:00
Scott Erickson
3416a4061f Remove bootstrapping of classroom course data 2016-04-28 14:14:41 -07:00
phoenixeliot
91fa467251 Fix teacher sessionless play; uses default campaign levels
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
2016-04-28 12:46:09 -07:00
Scott Erickson
edea13483a Fix classroom courses temporary population
Can't count on toObject getting called, such as on the '/db/classroom/:handle/levels', which
gets the courses property directly. Use middleware instead.
2016-04-27 13:19:41 -07:00
Scott Erickson
675e3290ac Lock course content to classrooms 2016-04-27 09:58:04 -07:00
Rob
4183764b61 Add birthday field to user that rejects users under 13 on signup. 2016-04-26 14:00:49 -07:00
Josh Callebaut
fdc3c0d0d4 Remove dev-feed from level change messages 2016-04-26 13:00:15 -07:00
Josh Callebaut
c4652d82e2 Implements the SPADE logger into the SpellView
* 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
2016-04-26 09:56:30 -07:00
Scott Erickson
a452f1ce47 Update teacher trial request views, some related bug fixes
* Tweak wording, options
* Instead of storing changes in local storage, warn when users may lose changes by navigating away
* Fix CreateTeacherAccountView so that if you connect to an existing account, the redirect is triggered
* Fix users.coffee weird race condition
2016-04-20 16:30:11 -07:00
phoenixeliot
e2d08fa7cf Stuff
Partially fix ActivateLicensesModal.spec

[IN PROGRESS] Don't display deleted users

Move userID to classroom.deletedMembers on user delete (not retroactive)

Fix PDF links for course guides, remove old PDFs from repo

Remove deprecated SalesView

Remove underline for not-yet-linked student names

Only show class select when there's more than one

Ignore case when sorting student names

Use student.broadName instead of name for display and sorting

Fix initial load not showing progress after joining a course (hacky)

Fix text entry for enrollment number input

Fix enrollment statistics

Fix enrollment stats completely (and add back in per-class unenrolled count)

Add deletedMembers to classroom schema

More fixes to enrollment stats (don't count nonmember prepaids)

Don't use 0 as implicit false for openSpots

Update suggested number of credit to buy automatically

Fix classroom edit form ignoring cleared values

Add alert text when more users selected than enrollments available

Alert user when trying to assign course to unenrolled students

Alert user when assigning course to nobody

Add some tests for TeacherClassView bulk assign alerts

Fix TeacherClassView tests failing without demos

Use model/collection.fakeRequests :D

Remove unused comment

Fix handling of improperly sorted deleted users on clientside

Add test for moving deleted users to deletedMembers

Add script for moving all deleted classroom members to classroom.deletedMembers

Completely rewrite tallying up enrollment statistics

Fix some tests to not be dependent on logged-in user

Address PR comments

Fix default number of enrollments to buy

Fix i18n for not enough enrollments

Use custom error message for classroom name length
2016-04-19 12:32:20 -07:00
Scott Erickson
bd6a266f60 Refactor POST /db/classroom and PUT /db/campaign/:handle and their tests for #3469 2016-04-13 11:39:29 -07:00
phoenixeliot
61dd93917c Improve password reset email, make a sendwithus template for it 2016-04-12 13:28:38 -07:00
Scott Erickson
f1f1c23fd4 Refactor /auth endpoints for #3469
* 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.
2016-04-12 12:07:11 -07:00
Scott Erickson
b33620779d Refactor achievement handler for #3469 2016-04-11 12:00:22 -07:00