324 lines
19 KiB
Plaintext
324 lines
19 KiB
Plaintext
<%
|
||
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;"> </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;"> </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"> </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"> </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"> </span>,
|
||
<span class="posted_at"> </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"> </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')}
|
||
]) %>
|