Set up courses view for anonymous users

This commit is contained in:
Scott Erickson 2015-11-21 11:38:34 -08:00
parent f1d4a9d53b
commit 5aff591a8b
7 changed files with 85 additions and 22 deletions

View file

@ -6,5 +6,13 @@ module.exports = class CourseInstance extends CocoModel
@schema: schema
urlRoot: '/db/course_instance'
createForHOC: ->
# encapsulates creating a special course instance for HoC
upsertForHOC: (opts) ->
options = {
url: _.result(@, 'url') + '/~/create-for-hoc'
type: 'POST'
}
_.extend options, opts
@fetch(options)
firstLevelURL: ->
"/play/level/course-dungeons-of-kithgard?course=#{@get('courseID')}&course-instance=#{@id}"

View file

@ -1,3 +1,14 @@
#courses-view
.row
margin-top: 40px
h1
margin-bottom: 30px
#play-now-to-learn-header
margin-top: 60px
ul
margin: 0 auto 40px
width: 320px
#begin-hoc-area
width: 50%
margin: 0 auto

View file

@ -1,12 +1,30 @@
extends /templates/base
block content
.pull-right
a(href="/teachers") Teachers, click here!
h1.text-center Welcome to CodeCombat Courses
h1.text-center Adventurers, welcome to Courses!
.row
.col-sm-6.text-center
a(href="/courses/students").btn.btn-default Students Click Here
#main-content
if me.isAnonymous()
.text-center
p
h3 Ready to play?
p
button#start-new-game-btn.btn.btn-default Start New Game
p - OR -
p
button#log-in-btn.btn.btn-default(data-i18n="login.log_in")
.col-sm-6.text-center
a(href="/courses/teachers").btn.btn-default Teachers Click Here
h3#play-now-to-learn-header.text-center PLAY NOW TO LEARN
ul
li basic syntax to control your character
li while loops to solve pesky puzzles
li strings & variables to customize actions
li how to defeat an ogre (important life skills!)
#begin-hoc-area.hide
h2.text-center(data-i18n="common.loading")
.progress.progress-striped.active
.progress-bar(style="width: 100%")

View file

@ -33,7 +33,7 @@ block modal-body-content
#errors-alert.alert.alert-danger.hide
.text-center
if view.willPlayMode
if view.willPlay
input#sign-up-btn.btn.btn-default(type="submit", value="Start Playing")
p
a#skip-link Skip this, I'll create an account later!

View file

@ -2,7 +2,36 @@ app = require 'core/application'
AuthModal = require 'views/core/AuthModal'
RootView = require 'views/core/RootView'
template = require 'templates/courses/courses-view'
StudentLogInModal = require 'views/courses/StudentLogInModal'
StudentSignUpModal = require 'views/courses/StudentSignUpModal'
CourseInstance = require 'models/CourseInstance'
module.exports = class CoursesView extends RootView
id: 'courses-view'
template: template
events:
'click #log-in-btn': 'onClickLogInButton'
'click #start-new-game-btn': 'onClickStartNewGameButton'
onClickStartNewGameButton: ->
@openSignUpModal()
onClickLogInButton: ->
modal = new StudentLogInModal()
@openModalView(modal)
modal.on 'want-to-create-account', @openSignUpModal, @
openSignUpModal: ->
modal = new StudentSignUpModal({ willPlay: true })
@openModalView(modal)
modal.once 'click-skip-link', @startHourOfCodePlay, @
startHourOfCodePlay: ->
@$('#main-content').hide()
@$('#begin-hoc-area').removeClass('hide')
hocCourseInstance = new CourseInstance()
hocCourseInstance.upsertForHOC()
@listenToOnce hocCourseInstance, 'sync', ->
url = hocCourseInstance.firstLevelURL()
app.router.navigate(url, { trigger: true })

View file

@ -77,15 +77,11 @@ module.exports = class HourOfCodeView extends RootView
startHourOfCodePlay: ->
@$('#main-content').hide()
@$('#begin-hoc-area').removeClass('hide')
$.ajax({
method: 'POST'
url: '/db/course_instance/-/create-for-hoc'
context: @
success: (data) ->
application.tracker?.trackEvent 'Finished HoC student course creation', {courseID: data.courseID}
url = "/play/level/course-dungeons-of-kithgard?course=#{data.courseID}&course-instance=#{data._id}"
app.router.navigate(url, { trigger: true })
})
hocCourseInstance = new CourseInstance()
hocCourseInstance.upsertForHOC()
@listenToOnce hocCourseInstance, 'sync', ->
url = hocCourseInstance.firstLevelURL()
app.router.navigate(url, { trigger: true })
onClickLogInButton: ->
modal = new StudentLogInModal()

View file

@ -16,10 +16,11 @@ module.exports = class StudentSignUpModal extends ModalView
initialize: (options) ->
options ?= {}
@willPlay = options.willPlay
onClickSkipLink: ->
@trigger 'click-skip-link' # defer to view that opened this modal
@hide()
@hide?()
onSubmitForm: (e) ->
e.preventDefault()