mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-27 09:35:39 -05:00
parent
9cdc3289db
commit
e218af8418
13 changed files with 98 additions and 114 deletions
|
@ -73,8 +73,8 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
'Courses': go('courses/CoursesView') # , { studentsOnly: true })
|
'Courses': go('courses/CoursesView') # , { studentsOnly: true })
|
||||||
'courses/students': redirect('/courses')
|
'courses/students': redirect('/courses')
|
||||||
'courses/teachers': redirect('/teachers/classes')
|
'courses/teachers': redirect('/teachers/classes')
|
||||||
'courses/purchase': redirect('/teachers/enrollments')
|
'courses/purchase': redirect('/teachers/licenses')
|
||||||
'courses/enroll(/:courseID)': redirect('/teachers/enrollments')
|
'courses/enroll(/:courseID)': redirect('/teachers/licenses')
|
||||||
'courses/update-account': go('courses/CoursesUpdateAccountView')
|
'courses/update-account': go('courses/CoursesUpdateAccountView')
|
||||||
'courses/:classroomID': go('courses/ClassroomView') #, { studentsOnly: true })
|
'courses/:classroomID': go('courses/ClassroomView') #, { studentsOnly: true })
|
||||||
'courses/:courseID/:courseInstanceID': go('courses/CourseDetailsView')
|
'courses/:courseID/:courseInstanceID': go('courses/CourseDetailsView')
|
||||||
|
@ -146,7 +146,8 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
'teachers/classes/:classroomID': go('courses/TeacherClassView') #, { teachersOnly: true })
|
'teachers/classes/:classroomID': go('courses/TeacherClassView') #, { teachersOnly: true })
|
||||||
'teachers/courses': go('courses/TeacherCoursesView')
|
'teachers/courses': go('courses/TeacherCoursesView')
|
||||||
'teachers/demo': go('teachers/RequestQuoteView')
|
'teachers/demo': go('teachers/RequestQuoteView')
|
||||||
'teachers/enrollments': go('courses/EnrollmentsView') #, { teachersOnly: true })
|
'teachers/enrollments': redirect('/teachers/licenses')
|
||||||
|
'teachers/licenses': go('courses/EnrollmentsView') #, { teachersOnly: true })
|
||||||
'teachers/freetrial': go('teachers/RequestQuoteView')
|
'teachers/freetrial': go('teachers/RequestQuoteView')
|
||||||
'teachers/quote': go('teachers/RequestQuoteView')
|
'teachers/quote': go('teachers/RequestQuoteView')
|
||||||
'teachers/signup': ->
|
'teachers/signup': ->
|
||||||
|
|
|
@ -860,7 +860,7 @@
|
||||||
signup_with: "Sign up with:"
|
signup_with: "Sign up with:"
|
||||||
connect_with: "Connect with:"
|
connect_with: "Connect with:"
|
||||||
conversion_warning: "WARNING: Your current account is a <em>Student Account</em>. Once you submit this form, your account will be updated to a Teacher Account."
|
conversion_warning: "WARNING: Your current account is a <em>Student Account</em>. Once you submit this form, your account will be updated to a Teacher Account."
|
||||||
learn_more_modal: "Teacher accounts on CodeCombat have the ability to monitor student progress, assign enrollments and manage classrooms. Teacher accounts cannot be a part of a classroom - if you are currently enrolled in a class using this account, you will no longer be able to access it once you update to a Teacher Account."
|
learn_more_modal: "Teacher accounts on CodeCombat have the ability to monitor student progress, assign licenses and manage classrooms. Teacher accounts cannot be a part of a classroom - if you are currently enrolled in a class using this account, you will no longer be able to access it once you update to a Teacher Account." # {change}
|
||||||
create_account: "Create a Teacher Account"
|
create_account: "Create a Teacher Account"
|
||||||
create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
||||||
convert_account_title: "Update to Teacher Account"
|
convert_account_title: "Update to Teacher Account"
|
||||||
|
@ -1114,13 +1114,13 @@
|
||||||
get_free: "Get FREE course"
|
get_free: "Get FREE course"
|
||||||
enroll_paid: "Enroll Students in Paid Courses"
|
enroll_paid: "Enroll Students in Paid Courses"
|
||||||
you_have1: "You have"
|
you_have1: "You have"
|
||||||
you_have2: "unused paid enrollments"
|
you_have2: "unused student licenses" # {change}
|
||||||
use_one: "Use 1 paid enrollment for"
|
use_one: "Use 1 student license for" # {change}
|
||||||
use_multiple: "Use paid enrollments for the following students:"
|
use_multiple: "Use licenses for the following students:" # {change}
|
||||||
already_enrolled: "already enrolled"
|
already_enrolled: "already enrolled"
|
||||||
licenses_remaining: "licenses remaining:"
|
licenses_remaining: "licenses remaining:"
|
||||||
insufficient_enrollments: "insufficient paid enrollments"
|
insufficient_enrollments: "insufficient student licenses" # {change}
|
||||||
get_enrollments: "Get Enrollments" # {change}
|
get_enrollments: "Get More Licenses" # {change}
|
||||||
change_language: "Change Course Language"
|
change_language: "Change Course Language"
|
||||||
keep_using: "Keep Using"
|
keep_using: "Keep Using"
|
||||||
switch_to: "Switch To"
|
switch_to: "Switch To"
|
||||||
|
@ -1129,7 +1129,7 @@
|
||||||
back_courses: "Back to my courses"
|
back_courses: "Back to my courses"
|
||||||
edit_details: "Edit class details"
|
edit_details: "Edit class details"
|
||||||
enrolled_courses: "enrolled in paid courses:"
|
enrolled_courses: "enrolled in paid courses:"
|
||||||
purchase_enrollments: "Purchase Enrollments"
|
purchase_enrollments: "Purchase Student Licenses" # {change}
|
||||||
remove_student: "remove student"
|
remove_student: "remove student"
|
||||||
assign: "Assign"
|
assign: "Assign"
|
||||||
to_assign: "to assign paid courses."
|
to_assign: "to assign paid courses."
|
||||||
|
@ -1201,10 +1201,10 @@
|
||||||
return_to_course_man: "Return to course management."
|
return_to_course_man: "Return to course management."
|
||||||
students_not_enrolled: "students not enrolled"
|
students_not_enrolled: "students not enrolled"
|
||||||
total_all_classes: "Total Across All Classes"
|
total_all_classes: "Total Across All Classes"
|
||||||
how_many_enrollments: "How many additional paid enrollments do you need?"
|
how_many_enrollments: "How many additional student licenses do you need?" # {change}
|
||||||
each_student_access: "Each student in a class will get access to Courses 2-4 once they are enrolled in paid courses. You may assign each course to each student individually."
|
each_student_access: "Each student in a class will get access to Courses 2-4 once they are enrolled in paid courses. You may assign each course to each student individually."
|
||||||
purchase_now: "Purchase Now"
|
purchase_now: "Purchase Now"
|
||||||
enrollments: "enrollments"
|
enrollments: "licenses" # {change}
|
||||||
remove_student1: "Remove Student"
|
remove_student1: "Remove Student"
|
||||||
are_you_sure: "Are you sure you want to remove this student from this class?"
|
are_you_sure: "Are you sure you want to remove this student from this class?"
|
||||||
remove_description1: "Student will lose access to this classroom and assigned classes. Progress and gameplay is NOT lost, and the student can be added back to the classroom at any time."
|
remove_description1: "Student will lose access to this classroom and assigned classes. Progress and gameplay is NOT lost, and the student can be added back to the classroom at any time."
|
||||||
|
@ -1232,20 +1232,6 @@
|
||||||
getting_started_1: "Create a new class by clicking the green 'Create New Class' button below."
|
getting_started_1: "Create a new class by clicking the green 'Create New Class' button below."
|
||||||
getting_started_2: "Once you've created a class, click the blue 'Add Students' button."
|
getting_started_2: "Once you've created a class, click the blue 'Add Students' button."
|
||||||
getting_started_3: "You'll see student's progress below as they sign up and join your class."
|
getting_started_3: "You'll see student's progress below as they sign up and join your class."
|
||||||
additional_resources: "Additional Resources"
|
|
||||||
additional_resources_1_pref: "Download/print our"
|
|
||||||
additional_resources_1_mid: "Course 1"
|
|
||||||
additional_resources_1_mid2: "and"
|
|
||||||
additional_resources_1_mid3: "Course 2"
|
|
||||||
additional_resources_1_suff: "teacher's guides with solutions for each level."
|
|
||||||
additional_resources_2_pref: "Complete our"
|
|
||||||
additional_resources_2_suff: "to get two free enrollments for the rest of our paid courses."
|
|
||||||
additional_resources_3_pref: "Visit our"
|
|
||||||
additional_resources_3_mid: "Teacher Forums"
|
|
||||||
additional_resources_3_suff: "to connect to fellow educators who are using CodeCombat."
|
|
||||||
additional_resources_4_pref: "Check out our"
|
|
||||||
additional_resources_4_mid: "Schools Page"
|
|
||||||
additional_resources_4_suff: "to learn more about CodeCombat's classroom offerings."
|
|
||||||
educator_wiki_pref: "Or check out our new"
|
educator_wiki_pref: "Or check out our new"
|
||||||
educator_wiki_mid: "educator wiki"
|
educator_wiki_mid: "educator wiki"
|
||||||
educator_wiki_suff: "to browse the guide online."
|
educator_wiki_suff: "to browse the guide online."
|
||||||
|
@ -1253,8 +1239,8 @@
|
||||||
no_classes: "No classes yet!"
|
no_classes: "No classes yet!"
|
||||||
create_new_class1: "create new class"
|
create_new_class1: "create new class"
|
||||||
available_courses: "Available Courses"
|
available_courses: "Available Courses"
|
||||||
unused_enrollments: "Unused enrollments available:"
|
unused_enrollments: "Unused licenses available:" # {change}
|
||||||
students_access: "All students get access to Introduction to Computer Science for free. One enrollment per student is required to assign them to paid CodeCombat courses. A single student does not need multiple enrollments to access all paid courses."
|
students_access: "All students get access to Introduction to Computer Science for free. One license per student is required to assign them to paid CodeCombat courses. A single student does not need multiple licenses to access all paid courses." # {change}
|
||||||
active_courses: "active courses"
|
active_courses: "active courses"
|
||||||
no_students: "No students yet!"
|
no_students: "No students yet!"
|
||||||
add_students1: "add students"
|
add_students1: "add students"
|
||||||
|
@ -1273,7 +1259,7 @@
|
||||||
view_guide_online: "View Guide Online (PDF)"
|
view_guide_online: "View Guide Online (PDF)"
|
||||||
last_updated: "Last updated:"
|
last_updated: "Last updated:"
|
||||||
grants_lifetime_access: "Grants access to all Courses."
|
grants_lifetime_access: "Grants access to all Courses."
|
||||||
enrollment_credits_available: "Enrollment Credits Available:"
|
enrollment_credits_available: "Licenses Available:" # {change}
|
||||||
description: "Description" # ClassroomSettingsModal
|
description: "Description" # ClassroomSettingsModal
|
||||||
language_select: "Select a language"
|
language_select: "Select a language"
|
||||||
language_cannot_change: "Language cannot be changed once students join a class."
|
language_cannot_change: "Language cannot be changed once students join a class."
|
||||||
|
@ -1334,8 +1320,8 @@
|
||||||
teacher:
|
teacher:
|
||||||
teacher_dashboard: "Teacher Dashboard" # Navbar
|
teacher_dashboard: "Teacher Dashboard" # Navbar
|
||||||
my_classes: "My Classes"
|
my_classes: "My Classes"
|
||||||
courses: "Courses"
|
courses: "Course Guides" # {change}
|
||||||
enrollments: "Enrollments"
|
enrollments: "Student Licenses" # {change}
|
||||||
resources: "Resources"
|
resources: "Resources"
|
||||||
help: "Help"
|
help: "Help"
|
||||||
students: "Students" # Shared
|
students: "Students" # Shared
|
||||||
|
@ -1346,7 +1332,7 @@
|
||||||
teacher_account_required: "A teacher account is required to access this content."
|
teacher_account_required: "A teacher account is required to access this content."
|
||||||
create_teacher_account: "Create Teacher Account"
|
create_teacher_account: "Create Teacher Account"
|
||||||
what_is_a_teacher_account: "What's a Teacher Account?"
|
what_is_a_teacher_account: "What's a Teacher Account?"
|
||||||
teacher_account_explanation: "A CodeCombat Teacher account allows you to set up classrooms, monitor students’ progress as they work through courses, manage enrollments and access resources to aid in your curriculum-building."
|
teacher_account_explanation: "A CodeCombat Teacher account allows you to set up classrooms, monitor students’ progress as they work through courses, manage licenses and access resources to aid in your curriculum-building." # {change}
|
||||||
current_classes: "Current Classes"
|
current_classes: "Current Classes"
|
||||||
archived_classes: "Archived Classes"
|
archived_classes: "Archived Classes"
|
||||||
archived_classes_blurb: "Classes can be archived for future reference. Unarchive a class to view it in the Current Classes list again."
|
archived_classes_blurb: "Classes can be archived for future reference. Unarchive a class to view it in the Current Classes list again."
|
||||||
|
@ -1398,14 +1384,14 @@
|
||||||
enroll_the_following_students: "Enroll the following students"
|
enroll_the_following_students: "Enroll the following students"
|
||||||
all_students: "All Students"
|
all_students: "All Students"
|
||||||
enroll_students: "Enroll Students"
|
enroll_students: "Enroll Students"
|
||||||
not_enough_enrollments: "Not enough Enrollments available."
|
not_enough_enrollments: "Not enough licenses available." # {change}
|
||||||
enrollments_blurb_1: "Students taking Computer Science" # Enrollments page
|
enrollments_blurb_1: "Students taking Computer Science" # {change}
|
||||||
enrollments_blurb_2: "require enrollments to access the courses."
|
enrollments_blurb_2: "require a license to access the courses." # {change}
|
||||||
credits_available: "Credits Available"
|
credits_available: "Licenses Available" # {change}
|
||||||
total_unique_students: "Total Students (unique)" # {change}
|
total_unique_students: "Total Students" # {change}
|
||||||
total_enrolled_students: "Total Enrolled" # {change}
|
total_enrolled_students: "Enrolled Students" # {change}
|
||||||
unenrolled_students: "Unenrolled Students"
|
unenrolled_students: "Unenrolled Students"
|
||||||
add_enrollment_credits: "Add Enrollment Credits"
|
add_enrollment_credits: "Add Licenses" # {change}
|
||||||
purchasing: "Purchasing..."
|
purchasing: "Purchasing..."
|
||||||
purchased: "Purchased!"
|
purchased: "Purchased!"
|
||||||
purchase_now: "Purchase Now"
|
purchase_now: "Purchase Now"
|
||||||
|
@ -1422,12 +1408,12 @@
|
||||||
enter_new_password_below: "Enter new password below:"
|
enter_new_password_below: "Enter new password below:"
|
||||||
change_password: "Change Password"
|
change_password: "Change Password"
|
||||||
changed: "Changed"
|
changed: "Changed"
|
||||||
available_credits: "Available Credits"
|
available_credits: "Available Licenses" # {change}
|
||||||
pending_credits: "Pending Credits"
|
pending_credits: "Pending Licenses" # {change}
|
||||||
credits: "credits"
|
credits: "licenses" # {change}
|
||||||
start_date: "start date:"
|
start_date: "start date:"
|
||||||
end_date: "end date:"
|
end_date: "end date:"
|
||||||
num_enrollments_needed: "Number of enrollments needed:"
|
num_enrollments_needed: "Number of licenses needed:" # {change}
|
||||||
get_enrollments_blurb: " We'll help you build a solution that meets the needs of your class, school or district."
|
get_enrollments_blurb: " We'll help you build a solution that meets the needs of your class, school or district."
|
||||||
enroll_request_sent_blurb1: "Thanks! Your request has been sent."
|
enroll_request_sent_blurb1: "Thanks! Your request has been sent."
|
||||||
enroll_request_sent_blurb2: "Our classroom success team will be in touch shortly to help you find the best solution for your students' needs!"
|
enroll_request_sent_blurb2: "Our classroom success team will be in touch shortly to help you find the best solution for your students' needs!"
|
||||||
|
|
|
@ -7,9 +7,51 @@ block modal-header-content
|
||||||
h4 #{view.user.get('name') || 'Unnamed'} / #{view.user.get('email')}
|
h4 #{view.user.get('name') || 'Unnamed'} / #{view.user.get('email')}
|
||||||
span= view.user.id
|
span= view.user.id
|
||||||
|
|
||||||
|
|
||||||
block modal-body-content
|
block modal-body-content
|
||||||
|
|
||||||
|
h3.m-t-3 Grant Student Licenses
|
||||||
|
#prepaid-form.form
|
||||||
|
if view.state === 'creating-prepaid'
|
||||||
|
.progress.progress-striped.active
|
||||||
|
.progress-bar(style="width: 100%")
|
||||||
|
|
||||||
|
else if view.state === 'made-prepaid'
|
||||||
|
.alert.alert-success Licenses created!
|
||||||
|
|
||||||
|
else
|
||||||
|
.form-group
|
||||||
|
label Number of Licenses
|
||||||
|
input#seats-input.form-control(type="number", name="maxRedeemers")
|
||||||
|
.form-group
|
||||||
|
label Start Date
|
||||||
|
input.form-control(type="date" name="startDate" value=moment().format('YYYY-MM-DD'))
|
||||||
|
.form-group
|
||||||
|
label End Date
|
||||||
|
input.form-control(type="date" name="endDate" value=moment().add(1, 'year').format('YYYY-MM-DD')))
|
||||||
|
.form-group
|
||||||
|
button#add-seats-btn.btn.btn-primary Add Licenses
|
||||||
|
|
||||||
|
if view.prepaids.size()
|
||||||
|
h3.m-t-3 Existing Prepaids
|
||||||
|
table.table.table-condensed
|
||||||
|
tr
|
||||||
|
th ID
|
||||||
|
th Type
|
||||||
|
th Start
|
||||||
|
th End
|
||||||
|
th Used
|
||||||
|
for prepaid in view.prepaids.models
|
||||||
|
tr
|
||||||
|
td= prepaid.id
|
||||||
|
td= prepaid.get('type')
|
||||||
|
td
|
||||||
|
if prepaid.get('startDate')
|
||||||
|
= moment(prepaid.get('startDate')).utc().format('lll')
|
||||||
|
td
|
||||||
|
if prepaid.get('endDate')
|
||||||
|
= moment(prepaid.get('endDate')).utc().format('lll')
|
||||||
|
td #{(prepaid.get('redeemers') || []).length} / #{prepaid.get('maxRedeemers') || 0}
|
||||||
|
|
||||||
h3 Stripe Benefit
|
h3 Stripe Benefit
|
||||||
.form
|
.form
|
||||||
.form-group
|
.form-group
|
||||||
|
@ -35,49 +77,4 @@ block modal-body-content
|
||||||
option(value=coupon.id selected=coupon.id===view.currentCouponID)= coupon.formatString()
|
option(value=coupon.id selected=coupon.id===view.currentCouponID)= coupon.formatString()
|
||||||
button#save-changes.btn.btn-primary Save Changes
|
button#save-changes.btn.btn-primary Save Changes
|
||||||
|
|
||||||
if view.prepaids.size()
|
|
||||||
h3.m-t-3 Existing Prepaids
|
|
||||||
table.table.table-condensed
|
|
||||||
tr
|
|
||||||
th ID
|
|
||||||
th Type
|
|
||||||
th Start
|
|
||||||
th End
|
|
||||||
th Used
|
|
||||||
for prepaid in view.prepaids.models
|
|
||||||
tr
|
|
||||||
td= prepaid.id
|
|
||||||
td= prepaid.get('type')
|
|
||||||
td
|
|
||||||
if prepaid.get('startDate')
|
|
||||||
= moment(prepaid.get('startDate')).utc().format('lll')
|
|
||||||
td
|
|
||||||
if prepaid.get('endDate')
|
|
||||||
= moment(prepaid.get('endDate')).utc().format('lll')
|
|
||||||
td #{(prepaid.get('redeemers') || []).length} / #{prepaid.get('maxRedeemers') || 0}
|
|
||||||
|
|
||||||
h3.m-t-3 Grant Prepaid for Courses
|
|
||||||
#prepaid-form.form
|
|
||||||
if view.state === 'creating-prepaid'
|
|
||||||
.progress.progress-striped.active
|
|
||||||
.progress-bar(style="width: 100%")
|
|
||||||
|
|
||||||
else if view.state === 'made-prepaid'
|
|
||||||
.alert.alert-success Prepaid created!
|
|
||||||
|
|
||||||
else
|
|
||||||
.form-group
|
|
||||||
label Seats
|
|
||||||
input#seats-input.form-control(type="number", name="maxRedeemers")
|
|
||||||
.form-group
|
|
||||||
label Start Date
|
|
||||||
input.form-control(type="date" name="startDate" value=moment().format('YYYY-MM-DD'))
|
|
||||||
.form-group
|
|
||||||
label End Date
|
|
||||||
input.form-control(type="date" name="endDate" value=moment().add(1, 'year').format('YYYY-MM-DD')))
|
|
||||||
.form-group
|
|
||||||
button#add-seats-btn.btn.btn-primary Add Seats
|
|
||||||
|
|
||||||
block modal-footer
|
block modal-footer
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,7 @@ block content
|
||||||
h3 Classroom Monthly Active Users 365 days
|
h3 Classroom Monthly Active Users 365 days
|
||||||
.classroom-monthly-active-users-chart-365.line-chart-container
|
.classroom-monthly-active-users-chart-365.line-chart-container
|
||||||
|
|
||||||
h3 Enrollments Issued and Redeemed 90 days
|
h3 Licenses Issued and Redeemed 90 days
|
||||||
.paid-courses-chart.line-chart-container
|
.paid-courses-chart.line-chart-container
|
||||||
|
|
||||||
#furthest-course
|
#furthest-course
|
||||||
|
@ -282,14 +282,14 @@ block content
|
||||||
each eventName in eventNames
|
each eventName in eventNames
|
||||||
td= activeUser.events[eventName] || 0
|
td= activeUser.events[eventName] || 0
|
||||||
|
|
||||||
h1#enrollments-table Enrollments
|
h1#enrollments-table Licenses
|
||||||
table.table.table-striped.table-condensed
|
table.table.table-striped.table-condensed
|
||||||
tr
|
tr
|
||||||
th Day
|
th Day
|
||||||
th Paid Enrollments Issued
|
th Paid Licenses Issued
|
||||||
th Paid Enrollments Redeemed
|
th Paid Licenses Redeemed
|
||||||
th Trial Enrollments Issued
|
th Trial Licenses Issued
|
||||||
th Trial Enrollments Redeemed
|
th Trial Licenses Redeemed
|
||||||
each day in view.enrollmentDays
|
each day in view.enrollmentDays
|
||||||
tr
|
tr
|
||||||
td= day
|
td= day
|
||||||
|
|
|
@ -70,6 +70,6 @@ block modal-body-content
|
||||||
span.spl(data-i18n="courses.students1")
|
span.spl(data-i18n="courses.students1")
|
||||||
|
|
||||||
p
|
p
|
||||||
a#get-more-licenses-btn.btn.btn-lg.btn-primary-alt(href="/teachers/enrollments", data-i18n="courses.get_enrollments")
|
a#get-more-licenses-btn.btn.btn-lg.btn-primary-alt(href="/teachers/licenses", data-i18n="courses.get_enrollments")
|
||||||
|
|
||||||
block modal-footer-content
|
block modal-footer-content
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
li(class= path.indexOf('/teachers/courses') === 0 ? 'active' : '')
|
li(class= path.indexOf('/teachers/courses') === 0 ? 'active' : '')
|
||||||
a(href='/teachers/courses')
|
a(href='/teachers/courses')
|
||||||
small.label(data-i18n='teacher.courses')
|
small.label(data-i18n='teacher.courses')
|
||||||
li(class= path.indexOf('/teachers/enrollments') === 0 ? 'active' : '')
|
li(class= path.indexOf('/teachers/licenses') === 0 ? 'active' : '')
|
||||||
a(href='/teachers/enrollments')
|
a(href='/teachers/licenses')
|
||||||
small.label(data-i18n='teacher.enrollments')
|
small.label(data-i18n='teacher.enrollments')
|
||||||
//- li(class= path.indexOf('TODO') === 0 ? 'active' : '')
|
//- li(class= path.indexOf('TODO') === 0 ? 'active' : '')
|
||||||
//- a(href='TODO')
|
//- a(href='TODO')
|
||||||
|
|
|
@ -116,4 +116,4 @@ module.exports = class ActivateLicensesModal extends ModalView
|
||||||
@trigger 'redeem-users', @state.get('selectedUsers')
|
@trigger 'redeem-users', @state.get('selectedUsers')
|
||||||
|
|
||||||
onClickGetMoreLicensesButton: ->
|
onClickGetMoreLicensesButton: ->
|
||||||
@hide?() # In case this is opened in /teachers/enrollments itself, otherwise the button does nothing
|
@hide?() # In case this is opened in /teachers/licenses itself, otherwise the button does nothing
|
||||||
|
|
|
@ -33,7 +33,7 @@ module.exports = class TeachersContactModal extends ModalView
|
||||||
Your Name: #{props.name || ''}
|
Your Name: #{props.name || ''}
|
||||||
Enrollments Needed: #{@enrollmentsNeeded}
|
Enrollments Needed: #{@enrollmentsNeeded}
|
||||||
|
|
||||||
Message: Hi CodeCombat! I want to learn more about the Classroom experience and get enrollments so that my students can access Computer Science 2 and on.
|
Message: Hi CodeCombat! I want to learn more about the Classroom experience and get licenses so that my students can access Computer Science 2 and on.
|
||||||
"""
|
"""
|
||||||
email = props.email or me.get('email') or ''
|
email = props.email or me.get('email') or ''
|
||||||
@state.set('formValues', { email, message })
|
@state.set('formValues', { email, message })
|
||||||
|
|
|
@ -36,7 +36,7 @@ module.exports =
|
||||||
|
|
||||||
redeem: wrap (req, res) ->
|
redeem: wrap (req, res) ->
|
||||||
if not req.user?.isTeacher()
|
if not req.user?.isTeacher()
|
||||||
throw new errors.Forbidden('Must be a teacher to use enrollments')
|
throw new errors.Forbidden('Must be a teacher to use licenses')
|
||||||
|
|
||||||
prepaid = yield database.getDocFromHandle(req, Prepaid)
|
prepaid = yield database.getDocFromHandle(req, Prepaid)
|
||||||
if not prepaid
|
if not prepaid
|
||||||
|
@ -45,7 +45,7 @@ module.exports =
|
||||||
if prepaid._id.getTimestamp().getTime() < cutoffDate.getTime()
|
if prepaid._id.getTimestamp().getTime() < cutoffDate.getTime()
|
||||||
throw new errors.Forbidden('Cannot redeem from prepaids older than November 11, 2015')
|
throw new errors.Forbidden('Cannot redeem from prepaids older than November 11, 2015')
|
||||||
unless prepaid.get('creator').equals(req.user._id)
|
unless prepaid.get('creator').equals(req.user._id)
|
||||||
throw new errors.Forbidden('You may not redeem enrollments from this prepaid')
|
throw new errors.Forbidden('You may not redeem licenses from this prepaid')
|
||||||
if prepaid.get('redeemers')? and _.size(prepaid.get('redeemers')) >= prepaid.get('maxRedeemers')
|
if prepaid.get('redeemers')? and _.size(prepaid.get('redeemers')) >= prepaid.get('maxRedeemers')
|
||||||
throw new errors.Forbidden('This prepaid is exhausted')
|
throw new errors.Forbidden('This prepaid is exhausted')
|
||||||
unless prepaid.get('type') is 'course'
|
unless prepaid.get('type') is 'course'
|
||||||
|
|
|
@ -115,7 +115,7 @@ describe 'GET /db/level/:handle/session', ->
|
||||||
expect(res.statusCode).toBe(200)
|
expect(res.statusCode).toBe(200)
|
||||||
done()
|
done()
|
||||||
|
|
||||||
it 'returns 402 if the user\'s enrollment is expired', utils.wrap (done) ->
|
it 'returns 402 if the user\'s license is expired', utils.wrap (done) ->
|
||||||
@student.set({
|
@student.set({
|
||||||
coursePrepaid: {
|
coursePrepaid: {
|
||||||
_id: {}
|
_id: {}
|
||||||
|
|
|
@ -109,7 +109,7 @@ describe 'POST /db/prepaid/:handle/redeemers', ->
|
||||||
yield utils.loginUser(@otherTeacher)
|
yield utils.loginUser(@otherTeacher)
|
||||||
[res, body] = yield request.postAsync({uri: @url, json: { userID: @student.id } })
|
[res, body] = yield request.postAsync({uri: @url, json: { userID: @student.id } })
|
||||||
expect(res.statusCode).toBe(403)
|
expect(res.statusCode).toBe(403)
|
||||||
expect(res.body.message).toBe('You may not redeem enrollments from this prepaid')
|
expect(res.body.message).toBe('You may not redeem licenses from this prepaid')
|
||||||
done()
|
done()
|
||||||
|
|
||||||
it 'returns 403 if the prepaid is expired', utils.wrap (done) ->
|
it 'returns 403 if the prepaid is expired', utils.wrap (done) ->
|
||||||
|
@ -143,7 +143,7 @@ describe 'POST /db/prepaid/:handle/redeemers', ->
|
||||||
expect(student.get('coursePrepaid')._id.equals(@prepaid._id)).toBe(true)
|
expect(student.get('coursePrepaid')._id.equals(@prepaid._id)).toBe(true)
|
||||||
done()
|
done()
|
||||||
|
|
||||||
it 'updates the user if their enrollment is expired', utils.wrap (done) ->
|
it 'updates the user if their license is expired', utils.wrap (done) ->
|
||||||
yield utils.loginUser(@admin)
|
yield utils.loginUser(@admin)
|
||||||
prepaid = yield utils.makePrepaid({
|
prepaid = yield utils.makePrepaid({
|
||||||
creator: @teacher.id
|
creator: @teacher.id
|
||||||
|
|
|
@ -65,10 +65,10 @@ describe 'EnrollmentsView', ->
|
||||||
if @view.$('#actions-col').length isnt 1
|
if @view.$('#actions-col').length isnt 1
|
||||||
fail('There should be an #action-col, other tests depend on it.')
|
fail('There should be an #action-col, other tests depend on it.')
|
||||||
|
|
||||||
describe '"Get Enrollments" area', ->
|
describe '"Get Licenses" area', ->
|
||||||
|
|
||||||
describe '"Contact Us" button', ->
|
describe '"Contact Us" button', ->
|
||||||
it 'opens a TeachersContactModal, passing in the number of enrollments', ->
|
it 'opens a TeachersContactModal, passing in the number of licenses', ->
|
||||||
spyOn(@view, 'openModalView')
|
spyOn(@view, 'openModalView')
|
||||||
@view.state.set('numberOfStudents', 20)
|
@view.state.set('numberOfStudents', 20)
|
||||||
@view.$('#contact-us-btn').click()
|
@view.$('#contact-us-btn').click()
|
||||||
|
@ -86,7 +86,7 @@ describe 'EnrollmentsView', ->
|
||||||
if not @view.$('#request-sent-btn').length
|
if not @view.$('#request-sent-btn').length
|
||||||
fail('Request button not found.')
|
fail('Request button not found.')
|
||||||
if not @view.$('#enrollment-request-sent-blurb').length
|
if not @view.$('#enrollment-request-sent-blurb').length
|
||||||
fail('Enrollment request sent blurb not found.')
|
fail('License request sent blurb not found.')
|
||||||
# TODO: Figure out why this fails in Travis. Seems like it's not loading en locale
|
# TODO: Figure out why this fails in Travis. Seems like it's not loading en locale
|
||||||
# if not @view.$('a[href="mailto:schools@codecombat.com"]').length
|
# if not @view.$('a[href="mailto:schools@codecombat.com"]').length
|
||||||
# fail('Mailto: link not found.')
|
# fail('Mailto: link not found.')
|
||||||
|
|
|
@ -82,7 +82,7 @@ describe 'ActivateLicensesModal', ->
|
||||||
|
|
||||||
it 'should fire off one request when clicked'
|
it 'should fire off one request when clicked'
|
||||||
|
|
||||||
describe 'when the teacher has enough enrollments', ->
|
describe 'when the teacher has enough licenses', ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
selected = @modal.state.get('selectedUsers')
|
selected = @modal.state.get('selectedUsers')
|
||||||
selected.remove(selected.first())
|
selected.remove(selected.first())
|
||||||
|
@ -103,12 +103,12 @@ describe 'ActivateLicensesModal', ->
|
||||||
if request.url.indexOf(@prepaidThatExpiresLater.id) is -1
|
if request.url.indexOf(@prepaidThatExpiresLater.id) is -1
|
||||||
fail('The second prepaid should be the prepaid that expires later')
|
fail('The second prepaid should be the prepaid that expires later')
|
||||||
|
|
||||||
describe 'when the teacher doesn\'t have enough enrollments', ->
|
describe 'when the teacher doesn\'t have enough licenses', ->
|
||||||
it 'should be disabled', ->
|
it 'should be disabled', ->
|
||||||
expect(@modal.$('#activate-licenses-btn').hasClass('disabled')).toBe(true)
|
expect(@modal.$('#activate-licenses-btn').hasClass('disabled')).toBe(true)
|
||||||
|
|
||||||
describe 'the Purchase More button', ->
|
describe 'the Purchase More button', ->
|
||||||
it 'should redirect to the enrollment purchasing page'
|
it 'should redirect to the license purchasing page'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ describe 'ActivateLicensesModal', ->
|
||||||
# it 'should display the correct total number of credits', ->
|
# it 'should display the correct total number of credits', ->
|
||||||
# expect(@modal.$('#total-available').html()).toBe('2')
|
# expect(@modal.$('#total-available').html()).toBe('2')
|
||||||
#
|
#
|
||||||
# it 'should be disabled when teacher doesn\'t have enough enrollments', ->
|
# it 'should be disabled when teacher doesn\'t have enough licenses', ->
|
||||||
# expect(@modal.$('#total-available').html()).toBe('2')
|
# expect(@modal.$('#total-available').html()).toBe('2')
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in a new issue