2015-11-03 19:41:06 -05:00
|
|
|
extends /templates/base
|
|
|
|
|
|
|
|
block content
|
|
|
|
|
2015-11-30 17:39:46 -05:00
|
|
|
.text-center
|
|
|
|
if me.isAnonymous() || !me.get('name')
|
|
|
|
.welcome Welcome!
|
|
|
|
else
|
|
|
|
.welcome Welcome, #{me.get('name')}!
|
|
|
|
|
2015-12-02 18:19:48 -05:00
|
|
|
.container-fluid
|
|
|
|
.row
|
|
|
|
.col-md-2
|
|
|
|
.col-md-8
|
|
|
|
.well
|
|
|
|
.text-center
|
|
|
|
strong.uppercase Getting Started with Courses
|
|
|
|
br
|
|
|
|
.text-center
|
2015-12-03 19:30:50 -05:00
|
|
|
a.btn.btn-info(href='http://codecombat.com/docs/CodeCombatHourofCodeGettingStartedGuide.pdf') Download Getting Started Guide [PDF]
|
2015-12-02 18:19:48 -05:00
|
|
|
br
|
|
|
|
ol
|
|
|
|
li Create a new class by clicking the green "Create New Class" button below.
|
|
|
|
li Once you've created a class, click the blue "Add Students" button.
|
|
|
|
li You'll see student's progress below as they sign up and join your class.
|
|
|
|
br
|
|
|
|
.text-center
|
|
|
|
strong Additional Resources
|
|
|
|
ul
|
2015-12-02 20:28:25 -05:00
|
|
|
li
|
|
|
|
span.spr Download/print our
|
2015-12-03 19:30:50 -05:00
|
|
|
a.spr(href='http://codecombat.com/docs/CodeCombatTeacherGuideCourse1.pdf') Course 1 Teacher's Guide
|
2015-12-02 20:28:25 -05:00
|
|
|
span for explanations and solutions to each level.
|
2015-12-02 18:19:48 -05:00
|
|
|
li
|
|
|
|
span.spr Complete our
|
|
|
|
a.spr(href='/teachers/freetrial') Teacher Survey
|
|
|
|
span to get 15 more hours of content for FREE for 2 months.
|
|
|
|
li
|
|
|
|
span.spr Visit our
|
|
|
|
a.spr(href='http://discourse.codecombat.com/c/teachers') Teacher Forums
|
|
|
|
span to connect to fellow educators who are using CodeCombat.
|
2015-11-30 17:39:46 -05:00
|
|
|
|
|
|
|
.section-header Your Classes
|
|
|
|
|
|
|
|
if view.classrooms.models.length > 0
|
|
|
|
.container-fluid
|
|
|
|
each classroom in view.classrooms.models
|
|
|
|
+classroom(classroom)
|
|
|
|
else
|
|
|
|
.no-students No classes yet!
|
|
|
|
|
|
|
|
.text-center
|
2015-11-30 19:20:24 -05:00
|
|
|
button.btn.btn-lg.btn-success.uppercase.create-new-class create new class
|
2015-11-30 17:39:46 -05:00
|
|
|
|
2015-11-30 19:40:14 -05:00
|
|
|
br
|
|
|
|
.section-header Available Courses
|
2015-12-04 17:17:16 -05:00
|
|
|
|
2015-12-04 18:02:58 -05:00
|
|
|
if !me.isAnonymous()
|
|
|
|
p.text-center
|
|
|
|
strong.spr Unused enrollments available:
|
|
|
|
strong.spr= view.prepaids.totalAvailable()
|
|
|
|
a.btn.btn-success.btn(href="/courses/purchase") Purchase Enrollments
|
2015-12-04 17:17:16 -05:00
|
|
|
|
|
|
|
p
|
|
|
|
| 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.
|
|
|
|
|
2015-11-30 19:40:14 -05:00
|
|
|
.container-fluid
|
|
|
|
- var courses = view.courses.models;
|
|
|
|
- var i = 0;
|
|
|
|
while i < courses.length
|
|
|
|
- var course = courses[i];
|
|
|
|
- i++;
|
|
|
|
.row
|
|
|
|
.col-md-6
|
|
|
|
+course-info(course)
|
|
|
|
if i < courses.length
|
|
|
|
- course = courses[i];
|
|
|
|
- i++;
|
|
|
|
.col-md-6
|
|
|
|
+course-info(course)
|
2015-11-09 20:58:40 -05:00
|
|
|
|
2015-11-30 17:39:46 -05:00
|
|
|
block footer
|
2015-11-04 19:54:13 -05:00
|
|
|
|
2015-11-30 17:39:46 -05:00
|
|
|
mixin classroom(classroom)
|
|
|
|
.row
|
2015-11-30 19:20:24 -05:00
|
|
|
- var classMemberCount = classroom.get('members') ? classroom.get('members').length : 0;
|
2015-11-30 17:39:46 -05:00
|
|
|
if classMemberCount > 0
|
|
|
|
.col-md-8
|
|
|
|
p
|
|
|
|
span.spr.class-name= classroom.get('name')
|
2015-11-30 19:20:24 -05:00
|
|
|
if classroom.get('aceConfig') && classroom.get('aceConfig').language === 'javascript'
|
|
|
|
span.spr.class-name (JavaScript)
|
2015-11-30 17:39:46 -05:00
|
|
|
else
|
|
|
|
span.spr.class-name (Python)
|
2015-11-30 19:20:24 -05:00
|
|
|
a.edit-classroom-small(data-i18n="courses.edit_settings", data-classroom-id="#{classroom.id}")
|
2015-11-30 17:39:46 -05:00
|
|
|
.active-courses active courses
|
2015-11-30 19:20:24 -05:00
|
|
|
- var courseInstances = view.courseInstances.where({classroomID: classroom.id});
|
2015-11-30 17:39:46 -05:00
|
|
|
each courseInstance in courseInstances
|
|
|
|
+course(courseInstance, classMemberCount)
|
|
|
|
else
|
|
|
|
.col-md-12
|
|
|
|
p
|
|
|
|
span.spr.class-name= classroom.get('name')
|
2015-11-30 19:20:24 -05:00
|
|
|
if classroom.get('aceConfig') && classroom.get('aceConfig').language === 'javascript'
|
|
|
|
span.spr.class-name (JavaScript)
|
2015-11-30 17:39:46 -05:00
|
|
|
else
|
|
|
|
span.spr.class-name (Python)
|
2015-11-30 19:20:24 -05:00
|
|
|
a.edit-classroom-small(data-i18n="courses.edit_settings", data-classroom-id="#{classroom.id}")
|
2015-11-30 17:39:46 -05:00
|
|
|
.no-students No students yet!
|
|
|
|
.text-center
|
2015-12-01 16:41:02 -05:00
|
|
|
button.btn.btn-info.uppercase.btn-add-students(data-classroom-id="#{classroom.id}") add students
|
2015-11-30 17:39:46 -05:00
|
|
|
br
|
|
|
|
if classMemberCount > 0
|
|
|
|
.col-md-4.text-center
|
|
|
|
.class-count= classMemberCount
|
|
|
|
.active-courses(style='margin:6px;') students
|
|
|
|
a.btn.btn-info.uppercase(href='/courses/#{classroom.id}') view/edit
|
|
|
|
.row
|
|
|
|
.col-md-12
|
|
|
|
.divider
|
|
|
|
|
|
|
|
mixin course(courseInstance, classMemberCount)
|
2015-11-30 19:20:24 -05:00
|
|
|
- var courseMemberCount = courseInstance.get('members') ? courseInstance.get('members').length : 0;
|
2015-11-30 17:39:46 -05:00
|
|
|
if courseMemberCount > 0
|
2015-11-30 19:20:24 -05:00
|
|
|
- var course = view.courses.get(courseInstance.get('courseID'));
|
2015-11-30 17:39:46 -05:00
|
|
|
p
|
|
|
|
.course-name= course.get('name')
|
|
|
|
.course-enrolled #{courseMemberCount} / #{classMemberCount} students enrolled
|
|
|
|
each concept in course.get('concepts')
|
|
|
|
span.spr.course-concept(data-i18n="concepts." + concept)
|
2015-11-30 19:40:14 -05:00
|
|
|
|
|
|
|
mixin course-info(course)
|
|
|
|
.media
|
2015-12-01 17:41:10 -05:00
|
|
|
img.media-object(src=course.get('screenshot'))
|
2015-11-30 19:40:14 -05:00
|
|
|
.media-body
|
|
|
|
span.spr.course-name= course.get('name')
|
|
|
|
p= course.get('description')
|
|
|
|
p
|
|
|
|
strong.spr Concepts:
|
|
|
|
each concept in course.get('concepts')
|
|
|
|
span(data-i18n="concepts." + concept)
|
|
|
|
if course.get('concepts').indexOf(concept) !== course.get('concepts').length - 1
|
|
|
|
span.spr ,
|
|
|
|
p
|
|
|
|
strong.spr Length:
|
|
|
|
span #{course.get('duration') || 0} hours
|