Add invite link and capacity info to CourseDetailsView

This commit is contained in:
Scott Erickson 2015-10-05 13:34:37 -07:00
parent d200ac4a32
commit 212ee8a65a
3 changed files with 32 additions and 2 deletions

View file

@ -247,11 +247,19 @@ mixin progress-members-popup-started(i, level)
mixin invite-tab
p(data-i18n="courses.invite_students")
p TODO: Student unlock code
p TODO: Class capacity
// TODO: finalize text here and then i18n it
h3 Link to join course
p Give this link to students you would like to have join the course.
a= document.location.origin + "/account/prepaid?_ppc=" + view.prepaid.get('code')
p Or have us email them directly:
textarea.invite-emails(rows=3, data-i18n="[placeholder]courses.enter_emails", placeholder="Enter student emails to invite, one per line")
div(style='margin-top:10px;')
button.btn.btn-success.btn-invite(data-i18n="courses.send_invites")
h3 Class Capacity
if view.prepaid.loaded
p
span.spr Course slots used:
span #{view.prepaid.get('redeemers').length} / #{view.prepaid.get('maxRedeemers')}.
mixin levels-tab
table.table.table-striped.table-condensed

View file

@ -129,6 +129,7 @@ module.exports = class CocoView extends Backbone.View
context.isIE = @isIE()
context.moment = moment
context.translate = $.i18n.t
context.view = @
context
afterRender: ->

View file

@ -7,6 +7,7 @@ RootView = require 'views/core/RootView'
template = require 'templates/courses/course-details'
User = require 'models/User'
utils = require 'core/utils'
Prepaid = require 'models/Prepaid'
module.exports = class CourseDetailsView extends RootView
id: 'course-details-view'
@ -22,6 +23,7 @@ module.exports = class CourseDetailsView extends RootView
'click .progress-level-cell': 'onClickProgressLevelCell'
'mouseenter .progress-level-cell': 'onMouseEnterPoint'
'mouseleave .progress-level-cell': 'onMouseLeavePoint'
'click .btn-invite': 'onClickButtonInvite'
constructor: (options, @courseID, @courseInstanceID) ->
super options
@ -31,6 +33,7 @@ module.exports = class CourseDetailsView extends RootView
@memberSort = 'nameAsc'
@course = @supermodel.getModel(Course, @courseID) or new Course _id: @courseID
@listenTo @course, 'sync', @onCourseSync
@prepaid = new Prepaid()
if @course.loaded
@onCourseSync()
else
@ -55,6 +58,7 @@ module.exports = class CourseDetailsView extends RootView
context.sortedMembers = @sortedMembers ? []
context.userConceptStateMap = @userConceptStateMap ? {}
context.userLevelStateMap = @userLevelStateMap ? {}
context.document = document
context
onCourseSync: ->
@ -119,6 +123,20 @@ module.exports = class CourseDetailsView extends RootView
@members = new CocoCollection([], { url: "/db/course_instance/#{@courseInstance.id}/members", model: User, comparator: 'nameLower' })
@listenToOnce @members, 'sync', @onMembersSync
@supermodel.loadCollection @members, 'members', cache: false
if @adminMode
prepaidID = @course.get('prepaidID')
if not prepaidID
prepaidID = '560ef835444e5c9a847e0218'
# TODO: Just abort if no prepaidID
@prepaid = @supermodel.getModel(Prepaid, prepaidID) or new Prepaid _id: prepaidID
@listenTo @prepaid, 'sync', @onPrepaidSync
if @prepaid.loaded
@onPrepaidSync()
else
@supermodel.loadModel @prepaid, 'prepaid'
@render?()
onPrepaidSync: ->
@render?()
onLevelSessionsSync: ->
@ -226,6 +244,9 @@ module.exports = class CourseDetailsView extends RootView
viewArgs: [{}, levelSlug]
}
onClickButtonInvite: (e) ->
onMouseEnterPoint: (e) ->
$('.progress-popup-container').hide()
container = $(e.target).find('.progress-popup-container').show()