Commit b98c8911 by Peter Fogg

Course pacing template changes.

Instructor-led is changed to instructor-paced. Adds a label to the
course outline page to show the course pacing.

ECOM-2794
ECOM-2800
parent 59af66c6
......@@ -101,17 +101,17 @@ var DetailsView = ValidatingView.extend({
this.$('#' + this.fieldToSelectorMap['entrance_exam_minimum_score_pct']).val(this.model.get('entrance_exam_minimum_score_pct'));
var selfPacedButton = this.$('#course-pace-self-paced'),
instructorLedButton = this.$('#course-pace-instructor-led'),
instructorPacedButton = this.$('#course-pace-instructor-paced'),
paceToggleTip = this.$('#course-pace-toggle-tip');
(this.model.get('self_paced') ? selfPacedButton : instructorLedButton).attr('checked', true);
(this.model.get('self_paced') ? selfPacedButton : instructorPacedButton).attr('checked', true);
if (this.model.canTogglePace()) {
selfPacedButton.removeAttr('disabled');
instructorLedButton.removeAttr('disabled');
instructorPacedButton.removeAttr('disabled');
paceToggleTip.text('');
}
else {
selfPacedButton.attr('disabled', true);
instructorLedButton.attr('disabled', true);
instructorPacedButton.attr('disabled', true);
paceToggleTip.text(gettext('Course pacing cannot be changed once a course has started.'));
}
......@@ -254,7 +254,7 @@ var DetailsView = ValidatingView.extend({
break;
case 'course-pace-self-paced':
// Fallthrough to handle both radio buttons
case 'course-pace-instructor-led':
case 'course-pace-instructor-paced':
this.model.set('self_paced', JSON.parse(event.currentTarget.value));
break;
default: // Everything else is handled by datepickers and CodeMirror.
......
......@@ -178,25 +178,37 @@
.course-status {
margin-bottom: $baseline;
.status-release {
.status-release,
.status-pacing {
@extend %t-copy-base;
display: inline-block;
color: $color-copy-base;
// STATE: hover
&:hover {
.status-actions {
opacity: 1.0;
}
}
}
.status-release-label,
.status-release-value,
.status-pacing-label,
.status-pacing-value,
.status-actions {
display: inline-block;
vertical-align: middle;
margin-bottom: 0;
}
.status-release-label {
.status-release-label,
.status-pacing-label {
margin-right: ($baseline/4);
}
.status-release-value {
.status-release-value,
.status-pacing-value {
@extend %t-strong;
}
......@@ -206,14 +218,6 @@
margin-left: ($baseline/4);
opacity: 0.0;
}
// STATE: hover
&:hover {
.status-actions {
opacity: 1.0;
}
}
}
// outline
......
......@@ -1044,7 +1044,7 @@
.group-settings.pacing {
.list-input {
margin-top: $baseline/2;
background-color: $gray-l4;
background-color: $gray-l6;
border-radius: 3px;
padding: ($baseline/2);
}
......
......@@ -7,6 +7,7 @@ from util.date_utils import get_default_time_display
from django.utils.translation import ugettext as _
from contentstore.utils import reverse_usage_url
from microsite_configuration import microsite
from openedx.core.djangoapps.self_paced.models import SelfPacedConfiguration
%>
<%block name="title">${_("Course Outline")}</%block>
<%block name="bodyclass">is-signedin course view-outline</%block>
......@@ -161,6 +162,16 @@ from microsite_configuration import microsite
</li>
</ul>
</div>
% if SelfPacedConfiguration.current().enabled:
<div class="status-pacing">
<h2 class=status-pacing-label>${_("Course Pacing:")}</h2>
% if context_course.self_paced:
<p class="status-pacing-value">${_("Self-Paced")}</p>
% else:
<p class="status-pacing-value">${_("Instructor-Paced")}</p>
% endif
</div>
% endif
</div>
<div class="wrapper-dnd">
......
......@@ -425,9 +425,9 @@ CMS.URL.UPLOAD_ASSET = '${upload_asset_url}';
<ol class="list-input">
<li class="field">
<input type="radio" class="field-radio" name="self-paced" id="course-pace-instructor-led" value="false"/>
<label class="course-pace-label" for="course-pace-instructor-led">Instructor-Led</label>
<span class="tip">${_("Instructor-led courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.")}</span>
<input type="radio" class="field-radio" name="self-paced" id="course-pace-instructor-paced" value="false"/>
<label class="course-pace-label" for="course-pace-instructor-paced">Instructor-Paced</label>
<span class="tip">${_("Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.")}</span>
</li>
<li class="field">
<input type="radio" class="field-radio" name="self-paced" id="course-pace-self-paced" value="true"/>
......
......@@ -151,7 +151,7 @@ class SettingsPage(CoursePage):
@course_pacing.setter
def course_pacing(self, pacing):
"""
Sets the course to either self-paced or instructor-led by checking
Sets the course to either self-paced or instructor-paced by checking
the appropriate radio button.
"""
self.wait_for_element_presence(self.checked_pacing_css, 'course pacing controls present')
......
......@@ -209,11 +209,11 @@ class CoursePacingTest(StudioSettingsDetailsTest):
# Set the course start date to tomorrow in order to allow setting pacing
self.course_fixture.add_course_details({'start_date': datetime.now() + timedelta(days=1)})
def test_default_instructor_led(self):
def test_default_instructor_paced(self):
"""
Test that the 'instructor led' button is checked by default.
Test that the 'instructor paced' button is checked by default.
"""
self.assertEqual(self.settings_detail.course_pacing, 'Instructor-Led')
self.assertEqual(self.settings_detail.course_pacing, 'Instructor-Paced')
def test_self_paced(self):
"""
......
......@@ -126,7 +126,7 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest
def setUp(self):
super(SelfPacedCourseInfoTestCase, self).setUp()
self.instructor_led_course = CourseFactory.create(self_paced=False)
self.instructor_paced_course = CourseFactory.create(self_paced=False)
self.self_paced_course = CourseFactory.create(self_paced=True)
self.setup_user()
......@@ -141,8 +141,8 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest
resp = self.client.get(url)
self.assertEqual(resp.status_code, 200)
def test_num_queries_instructor_led(self):
self.fetch_course_info_with_queries(self.instructor_led_course, 14, 4)
def test_num_queries_instructor_paced(self):
self.fetch_course_info_with_queries(self.instructor_paced_course, 14, 4)
def test_num_queries_self_paced(self):
self.fetch_course_info_with_queries(self.self_paced_course, 14, 4)
......@@ -42,9 +42,9 @@ class SelfPacedDateOverrideTest(ModuleStoreTestCase):
inject_field_overrides((course, section), course, UserFactory.create())
return (course, section)
def test_instructor_led(self):
__, il_section = self.setup_course("Instructor Led Course", False)
self.assertEqual(self.due_date, il_section.due)
def test_instructor_paced(self):
__, ip_section = self.setup_course("Instructor Paced Course", False)
self.assertEqual(self.due_date, ip_section.due)
def test_self_paced(self):
__, sp_section = self.setup_course("Self-Paced Course", True)
......
......@@ -822,7 +822,7 @@ class ProgressPageTests(ModuleStoreTestCase):
)
@ddt.unpack
def test_query_counts(self, (sql_calls, mongo_calls, self_paced), self_paced_enabled):
"""Test that query counts remain the same for self-paced and instructor-led courses."""
"""Test that query counts remain the same for self-paced and instructor-paced courses."""
SelfPacedConfiguration(enabled=self_paced_enabled).save()
self.setup_course(self_paced=self_paced)
with self.assertNumQueries(sql_calls), check_mongo_calls(mongo_calls):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment