mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-14 17:51:55 -05:00
164 lines
6 KiB
Text
164 lines
6 KiB
Text
extends /templates/base
|
|
|
|
block content
|
|
|
|
.text-center
|
|
if me.isAnonymous() || !me.get('name')
|
|
.welcome
|
|
span(data-i18n="courses.welcome")
|
|
span !
|
|
else
|
|
.welcome
|
|
span(data-i18n="courses.welcome")
|
|
span , #{me.get('name')}!
|
|
|
|
.container-fluid
|
|
.row
|
|
.col-md-2
|
|
.col-md-8
|
|
.well
|
|
.text-center
|
|
strong.uppercase(data-i18n="courses.getting_started")
|
|
br
|
|
.text-center
|
|
a.btn.btn-info(href='http://codecombat.com/docs/CodeCombatCoursesGettingStartedGuide.pdf', data-i18n="courses.download_getting_started")
|
|
br
|
|
ol
|
|
li(data-i18n="courses.getting_started_1")
|
|
li(data-i18n="courses.getting_started_2")
|
|
li(data-i18n="courses.getting_started_3")
|
|
br
|
|
.text-center
|
|
strong(data-i18n="courses.additional_resources")
|
|
ul
|
|
li
|
|
span.spr(data-i18n="courses.additional_resources_1_pref")
|
|
a(href='http://codecombat.com/docs/CodeCombatTeacherGuideCourse1.pdf', data-i18n="courses.additional_resources_1_mid")
|
|
span.spl(data-i18n="courses.additional_resources_1_suff")
|
|
li
|
|
span.spr(data-i18n="courses.additional_resources_2_pref")
|
|
a(href='/teachers/freetrial', data-i18n="teachers_survey.title")
|
|
span.spl(data-i18n="courses.additional_resources_2_suff")
|
|
li
|
|
span.spr(data-i18n="courses.additional_resources_3_pref")
|
|
a(href='http://discourse.codecombat.com/c/teachers', data-i18n="courses.additional_resources_3_mid")
|
|
span.spl(data-i18n="courses.additional_resources_3_suff")
|
|
li
|
|
span.spr(data-i18n="courses.additional_resources_4_pref")
|
|
a(href='/schools', data-i18n="courses.additional_resources_4_mid")
|
|
span.spl(data-i18n="courses.additional_resources_4_suff")
|
|
|
|
.section-header(data-i18n="courses.your_classes")
|
|
|
|
if view.classrooms.models.length > 0
|
|
.container-fluid
|
|
each classroom in view.classrooms.models
|
|
+classroom(classroom)
|
|
else
|
|
.no-students(data-i18n="courses.no_classes")
|
|
|
|
.text-center
|
|
button.btn.btn-lg.btn-success.uppercase.create-new-class(data-i18n="courses.create_new_class1")
|
|
|
|
br
|
|
.section-header(data-i18n="courses.available_courses")
|
|
|
|
if !me.isAnonymous()
|
|
p.text-center
|
|
strong.spr(data-i18n="courses.unused_enrollments")
|
|
strong.spr= view.prepaids.totalAvailable()
|
|
a.btn.btn-success.btn(href="/courses/purchase", data-i18n="courses.purchase_enrollments")
|
|
button#activate-licenses-btn.btn.btn-info(data-i18n="courses.enroll_paid")
|
|
|
|
p(data-i18n="courses.students_access")
|
|
|
|
.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)
|
|
|
|
block footer
|
|
|
|
mixin classroom(classroom)
|
|
.row
|
|
- var classMemberCount = classroom.get('members') ? classroom.get('members').length : 0;
|
|
if classMemberCount > 0
|
|
.col-md-8
|
|
p
|
|
span.spr.class-name= classroom.get('name')
|
|
if classroom.get('aceConfig') && classroom.get('aceConfig').language === 'javascript'
|
|
span.spr.class-name (JavaScript)
|
|
else
|
|
span.spr.class-name (Python)
|
|
a.edit-classroom-small(data-i18n="courses.edit_settings", data-classroom-id="#{classroom.id}")
|
|
if classMemberCount === 1
|
|
p There is #{classMemberCount} student in this class.
|
|
else
|
|
p There are #{classMemberCount} students in this class.
|
|
.active-courses(data-i18n="courses.active_courses")
|
|
- var courseInstances = view.courseInstances.where({classroomID: classroom.id});
|
|
table.active-course-container
|
|
each courseInstance in courseInstances
|
|
tr
|
|
+course(courseInstance, classMemberCount)
|
|
else
|
|
.col-md-12
|
|
p
|
|
span.spr.class-name= classroom.get('name')
|
|
if classroom.get('aceConfig') && classroom.get('aceConfig').language === 'javascript'
|
|
span.spr.class-name (JavaScript)
|
|
else
|
|
span.spr.class-name (Python)
|
|
a.edit-classroom-small(data-i18n="courses.edit_settings", data-classroom-id="#{classroom.id}")
|
|
.no-students(data-i18n="courses.no_students")
|
|
.text-center
|
|
button.btn.btn-info.uppercase.btn-add-students(data-classroom-id="#{classroom.id}", data-i18n="courses.add_students1")
|
|
br
|
|
if classMemberCount > 0
|
|
.col-md-4.text-center
|
|
.class-count= classMemberCount
|
|
.active-courses(style='margin:6px;', data-i18n="courses.students1")
|
|
a.btn.btn-info.uppercase(href='/courses/#{classroom.id}', data-i18n="courses.view_edit")
|
|
.row
|
|
.col-md-12
|
|
.divider
|
|
|
|
mixin course(courseInstance, classMemberCount)
|
|
- var courseMemberCount = courseInstance.get('members') ? courseInstance.get('members').length : 0;
|
|
if courseMemberCount > 0
|
|
- var course = view.courses.get(courseInstance.get('courseID'));
|
|
td
|
|
span.course-name= course.get('name')
|
|
td
|
|
span.course-enrolled
|
|
span #{courseMemberCount} / #{classMemberCount}
|
|
span.spl(data-i18n="courses.students_enrolled")
|
|
|
|
mixin course-info(course)
|
|
.media
|
|
img.media-object(src=course.get('screenshot'))
|
|
.media-body
|
|
span.spr.course-name= course.get('name')
|
|
p= course.get('description')
|
|
p
|
|
strong
|
|
span(data-i18n="courses.concepts")
|
|
span.spr :
|
|
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(data-i18n="courses.length")
|
|
span= course.get('duration') || 0
|
|
span.spl(data-i18n="units.hours")
|