mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-13 13:35:30 -04:00
Add /courses prepaid code query var
Update invite students link to go to /courses
This commit is contained in:
parent
d09711be37
commit
75b9cb50d9
4 changed files with 52 additions and 31 deletions
app
server/courses
|
@ -250,7 +250,7 @@ mixin invite-tab
|
|||
h3(data-i18n="courses.invite_link_header")
|
||||
p(data-i18n="courses.invite_link_p_1")
|
||||
.alert.alert-info
|
||||
strong= document.location.origin + "/account/prepaid?_ppc=" + view.prepaid.get('code')
|
||||
strong= document.location.origin + "/courses?_ppc=" + view.prepaid.get('code')
|
||||
p(data-i18n="courses.invite_link_p_2")
|
||||
.form
|
||||
.form-group
|
||||
|
|
|
@ -7,19 +7,25 @@ block content
|
|||
a.spl(href='mailto:team@codecombat.com') team@codecombat.com
|
||||
|
||||
br
|
||||
if studentMode
|
||||
+student-main
|
||||
if state === 'enrolling'
|
||||
.alert.alert-info Enrolling in course..
|
||||
else
|
||||
+teacher-main
|
||||
.container-fluid
|
||||
- var i = 0
|
||||
while i < courses.length
|
||||
.row
|
||||
+course-block(courses[i], instances)
|
||||
- i++
|
||||
if i < courses.length
|
||||
if state === 'unknown_error'
|
||||
.alert.alert-danger.alert-dismissible= stateMessage
|
||||
|
||||
if studentMode
|
||||
+student-main
|
||||
else
|
||||
+teacher-main
|
||||
.container-fluid
|
||||
- var i = 0
|
||||
while i < courses.length
|
||||
.row
|
||||
+course-block(courses[i], instances)
|
||||
- i++
|
||||
if i < courses.length
|
||||
+course-block(courses[i], instances)
|
||||
- i++
|
||||
|
||||
mixin student-main
|
||||
button.btn.btn-warning.btn-teacher(data-i18n="courses.teachers_click")
|
||||
|
|
|
@ -26,6 +26,7 @@ module.exports = class CoursesView extends RootView
|
|||
@courseInstances = new CocoCollection([], { url: "/db/user/#{me.id}/course_instances", model: CourseInstance})
|
||||
@listenToOnce @courseInstances, 'sync', @onCourseInstancesLoaded
|
||||
@supermodel.loadCollection(@courseInstances, 'course_instances')
|
||||
@courseEnroll(prepaidCode) if prepaidCode = utils.getQueryVariable('_ppc', false)
|
||||
|
||||
getRenderData: ->
|
||||
context = super()
|
||||
|
@ -33,6 +34,8 @@ module.exports = class CoursesView extends RootView
|
|||
context.enrolledCourses = @enrolledCourses ? {}
|
||||
context.instances = @courseInstances.models ? []
|
||||
context.praise = @praise
|
||||
context.state = @state
|
||||
context.stateMessage = @stateMessage
|
||||
context.studentMode = @studentMode
|
||||
context
|
||||
|
||||
|
@ -73,24 +76,7 @@ module.exports = class CoursesView extends RootView
|
|||
$('.continue-dialog').modal('hide')
|
||||
courseID = $(e.target).data('course-id')
|
||||
prepaidCode = $(".code-input[data-course-id=#{courseID}]").val()
|
||||
data = prepaidCode: prepaidCode
|
||||
jqxhr = $.post('/db/course_instance/-/redeem_prepaid', data)
|
||||
jqxhr.done (data, textStatus, jqXHR) =>
|
||||
application.tracker?.trackEvent 'Redeemed course prepaid code', {courseID: courseID, prepaidCode: prepaidCode}
|
||||
# TODO: handle fetch errors
|
||||
me.fetch(cache: false).always =>
|
||||
route = "/courses/#{courseID}"
|
||||
viewArgs = [{}, courseID]
|
||||
Backbone.Mediator.publish 'router:navigate',
|
||||
route: route
|
||||
viewClass: 'views/courses/CourseDetailsView'
|
||||
viewArgs: viewArgs
|
||||
jqxhr.fail (xhr, textStatus, errorThrown) =>
|
||||
console.error 'Got an error redeeming a course prepaid code:', textStatus, errorThrown
|
||||
application.tracker?.trackEvent 'Failed to redeem course prepaid code', status: textStatus
|
||||
@state = 'unknown_error'
|
||||
@stateMessage = "#{xhr.status}: #{xhr.responseText}"
|
||||
@render?()
|
||||
@courseEnroll(prepaidCode)
|
||||
|
||||
onClickEnter: (e) ->
|
||||
$('.continue-dialog').modal('hide')
|
||||
|
@ -115,3 +101,32 @@ module.exports = class CoursesView extends RootView
|
|||
viewArgs = [studentMode: false]
|
||||
navigationEvent = route: route, viewClass: viewClass, viewArgs: viewArgs
|
||||
Backbone.Mediator.publish 'router:navigate', navigationEvent
|
||||
|
||||
courseEnroll: (prepaidCode) ->
|
||||
@state = 'enrolling'
|
||||
@render?()
|
||||
data = prepaidCode: prepaidCode
|
||||
jqxhr = $.post('/db/course_instance/-/redeem_prepaid', data)
|
||||
jqxhr.done (data, textStatus, jqXHR) =>
|
||||
application.tracker?.trackEvent 'Redeemed course prepaid code', {prepaidCode: prepaidCode}
|
||||
# TODO: handle fetch errors
|
||||
me.fetch(cache: false).always =>
|
||||
if data?.length > 0 && data[0].courseID && data[0]._id
|
||||
courseID = data[0].courseID
|
||||
courseInstanceID = data[0]._id
|
||||
route = "/courses/#{courseID}/#{courseInstanceID}"
|
||||
viewArgs = [{}, courseID, courseInstanceID]
|
||||
Backbone.Mediator.publish 'router:navigate',
|
||||
route: route
|
||||
viewClass: 'views/courses/CourseDetailsView'
|
||||
viewArgs: viewArgs
|
||||
else
|
||||
@state = 'unknown_error'
|
||||
@stateMessage = "Database error."
|
||||
@render?()
|
||||
jqxhr.fail (xhr, textStatus, errorThrown) =>
|
||||
console.error 'Got an error redeeming a course prepaid code:', textStatus, errorThrown
|
||||
application.tracker?.trackEvent 'Failed to redeem course prepaid code', status: textStatus
|
||||
@state = 'unknown_error'
|
||||
@stateMessage = "#{xhr.status}: #{xhr.responseText}"
|
||||
@render?()
|
||||
|
|
|
@ -123,7 +123,7 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
|
|||
address: email
|
||||
email_data:
|
||||
class_name: courseInstance.get('name')
|
||||
join_link: "https://codecombat.com/account/prepaid?_ppc=" + prepaid.get('code')
|
||||
join_link: "https://codecombat.com/courses?_ppc=" + prepaid.get('code')
|
||||
sendwithus.api.send context, _.noop
|
||||
return @sendSuccess(res, {})
|
||||
|
||||
|
@ -160,6 +160,6 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
|
|||
tasks = (makeAddMemberToCourseInstanceFn(courseInstance) for courseInstance in courseInstances)
|
||||
async.parallel tasks, (err, results) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
@sendSuccess(res)
|
||||
@sendSuccess(res, courseInstances)
|
||||
|
||||
module.exports = new CourseInstanceHandler()
|
||||
|
|
Loading…
Add table
Reference in a new issue