Revert "Decorated instructor dashboard with sudo_required."
This commit is contained in:
@@ -27,13 +27,13 @@ class DataDownload
|
||||
@$problem_grade_report_csv_btn = @$section.find("input[name='problem-grade-report']'")
|
||||
|
||||
# response areas
|
||||
@$download = @$section.find '.data-download-container'
|
||||
@$download_display_text = @$download.find '.data-display-text'
|
||||
@$download = @$section.find '.data-download-container'
|
||||
@$download_display_text = @$download.find '.data-display-text'
|
||||
@$download_request_response_error = @$download.find '.request-response-error'
|
||||
@$reports = @$section.find '.reports-download-container'
|
||||
@$download_display_table = @$reports.find '.data-display-table'
|
||||
@$reports_request_response = @$reports.find '.request-response'
|
||||
@$reports_request_response_error = @$reports.find '.request-response-error'
|
||||
@$reports = @$section.find '.reports-download-container'
|
||||
@$download_display_table = @$reports.find '.data-display-table'
|
||||
@$reports_request_response = @$reports.find '.request-response'
|
||||
@$reports_request_response_error = @$reports.find '.request-response-error'
|
||||
|
||||
@report_downloads = new (ReportDownloads()) @$section
|
||||
@instructor_tasks = new (PendingInstructorTasks()) @$section
|
||||
@@ -58,14 +58,12 @@ class DataDownload
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
error: std_ajax_err((=>
|
||||
error: (std_ajax_err) =>
|
||||
@$reports_request_response_error.text gettext("Error generating student profile information. Please try again.")
|
||||
$(".msg-error").css({"display": "block"})
|
||||
), true)
|
||||
|
||||
$(".msg-error").css({"display":"block"})
|
||||
success: (data) =>
|
||||
@$reports_request_response.text data['status']
|
||||
$(".msg-confirm").css({"display": "block"})
|
||||
$(".msg-confirm").css({"display":"block"})
|
||||
|
||||
@$list_studs_btn.click (e) =>
|
||||
url = @$list_studs_btn.data 'endpoint'
|
||||
@@ -78,11 +76,9 @@ class DataDownload
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
error: std_ajax_err((=>
|
||||
error: (std_ajax_err) =>
|
||||
@clear_display()
|
||||
@$download_request_response_error.text gettext("Error getting student list.")
|
||||
), true)
|
||||
|
||||
success: (data) =>
|
||||
@clear_display()
|
||||
|
||||
@@ -99,7 +95,7 @@ class DataDownload
|
||||
$table_placeholder = $ '<div/>', class: 'slickgrid'
|
||||
@$download_display_table.append $table_placeholder
|
||||
grid = new Slick.Grid($table_placeholder, grid_data, columns, options)
|
||||
# grid.autosizeColumns()
|
||||
# grid.autosizeColumns()
|
||||
|
||||
@$list_may_enroll_csv_btn.click (e) =>
|
||||
@clear_display()
|
||||
@@ -108,14 +104,12 @@ class DataDownload
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
error: std_ajax_err((=>
|
||||
error: (std_ajax_err) =>
|
||||
@$reports_request_response_error.text gettext("Error generating list of students who may enroll. Please try again.")
|
||||
$(".msg-error").css({"display": "block"})
|
||||
), true)
|
||||
|
||||
$(".msg-error").css({"display":"block"})
|
||||
success: (data) =>
|
||||
@$reports_request_response.text data['status']
|
||||
$(".msg-confirm").css({"display": "block"})
|
||||
$(".msg-confirm").css({"display":"block"})
|
||||
|
||||
@$grade_config_btn.click (e) =>
|
||||
url = @$grade_config_btn.data 'endpoint'
|
||||
@@ -123,10 +117,9 @@ class DataDownload
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
error: std_ajax_err((=>
|
||||
error: (std_ajax_err) =>
|
||||
@clear_display()
|
||||
@$download_request_response_error.text gettext("Error retrieving grading configuration.")
|
||||
), true)
|
||||
success: (data) =>
|
||||
@clear_display()
|
||||
@$download_display_text.html data['grading_config_summary']
|
||||
@@ -138,22 +131,20 @@ class DataDownload
|
||||
@onClickGradeDownload @$problem_grade_report_csv_btn, gettext("Error generating problem grade report. Please try again.")
|
||||
|
||||
onClickGradeDownload: (button, errorMessage) ->
|
||||
# Clear any CSS styling from the request-response areas
|
||||
#$(".msg-confirm").css({"display":"none"})
|
||||
#$(".msg-error").css({"display":"none"})
|
||||
@clear_display()
|
||||
url = button.data 'endpoint'
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
error: std_ajax_err((=>
|
||||
@.$reports_request_response_error.text gettext('Error generating student profile information. Please try again.')
|
||||
$('.msg-error').css 'display': 'block'
|
||||
), true
|
||||
)
|
||||
success: (data) =>
|
||||
@$reports_request_response.text data['status']
|
||||
$(".msg-confirm").css({"display": "block"})
|
||||
# Clear any CSS styling from the request-response areas
|
||||
#$(".msg-confirm").css({"display":"none"})
|
||||
#$(".msg-error").css({"display":"none"})
|
||||
@clear_display()
|
||||
url = button.data 'endpoint'
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
error: (std_ajax_err) =>
|
||||
@$reports_request_response_error.text errorMessage
|
||||
$(".msg-error").css({"display":"block"})
|
||||
success: (data) =>
|
||||
@$reports_request_response.text data['status']
|
||||
$(".msg-confirm").css({"display":"block"})
|
||||
|
||||
# handler for when the section title is clicked.
|
||||
onClickTitle: ->
|
||||
@@ -175,8 +166,8 @@ class DataDownload
|
||||
@$reports_request_response.empty()
|
||||
@$reports_request_response_error.empty()
|
||||
# Clear any CSS styling from the request-response areas
|
||||
$(".msg-confirm").css({"display": "none"})
|
||||
$(".msg-error").css({"display": "none"})
|
||||
$(".msg-confirm").css({"display":"none"})
|
||||
$(".msg-error").css({"display":"none"})
|
||||
|
||||
# export for use
|
||||
# create parent namespaces if they do not already exist.
|
||||
|
||||
@@ -14,7 +14,7 @@ emailStudents = false
|
||||
class MemberListWidget
|
||||
# create a MemberListWidget `$container` is a jquery object to embody.
|
||||
# `params` holds template parameters. `params` should look like the defaults below.
|
||||
constructor: (@$container, params = {}) ->
|
||||
constructor: (@$container, params={}) ->
|
||||
params = _.defaults params,
|
||||
title: "Member List"
|
||||
info: """
|
||||
@@ -117,15 +117,14 @@ class AuthListWidget extends MemberListWidget
|
||||
|
||||
# create revoke button and insert it into the row
|
||||
label_trans = gettext("Revoke access")
|
||||
$revoke_btn = $ _.template('<div class="revoke"><i class="icon fa fa-times-circle"></i> <%= label %></div>',
|
||||
{label: label_trans}),
|
||||
$revoke_btn = $ _.template('<div class="revoke"><i class="icon fa fa-times-circle"></i> <%= label %></div>', {label: label_trans}),
|
||||
class: 'revoke'
|
||||
$revoke_btn.click =>
|
||||
@modify_member_access member.email, 'revoke', (error) =>
|
||||
# abort on error
|
||||
return @show_errors error unless error is null
|
||||
@clear_errors()
|
||||
@reload_list()
|
||||
@modify_member_access member.email, 'revoke', (error) =>
|
||||
# abort on error
|
||||
return @show_errors error unless error is null
|
||||
@clear_errors()
|
||||
@reload_list()
|
||||
@add_row [member.username, member.email, $revoke_btn]
|
||||
|
||||
# clear error display
|
||||
@@ -140,13 +139,11 @@ class AuthListWidget extends MemberListWidget
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: @list_endpoint
|
||||
data:
|
||||
rolename: @rolename
|
||||
data: rolename: @rolename
|
||||
success: (data) => cb? null, data[@rolename]
|
||||
error: std_ajax_err((=>
|
||||
# Translators: A rolename appears this sentence. A rolename is something like "staff" or "beta tester".
|
||||
error: std_ajax_err =>
|
||||
`// Translators: A rolename appears this sentence. A rolename is something like "staff" or "beta tester".`
|
||||
cb? gettext("Error fetching list for role") + " '#{@rolename}'"
|
||||
), true)
|
||||
|
||||
# send ajax request to modify access
|
||||
# (add or remove them from the list)
|
||||
@@ -161,9 +158,7 @@ class AuthListWidget extends MemberListWidget
|
||||
rolename: @rolename
|
||||
action: action
|
||||
success: (data) => @member_response data
|
||||
error: std_ajax_err((=>
|
||||
cb? gettext "Error changing user's permissions."
|
||||
), true)
|
||||
error: std_ajax_err => cb? gettext "Error changing user's permissions."
|
||||
|
||||
member_response: (data) ->
|
||||
@clear_errors()
|
||||
@@ -209,15 +204,15 @@ class @AutoEnrollmentViaCsv
|
||||
event.preventDefault()
|
||||
data = new FormData(event.currentTarget)
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
type: 'POST'
|
||||
url: event.currentTarget.action
|
||||
data: data
|
||||
processData: false
|
||||
contentType: false
|
||||
success: (data) =>
|
||||
@processing = false
|
||||
@display_response data
|
||||
dataType: 'json'
|
||||
type: 'POST'
|
||||
url: event.currentTarget.action
|
||||
data: data
|
||||
processData: false
|
||||
contentType: false
|
||||
success: (data) =>
|
||||
@processing = false
|
||||
@display_response data
|
||||
|
||||
return false
|
||||
|
||||
@@ -251,7 +246,7 @@ class @AutoEnrollmentViaCsv
|
||||
if student_result.is_general_error
|
||||
details.push student_result.response
|
||||
else
|
||||
response_message = student_result.username + ' (' + student_result.email + '): ' + ' (' + student_result.response + ')'
|
||||
response_message = student_result.username + ' ('+ student_result.email + '): ' + ' (' + student_result.response + ')'
|
||||
details.push response_message
|
||||
|
||||
@$results.append @render_notification_view type, title, message, details
|
||||
@@ -266,23 +261,23 @@ class @AutoEnrollmentViaCsv
|
||||
render_notification_view: (type, title, message, details) ->
|
||||
notification_model = new NotificationModel()
|
||||
notification_model.set({
|
||||
'type': type,
|
||||
'title': title,
|
||||
'message': message,
|
||||
'details': details,
|
||||
'type': type,
|
||||
'title': title,
|
||||
'message': message,
|
||||
'details': details,
|
||||
});
|
||||
view = new NotificationView(model: notification_model);
|
||||
view = new NotificationView(model:notification_model);
|
||||
view.render()
|
||||
return view.$el.html()
|
||||
|
||||
class BetaTesterBulkAddition
|
||||
constructor: (@$container) ->
|
||||
# gather elements
|
||||
@$identifier_input = @$container.find("textarea[name='student-ids-for-beta']")
|
||||
@$btn_beta_testers = @$container.find("input[name='beta-testers']")
|
||||
@$checkbox_autoenroll = @$container.find("input[name='auto-enroll']")
|
||||
@$identifier_input = @$container.find("textarea[name='student-ids-for-beta']")
|
||||
@$btn_beta_testers = @$container.find("input[name='beta-testers']")
|
||||
@$checkbox_autoenroll = @$container.find("input[name='auto-enroll']")
|
||||
@$checkbox_emailstudents = @$container.find("input[name='email-students-beta']")
|
||||
@$task_response = @$container.find(".request-response")
|
||||
@$task_response = @$container.find(".request-response")
|
||||
@$request_response_error = @$container.find(".request-response-error")
|
||||
|
||||
# click handlers
|
||||
@@ -301,10 +296,7 @@ class BetaTesterBulkAddition
|
||||
url: @$btn_beta_testers.data 'endpoint'
|
||||
data: send_data
|
||||
success: (data) => @display_response data
|
||||
error: std_ajax_err((=>
|
||||
@fail_with_error gettext "Error adding/removing users as beta testers."
|
||||
), true)
|
||||
|
||||
error: std_ajax_err => @fail_with_error gettext "Error adding/removing users as beta testers."
|
||||
|
||||
# clear the input text field
|
||||
clear_input: ->
|
||||
@@ -373,13 +365,13 @@ class BetaTesterBulkAddition
|
||||
class BatchEnrollment
|
||||
constructor: (@$container) ->
|
||||
# gather elements
|
||||
@$identifier_input = @$container.find("textarea[name='student-ids']")
|
||||
@$enrollment_button = @$container.find(".enrollment-button")
|
||||
@$is_course_white_label = @$container.find("#is_course_white_label").val()
|
||||
@$reason_field = @$container.find("textarea[name='reason-field']")
|
||||
@$checkbox_autoenroll = @$container.find("input[name='auto-enroll']")
|
||||
@$identifier_input = @$container.find("textarea[name='student-ids']")
|
||||
@$enrollment_button = @$container.find(".enrollment-button")
|
||||
@$is_course_white_label = @$container.find("#is_course_white_label").val()
|
||||
@$reason_field = @$container.find("textarea[name='reason-field']")
|
||||
@$checkbox_autoenroll = @$container.find("input[name='auto-enroll']")
|
||||
@$checkbox_emailstudents = @$container.find("input[name='email-students']")
|
||||
@$task_response = @$container.find(".request-response")
|
||||
@$task_response = @$container.find(".request-response")
|
||||
@$request_response_error = @$container.find(".request-response-error")
|
||||
|
||||
# attach click handler for enrollment buttons
|
||||
@@ -403,9 +395,8 @@ class BatchEnrollment
|
||||
url: $(event.target).data 'endpoint'
|
||||
data: send_data
|
||||
success: (data) => @display_response data
|
||||
error: std_ajax_err((=>
|
||||
@fail_with_error gettext "Error enrolling/unenrolling users."
|
||||
), true)
|
||||
error: std_ajax_err => @fail_with_error gettext "Error enrolling/unenrolling users."
|
||||
|
||||
|
||||
# clear the input text field
|
||||
clear_input: ->
|
||||
@@ -487,7 +478,7 @@ class BatchEnrollment
|
||||
else
|
||||
allowed.push student_results
|
||||
|
||||
# The instructor is trying to unenroll someone who is not enrolled or allowed to enroll; non-sensical action.
|
||||
# The instructor is trying to unenroll someone who is not enrolled or allowed to enroll; non-sensical action.
|
||||
else if data_from_server.action is 'unenroll' and not (student_results.before.enrollment) and not (student_results.before.allowed)
|
||||
notunenrolled.push student_results
|
||||
|
||||
@@ -581,11 +572,11 @@ class AuthList
|
||||
# rolename is the name of Role for forums for the forum endpoints
|
||||
constructor: (@$container, @rolename) ->
|
||||
# gather elements
|
||||
@$display_table = @$container.find('.auth-list-table')
|
||||
@$display_table = @$container.find('.auth-list-table')
|
||||
@$request_response_error = @$container.find('.request-response-error')
|
||||
@$add_section = @$container.find('.auth-list-add')
|
||||
@$allow_field = @$add_section.find("input[name='email']")
|
||||
@$allow_button = @$add_section.find("input[name='allow']")
|
||||
@$add_section = @$container.find('.auth-list-add')
|
||||
@$allow_field = @$add_section.find("input[name='email']")
|
||||
@$allow_button = @$add_section.find("input[name='allow']")
|
||||
|
||||
# attach click handler
|
||||
@$allow_button.click =>
|
||||
@@ -606,7 +597,7 @@ class AuthList
|
||||
options =
|
||||
enableCellNavigation: true
|
||||
enableColumnReorder: false
|
||||
# autoHeight: true
|
||||
# autoHeight: true
|
||||
forceFitColumns: true
|
||||
|
||||
# this is a hack to put a button/link in a slick grid cell
|
||||
@@ -627,10 +618,10 @@ class AuthList
|
||||
field: 'first_name'
|
||||
name: 'First Name'
|
||||
,
|
||||
# id: 'last_name'
|
||||
# field: 'last_name'
|
||||
# name: 'Last Name'
|
||||
# ,
|
||||
# id: 'last_name'
|
||||
# field: 'last_name'
|
||||
# name: 'Last Name'
|
||||
# ,
|
||||
id: 'revoke'
|
||||
field: 'revoke'
|
||||
name: 'Revoke'
|
||||
@@ -655,13 +646,9 @@ class AuthList
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: @$display_table.data 'endpoint'
|
||||
data:
|
||||
rolename: @rolename
|
||||
data: rolename: @rolename
|
||||
success: load_auth_list
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error.text "Error fetching list for '#{@rolename}'"
|
||||
), true)
|
||||
|
||||
error: std_ajax_err => @$request_response_error.text "Error fetching list for '#{@rolename}'"
|
||||
|
||||
|
||||
# slickgrid's layout collapses when rendered
|
||||
@@ -683,9 +670,8 @@ class AuthList
|
||||
rolename: @rolename
|
||||
action: action
|
||||
success: (data) -> cb?(data)
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error.text gettext "Error changing user's permissions."
|
||||
), true)
|
||||
error: std_ajax_err => @$request_response_error.text gettext "Error changing user's permissions."
|
||||
|
||||
|
||||
# Membership Section
|
||||
class Membership
|
||||
|
||||
@@ -79,9 +79,9 @@ class SendEmail
|
||||
data: send_data
|
||||
success: (data) =>
|
||||
@display_response success_message
|
||||
error: std_ajax_err((=>
|
||||
|
||||
error: std_ajax_err =>
|
||||
@fail_with_error gettext('Error sending email.')
|
||||
), true)
|
||||
|
||||
else
|
||||
@$task_response.empty()
|
||||
@@ -99,41 +99,38 @@ class SendEmail
|
||||
else
|
||||
@$history_request_response_error.text gettext("There is no email history for this course.")
|
||||
# Enable the msg-warning css display
|
||||
@$history_request_response_error.css({"display": "block"})
|
||||
error: std_ajax_err((=>
|
||||
@$history_request_response_error.css({"display":"block"})
|
||||
error: std_ajax_err =>
|
||||
@$history_request_response_error.text gettext("There was an error obtaining email task history for this course.")
|
||||
), true)
|
||||
|
||||
# List content history for emails sent
|
||||
@$btn_task_history_email_content.click =>
|
||||
url = @$btn_task_history_email_content.data 'endpoint'
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: url
|
||||
url : url
|
||||
success: (data) =>
|
||||
if data.emails.length
|
||||
create_email_content_table @$table_email_content_history, @$email_content_table_inner, data.emails
|
||||
create_email_message_views @$email_messages_wrapper, data.emails
|
||||
else
|
||||
@$content_request_response_error.text gettext("There is no email history for this course.")
|
||||
@$content_request_response_error.css({"display": "block"})
|
||||
error: std_ajax_err((=>
|
||||
@$content_request_response_error.css({"display":"block"})
|
||||
error: std_ajax_err =>
|
||||
@$content_request_response_error.text gettext("There was an error obtaining email content history for this course.")
|
||||
), true)
|
||||
|
||||
|
||||
fail_with_error: (msg) ->
|
||||
console.warn msg
|
||||
@$task_response.empty()
|
||||
@$request_response_error.empty()
|
||||
@$request_response_error.text msg
|
||||
$(".msg-confirm").css({"display": "none"})
|
||||
$(".msg-confirm").css({"display":"none"})
|
||||
|
||||
display_response: (data_from_server) ->
|
||||
@$task_response.empty()
|
||||
@$request_response_error.empty()
|
||||
@$task_response.text(data_from_server)
|
||||
$(".msg-confirm").css({"display": "block"})
|
||||
$(".msg-confirm").css({"display":"block"})
|
||||
|
||||
|
||||
# Email Section
|
||||
|
||||
@@ -32,42 +32,37 @@ class @StudentAdmin
|
||||
# some buttons are optional because they can be flipped by the instructor task feature switch
|
||||
# student-specific
|
||||
@$field_student_select_progress = find_and_assert @$section, "input[name='student-select-progress']"
|
||||
@$field_student_select_grade = find_and_assert @$section, "input[name='student-select-grade']"
|
||||
@$progress_link = find_and_assert @$section, "a.progress-link"
|
||||
@$field_student_select_grade = find_and_assert @$section, "input[name='student-select-grade']"
|
||||
@$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_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']"
|
||||
@$table_task_history_single = @$section.find ".task-history-single-table"
|
||||
@$btn_reset_attempts_single = find_and_assert @$section, "input[name='reset-attempts-single']"
|
||||
@$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']"
|
||||
@$table_task_history_single = @$section.find ".task-history-single-table"
|
||||
|
||||
# entrance-exam-specific
|
||||
@$field_entrance_exam_student_select_grade = @$section.find "input[name='entrance-exam-student-select-grade']"
|
||||
@$btn_reset_entrance_exam_attempts = @$section.find "input[name='reset-entrance-exam-attempts']"
|
||||
@$btn_delete_entrance_exam_state = @$section.find "input[name='delete-entrance-exam-state']"
|
||||
@$btn_rescore_entrance_exam = @$section.find "input[name='rescore-entrance-exam']"
|
||||
@$btn_skip_entrance_exam = @$section.find "input[name='skip-entrance-exam']"
|
||||
@$btn_entrance_exam_task_history = @$section.find "input[name='entrance-exam-task-history']"
|
||||
@$table_entrance_exam_task_history = @$section.find ".entrance-exam-task-history-table"
|
||||
@$field_entrance_exam_student_select_grade = @$section.find "input[name='entrance-exam-student-select-grade']"
|
||||
@$btn_reset_entrance_exam_attempts = @$section.find "input[name='reset-entrance-exam-attempts']"
|
||||
@$btn_delete_entrance_exam_state = @$section.find "input[name='delete-entrance-exam-state']"
|
||||
@$btn_rescore_entrance_exam = @$section.find "input[name='rescore-entrance-exam']"
|
||||
@$btn_skip_entrance_exam = @$section.find "input[name='skip-entrance-exam']"
|
||||
@$btn_entrance_exam_task_history = @$section.find "input[name='entrance-exam-task-history']"
|
||||
@$table_entrance_exam_task_history = @$section.find ".entrance-exam-task-history-table"
|
||||
|
||||
# course-specific
|
||||
@$field_problem_select_all = @$section.find "input[name='problem-select-all']"
|
||||
@$btn_reset_attempts_all = @$section.find "input[name='reset-attempts-all']"
|
||||
@$btn_rescore_problem_all = @$section.find "input[name='rescore-problem-all']"
|
||||
@$btn_task_history_all = @$section.find "input[name='task-history-all']"
|
||||
@$table_task_history_all = @$section.find ".task-history-all-table"
|
||||
@instructor_tasks = new (PendingInstructorTasks()) @$section
|
||||
@$field_problem_select_all = @$section.find "input[name='problem-select-all']"
|
||||
@$btn_reset_attempts_all = @$section.find "input[name='reset-attempts-all']"
|
||||
@$btn_rescore_problem_all = @$section.find "input[name='rescore-problem-all']"
|
||||
@$btn_task_history_all = @$section.find "input[name='task-history-all']"
|
||||
@$table_task_history_all = @$section.find ".task-history-all-table"
|
||||
@instructor_tasks = new (PendingInstructorTasks()) @$section
|
||||
|
||||
# response areas
|
||||
@$request_response_error_progress = find_and_assert @$section, ".student-specific-container .request-response-error"
|
||||
@$request_response_error_grade = find_and_assert @$section, ".student-grade-container .request-response-error"
|
||||
@$request_response_error_ee = @$section.find ".entrance-exam-grade-container .request-response-error"
|
||||
@$request_response_error_all = @$section.find ".course-specific-container .request-response-error"
|
||||
|
||||
$student_grade_container = find_and_assert @$section, ".student-grade-container"
|
||||
unique_student_identifier = @$field_student_select_grade.val()
|
||||
if unique_student_identifier
|
||||
@scroll_to_section($student_grade_container)
|
||||
@$request_response_error_ee = @$section.find ".entrance-exam-grade-container .request-response-error"
|
||||
@$request_response_error_all = @$section.find ".course-specific-container .request-response-error"
|
||||
|
||||
# attach click handlers
|
||||
|
||||
@@ -83,13 +78,10 @@ class @StudentAdmin
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
url: @$progress_link.data 'endpoint'
|
||||
data:
|
||||
unique_student_identifier: unique_student_identifier
|
||||
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 full_error_message
|
||||
), true)
|
||||
error: std_ajax_err => @$request_response_error_progress.text full_error_message
|
||||
|
||||
# reset attempts for student on problem
|
||||
@$btn_reset_attempts_single.click =>
|
||||
@@ -105,19 +97,15 @@ class @StudentAdmin
|
||||
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 %>'. Make sure that the problem and student identifiers are complete and correct.")
|
||||
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})
|
||||
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 full_success_message
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error_grade.text full_error_message
|
||||
), true)
|
||||
error: std_ajax_err => @$request_response_error_grade.text full_error_message
|
||||
|
||||
# delete state for student on problem
|
||||
@$btn_delete_state_single.click =>
|
||||
@@ -128,8 +116,7 @@ class @StudentAdmin
|
||||
if not problem_to_reset
|
||||
return @$request_response_error_grade.text gettext("Please enter a problem location.")
|
||||
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})
|
||||
full_confirm_message = _.template(confirm_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
|
||||
|
||||
if window.confirm full_confirm_message
|
||||
send_data =
|
||||
@@ -137,17 +124,14 @@ class @StudentAdmin
|
||||
problem_to_reset: problem_to_reset
|
||||
delete_module: true
|
||||
error_message = gettext("Error deleting student '<%= student_id %>'s state on problem '<%= problem_id %>'. Make sure that the problem and student identifiers are complete and correct.")
|
||||
full_error_message = _.template(error_message,
|
||||
{student_id: unique_student_identifier, problem_id: problem_to_reset})
|
||||
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 gettext('Module state successfully deleted.')
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error_grade.text full_error_message
|
||||
), true)
|
||||
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()
|
||||
@@ -164,20 +148,16 @@ class @StudentAdmin
|
||||
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})
|
||||
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 %>'. Make sure that the the problem and student identifiers are complete and correct.")
|
||||
full_error_message = _.template(error_message,
|
||||
{student_id: unique_student_identifier, problem_id: problem_to_reset})
|
||||
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 full_success_message
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error_grade.text full_error_message
|
||||
), true)
|
||||
error: std_ajax_err => @$request_response_error_grade.text full_error_message
|
||||
|
||||
# list task history for student+problem
|
||||
@$btn_task_history_single.click =>
|
||||
@@ -191,8 +171,7 @@ class @StudentAdmin
|
||||
unique_student_identifier: unique_student_identifier
|
||||
problem_location_str: problem_to_reset
|
||||
error_message = gettext("Error getting task history for problem '<%= problem_id %>' and student '<%= student_id %>'. Make sure that the problem and student identifiers are complete and correct.")
|
||||
full_error_message = _.template(error_message,
|
||||
{student_id: unique_student_identifier, problem_id: problem_to_reset})
|
||||
full_error_message = _.template(error_message, {student_id: unique_student_identifier, problem_id: problem_to_reset})
|
||||
|
||||
$.ajax
|
||||
dataType: 'json'
|
||||
@@ -200,11 +179,9 @@ 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 full_error_message
|
||||
), true)
|
||||
error: std_ajax_err => @$request_response_error_grade.text full_error_message
|
||||
|
||||
# reset entrance exam attempts for student
|
||||
# reset entrance exam attempts for student
|
||||
@$btn_reset_entrance_exam_attempts.click =>
|
||||
unique_student_identifier = @$field_entrance_exam_student_select_grade.val()
|
||||
if not unique_student_identifier
|
||||
@@ -221,13 +198,12 @@ class @StudentAdmin
|
||||
success_message = gettext("Entrance exam attempts is being reset for student '{student_id}'.")
|
||||
full_success_message = interpolate_text(success_message, {student_id: unique_student_identifier})
|
||||
alert full_success_message
|
||||
error: std_ajax_err((=>
|
||||
error: std_ajax_err =>
|
||||
error_message = gettext("Error resetting entrance exam attempts for student '{student_id}'. Make sure student identifier is correct.")
|
||||
full_error_message = interpolate_text(error_message, {student_id: unique_student_identifier})
|
||||
@$request_response_error_ee.text full_error_message
|
||||
), true)
|
||||
|
||||
# start task to rescore entrance exam for student
|
||||
# start task to rescore entrance exam for student
|
||||
@$btn_rescore_entrance_exam.click =>
|
||||
unique_student_identifier = @$field_entrance_exam_student_select_grade.val()
|
||||
if not unique_student_identifier
|
||||
@@ -248,7 +224,7 @@ class @StudentAdmin
|
||||
full_error_message = interpolate_text(error_message, {student_id: unique_student_identifier})
|
||||
@$request_response_error_ee.text full_error_message
|
||||
|
||||
# Mark a student to skip entrance exam
|
||||
# Mark a student to skip entrance exam
|
||||
@$btn_skip_entrance_exam.click =>
|
||||
unique_student_identifier = @$field_entrance_exam_student_select_grade.val()
|
||||
if not unique_student_identifier
|
||||
@@ -270,7 +246,7 @@ class @StudentAdmin
|
||||
error_message = gettext("An error occurred. Make sure that the student's username or email address is correct and try again.")
|
||||
@$request_response_error_ee.text error_message
|
||||
|
||||
# delete student state for entrance exam
|
||||
# delete student state for entrance exam
|
||||
@$btn_delete_entrance_exam_state.click =>
|
||||
unique_student_identifier = @$field_entrance_exam_student_select_grade.val()
|
||||
if not unique_student_identifier
|
||||
@@ -332,9 +308,7 @@ class @StudentAdmin
|
||||
url: @$btn_reset_attempts_all.data 'endpoint'
|
||||
data: send_data
|
||||
success: @clear_errors_then -> alert full_success_message
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error_all.text full_error_message
|
||||
), true)
|
||||
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()
|
||||
@@ -360,9 +334,7 @@ class @StudentAdmin
|
||||
url: @$btn_rescore_problem_all.data 'endpoint'
|
||||
data: send_data
|
||||
success: @clear_errors_then -> alert full_success_message
|
||||
error: std_ajax_err((=>
|
||||
@$request_response_error_all.text full_error_message
|
||||
), true)
|
||||
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()
|
||||
@@ -381,9 +353,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 gettext("Error listing task history for this student and problem.")
|
||||
), true)
|
||||
error: std_ajax_err => @$request_response_error_all.text gettext("Error listing task history for this student and problem.")
|
||||
|
||||
# wraps a function, but first clear the error displays
|
||||
clear_errors_then: (cb) ->
|
||||
@@ -401,10 +371,6 @@ class @StudentAdmin
|
||||
@$request_response_error_ee.empty()
|
||||
@$request_response_error_all.empty()
|
||||
|
||||
|
||||
scroll_to_section: (element) ->
|
||||
$(window).scrollTop(element.offset().top).scrollLeft(element.offset().left)
|
||||
|
||||
# handler for when the section title is clicked.
|
||||
onClickTitle: -> @instructor_tasks.task_poller.start()
|
||||
|
||||
|
||||
@@ -19,12 +19,10 @@ find_and_assert = ($root, selector) ->
|
||||
#
|
||||
# wraps a `handler` function so that first
|
||||
# it prints basic error information to the console.
|
||||
@std_ajax_err = (handler, sudo_reload=false) -> (jqXHR, textStatus, errorThrown) ->
|
||||
@std_ajax_err = (handler) -> (jqXHR, textStatus, errorThrown) ->
|
||||
console.warn """ajax error
|
||||
textStatus: #{textStatus}
|
||||
errorThrown: #{errorThrown}"""
|
||||
if sudo_reload == true and jqXHR.status == 401
|
||||
window.location.reload()
|
||||
handler.apply this, arguments
|
||||
|
||||
|
||||
@@ -299,10 +297,7 @@ class @PendingInstructorTasks
|
||||
@$no_tasks_message.empty()
|
||||
@$no_tasks_message.append $('<p>').text gettext("No tasks currently running.")
|
||||
@$no_tasks_message.show()
|
||||
error: std_ajax_err((=>
|
||||
console.error "Error finding pending tasks to display"
|
||||
), true)
|
||||
|
||||
error: std_ajax_err => console.error "Error finding pending tasks to display"
|
||||
### /Pending Instructor Tasks Section ####
|
||||
|
||||
class KeywordValidator
|
||||
|
||||
Reference in New Issue
Block a user