Commit graph

602 commits

Author SHA1 Message Date
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
Nick Winter
e8f18f08f5 Fix #3636: make CourseVictoryModal close button look clickable 2016-05-31 09:44:38 -07:00
Nick Winter
1deddc6fd2 Verifier now runs all solutions and lets you choose which campaigns and languages to skip. 2016-05-30 13:51:09 -07:00
Matt Lott
4bb3ac1f0a Replace Anoner with Anonymous
Closes #3686
2016-05-26 16:54:24 -07:00
phoenixeliot
a1a55a9b6d Remove revoke functionality 2016-05-24 16:05:40 -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
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
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
63a11a75f4 Refactor client tests to use factories instead of fixtures 2016-05-05 11:24:29 -07:00
Scott Erickson
c1dc80e93f Escape inputs for name conflict checks 2016-05-03 14:47:39 -07:00
phoenixeliot
e65a9248f3 Fix last level text and continue button 2016-04-28 16:14:19 -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
675e3290ac Lock course content to classrooms 2016-04-27 09:58:04 -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
phoenixeliot
4b6dde9809 Unbreak non-course campaign for teachers 2016-04-15 13:39:11 -07:00
phoenixeliot
c3da6a23c9 Change isTeacher checks to isSessionless for /play 2016-04-15 10:58:52 -07:00
Scott Erickson
d5662fa2c9 Add fakeRequests array to models and collections during client tests
So you don't have to find the request through jasmine-ajax's functions.
2016-04-14 15:26:29 -07:00
phoenixeliot
a524256b5b Add sessionless play for Teachers 2016-04-12 19:34:05 -07:00
Nick Winter
a7114a2719 Implement headless verifier; fix headless client 2016-04-12 19:34:05 -07:00
phoenixeliot
beb53d9f2f Various fixes and changes to teacher-accounts and teacher-dashboard 2016-04-04 15:42:29 -07:00
phoenixeliot
4a72ffc185 Implement all of teacher-dashboard 2016-04-04 15:19:27 -07:00
Scott Erickson
bd3a77da9f Implement teacher accounts 2016-04-04 15:18:06 -07:00
Rob Blanckaert
9da65cdcff New homepage variations. 2016-03-25 17:09:58 -07:00
Nick Winter
b208fddabb Fix #3484 2016-03-23 15:56:45 -07:00
Matt Lott
6a4132e057 Update campaign ads test groups 2016-03-21 08:07:22 -07:00
Scott Erickson
2e96a387e9 Add User.logout to client 2016-03-18 11:03:54 -07:00
Matt Lott
255ebbc048 Ads for free campaign players
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
2016-03-18 10:29:31 -07:00
Scott Erickson
ebc98f988f Refactor CreateAccountModal out of AuthModal, add class code to signup 2016-03-10 10:52:11 -08:00
Matt Lott
bce9862be2 Update request demo Ux
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
2016-03-08 09:30:50 -08:00
Scott Erickson
a2249f8df1 Add return-to-admin (turn off espionage mode) 2016-03-04 10:43:17 -08:00
Nick Winter
59e8c42ddb Client-side support for beating picoCTF levels 2016-03-03 17:18:24 -08:00
Nick Winter
bada484445 Fix fetchPatchesWithStatus for non-versioned models 2016-03-02 16:19:33 -08:00
phoenixeliot
939265a119 Fix supermodel.trackModel 2016-03-01 10:33:45 -08:00
Matt Lott
9e8e865049 Remove old homepage
Turning off homepage a/b testing for now, but leaving the plumbing in
because we’ll be iterating on that shortly.
2016-03-01 09:48:53 -08:00
Imperadeiro98
42f84de394 Merge master branch 2016-02-24 19:40:21 +00:00
Imperadeiro98
9c12f6c957 Revert changes to LevelLoader and SuperModel 2016-02-24 19:32:28 +00:00
Scott Erickson
becad06750 Refactor ArticleEditView and PatchesView to use model endpoint functions 2016-02-22 16:03:21 -08:00
Imperadeiro98
92dc72cce1 Remove name from loadModel 2016-02-18 16:44:40 +00:00
Nick Winter
40d7c53cd0 Fix 435d5bb6 2016-02-08 14:34:29 -08:00
Nick Winter
435d5bb6d2 Improve getHomePageGroup and narrow to two variants 2016-02-08 14:20:30 -08:00
Nick Winter
14c734cfe8 Remove some logs to complete my testing 2016-02-02 16:56:08 -08:00
Nick Winter
260fd21f4e Add Segment for teachers, misc analytics cleanup tweaks 2016-02-02 15:13:55 -08:00
Scott Erickson
0e7e9aad39 Add new home page with test 2016-02-02 15:12:37 -08:00
Scott Erickson
e62e497543 Replace TeachersFreeTrialView with RequestQuoteView 2016-01-28 17:21:36 -08:00
Scott Erickson
4ef5f40fa1 Network error handling fixes
* 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
2016-01-27 10:42:12 -08:00
Scott Erickson
29350bf1de Make network error handling more generic 2016-01-27 10:41:56 -08:00
Cat Sync
feb4c16b85 broadName should insert a space when using firstName lastName, and return Anoner if nothing else is available 2016-01-22 13:58:02 -05:00
Nick Winter
59c6d15248 Fix serialization of levels in level editor 2016-01-12 09:42:41 -08:00
Nick Winter
01a3ae6020 Make sure #3303 works for multiplayer and future 'course' level hero selection 2016-01-12 08:41:18 -08:00
Daniel Fiore
ed17d967d2 Fix thangTypes filtering in serialize 2016-01-07 12:26:40 -08:00
Daniel Fiore
9ccb0dd3cb Fix isSilhouettedItem
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.
2016-01-02 16:10:03 -08:00
Nick Winter
55f7b4a115 Fix config refactoring 2015-12-23 12:08:07 -08:00
Nick Winter
8fb358425d Merge pull request #3270 from sasha-bichkov/master
Refactor Level.coffee
2015-12-23 08:56:00 -08:00
sasha_bichkov
c9b6832dae refactor 2015-12-19 15:04:42 +03:00
Scott Erickson
079109145f Cull recruiting views and translations 2015-12-18 10:34:21 -08:00
Nick Winter
129d3b793d Add Mandate for modifying simulation throughput on the fly, other things later 2015-12-16 16:39:45 -08:00
Scott Erickson
7c516c4d9f Move product information to the db 2015-12-14 11:10:50 -08:00
Matt Lott
44cd64e00e /courses analytics 2015-12-04 12:08:14 -08:00
Scott Erickson
3f31c9b4dd When adding and removing oneself from course instances, client locally updates me.courseInstances 2015-12-03 16:32:44 -08:00
Scott Erickson
fac71e64c9 Add created function to CocoModel 2015-12-03 12:56:22 -08:00
Scott Erickson
f8616f7c3d Add back statsForSessions to Campaign model 2015-12-03 12:47:28 -08:00
Scott Erickson
1df87fa685 Add detailed progress and links to ClassroomView 2015-12-03 12:10:08 -08:00
Scott Erickson
7f2ddba089 Add remove student modal to ClassroomView 2015-12-02 11:56:38 -08:00
Nick Winter
0d65d73024 Finish merging master into courses-vhoc 2015-12-02 10:10:50 -08:00
Scott Erickson
5e733d1517 Add ActivateLicensesModal to ClassroomView 2015-11-30 16:59:22 -05:00
Scott Erickson
0c45e3f96c Add ClassroomView, incomplete 2015-11-30 14:14:27 -05:00
Scott Erickson
87c7bafd57 Add join-class functionality to /courses 2015-11-29 18:13:31 -05:00
Scott Erickson
405785bafe Add completion stats to /courses 2015-11-29 17:18:24 -05:00
Nick Winter
95c703a7df Simulate games in background while playing levels if we think there's extra compute power 2015-11-29 12:30:19 -08:00
Scott Erickson
ea0c274a3c Fix /courses initial implementation 2015-11-29 15:26:17 -05:00
Scott Erickson
2bbabd4917 Switch CourseInstance firstLevelURL to return dungeons-of-kithgard
Since we switched from using forked levels
2015-11-27 11:30:25 -05:00
Matt Lott
c385aaa414 Merge branch 'master' into courses-vhoc 2015-11-25 16:11:36 -08:00
Matt Lott
d7a66722b9 Update teacher surveys
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.
2015-11-24 10:32:19 -08:00
Scott Erickson
ea4a98af86 Add rest of CoursesView, untested, unhooked to server
On a plane, so skipping my usual iterative testing.
Bugs are undoubtedly everywhere.
2015-11-23 08:46:08 -08:00
Nick Winter
21810be8eb End an A/B test 2015-11-22 07:53:49 -08:00
Scott Erickson
5aff591a8b Set up courses view for anonymous users 2015-11-21 11:38:34 -08:00
Scott Erickson
1a4a143340 Initial build of /hoc, no login/create account modals yet 2015-11-19 15:26:45 -08:00
Scott Erickson
97cb5275c3 Fixes for courses, hoc
* 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.
2015-11-09 17:58:40 -08:00
Scott Erickson
66432990f4 Add framework for new courses pages 2015-11-03 16:41:06 -08:00
Nick Winter
5106bd5390 Fix sortThangComponents corner case in course levels with Plans attaching twice
Fixes https://app.asana.com/0/54276215890539/62515742172177/f
2015-11-02 12:35:28 -08:00
Scott Erickson
b77626b8ee Minor fixes
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.
2015-10-14 14:48:43 -07:00
Scott Erickson
305cffb5ea Finish hooking up prerendered spritesheets with LayerAdapter 2015-10-14 14:33:26 -07:00
Scott Erickson
1085731fdd Fix colorConfig prerendered sprite sheet data, comparison 2015-10-14 10:41:10 -07:00
Scott Erickson
39bddb889e Have LayerAdapter use prerendered spritesheets (unfinished) 2015-10-13 16:43:56 -07:00
Scott Erickson
919e0605e9 Add spriteSheets to ThangType, export modal to Thang Editor
Units can be exported as rastered sprite sheets. This is the first part of the project,
the second part will be having the game use them.
2015-10-12 16:47:48 -07:00
Nick Winter
5dde55c1f3 Add premium server recognition for Brazil 2015-10-09 08:05:34 -07:00
Scott Erickson
2d2f4814f4 Add course membership required error to LevelLoadingView 2015-10-06 12:48:58 -07:00
Matt Lott
928f72e2cf Merge branch 'prepaid-v2' into master 2015-09-25 10:28:27 -07:00
Nick Winter
1819911551 A/B/C test the first subscription prompt level 2015-09-18 08:28:04 -07:00
Nick Winter
635dcf22ae Fixed typo for Okar session check. Not showing some common sub-skills as skills on hero picker. 2015-08-29 10:01:53 -07:00
Nick Winter
88f6e528b1 Implementing goliath. Configuring goliath for Ace of Coders. 2015-08-29 08:02:20 -07:00
Matt Lott
8de00767b3 Initial courses object model 2015-08-29 07:15:39 -07:00
Matt Lott
9e222d0873 Add subscription sale
Give a discount for purchasing a year
New sale button on subscribe modal
New subscription sale landing page
2015-08-21 11:19:39 -07:00
Matt Lott
0768b533e2 Subs dashboard perf
Caching older (at least 16 days) Stripe invoices in analytics
collection, which will be updated once a day via the analytics server
cron job.
2015-07-31 16:19:40 -07:00
Nick Winter
15ecc92abc Adding 'course' type levels. Removing 'campaign' type levels. 2015-07-24 17:37:42 -07:00
Nick Winter
0d99b07bc3 Made it so that high scores and level victories are not achieved when playing changed levels from inside the level editor. Some additions for Nalfar. 2015-06-05 17:02:37 -07:00
Matt Lott
d7cddcb136 Teacher trial subscription form
Add a teacher survey form for applying for a free trial subscription
for evaluation purposes.
Add an admin trial requests review page, where admins can approve/deny
requests.
2015-06-05 06:48:19 -07:00