canvas-lms/app/views/gradebooks/speed_grader.html.erb

324 lines
19 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%
js_bundle :speed_grader
jammit_css :speed_grader
js_env({
:RUBRIC_ASSESSMENT => {
:assessor_id => @current_user.id.to_s,
:assessment_type => can_do(@assignment, @current_user, :grade) ? "grading" : "peer_review"
}
})
@show_left_side = false
@show_embedded_chat = false
@body_classes << 'full-width'
@can_edit_anything = !@context.completed?
%>
<% content_for :page_title, t(:page_title, "%{assignment_name}, SpeedGrader, %{course_name}", :assignment_name => @assignment.title, :course_name => @context.name) %>
<h4 id="speed_grader_loading">
<%= t(:loading, "loading...") %>
</h4>
<h1 class="screenreader-only"><%= t('page_header_title', "SpeedGrader") %></h1>
<div id=gradebook_header_container><div id="gradebook_header" style="display:none;">
<%= form_tag({ :controller => :gradebooks, :course_id => @context.id, :action => :update_submission }) do %>
<div class="left">
<% if service_enabled?(:avatars) %>
<div id="avatar">
<img src="/images/blank.png" id="avatar_image" alt=""/>
</div>
<% end %>
<a href="#" class="prev"><%= t('links.previous', "Previous") %></a>
<div id="combo_box_container"></div>
<a href="#" class="next"><%= t('links.next', "Next") %></a>
<div id='x_of_x_students'>
<span id='x_of_x_students_frd'></span><br>
<a href="<%= polymorphic_url([@context, 'gradebook']) %>" id="speed_grader_gradebook_link">
<%= t('links.gradebook', "Gradebook") %>
</a>
<a href="<%= context_url(@context, :context_url) %>"><%= t('links.course_home', "Course Home") %></a>
</div>
</div>
<div class="right">
<a data-muted="<%= @assignment.muted? ? "true" : "false" %>" id="mute_link" href="#"><span class="ui-icon ui-icon-volume-<%= @assignment.muted? ? "on" : "off" %>"></span><span class=mute_label><%= @assignment.muted? ? t("gradebook.unmute_assignment", "Unmute Assignment") : t("gradebook.mute_assignment", "Mute Assignment") %></span></a>
<a id="settings_link" href="#"><span class="ui-icon ui-icon-wrench"></span><%= t('links.settings', "Settings") %></a>
<% if help_link %>
| <%= help_link %>
<% end %>
<div>
<span id="x_of_x_graded"></span>
<span id='average_score_wrapper' style='display:none; padding-left: 10px;'><%= before_label(:average, "Avg") %> <span id='average_score'>0.0</span></span>
</div>
</div>
<div class='center'>
<a id="assignment_url" href="<%= context_url(@context, :context_assignment_url, @assignment.id) %>"><%= @assignment.title %></a>
(<span id="context_title" ><%= @context.short_name %></span>)
<div class="due_at"><%= translated_due_date(@assignment) %></div>
</div>
<% end %>
</div></div>
<div id="full_width_container" style="display:none;">
<div id="left_side" class="full_height">
<div id="left_side_inner">
<div id="no_annotation_warning" class="alert speedgrader_alert">
<a class="dismiss_alert close" href="#">×</a>
<%= t :no_annotation, "Annotations are not available for this document" %>
</div>
<div id="crocodoc_pending" class="alert speedgrader_alert">
<a class="dismiss_alert close" href="#">×</a>
<%= t :crocodoc_pending, "Crocodoc is still processing this document." %>
</div>
<div id="comment_submitted" class="alert alert-success speedgrader_alert">
<button aria-label="Close" class="dismiss_alert close">×</button>
<div id="comment_submitted_message">
<%= t :comment_submitted, "Your comment has been submitted." %>
</div>
</div>
<div id='submissions_container'>
<div id="this_student_does_not_have_a_submission">
<h3>
<% if @assignment.grade_as_group? %>
<%= t('headers.no_group_submission', "This group does not have a submission for this assignment") %>
<% else %>
<%= t('headers.no_submission', "This student does not have a submission for this assignment") %>
<% end %>
</h3>
</div>
<div id="this_student_has_a_submission">
<h3>
<%= t('headers.submission', "This student has submitted the assignment") %>
<span class="subheader"><%= t('headers.anonymous_submission', "This student's responses are hidden because this assignment is anonymous.") %></span>
</h3>
</div>
<div id="iframe_holder" style="display:none;"></div>
<div id="resize_overlay" style="display:none;"></div>
</div>
</div>
</div>
<div id="right_side" class="full_height">
<div class="full_height" id="width_resizer"></div>
<div class=right_side_content>
<div id="rightside_inner" class="full_height">
<div id="submission_details" class="content_box">
<div id="multiple_submissions"></div>
<div id="submission_late_notice"><%= t(:late_notice, "Note: This submission was LATE") %></div>
<div id="submission_not_newest_notice" title='<%= t('titles.not_newest', "use the dropdown above to change which submission to look at") %>'><%= t(:not_newest_notice, "Note: This is not the most recent submission") %></div>
<div id="submission_files_container">
<label><%= t(:submitted_files, "Submitted Files: (click to load)") %></label>
<div id="submission_files_list">
<div id="submission_file_hidden" class="submission-file" style='display:none;'>
<span class="turnitin_score_container"></span>
<a class="submission-file-download" title="<%= t('titles.download_file', "Download this file") %>" href="<%= context_url(@context, :context_assignment_submission_url, @assignment.id, "{{submissionId}}", :download => "{{attachmentId}}") %>"><%= t('links.download_file', "Download File") %></a>
<a class="display_name no-hover" href="<%= context_url(@context, :context_assignment_submission_url, @assignment.id, "{{submissionId}}", :download => "{{attachmentId}}", :inline => 1) %>" title="<%= t('titles.preview_file', "Preview this File") %>">???</a>
</div>
</div>
<div class="turnitin_info_container"></div>
</div>
</div>
<% if @assignment.rubric_association %>
<a href="<%= context_url(@context, :context_rubric_association_rubric_assessments_url, @assignment.rubric_association) %>" class="update_rubric_assessment_url" style="display: none;">&nbsp;</a>
<div id="rubric_full" style="display:none;">
<div id="rubric_full_resizer">
<div id="rubric_full_resizer_handle"></div>
</div>
<h2><%= t('headers.grading', "Grading") %></h2>
<div class="content_box">
<div id="rubric_holder">
<%= render :partial => "shared/rubric", :object => @assignment.try_rescue(:rubric_association).try_rescue(:rubric), :locals => {:assessing => true, :rubric_association => @assignment.rubric_association } if @assignment.try_rescue(:rubric_association).try_rescue(:rubric) %>
<div class="button-container">
<% if @assignment.rubric_association && can_do(@assignment.rubric_association, @current_user, :assess) %>
<button type="button" class="save_rubric_button btn"><%= t('buttons.save', "Save") %></button>
<% end %>
<button type="button" class="hide_rubric_link btn button-secondary"><%= t('#buttons.cancel', "Cancel") %></button>
</div>
<a href="<%= context_url(@context, :context_rubric_association_rubric_assessments_url, @assignment.rubric_association) %>" class="update_rubric_assessment_url" style="display: none;">&nbsp;</a>
<%= render :partial => "shared/rubric_criterion_dialog" %>
</div>
</div>
</div>
<% end %>
<% if @assignment.rubric_association || can_do(@context, @current_user, :manage_grades) %>
<div id="grading">
<h2><%= t('headers.assessment', "Assessment") %></h2>
<div>
<% if can_do(@context, @current_user, :manage_grades) %>
<div id="grade_container" class="content_box">
<label class="bold"><%= t('labels.grade', "Grade") %>
<%= render :partial => "grading_box_extended", :object => @assignment %>
<% if @assignment.grading_type == "points" %>
<%= t('#gradebooks.out_of_points_possible', "out of %{points_possible}", :points_possible => @assignment.points_possible) %>
<% elsif @assignment.grading_type != "gpa_scale" %>
(<span class="score">&nbsp;</span> / <%= @assignment.points_possible %>)
<% end %>
</label>
<span class="turnitin_score_container"></span>
<a href="#" id="submit_same_score"><br><%= t('links.submit_same_score', "Use this same grade for the resubmission") %></a>
<a style="display: none;" title="POST" href="<%= context_url(@context, :update_submission_context_gradebook_url) %>" class="update_submission_grade_url">&nbsp;</a>
<div class="turnitin_info_container"></div>
</div>
<% end %>
<% if @assignment.rubric_association %>
<div id="rubric_summary_holder">
<div id="rubric_assessments_list_and_edit_button_holder" class="content_box">
<span id="rubric_assessments_list">
<%= before_label(:show_assessment_by, "Show Assessment By") %>
<select id="rubric_assessments_select">
<option value="new" id="new_rubric_assessment_option"><%= t(:new_assessment_option, "[New Assessment]") %></option>
</select>
</span>
</div>
<div id="rubric_summary_container">
<%= render :partial => "shared/rubric_summary", :object => @assignment.try_rescue(:rubric_association).try_rescue(:rubric), :locals => {:assessing => true } if @assignment.try_rescue(:rubric_association).try_rescue(:rubric) %>
</div>
</div>
<% end %>
</div>
</div><!-- end #grading -->
<% end %>
<div>
<h2><%= t("Assignment Comments") %></h2>
<div id="discussion">
<div id="comments">
<div class="comment" id="comment_blank" style="display: none;">
<a href="javascript:void 0;" class="delete_comment_link icon-x">
<span class="screenreader-only"><%= t('icons.delete_comment', 'Delete comment') %></span>
</a>
<img src="#" class="avatar" alt="" style="display: none;"/>
<span class="comment"></span>
<a href="#" class="play_comment_link media-comment" style="display:none;"><%= t('links.click_to_view', "click here to view") %></a>
<div class="media_comment_content" style="display:none"></div>
<div class="comment_attachments"></div>
<div class="comment_citation">
<span class="author_name">&nbsp;</span>,
<span class="posted_at">&nbsp;</span>
</div>
</div>
<div class="comment_attachment" id="comment_attachment_blank" style="display: none;">
<a href="<%= context_url(@context, :context_assignment_submission_url, @assignment.id, "{{ submitter_id }}", :comment_id => "{{ comment_id }}", :download => "{{ id }}") %>"><span class="display_name">&nbsp;</span></a>
</div>
</div>
</div>
</div>
<% unless @context.completed? || @context_enrollment.try(:completed?) %>
<form id="add_a_comment">
<label for="speedgrader_comment_textarea"><%= t('labels.add_comment', "Add a Comment") %></label>
<textarea id="speedgrader_comment_textarea"></textarea>
<div>
<div id="media_media_recording" style="display: none;">
<div class="media_recording"></div>
</div>
<% if @assignment.has_group_category? %>
<div id="group_comment_wrapper">
<input type="checkbox" name="group_comment" id="submission_group_comment"/>
<label for="submission_group_comment"><%= t('labels.group_comment', "Send Comment to the Whole Group") %></label>
</div>
<% end %>
<div id="comment_attachments"></div>
<div class="comment_attachment_input" id="comment_attachment_input_blank" style="display: none;">
<input type="file" name="attachments[-1][uploaded_data]" style="font-size: 0.8em;"/>
<a href="#">
<i class="icon-end text-error"></i>
<span class="screenreader-only">
<%= t('links.remove_attachment', "Remove Attachment") %>
</span>
</a>
</div>
<button class="btn btn-small btn-primary" type="submit"><%= t('buttons.submit_comment', "Submit Comment") %></button>
<ul class="attach_things">
<li class="prompt"><%= t(:attach, "Attach") %></li>
<li>
<a data-tooltip title="<%= t('tooltips.file_attachment', "File Attachment") %>" id="add_attachment" href="#" class="btn btn-small">
<i class="icon-paperclip"></i>
<span class="screenreader-only"><%= t('icons.file_attachment', "File Attachment") %><span>
</a>
</li>
<% if feature_enabled?(:kaltura) %>
<li>
<a data-tooltip title="<%= t('tooltips.media_comment', "Media Comment") %>" href="#" class="btn btn-small media_comment_link">
<i class="icon-media"></i>
<span class="screenreader-only">
<%= t('icons.media_comment', 'Media Comment') %>
</span>
</a>
</li>
<% end %>
<li style="display:none">
<a data-tooltip title="<%= t('tooltips.speech_recognition', "Speech Recognition") %>" href="#" class="btn btn-small speech_recognition_link">
<i class="icon-audio"></i>
<span class="screenreader-only">
<%= t('icons.speech_recognition', 'Speech Recognition') %>
</span>
</a>
</li>
<li style="clear:both;"></li>
</ul>
<div style="clear:both;"></div>
</div>
</form>
<% end %>
</div>
</div>
</div>
</div>
<a style="display:none;" id="assignment_submission_url" href="<%= context_url(@context, :context_assignment_submission_url, @assignment.id, "{{submission_id}}") %>"></a>
<a style="display:none;" id="assignment_submission_turnitin_report_url" href="<%= context_url(@context, :context_assignment_submission_turnitin_report_url, @assignment.id, "{{ user_id }}", "{{ asset_string }}") %>"></a>
<a style="display:none;" id="assignment_submission_resubmit_to_turnitin_url" href="<%= context_url(@context, :context_assignment_submission_resubmit_to_turnitin_url, @assignment.id, "{{ user_id }}") %>"></a>
<form id="settings_form" style="display:none; width:400px;" title="<%= t('titles.speedgrader_options', "SpeedGrader Options") %>">
<p>
<label for="eg_sort_by"><%= t('labels.sort_by', "Sort student list") %></label>
<%= select_tag 'eg_sort_by', options_for_select([
[t('sort_by.student_name', "by student name (alphabetically)"), "alphabetically"],
[t('sort_by.submitted_at', "the date they submitted the assignment"), "submitted_at"],
[t('sort_by.status', "by submission status (needs grading, not submitted, etc)"), "submission_status"]], cookies[:eg_sort_by]) %>
</p>
<p<% if @assignment.quiz && @assignment.quiz.survey? && @assignment.quiz.anonymous_submissions %> style="display: none;"<% end %>>
<input type="checkbox" id="hide_student_names" name="hide_student_names"/>
<label for="hide_student_names"><%= t('labels.hide_names', "Hide student names in the SpeedGrader") %></label>
</p>
<p <% unless @assignment.quiz %>class=hidden<% end %>>
<%= check_box_tag :enable_speedgrader_grade_by_question, "1",
@current_user.preferences[:enable_speedgrader_grade_by_question] %>
<%= label_tag :enable_speedgrader_grade_by_question,
t('labels.grade_by_question_beta', 'Grade by question (beta)') %>
</p>
<div class="button-container">
<button class="btn dialog_closer"><%= t('#buttons.cancel', "Cancel") %></button>
<button type="submit" class="btn btn-primary submit_button"><%= t('buttons.save_settings', "Save Settings") %></button>
</div>
</form>
<%= render :partial => "shared/mute_dialog" %>
<ul id="section-menu" class="ui-selectmenu-menu ui-widget ui-widget-content ui-selectmenu-menu-dropdown ui-selectmenu-open" style="display:none;" role="listbox" aria-activedescendant="section-menu-link">
<li role="presentation" class="ui-selectmenu-item">
<a href="#" tabindex="-1" role="option" aria-selected="true" id="section-menu-link">
<span><%= before_label(:showing, "Showing") %> <span id="section_currently_showing"><%= t(:all_sections, "All Sections") %></span></span>
</a>
<ul>
<li style="border-bottom: 1px dotted #ccc"><a class="selected" style="font-size: 1.1em;" data-section-id="all" href="#"><%= t('links.show_all_sections', "Show all sections") %></a></li>
</ul>
</li>
</ul>
<% js_block do %>
<script>
window.anonymousAssignment = <%= @assignment.quiz && @assignment.quiz.survey? && @assignment.quiz.anonymous_submissions ? "true" : "false" %>;
window.visibleRubricAssessments = <%= raw((@assignment.visible_rubric_assessments_for(@current_user) || {}).to_json(:methods => [:assessor_name], :include_root => false)) %>;
</script>
<% end %>
<div id="current_context_code" style="display: none;"><%= @context.asset_string %></div>
<span id="aria_name_alert" class="screenreader-only" aria-live="polite"></span>
<% keyboard_navigation([
{:key => t('keycodes.next_student', 'j'), :description => t('keycode_descriptions.next_student', 'Next Student')},
{:key => t('keycodes.previous_student', 'k'), :description => t('keycode_descriptions.previous_student', 'Previous Student')},
{:key => t('keycodes.leave_comment', 'c'), :description => t('keycode_descriptions.leave_comment', 'Leave Comment')},
{:key => t('keycodes.change_grade', 'g'), :description => t('keycode_descriptions.change_grade', 'Change Grade')},
{:key => t('keycodes.use_rubric', 'r'), :description => t('keycode_descriptions.use_rubric', 'Use Rubric')}
]) %>