░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/var/www/canvas/app/views/submissions
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: show.html.erb
<% # Copyright (C) 2011 - present Instructure, Inc. # # This file is part of Canvas. # # Canvas is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the Free # Software Foundation, version 3 of the License. # # Canvas is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Affero General Public License for more # details. # # You should have received a copy of the GNU Affero General Public License along # with this program. If not, see <http://www.gnu.org/licenses/>. %> <% # this is superficial and should be fine, since this is only showing data, not saving data entered_grade = @assignment.restrict_quantitative_data?(@current_user) ? @assignment.score_to_grade(@submission.score, nil, true) : @submission.entered_grade presenter = Submission::ShowPresenter.new( submission: @submission, current_user: @current_user, assessment_request: @assessment_request, current_host: request.host ) submission_comments = @submission.visible_submission_comments_for(@current_user) if presenter.anonymize_submission_owner? submission_owner_param = {anonymous_id: @submission.anonymous_id} rubric_assessment_user_param = {anonymous_id: @submission.anonymous_id} else submission_owner_param = {user_id: @submission.user_id} rubric_assessment_user_param = {assessment_user_id: @submission.user_id} end assessment_type = if !presenter.currently_peer_reviewing? && can_do(@submission, @current_user, :grade) "grading" else "peer_review" end show_updated_plagiarism_icons = @assignment.context.root_account.feature_enabled?(:new_gradebook_plagiarism_indicator) js_env({ :RUBRIC_ASSESSMENT => { assessment_type: assessment_type, assessor_id: @current_user ? @current_user.id : "null", **rubric_assessment_user_param }, :SUBMISSION => { assignment_id: @assignment.id, # don't leak grades if submission is not posted points_possible: @assignment.points_possible, # score below is useless without points possible submission: if @submission.user_can_read_grade?(@current_user, session) @submission.attributes.merge( entered_grade: entered_grade, entered_score: @submission.entered_score ) else {} end, **submission_owner_param } }) provide :page_title, join_title(@assignment.title, submission_author_name_for(@assessment_request)) provide_blank :right_side %> <style> .rubric { max-width: 600px; } </style> <% if @assignment.omit_from_final_grade %> <div class="alert alert-info omit-from-final-warning"> This assignment does not count towards the final grade. </div> <% end %> <div class="submission-details-header submission_details"> <div class="submission-details-header__heading-and-grades"> <h1 class="submission-details-header__heading submission_header"> <%= @assessment_request ? t('peer_review', "Peer Review") : t('submission_details', "Submission Details") %> </h1> <div class="submission-details-header__grade-summary"> <% if @submission.user_can_read_grade?(@current_user, session) %> <table class="grade-values"> <tbody> <tr> <th><label for="student_grading_<%= @assignment.id %>"><%= I18n.t('Grade:') %></label></th> <td class="bold"> <% if can_do(@assignment, @current_user, :grade) %> <%= render :partial => "gradebooks/grading_box", :object => @assignment, :locals => {:submission => @submission} %> <% else %> <span class="entered_grade"> <% if @submission.excused? %> <%= t "Excused" %> <% else %> <%= i18n_grade(round_if_whole(entered_grade), @submission.grading_type) %> <% end %> </span> <% end %> <% if !@submission.excused? && @assignment.grading_type == 'points' && @assignment.points_possible && !@assignment.restrict_quantitative_data?(@current_user) %> <%= t('/ %{points_possible}', points_possible: I18n.n(round_if_whole @assignment.points_possible))%> <% end %> </td> </tr> <% if can_do(@assignment, @current_user, :grade) || @submission.user_can_read_grade?(@current_user, session) points_deducted = I18n.n(-@submission.points_deducted) if @submission.points_deducted&.> 0 points_possible = I18n.n(round_if_whole(@assignment.points_possible)) grade_breakdown_style = hidden unless points_deducted && !@submission.excused? %> <tr class="error late-penalty-display" style="<%= grade_breakdown_style %>"> <th><%= I18n.t('Late penalty:') %></th> <td class="late_penalty bold"><%= points_deducted %></td> </tr> <tr class="late-penalty-display" style="<%= grade_breakdown_style %>"> <th><%= I18n.t('Final grade:') %></th> <td class="bold"> <% if can_do(@assignment, @current_user, :grade) %> <span class="published_grade"><%= i18n_grade(round_if_whole(@submission.grade), @submission.grading_type) %></span> <% elsif @submission.user_can_read_grade?(@current_user, session) %> <span class="grade"><%= i18n_grade(round_if_whole(@submission.published_grade), @submission.grading_type) %></span> <% end %> <% if @assignment.grading_type == 'points' %> / <%= points_possible %> <% end %> </td> </tr> <% end %> </tbody> </table> <% if can_do(@submission, @current_user, :view_turnitin_report) %> <% if (turnitin_score = @submission.turnitin_data[@submission.asset_string]) && @submission.turnitin_data[:provider] == nil && turnitin_score[:similarity_score] %> <% if show_updated_plagiarism_icons %> <%= render partial: 'shared/originality_score_icon', locals: { plagiarism_data: turnitin_score, report_url: context_url(@context, :context_assignment_submission_turnitin_report_url, @submission.assignment_id, @submission.user_id, @submission.asset_string), } %> <% else %> <span class="turnitin_score_container"> <span class="turnitin_score_container_caret <%= turnitin_score[:state] %>_score"></span> <a href="<%= context_url(@context, :context_assignment_submission_turnitin_report_url, @submission.assignment_id, @submission.user_id, @submission.asset_string) %>" target="_blank" class="not_external turnitin_similarity_score <%= turnitin_score[:state] %>_score"><%= turnitin_score[:similarity_score] %>%</a> </span> <% end %> <% end %> <% end %> <% elsif @submission.hide_grade_from_student? %> <p style="width: 200px"><%= t(:student_mute_notification, "Grades are unavailable because the instructor is working on them.") %></p> <% end %> <% if @submission.can_view_plagiarism_report('vericite', @current_user, session) && @submission.posted? %> <% if (vericite_score = @submission.vericite_data(true)[@submission.asset_string]) && @submission.turnitin_data[:provider] == :vericite && vericite_score[:similarity_score] %> <% if show_updated_plagiarism_icons %> <%= render partial: 'shared/originality_score_icon', locals: { plagiarism_data: vericite_score, report_title: t("Similarity score -- more information"), report_url: context_url(@context, :context_assignment_submission_vericite_report_url, @submission.assignment_id, @submission.user_id, @submission.asset_string), tooltip_text: t("See VeriCite results") } %> <% else %> <span class="turnitin_score_container"> <span class="vericite_score_container_caret <%= vericite_score[:state] %>_score"></span> <a href="<%= context_url(@context, :context_assignment_submission_vericite_report_url, @submission.assignment_id, @submission.user_id, @submission.asset_string) %>" target="_blank" title="Similarity score -- more information" class="tooltip not_external turnitin_similarity_score <%= vericite_score[:state] %>_score"> <%= vericite_score[:similarity_score] %>% <span class="tooltip_wrap right"> <span class="tooltip_text"><%= t(:see_vericite_results, "See VeriCite results") %></span> </span> </a> </span> <% end %> <% end %> <% end %> <% if @assignment.active_rubric_association? && ( @submission.user_can_read_grade?(@current_user, session) || @assignment.rubric_association.user_can_assess_for?(assessor: @current_user, assessee: @submission.user) || @assignment.rubric_association.user_did_assess_for?(assessor: @current_user, assessee: @submission.user) || can_do(@assignment.rubric, @current_user, :read) ) %> <% unread_comments = @current_user.unread_rubric_assessments?(@submission) %> <div class="submission-details-header__rubric <% if can_do(@assignment, @current_user, :grade) %>submission-details-header__rubric--can-grade<% end %>"> <a href="#" class="assess_submission_link Button Button--small Button--link" tabindex='0' title="<%= unread_comments ? t('There are unread rubric comments.') : '' %>"> <i class="icon-rubric" aria-hidden="true"></i><%= t('show_rubric', 'Show Rubric') %> </a> <% if unread_comments %> <span class="rubric_comment unread_indicator" aria-hidden="true"></span> <% js_env mark_rubric_comments_read_url: api_v1_course_submission_rubric_assessments_mark_read_url(@context.id, @assignment.id, @submission.user.id) %> <% end %> </div> <% end %> </div> </div> <div class="ic-Action-header"> <div class="ic-Action-header__Primary"> <h2 class="submission-details-header__heading h3"><%= @assignment.title %></h2> <div class="submission-details-header__info"> <div> <span class="submission-details-header__time <%='late' if @submission.late? %> <%= 'hidden' unless @submission.submitted_at %>"> <%= submission_author_name_for @assessment_request %> <%= t('submitted_at', 'submitted %{submit_date}', :submit_date => datetime_string(@submission.submitted_at)) %> </span> <% if @submission.proxy_submitter %> <br/> <span><%= I18n.t("Submitted by: %{name}", name: @submission.proxy_submitter.short_name) %></span> <% end %> </div> <% if @submission.late? %> <span class="submission-late-pill"></span> <% elsif @submission.missing? %> <span class="submission-missing-pill"></span> <% elsif @submission.extended? %> <span class="submission-extended-pill"></span> <% end %> <% if @assignment.allowed_attempts&.> 0 %> <div class="submission-details-header__attempts_info"> <span class="bold"><%= t :attempts, 'Attempts' %></span> <span><%= @submission.attempt || 0 %></span> </div> <div class="submission-details-header__attempts_info"> <span class="bold"><%= t :allowed_attempts, 'Allowed Attempts' %></span> <span><%= @assignment.allowed_attempts + (@submission.extra_attempts || 0) %></span> </div> <% end %> </div> </div> <div class="ic-Action-header__Secondary ic-Action-header__Secondary--auto"> <% if can_do(@context, @current_user, :grade) %> <a class="Button" href="<%= context_url(@context, :speed_grader_context_gradebook_url, assignment_id: @assignment.id, student_id: @submission.user_id) %>"> <i class="icon-speed-grader" aria-hidden="true"></i> <%= t('speedgrader', 'SpeedGrader™') %> </a> <% end %> <% if @assignment.expects_submission? && can_do(@assignment, @current_user, :submit) && @current_user == @submission.user %> <a href="<%= context_url(@context, :context_assignment_url, @assignment.id) %>#submit" class="Button Button--primary" <%= 'disabled' if @submission&.attempts_left == 0 %>> <%= @submission.has_submission? ? t('links.resubmit', "Re-submit Assignment") : t('links.submit', "Submit Assignment") %> </a> <% end %> </div> </div> <% if @assessment_request %> <div class="assessment_request_completed_message" style="<%= hidden unless @assessment_request.completed? %>"> <%= t('peer_review_steps_complete', 'You have finished the required steps for this peer review.') %> </div> <% hide_assessment_instructions = @assessment_request.completed? || @assessment_request.active_rubric_association? %> <div class="assessment_request_incomplete_message" style="<%= hidden if hide_assessment_instructions %>"> <%= mt('peer_review_not_done', "**This peer review is not finished yet.** For it to be considered finished, you need to leave at least one comment.") %> </div> <div> </div> <% end %> </div> <% if @assignment.active_rubric_association? %> <% @visible_rubric_assessments ||= [] %> <div id="rubric_holder" style="position: absolute; <%= direction('right') %>: 0px; padding: 5px; background-color: #fff; border: 1px solid #aaa; border-<%= direction('right') %>-width: 0; display: none;"> <a class="hide_rubric_link" style="float: <%= direction('right') %>; margin-<%= direction('right') %>:0 !important;" title="<%= t('hide_rubric_button', 'Hide Rubric') %>" role="button" aria-label="<%= t('hide_rubric_button', 'Hide Rubric') %>" tabindex='0' ><i class="icon-x standalone-icon"></i></a> <div id="rubric_assessments_list" style="text-align: <%= direction('right') %>; margin-bottom: 5px; <%= hidden if @assessment_request || @visible_rubric_assessments.empty? %>"> <%= before_label('show_assessment_by', 'Show Assessment By') %> <select id="rubric_assessments_select"> <% @visible_rubric_assessments.each do |assessment| %> <option id="rubric_assessment_option_<%= assessment.id %>" value="<%= assessment.id %>"> <% if can_do(assessment, @current_user, :read_assessor) %> <%= assessment.assessor_name %> <% else %> <%= t(:anonymous_user, "Anonymous User") %> <% end %> </option> <% end %> <% if can_do(@context, @current_user, :manage_grades) && @submission.user != @current_user %> <% unless @visible_rubric_assessments.map{|a| a.assessor_id}.include?(@current_user.id) %> <option value="new" id="new_rubric_assessment_option"><%= t('options.new_assessment', '[New Assessment]') %></option> <% end %> <% end %> </select> </div> <% if @assignment.rubric.present? %> <%= render({ partial: 'shared/rubric', object: @assignment.rubric, locals: { anonymize_student: presenter.anonymize_submission_owner?, assessing: @submission.grants_right?(@current_user, :grade) || presenter.currently_peer_reviewing?, rubric_association: @assignment.rubric_association }}) %> <% end %> <%= render :partial => "shared/rubric_criterion_dialog" %> <div class="button-container"> <% if @assignment.rubric_association.user_can_assess_for?(assessor: @current_user, assessee: @submission.user) %> <button type="button" class="save_rubric_button btn btn-small"><%= t('buttons.save_comment', 'Save Comment') %></button> <% end %> </div> <a href="<%= context_url(@context, :context_rubric_association_rubric_assessments_url, @assignment.rubric_association) %>" class="update_rubric_assessment_url" style="display: none;"> </a> </div> <% end %> <div style="display: none;"> <a style="display: none;" title="<%= presenter.add_comment_method %>" href="<%= presenter.add_comment_url %>" class="update_submission_url"> </a> <a style="display: none;" href="<%= presenter.submission_data_url %>" class="submission_data_url"> </a> </div> <div class="submission-details-container"> <div class="submission-details-frame"> <iframe id="preview_frame" src="<%= presenter.submission_preview_frame_url %>" allowfullscreen="true" allow="<%= Lti::Launch.iframe_allowances.join('; ') %>" frameborder="0" style="border: 0; width: 100%; height: 300px; display: block;" title="<%= t('Preview') %>"></iframe> </div> <div class="submission-details-comments" style="word-wrap: break-word; min-width: 1%;"> <div style="background-color: #fff; height: 100%"> <a href="#" class="comments_link" style="display: none; <%= 'font-weight: bold;' unless submission_comments.empty? %>">Comments <% unless submission_comments.empty? %>(<%= submission_comments.length %>)<% end %></a> <div class="comments" style="height: 100%"> <button type="button" class="btn button-secondary cancel_comment_button" style="display: none; float: <%= direction('right') %>; margin-<%= direction('right') %>:0 !important;"><%= image_tag("delete_circle.png", :alt => t('Delete')) %></button> <div class="comment_list" aria-live="polite" style="padding: 10px; clear:right;"> <% unless @submission.user_can_read_grade?(@current_user, session) %> <% if @submission.hide_grade_from_student? %> <i><%= t('only_see_your_own_comments_muted', "You may not see all comments right now because the assignment is currently being graded") %></i> <% else %> <i><%= t('only_see_your_own_comments_peer', "As a peer reviewing student, you will only see comments written by you.") %></i> <% end %> <br/><br/> <% end %> <% submission_comments.each do |comment| %> <% if can_do(comment, @current_user, :read) %> <% author_name = comment_author_name_for(comment) created_at = datetime_string(comment.created_at) %> <div class="comment <%= 'draft' if comment.draft? %>" id="submission_comment_<%= comment.id %>" style="margin-bottom: 10px;"> <div class="comment" style="color: #444;"> <span style="white-space: pre-wrap;"><%= comment.comment %></span> <% if comment.media_comment_id %> <div class="comment_media"> <%= t( "This is a media comment, *click here to view*.", wrapper: "<br/><a data-author='#{author_name}' data-created_at='#{created_at}' href='#' class='play_comment_link media-comment'>\1</a>.") %> <span class="media_comment_id" style="display: none;"><%= comment.media_comment_id %></span> <div class="media_comment_content"> </div> </div> <% end %> </div> <div class="comment_attachments" style="text-align: <%= direction('right') %>; margin-<%= direction('right') %>: 10px;"> <% comment.attachments.each do |attachment| %> <div class="comment_attachment"> <a href="<%= presenter.comment_attachment_download_url(submission_comment: comment, attachment: attachment) %>" class="comment_attachment_link <%= attachment.mime_class %>"><%= attachment.display_name %></a> </div> <% end %> </div> <div class="comment_author_and_date" style="text-align: <%= direction('right') %>; font-size: 0.8em;"> <span class="author_name"> <%= author_name %> </span>, <span class="posted_at"><%= created_at %></span> </div> </div> <% end %> <% end %> </div> <div class="comment_media" id="comment_media_blank" style="display: none; white-space: normal;"> <%= t('media_comment_link', "This is a media comment, *click here to view*.", :wrapper => '<br/><a href="#" class="play_comment_link media-comment">\1</a>.') %> <span class="media_comment_id" style="display: none;"> </span> <div class="media_comment_content"> </div> </div> <div class="comment_attachment" id="comment_attachment_blank" style="display: none;"> <a class="comment_attachment_link" href="<%= presenter.comment_attachment_template_url %>"><span class="display_name"> </span></a> </div> <div class="comment" id="comment_blank" style="display: none; margin-bottom: 10px;"> <span class="comment" style="color: #444; white-space: pre-wrap;"></span> <div class="comment_attachments" style="text-align: <%= direction('right') %>; margin-<%= direction('right') %>: 10px;"></div> <div style="text-align: <%= direction('right') %>; font-size: 0.8em; color: #888;"> <span class="author_name"> </span>, <span class="posted_at"> </span> </div> </div> <div class="comment_attachment_input nobr" id="comment_attachment_input_blank" style="display: none;"> <input type="file" name="attachments[-1][uploaded_data]"/> <a href="#" class="delete_comment_attachment_link no-hover"><i class="icon-end" role="presentation"></i><span class="screenreader-only"> t('Delete') </span></a> </div> <div id="media_media_recording" style="display: none;"> <div class="media_recording"> </div> </div> <div style="padding: 10px; <%= hidden unless can_do(@submission, @current_user, :comment) %>" id="add_comment_form"> <label class="add_a_comment"> <strong><%= before_label('add_a_comment', 'Add a Comment') %></strong> <div id="textarea-container"> <textarea class="ic-Input grading_comment"></textarea> <span id="emoji-picker-container"></span> </div> <div id="emoji-quick-picker-container"></div> </label> <div class="comment_attachments"> </div> <div class="clearfix" style="text-align: <%= direction('right') %>;"> <% if feature_enabled?(:kaltura) %> <a href="#" class="media_comment_link media-comment pull-left"><%= t('media_comment', 'Media Comment') %></a> <% end %> <a href="#" style="float: <%= direction('right') %>;" class="attach_comment_file_link"><%= t('attach_file', 'Attach File') %></a> <div class="clear"></div> </div> <% if @assignment.has_group_category? && can_do(@submission, @current_user, :make_group_comment) %> <% if @assignment.grade_as_group? %> <span><%= t("All comments are sent to the whole group.") %></span> <input type="checkbox" name="submission[group_comment]" id="submission_group_comment" style="display:none" checked /> <% else %> <fieldset class="ic-Fieldset ic-Fieldset--radio-checkbox"> <div class="ic-Form-control ic-Form-control--radio"> <div class="ic-Radio"> <input type="radio" name="submission[group_comment]" id="not_submission_group_comment" value="0" checked /> <label class="ic-Label" for="not_submission_group_comment"> <% if can_do(@submission, @current_user, :grade) %> <%= t('Send comment to this student only') %> <% else %> <%= t('Send comment to instructor only') %> <% end %> </label> </div> <div class="ic-Radio"> <input type="radio" name="submission[group_comment]" id="submission_group_comment" value="1" /> <label class="ic-Label" for="submission_group_comment"> <%= t('sent_to_whole_group', 'Send comment to the whole group') %> </label> </div> </div> </fieldset> <% end %> <% end %> <div class="button-container"> <button type="button" class="Button Button--primary save_comment_button"><%= t('buttons.save', 'Save') %></button> </div> </div> </div> </div> </div> </div> <% js_env :rubricAssessments => @visible_rubric_assessments.as_json(:include => :assessor, :permissions => {:user => @current_user, :session => session}) %>
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 _originality_score.html.erb
ERB
5.5 KB
2023-09-24 03:36
EDIT
📄 _submission_download.html.erb
ERB
1.3 KB
2023-09-24 03:36
EDIT
📄 show.html.erb
ERB
25.3 KB
2023-09-24 03:36
EDIT
📄 show_preview.html.erb
ERB
13 KB
2023-09-24 03:36
EDIT