Revert "Decorated instructor dashboard with sudo_required."

This commit is contained in:
Adam
2015-07-17 12:11:38 -04:00
parent b12d3f6303
commit 2735b2b5bb
88 changed files with 555 additions and 1229 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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