From d9f7f8cf98d80c9ae51580f156573b8d0af733f6 Mon Sep 17 00:00:00 2001
From: Sarina Canelake
Date: Tue, 1 Oct 2013 18:10:54 -0400
Subject: [PATCH 1/2] I18n Student Admin page of new instructor dash
---
.../instructor_dashboard/student_admin.coffee | 97 ++++++++++++-------
.../instructor_dashboard_2/student_admin.html | 1 -
2 files changed, 61 insertions(+), 37 deletions(-)
diff --git a/lms/static/coffee/src/instructor_dashboard/student_admin.coffee b/lms/static/coffee/src/instructor_dashboard/student_admin.coffee
index 3e5c8c27c2..6b4ed7f71c 100644
--- a/lms/static/coffee/src/instructor_dashboard/student_admin.coffee
+++ b/lms/static/coffee/src/instructor_dashboard/student_admin.coffee
@@ -9,12 +9,6 @@ std_ajax_err = -> window.InstructorDashboard.util.std_ajax_err.apply this, argum
load_IntervalManager = -> window.InstructorDashboard.util.IntervalManager
-# wrap window.confirm
-# display `msg`
-# run `ok` or `cancel` depending on response
-confirm_then = ({msg, ok, cancel}) ->
- if window.confirm msg then ok?() else cancel?()
-
# get jquery element and assert its existance
find_and_assert = ($root, selector) ->
item = $root.find selector
@@ -121,7 +115,9 @@ class StudentAdmin
e.preventDefault()
unique_student_identifier = @$field_student_select_progress.val()
if not unique_student_identifier
- return @$request_response_error_progress.text "Please enter a student email address or username."
+ return @$request_response_error_progress.text gettext("Please enter a student email address or username.")
+ error_message = gettext("Error getting student progress url for '<%= student_id %>'. Check that the student identifier is spelled correctly.")
+ full_error_message = _.template(error_message, {student_id: unique_student_identifier})
$.ajax
dataType: 'json'
@@ -129,7 +125,7 @@ class StudentAdmin
data: unique_student_identifier: unique_student_identifier
success: @clear_errors_then (data) ->
window.location = data.progress_url
- error: std_ajax_err => @$request_response_error_progress.text "Error getting student progress url for '#{unique_student_identifier}'."
+ error: std_ajax_err => @$request_response_error_progress.text full_error_message
# enroll student
@$btn_enroll.click =>
@@ -143,7 +139,7 @@ class StudentAdmin
url: @$btn_enroll.data 'endpoint'
data: send_data
success: @clear_errors_then -> console.log "student #{send_data.emails} enrolled"
- error: std_ajax_err => @$request_response_error_progress.text "Error enrolling student '#{send_data.emails}'."
+ error: std_ajax_err => @$request_response_error_progress.text gettext("Error enrolling student '#{send_data.emails}'.")
# unenroll student
@$btn_unenroll.click =>
@@ -156,50 +152,59 @@ class StudentAdmin
url: @$btn_unenroll.data 'endpoint'
data: send_data
success: @clear_errors_then -> console.log "student #{send_data.emails} unenrolled"
- error: std_ajax_err => @$request_response_error_progress.text "Error unenrolling student '#{send_data.emails}'."
+ error: std_ajax_err => @$request_response_error_progress.text gettext("Error unenrolling student '#{send_data.emails}'.")
# reset attempts for student on problem
@$btn_reset_attempts_single.click =>
unique_student_identifier = @$field_student_select_grade.val()
problem_to_reset = @$field_problem_select_single.val()
if not unique_student_identifier
- return @$request_response_error_grade.text "Please enter a student email address or username."
+ return @$request_response_error_grade.text gettext("Please enter a student email address or username.")
if not problem_to_reset
- return @$request_response_error_grade.text "Please enter a problem urlname."
+ return @$request_response_error_grade.text gettext("Please enter a problem urlname.")
send_data =
unique_student_identifier: unique_student_identifier
problem_to_reset: problem_to_reset
delete_module: false
+ success_message = gettext("Success! Problem attempts reset for problem '<%= problem_id %>' and student '<%= student_id %>'.")
+ error_message = gettext("Error resetting problem attempts for problem '<%= problem_id %>' and student '<%= student_id %>'. Check that the problem and student identifiers are spelled correctly.")
+ full_success_message = _.template(success_message, {problem_id: problem_to_reset, student_id: unique_student_identifier})
+ full_error_message = _.template(error_message, {problem_id: problem_to_reset, student_id: unique_student_identifier})
$.ajax
dataType: 'json'
url: @$btn_reset_attempts_single.data 'endpoint'
data: send_data
- success: @clear_errors_then -> alert "Success! Problem attempts reset for problem '#{problem_to_reset}' and student '#{unique_student_identifier}'."
- error: std_ajax_err => @$request_response_error_grade.text "Error resetting problem attempts for problem '#{problem_to_reset}' and student '#{unique_student_identifier}'."
+ success: @clear_errors_then -> alert full_success_message
+ error: std_ajax_err => @$request_response_error_grade.text full_error_message
# delete state for student on problem
@$btn_delete_state_single.click =>
unique_student_identifier = @$field_student_select_grade.val()
problem_to_reset = @$field_problem_select_single.val()
if not unique_student_identifier
- return @$request_response_error_grade.text "Please enter a student email address or username."
+ return @$request_response_error_grade.text gettext("Please enter a student email address or username.")
if not problem_to_reset
- return @$request_response_error_grade.text "Please enter a problem urlname."
+ return @$request_response_error_grade.text gettext("Please enter a problem urlname.")
+ confirm_message = gettext("Delete student '<%= student_id %>'s state on problem '<%= problem_id %>'?")
+ full_confirm_message = _.template(confirm_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
- if window.confirm "Delete student '#{unique_student_identifier}'s state on problem '#{problem_to_reset}'?"
+ if window.confirm full_confirm_message
send_data =
unique_student_identifier: unique_student_identifier
problem_to_reset: problem_to_reset
delete_module: true
+ error_message = gettext("Error deleting student '<%= student_id %>'s state on problem '<%= problem_id %>'. Check that the problem and student identifiers are spelled correctly.")
+ full_error_message = _.template(error_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
$.ajax
dataType: 'json'
url: @$btn_delete_state_single.data 'endpoint'
data: send_data
- success: @clear_errors_then -> alert 'Module state successfully deleted.'
- error: std_ajax_err => @$request_response_error_grade.text "Error deleting problem state."
+ success: @clear_errors_then -> alert gettext('Module state successfully deleted.')
+ error: std_ajax_err => @$request_response_error_grade.text full_error_message
else
+ # Clear error messages if "Cancel" was chosen on confirmation alert
@clear_errors()
# start task to rescore problem for student
@@ -207,31 +212,37 @@ class StudentAdmin
unique_student_identifier = @$field_student_select_grade.val()
problem_to_reset = @$field_problem_select_single.val()
if not unique_student_identifier
- return @$request_response_error_grade.text "Please enter a student email address or username."
+ return @$request_response_error_grade.text gettext("Please enter a student email address or username.")
if not problem_to_reset
- return @$request_response_error_grade.text "Please enter a problem urlname."
+ return @$request_response_error_grade.text gettext("Please enter a problem urlname.")
send_data =
unique_student_identifier: unique_student_identifier
problem_to_reset: problem_to_reset
+ success_message = gettext("Started rescore problem task for problem '<%= problem_id %>' and student '<%= student_id %>'. Click the 'Show Background Task History for Student' button to see the status of the task.")
+ full_success_message = _.template(success_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
+ error_message = gettext("Error starting a task to rescore problem '<%= problem_id %>' for student '<%= student_id %>'. Check that the problem and student identifiers are spelled correctly.")
+ full_error_message = _.template(error_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
$.ajax
dataType: 'json'
url: @$btn_rescore_problem_single.data 'endpoint'
data: send_data
- success: @clear_errors_then -> alert "Started rescore problem task for problem '#{problem_to_reset}' and student '#{unique_student_identifier}'. Click the 'Show Background Task History for Student' button to see the status of the task."
- error: std_ajax_err => @$request_response_error_grade.text "Error starting a task to rescore problem '#{problem_to_reset}' for student '#{unique_student_identifier}'."
+ success: @clear_errors_then -> alert full_success_message
+ error: std_ajax_err => @$request_response_error_grade.text full_error_message
# list task history for student+problem
@$btn_task_history_single.click =>
unique_student_identifier = @$field_student_select_grade.val()
problem_to_reset = @$field_problem_select_single.val()
if not unique_student_identifier
- return @$request_response_error_grade.text "Please enter a student email address or username."
+ return @$request_response_error_grade.text gettext("Please enter a student email address or username.")
if not problem_to_reset
- return @$request_response_error_grade.text "Please enter a problem urlname."
+ return @$request_response_error_grade.text gettext("Please enter a problem urlname.")
send_data =
unique_student_identifier: unique_student_identifier
problem_urlname: problem_to_reset
+ error_message = gettext("Error getting task history for problem '<%= problem_id %>' and student '<%= student_id %>'. Check that the problem and student identifiers are spelled correctly.")
+ full_error_message = _.template(error_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
$.ajax
dataType: 'json'
@@ -239,44 +250,58 @@ class StudentAdmin
data: send_data
success: @clear_errors_then (data) =>
create_task_list_table @$table_task_history_single, data.tasks
- error: std_ajax_err => @$request_response_error_grade.text "Error getting task history for student '#{unique_student_identifier}' and problem '#{problem_to_reset}'."
+ error: std_ajax_err => @$request_response_error_grade.text full_error_message
# start task to reset attempts on problem for all students
@$btn_reset_attempts_all.click =>
problem_to_reset = @$field_problem_select_all.val()
if not problem_to_reset
- return @$request_response_error_all.text "Please enter a problem urlname."
- if window.confirm "Reset attempts for all students on problem '#{@$field_problem_select_all.val()}'?"
+ return @$request_response_error_all.text gettext("Please enter a problem urlname.")
+ confirm_message = gettext("Reset attempts for all students on problem '<%= problem_id %>'?")
+ full_confirm_message = _.template(confirm_message, {problem_id: problem_to_reset})
+ if window.confirm full_confirm_message
send_data =
all_students: true
problem_to_reset: problem_to_reset
+ success_message = gettext("Successfully started task to reset attempts for problem '<%= problem_id %>'. Click the 'Show Background Task History for Problem' button to see the status of the task.")
+ full_success_message = _.template(success_message, {problem_id: problem_to_reset})
+ error_message = gettext("Error starting a task to reset attempts for all students on problem '<%= problem_id %>'. Check that the problem identifier is spelled correctly.")
+ full_error_message = _.template(error_message, {problem_id: problem_to_reset})
$.ajax
dataType: 'json'
url: @$btn_reset_attempts_all.data 'endpoint'
data: send_data
- success: @clear_errors_then -> alert "Successfully started task to reset attempts for problem '#{problem_to_reset}'. Click the 'Show Background Task History for Problem' button to see the status of the task."
- error: std_ajax_err => @$request_response_error_all.text "Error starting a task to reset attempts for all students on this problem."
+ success: @clear_errors_then -> alert full_success_message
+ error: std_ajax_err => @$request_response_error_all.text full_error_message
else
+ # Clear error messages if "Cancel" was chosen on confirmation alert
@clear_errors()
# start task to rescore problem for all students
@$btn_rescore_problem_all.click =>
problem_to_reset = @$field_problem_select_all.val()
if not problem_to_reset
- return @$request_response_error_all.text "Please enter a problem urlname."
- if window.confirm "Rescore problem '#{@$field_problem_select_all.val()}' for all students?"
+ return @$request_response_error_all.text gettext("Please enter a problem urlname.")
+ confirm_message = gettext("Rescore problem '<%= problem_id %>' for all students?")
+ full_confirm_message = _.template(confirm_message, {problem_id: problem_to_reset})
+ if window.confirm full_confirm_message
send_data =
all_students: true
problem_to_reset: problem_to_reset
+ success_message = gettext("Successfully started task to rescore problem '<%= problem_id %>' for all students. Click the 'Show Background Task History for Problem' button to see the status of the task.")
+ full_success_message = _.template(success_message, {problem_id: problem_to_reset})
+ error_message = gettext("Error starting a task to rescore problem '<%= problem_id %>'. Check that the problem identifier is spelled correctly.")
+ full_error_message = _.template(error_message, {problem_id: problem_to_reset})
$.ajax
dataType: 'json'
url: @$btn_rescore_problem_all.data 'endpoint'
data: send_data
- success: @clear_errors_then -> alert "Successfully started task to rescore problem '#{problem_to_reset}' for all students. Click the 'Show Background Task History for Problem' button to see the status of the task."
- error: std_ajax_err => @$request_response_error_all.text "Error starting a task to rescore this problem for all students."
+ success: @clear_errors_then -> alert full_success_message
+ error: std_ajax_err => @$request_response_error_all.text full_error_message
else
+ # Clear error messages if "Cancel" was chosen on confirmation alert
@clear_errors()
# list task history for problem
@@ -285,7 +310,7 @@ class StudentAdmin
problem_urlname: @$field_problem_select_all.val()
if not send_data.problem_urlname
- return @$request_response_error_all.text "Please enter a problem urlname."
+ return @$request_response_error_all.text gettext("Please enter a problem urlname.")
$.ajax
dataType: 'json'
@@ -293,7 +318,7 @@ class StudentAdmin
data: send_data
success: @clear_errors_then (data) =>
create_task_list_table @$table_task_history_all, data.tasks
- error: std_ajax_err => @$request_response_error_all.text "Error listing task history for this student and problem."
+ error: std_ajax_err => @$request_response_error_all.text gettext("Error listing task history for this student and problem.")
reload_running_tasks_list: =>
list_endpoint = @$table_running_tasks.data 'endpoint'
diff --git a/lms/templates/instructor/instructor_dashboard_2/student_admin.html b/lms/templates/instructor/instructor_dashboard_2/student_admin.html
index f3fc7b6054..d8c55ec2ef 100644
--- a/lms/templates/instructor/instructor_dashboard_2/student_admin.html
+++ b/lms/templates/instructor/instructor_dashboard_2/student_admin.html
@@ -59,7 +59,6 @@
-
%if settings.MITX_FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS') and section_data['access']['instructor']:
From 1251003d1009fb3c9676c450e84b1022c1adfca0 Mon Sep 17 00:00:00 2001
From: Sarina Canelake
Date: Tue, 1 Oct 2013 18:12:15 -0400
Subject: [PATCH 2/2] Remove enrollment from Student Admin page of new
instructor dash
---
CHANGELOG.rst | 3 ++
.../instructor/views/instructor_dashboard.py | 1 -
.../instructor_dashboard/student_admin.coffee | 29 -------------------
.../instructor_dashboard_2/student_admin.html | 9 ------
4 files changed, 3 insertions(+), 39 deletions(-)
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index bd28c47a74..d9c2a1e051 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,6 +14,9 @@ editing capability for a course's list of tabs.
Studio and LMS: add ability to lock assets (cannot be viewed unless registered for class).
+LMS: First round of improvements to New (beta) Instructor Dash:
+improvements, fixes, and internationalization to the Student Info section.
+
LMS: Improved accessibility of parts of forum navigation sidebar.
LMS: enhanced accessibility labeling and aria support for the discussion forum new post dropdown as well as response and comment area labeling.
diff --git a/lms/djangoapps/instructor/views/instructor_dashboard.py b/lms/djangoapps/instructor/views/instructor_dashboard.py
index e248d47a59..9736a3d8a2 100644
--- a/lms/djangoapps/instructor/views/instructor_dashboard.py
+++ b/lms/djangoapps/instructor/views/instructor_dashboard.py
@@ -121,7 +121,6 @@ def _section_student_admin(course_id, access):
'section_display_name': _('Student Admin'),
'access': access,
'get_student_progress_url_url': reverse('get_student_progress_url', kwargs={'course_id': course_id}),
- 'enrollment_url': reverse('students_update_enrollment', kwargs={'course_id': course_id}),
'reset_student_attempts_url': reverse('reset_student_attempts', kwargs={'course_id': course_id}),
'rescore_problem_url': reverse('rescore_problem', kwargs={'course_id': course_id}),
'list_instructor_tasks_url': reverse('list_instructor_tasks', kwargs={'course_id': course_id}),
diff --git a/lms/static/coffee/src/instructor_dashboard/student_admin.coffee b/lms/static/coffee/src/instructor_dashboard/student_admin.coffee
index 6b4ed7f71c..3ae99a9edc 100644
--- a/lms/static/coffee/src/instructor_dashboard/student_admin.coffee
+++ b/lms/static/coffee/src/instructor_dashboard/student_admin.coffee
@@ -79,8 +79,6 @@ class StudentAdmin
@$progress_link = find_and_assert @$section, "a.progress-link"
@$field_problem_select_single = find_and_assert @$section, "input[name='problem-select-single']"
@$btn_reset_attempts_single = find_and_assert @$section, "input[name='reset-attempts-single']"
- @$btn_enroll = @$section.find "input[name='enroll']"
- @$btn_unenroll = @$section.find "input[name='unenroll']"
@$btn_delete_state_single = @$section.find "input[name='delete-state-single']"
@$btn_rescore_problem_single = @$section.find "input[name='rescore-problem-single']"
@$btn_task_history_single = @$section.find "input[name='task-history-single']"
@@ -127,33 +125,6 @@ class StudentAdmin
window.location = data.progress_url
error: std_ajax_err => @$request_response_error_progress.text full_error_message
- # enroll student
- @$btn_enroll.click =>
- send_data =
- action: 'enroll'
- emails: @$field_student_select_progress.val()
- auto_enroll: false
-
- $.ajax
- dataType: 'json'
- url: @$btn_enroll.data 'endpoint'
- data: send_data
- success: @clear_errors_then -> console.log "student #{send_data.emails} enrolled"
- error: std_ajax_err => @$request_response_error_progress.text gettext("Error enrolling student '#{send_data.emails}'.")
-
- # unenroll student
- @$btn_unenroll.click =>
- send_data =
- action: 'unenroll'
- emails: @$field_student_select_progress.val()
-
- $.ajax
- dataType: 'json'
- url: @$btn_unenroll.data 'endpoint'
- data: send_data
- success: @clear_errors_then -> console.log "student #{send_data.emails} unenrolled"
- error: std_ajax_err => @$request_response_error_progress.text gettext("Error unenrolling student '#{send_data.emails}'.")
-
# reset attempts for student on problem
@$btn_reset_attempts_single.click =>
unique_student_identifier = @$field_student_select_grade.val()
diff --git a/lms/templates/instructor/instructor_dashboard_2/student_admin.html b/lms/templates/instructor/instructor_dashboard_2/student_admin.html
index d8c55ec2ef..b21942bd23 100644
--- a/lms/templates/instructor/instructor_dashboard_2/student_admin.html
+++ b/lms/templates/instructor/instructor_dashboard_2/student_admin.html
@@ -18,15 +18,6 @@
${_("Student Progress Page")}