codecombat/app/templates/courses/teacher-courses-view.jade
Matt Lott d72e4eb750 Practice levels Ux and next level algorithm
Update classroom and gameplay Ux to surface practice levels as 3a, 3b,
etc.
Update next level logic to leverage practice levels based on per level
completion playtime thresholds.
Patrol buster and patrol buster A are live for testing.
Fix a few classroom Ux progress hover bubble info bugs.

Closes #3767
2016-06-27 14:05:42 -07:00

105 lines
4.4 KiB
Text

extends /templates/base-flat
block page_nav
include ./teacher-dashboard-nav.jade
block content
if !me.isTeacher() && view.ownedClassrooms.size()
.alert.alert-danger.text-center
.container
// DNT: Temporary
h3 ATTENTION: Please upgrade your account to a Teacher Account.
p
| We are transitioning to a new improved classroom management system for instructors.
| Please convert your account to ensure you retain access to your classrooms.
a.btn.btn-primary.btn-lg(href="/teachers/update-account") Upgrade to teacher account
.container
h1(data-i18n="courses.title")
h2(data-i18n="courses.subtitle")
p
a(href="https://discourse.codecombat.com/t/course-level-changelog/7352" data-i18n="courses.changelog")
.courses.container
- var courses = view.courses.models;
- var courseIndex = 0;
while courseIndex < courses.length
- var course = courses[courseIndex];
- courseIndex++;
.course.row
.col-sm-9
+course-info(course)
if me.isTeacher()
.col-sm-3
.play-level-form(data-course-id=course.id)
.form-group
label.control-label
span(data-i18n="courses.select_language")
| :
select.language-select.form-control
// TODO: Automate this list @scott
option(value="python")
| Python
option(value="javascript")
| JavaScript
//- option(value="coffeescript")
//- | CoffeeScript (Experimental)
//- option(value="clojure")
//- | Clojure (Experimental)
//- option(value="lua")
//- | Lua
//- option(value="java")
//- | Java
.form-group
label.control-label
span(data-i18n="courses.select_level")
| :
select.level-select.form-control
if view.campaigns.loaded
- var campaign = view.campaigns.get(course.get('campaignID'))
each level, levelIndex in campaign.getLevels().models
- var levelNumber = campaign.getLevelNumber(level.get('original'), levelIndex + 1)
option(value=level.get('slug'))
span
= levelNumber
span.spr
| .
span
= level.get('name').replace('Course: ', '')
a.play-level-button.btn.btn-lg.btn-primary
span(data-i18n="courses.play_level")
.clearfix
mixin course-info(course)
- var campaign = view.campaigns.get(course.get('campaignID'));
.course-info
.text-h4.semibold
= course.get('name')
p= course.get('description')
p.concepts.semibold
span(data-i18n="courses.concepts_covered")
| :
each concept in course.get('concepts')
span(data-i18n="concepts." + concept)
if course.get('concepts').indexOf(concept) !== course.get('concepts').length - 1
span.spr ,
if me.isTeacher() || view.ownedClassrooms.size()
if view.guideLinks[course.id]
//- a.btn.btn-primary(href=view.guideLinks[course.id] class=(me.isTeacher() ? '': 'disabled'))
//- span(data-i18n="courses.print_guide")
a.guide-btn.btn.btn-primary(href=view.guideLinks[course.id].python data-course-id=course.id data-course-name=course.get('name') data-event-action="Classes Guides Guide Python" class=(me.isTeacher() ? '': 'disabled'))
span(data-i18n="courses.view_guide_online")
| &mdash; Python
a.guide-btn.btn.btn-primary(href=view.guideLinks[course.id].javascript data-course-id=course.id data-course-name=course.get('name') data-event-action="Classes Guides Guide JavaScript" class=(me.isTeacher() ? '': 'disabled'))
span(data-i18n="courses.view_guide_online")
| &mdash; JavaScript
else
i.small
| (
span(data-i18n='teacher.guides_coming_soon')
| )
if campaign && campaign.get('levelsUpdated')
p.small.m-t-2
span.spr(data-i18n="courses.last_updated")
span= moment(campaign.get('levelsUpdated')).format('LL')