From 9f2e96d4a010bc4bcbc91cb8d9744db823a6432f Mon Sep 17 00:00:00 2001 From: Sofiya Semenova Date: Wed, 6 Sep 2017 11:55:05 -0400 Subject: [PATCH] ed-1260 Course teams unable to save changes to dates --- cms/static/js/factories/settings.js | 3 ++- cms/static/js/models/settings/course_details.js | 2 +- cms/static/js/spec/views/settings/main_spec.js | 2 ++ cms/templates/settings.html | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cms/static/js/factories/settings.js b/cms/static/js/factories/settings.js index 0c9f2b21de..5e010e08c9 100644 --- a/cms/static/js/factories/settings.js +++ b/cms/static/js/factories/settings.js @@ -2,7 +2,7 @@ define([ 'jquery', 'js/models/settings/course_details', 'js/views/settings/main' ], function($, CourseDetailsModel, MainView) { 'use strict'; - return function(detailsUrl, showMinGradeWarning) { + return function(detailsUrl, showMinGradeWarning, showCertificateAvailableDate) { var model; // highlighting labels when fields are focused in $('form :input') @@ -15,6 +15,7 @@ define([ model = new CourseDetailsModel(); model.urlRoot = detailsUrl; + model.showCertificateAvailableDate = showCertificateAvailableDate; model.fetch({ success: function(model) { var editor = new MainView({ diff --git a/cms/static/js/models/settings/course_details.js b/cms/static/js/models/settings/course_details.js index 3503c2d308..1498a6be13 100644 --- a/cms/static/js/models/settings/course_details.js +++ b/cms/static/js/models/settings/course_details.js @@ -60,7 +60,7 @@ define(['backbone', 'underscore', 'gettext', 'js/models/validation_helpers', 'js if (newattrs.end_date && newattrs.enrollment_end && newattrs.end_date < newattrs.enrollment_end) { errors.enrollment_end = gettext('The enrollment end date cannot be after the course end date.'); } - if (!this.get('self_paced') && newattrs.end_date && newattrs.certificate_available_date && + if (this.showCertificateAvailableDate && newattrs.end_date && newattrs.certificate_available_date && newattrs.certificate_available_date < newattrs.end_date) { errors.certificate_available_date = gettext( 'The certificate available date must be later than the course end date.' diff --git a/cms/static/js/spec/views/settings/main_spec.js b/cms/static/js/spec/views/settings/main_spec.js index 5411ce495c..372318ee6d 100644 --- a/cms/static/js/spec/views/settings/main_spec.js +++ b/cms/static/js/spec/views/settings/main_spec.js @@ -350,10 +350,12 @@ define([ AjaxHelpers.respondWithJson(requests, expectedJson); }); it('should disallow save with a certificate available date before end date', function() { + this.model.showCertificateAvailableDate = true; $('#course-end-date').val('01/01/2030').trigger('change'); expect(this.view.$('.message-error')).toExist(); }); it('should allow save with a certificate available date before end date for self-paced course', function() { + this.model.showCertificateAvailableDate = false; this.model.set('self_paced', true); $('#course-end-date').val('01/01/2030').trigger('change'); expect(this.view.$('.message-error')).not.toExist(); diff --git a/cms/templates/settings.html b/cms/templates/settings.html index e98858e5ce..9f1ab8f696 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -38,7 +38,8 @@ CMS.URL.UPLOAD_ASSET = '${upload_asset_url | n, js_escaped_string}' require(["js/factories/settings"], function(SettingsFactory) { SettingsFactory( "${details_url | n, js_escaped_string}", - ${show_min_grade_warning | n, dump_js_escaped_json} + ${show_min_grade_warning | n, dump_js_escaped_json}, + ${can_show_certificate_available_date_field(context_course) | n, dump_js_escaped_json} ); });