Commit graph

65 commits

Author SHA1 Message Date
Scott Erickson
7bab895dee Generalize new I18N view system
Previously, when diplomats submit translations, the system
would try to figure out whether it should be a 'patch' or a 'change',
and then would either create a patch for an admin or artisan to
review and accept or reject, or would apply the changes immediately
and they would be live. This was done as a compromise between
getting translations live quickly, but also preventing already-translated
text from getting overwritten without oversight.

But having the client handle this added logical complexity. So
this makes all diplomats submit patches, no matter what. The server
is then in charge of deciding if it should auto-accept the patch or not.
Either way, a patch is created.

There was also much refactoring. This commit includes:

* Update jsondiffpatch so changes within array items are handled correctly
* Refactor posting patches to use the new auto-accepting logic, and out of Patch model
* Refactor POST /db/patch/:handle/status so that it doesn't rely on handlers
* Refactor patch stat handling to ensure auto-accepted patches are counted
* Refactor User.incrementStat to use mongodb update commands, to avoid race conditions
* Refactor Patch tests
2016-09-09 10:59:26 -07:00
Scott Erickson
f509c95a4b Refactor POST /db/earned_achievement 2016-08-29 14:53:36 -07:00
Scott Erickson
5c8b8832b3 Refactor and better test EarnedAchievement.createForAchievement 2016-08-29 14:52:50 -07:00
Scott Erickson
ae82875c57 Refactor post new level version handler, add failed save handling
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.
2016-08-25 10:28:46 -07:00
Nick Winter
bfa49cbbc6 Fix sending too much and not enough data on arena sessions 2016-08-23 16:02:03 -07:00
Scott Erickson
300c81e72b Course translations fixes
* Restrict patch handling properly
* Fix #3860, CS 2 description
* i18nCoverage is updated when new translations are auto-accepted
* Course patches are listed on PendingPatchesView properly
* 'Artisan' permission allows editing course translations
2016-08-18 13:29:52 -07:00
Scott Erickson
d4af931e05 Add course (name, description) translations 2016-08-18 10:10:18 -07:00
Matt Lott
eaddf2fa8d Add level schema primerLanguage
For web-dev 2 course in the short term
2016-08-11 06:08:58 -07:00
Scott Erickson
2e5c15cc6d Internationalize student UI for game dev levels 2016-08-10 12:47:34 -07:00
Rob
782aacf35e Patch Earned Achievements more generally. 2016-07-25 16:33:11 -07:00
Rob
d292e180d2 Fix earned acheivements 2016-07-25 16:12:14 -07:00
phoenixeliot
bb6262483f Allow username-only signup for classroom users
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
2016-07-18 10:41:17 -07:00
Scott Erickson
dd88f39761 Add shareable property to levels 2016-07-14 15:48:42 -07:00
Scott Erickson
0b1e1ddcb4 Merge branch 'game-dev-levels' 2016-07-12 11:00:29 -07:00
Matt Lott
16c9f10043 🐛Fix course victory dialog level progress counts
Use classroom versioned levels instead of latest course levels.
Use current level session instead of stale one.
2016-07-11 13:28:52 -07:00
Nick Winter
8c48e4fc14 Remove transpiledCode and screenshot from LevelSession 2016-07-08 17:04:24 -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
Scott Erickson
20b3102baa Redirect artisan events to artisans slack channel instead of dev-feed 2016-06-27 09:49:07 -07:00
Matt Lott
73698129a0 Make level practice threshold available in editor 2016-06-21 16:41:47 -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
0581ffde82 Clean server test logging 2016-06-17 10:35:22 -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
0d4a88a957 Strip spaces in classCode on fetch and join 2016-06-06 11:30:20 -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
ee0195ab21 Require req.user in all /db routes 2016-06-01 09:53:28 -07:00
Matt Lott
59608a5bc2 🐛Fix clan page loads for a really long time
Fixes #3336
2016-05-31 14:54:40 -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
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
dfcbbb7c9c Log classroom forbidden errors for debugging 2016-05-26 14:54:11 -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
f6b3016d85 POST /db/classroom/-/members joins any free course instances, rather then CoursesView doing so 2016-05-16 16:47:08 -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
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
bd6a266f60 Refactor POST /db/classroom and PUT /db/campaign/:handle and their tests for #3469 2016-04-13 11:39:29 -07:00
Scott Erickson
b33620779d Refactor achievement handler for #3469 2016-04-11 12:00:22 -07:00
Matt Lott
ece3c6f19d Clean up server Slack messages 2016-04-08 09:24:38 -07:00
Scott Erickson
29cd880480 Refactor handlers to /server/handlers 2016-04-07 09:40:53 -07:00
Sébastien Moratinos
729cd300b7 server reorganize files and folder by features
- move and rename files
- use associative arrays which store handlers for 'dynamically'
  load module from de db route
- store models_path in test/server/common,
  a global model variable has the same name that the filename of the model
2014-01-23 01:01:40 +01:00
Sébastien Moratinos
771099d43e server : move routes files (HTTP endpoint) in a new "routes" folder 2014-01-23 01:01:30 +01:00