Squashed commits to facilitate cherry-picking. Committers and original commit messages are: - ==> @caesar2164, * ==> @jrbl, ~ ==> @jbau - Added boolean to OE problem CMS settings to turn on ICE track changes - Added ICE init and tracking start/stop to HTML - Conditional in Peer Grading HTML for ICE container - CSS styling for ICE container and insertion/deletion elements - Added class to track changes HTML - Added ice.min.js as well as included it in the js requirements for peer grading - Use track_changes in peer_grading_problem * Refactor peer_grading_problem to lookup track_changes variable by problem location. * Whitelist ICE insert, delete tags * Adds ICE multi-user-editor insert and delete tags to the peer grading sanitize_html whitelist. - add reset button * Introduction ICE means we need its inline tags to get passed through to the feedback target, but we don't want malicious peer feedback providers introducing <script>, etc, so we use lxml.html.clean to scrub peer grading input. * Adds feedback URL autoheating. * Allows ICE <insert> and <delete> tags but not others. ~ add helptext re: EXPERIMENTAL FEATURES ~ address a bunch of @VikParuchuri review comments on ICE for OEE ~ remove extraneous code ~ change to new xmodule accessors ~ refactor filtering ~ fix broken test test_peer_grading_problem ~ Create track_changes.coffee and remove <script> from peer_grading_problem.html ~ Remove all reliance on id in favor of local scoping and classes ~ bring up test coverage somewhat ~ remove superflous $.scrollTo ~ TODO: Filtering
111 lines
6.2 KiB
HTML
111 lines
6.2 KiB
HTML
<%! from django.utils.translation import ugettext as _ %>
|
|
<section class="container peer-grading-container">
|
|
<div class="peer-grading" data-ajax-url="${ajax_url}" data-location="${problem_location}" data-use-single-location="${use_single_location}">
|
|
<div class="error-container"></div>
|
|
|
|
<section class="content-panel">
|
|
<div class="instructions-panel">
|
|
<div class="calibration-panel">
|
|
<h3>${_("Learning to Grade")}</h3>
|
|
</div>
|
|
<div class="grading-panel">
|
|
<h3>${_("Peer Grading")}</h3>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="prompt-wrapper">
|
|
<div class="visibility-control visibility-control-prompt">
|
|
<div class="inner">
|
|
</div>
|
|
<a href="" class="section-header section-header-prompt question-header">${_('Hide Prompt')}</a>
|
|
</div>
|
|
<div class="prompt-information-container">
|
|
<section>
|
|
<div class="prompt-container">
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
<section class="grading-wrapper" data-track-changes="${'true' if track_changes else 'false'}">
|
|
<div class="grading-message">
|
|
</div>
|
|
<h2>${_("Student Response")}</h2>
|
|
<div class="grading-container">
|
|
<div class="submission-wrapper">
|
|
<h3></h3>
|
|
<div class="submission-container">
|
|
</div>
|
|
<input type="hidden" name="submission-key" value="" />
|
|
<input type="hidden" name="essay-id" value="" />
|
|
</div>
|
|
<div class="evaluation">
|
|
<p class="rubric-selection-container"></p>
|
|
<p class="score-selection-container"></p>
|
|
<h3>${_("Written Feedback")}</h3>
|
|
% if track_changes:
|
|
<p>${_("Please edit your peer's submission below.")}</p>
|
|
<p class="legend">
|
|
<span class="ins">${_("This is an insertion.")}</span>
|
|
<span class="del">${_("This is a deletion.")}</span>
|
|
<span class="ice-controls">
|
|
<a href="#" class="reset-changes"><i class="icon-refresh"></i> Reset Changes</a>
|
|
</span>
|
|
</p>
|
|
<div name="feedback" class="feedback-area track-changes" contenteditable="true"></div>
|
|
% else:
|
|
<p>${_("Please include some written feedback as well.")}</p>
|
|
<textarea name="feedback" placeholder="Feedback for student" class="feedback-area" cols="70" ></textarea>
|
|
% endif
|
|
<div class="flag-student-container"> ${_("This submission has explicit or offensive content : ")}
|
|
<input type="checkbox" class="flag-checkbox" value="student_is_flagged">
|
|
</div>
|
|
<div class="answer-unknown-container"> ${_("I do not know how to grade this question : ")}
|
|
<input type="checkbox" class="answer-unknown-checkbox" value="answer_is_unknown">
|
|
</div>
|
|
</div>
|
|
<div class="submission">
|
|
<input type="button" value="${_("Submit")}" class="submit-button" name="show"/>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
<!-- Calibration feedback: Shown after a calibration is sent -->
|
|
<section class="calibration-feedback">
|
|
<h2>${_("How did I do?")}</h2>
|
|
<div class="calibration-feedback-wrapper">
|
|
</div>
|
|
<input type="button" class="calibration-feedback-button" value="${_("Continue")}" name="calibration-feedback-button" />
|
|
</section>
|
|
|
|
<!-- Interstitial Page: Shown between calibration and grading steps -->
|
|
<section class="interstitial-page">
|
|
<h1>${_("Ready to grade!")}</h1>
|
|
<p>${_("You have finished learning to grade, which means that you are now ready to start grading.")}</p>
|
|
<input type="button" class="interstitial-page-button" value="${_("Start Grading!")}" name="interstitial-page-button" />
|
|
</section>
|
|
|
|
<!-- Calibration Interstitial Page: Shown before calibration -->
|
|
<section class="calibration-interstitial-page">
|
|
<h1>${_("Learning to grade")}</h1>
|
|
<p>${_("You have not yet finished learning to grade this problem.")}</p>
|
|
<p>${_("You will now be shown a series of instructor-scored essays, and will be asked to score them yourself.")}</p>
|
|
<p>${_("Once you can score the essays similarly to an instructor, you will be ready to grade your peers.")}</p>
|
|
<input type="button" class="calibration-interstitial-page-button" value="${_("Start learning to grade")}" name="calibration-interstitial-page-button" />
|
|
</section>
|
|
|
|
<!-- Flag submission confirmation dialog -->
|
|
<section class="flag-submission-confirmation">
|
|
<h4>${_("Are you sure that you want to flag this submission?")}</h4>
|
|
<p>
|
|
${_("You are about to flag a submission. You should only flag a submission that contains explicit or offensive content. If the submission is not addressed to the question or is incorrect, you should give it a score of zero and accompanying feedback instead of flagging it.")}
|
|
</p>
|
|
<div>
|
|
<input type="button" class="flag-submission-removal-button" value="${_("Remove Flag")}" name="calibration-interstitial-page-button" />
|
|
<input type="button" class="flag-submission-confirmation-button" value="${_("Keep Flag")}" name="calibration-interstitial-page-button" />
|
|
</div>
|
|
</section>
|
|
|
|
<input type="button" value="${_("Go Back")}" class="action-button" name="back" />
|
|
</div>
|
|
</section>
|