diff --git a/cms/static/js/views/settings/main_settings_view.js b/cms/static/js/views/settings/main_settings_view.js index d957024e7d..a023f40232 100644 --- a/cms/static/js/views/settings/main_settings_view.js +++ b/cms/static/js/views/settings/main_settings_view.js @@ -91,10 +91,10 @@ CMS.Views.Settings.Details = Backbone.View.extend({ }, render: function() { - this.setupDatePicker('#course-start-date', 'start_date'); - this.setupDatePicker('#course-end-date', 'end_date'); - this.setupDatePicker('#course-enrollment-start-date', 'enrollment_start'); - this.setupDatePicker('#course-enrollment-end-date', 'enrollment_end'); + this.setupDatePicker('#course-start', 'start_date'); + this.setupDatePicker('#course-end', 'end_date'); + this.setupDatePicker('#enrollment-start', 'enrollment_start'); + this.setupDatePicker('#enrollment-end', 'enrollment_end'); if (this.model.has('syllabus')) { this.$el.find('.current-course-syllabus .doc-filename').html( @@ -123,11 +123,20 @@ CMS.Views.Settings.Details = Backbone.View.extend({ setupDatePicker : function(elementName, fieldName) { var cacheModel = this.model; - var picker = this.$el.find(elementName); - picker.datepicker({ onSelect : function(newVal) { - cacheModel.save(fieldName, new Date(newVal)); - }}); - picker.datepicker('setDate', this.model.get(fieldName)); + var div = this.$el.find(elementName); + var datefield = $(div).find(".date"); + var timefield = $(div).find(".time"); + var savefield = function(event) { + cacheModel.save(fieldName, new Date(datefield.datepicker('getDate').getTime() + + timefield.timepicker("getSecondsFromMidnight") * 1000)); + }; + + // FIXME being called 2x on each change. Was trapping datepicker onSelect b4 but change to datepair broke that + datefield.on('change', savefield); + timefield.on('changeTime', savefield); + + datefield.datepicker('setDate', this.model.get(fieldName)); + timefield.timepicker('setTime', this.model.get(fieldName)); }, updateModel: function(event) { diff --git a/cms/templates/settings.html b/cms/templates/settings.html index ddd4e09b0d..e9e70f6ca7 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -220,7 +220,7 @@ from contentstore import utils

Course Dates:

-
+
@@ -236,7 +236,7 @@ from contentstore import utils
-
+
@@ -256,7 +256,7 @@ from contentstore import utils

Enrollment Dates:

-
+
@@ -272,7 +272,7 @@ from contentstore import utils
-
+
diff --git a/common/djangoapps/models/settings/course_details.py b/common/djangoapps/models/settings/course_details.py index 9dcdea4c16..29820795f3 100644 --- a/common/djangoapps/models/settings/course_details.py +++ b/common/djangoapps/models/settings/course_details.py @@ -1,11 +1,10 @@ from xmodule.modulestore.django import modulestore -from xmodule.course_module import CourseDescriptor from xmodule.modulestore import Location from xmodule.modulestore.exceptions import ItemNotFoundError import json from json.encoder import JSONEncoder import time -from util.converters import time_to_date, jsdate_to_time +from util.converters import jsdate_to_time, time_to_date class CourseDetails: def __init__(self, location): diff --git a/common/djangoapps/util/converters.py b/common/djangoapps/util/converters.py index 200fab9766..6070338b55 100644 --- a/common/djangoapps/util/converters.py +++ b/common/djangoapps/util/converters.py @@ -1,11 +1,12 @@ import time, datetime import re +import calendar def time_to_date(time_obj): """ Convert a time.time_struct to a true universal time (can pass to js Date constructor) """ - return time.mktime(time_obj) * 1000 + return calendar.timegm(time_obj) * 1000 def jsdate_to_time(field): """