As part of AA-500, we added a completeness check to showing the banner since we didn't before. As part of AA-260, we now take into account if a learner has more attempts left on a problem (regardless of completeness) and allow them to shift their dates to try again.
165 lines
7.4 KiB
HTML
165 lines
7.4 KiB
HTML
<%page expression_filter="h"/>
|
|
<%!
|
|
from django.utils.translation import ngettext, gettext as _
|
|
from openedx.core.djangolib.markup import HTML
|
|
%>
|
|
|
|
<%namespace name='static' file='static_content.html'/>
|
|
<h3 class="hd hd-3 problem-header" id="${ short_id }-problem-title" aria-describedby="${ id }-problem-progress" tabindex="-1">
|
|
${ problem['name'] }
|
|
</h3>
|
|
|
|
<div class="problem-progress" id="${ id }-problem-progress"></div>
|
|
|
|
<div class="problem">
|
|
${ HTML(problem['html']) }
|
|
<div class="action">
|
|
<input type="hidden" name="problem_id" value="${ problem['name'] }" />
|
|
% if demand_hint_possible:
|
|
<div class="problem-hint">
|
|
<%include file="problem_notifications.html" args="
|
|
notification_name='hint',
|
|
notification_type='problem-hint',
|
|
notification_icon='fa-question',
|
|
notification_message=''"
|
|
/>
|
|
</div>
|
|
% endif
|
|
|
|
<div class="problem-action-buttons-wrapper">
|
|
% if demand_hint_possible:
|
|
<span class="problem-action-button-wrapper">
|
|
<button type="button" class="hint-button problem-action-btn btn-default btn-small" data-value="${_('Hint')}" ${'' if should_enable_next_hint else 'disabled'}>${_('Hint')}</button>
|
|
</span>
|
|
% endif
|
|
% if save_button:
|
|
<span class="problem-action-button-wrapper">
|
|
<button type="button" class="save problem-action-btn btn-default btn-small" data-value="${_('Save')}">
|
|
<span aria-hidden="true">${_('Save')}</span>
|
|
<span class="sr">${_("Save your answer")}</span>
|
|
</button>
|
|
</span>
|
|
% endif
|
|
% if reset_button:
|
|
<span class="problem-action-button-wrapper">
|
|
<button type="button" class="reset problem-action-btn btn-default btn-small" data-value="${_('Reset')}"><span aria-hidden="true">${_('Reset')}</span><span class="sr">${_("Reset your answer")}</span></button>
|
|
</span>
|
|
% endif
|
|
% if answer_available:
|
|
<span class="problem-action-button-wrapper">
|
|
<button type="button" class="show problem-action-btn btn-default btn-small" aria-describedby="${ short_id }-problem-title"><span class="show-label">${_('Show answer')}</span></button>
|
|
</span>
|
|
% endif
|
|
</div>
|
|
<div class="submit-attempt-container">
|
|
<button type="button" class="submit btn-brand" data-submitting="${ submit_button_submitting }" data-value="${ submit_button }" data-should-enable-submit-button="${ should_enable_submit_button }" aria-describedby="submission_feedback_${short_id}" ${'' if should_enable_submit_button else 'disabled'}>
|
|
<span class="submit-label">${ submit_button }</span>
|
|
</button>
|
|
|
|
% if submit_disabled_cta:
|
|
% if submit_disabled_cta.get('event_data'):
|
|
<button class="submit-cta-link-button btn-default btn-small" onclick="emit_event(${submit_disabled_cta['event_data']})">
|
|
${submit_disabled_cta['link_name']}
|
|
</button>
|
|
<span class="submit-cta-description" tabindex="0" role="note" aria-label="description">
|
|
<span data-tooltip="${submit_disabled_cta['description']}" data-tooltip-show-on-click="true"
|
|
class="fa fa-info-circle fa-lg" aria-hidden="true">
|
|
</span>
|
|
</span>
|
|
<span class="sr">(${submit_disabled_cta['description']})</span>
|
|
% else:
|
|
<form class="submit-cta" method="post" action="${submit_disabled_cta['link']}">
|
|
<input type="hidden" id="csrf_token" name="csrfmiddlewaretoken" value="${csrf_token}">
|
|
% for form_name, form_value in submit_disabled_cta['form_values'].items():
|
|
<input type="hidden" name="${form_name}" value="${form_value}">
|
|
% endfor
|
|
<button class="submit-cta-link-button btn-default btn-small">
|
|
${submit_disabled_cta['link_name']}
|
|
</button>
|
|
<span class="submit-cta-description" tabindex="0" role="note" aria-label="description">
|
|
<span data-tooltip="${submit_disabled_cta['description']}" data-tooltip-show-on-click="true"
|
|
class="fa fa-info-circle fa-lg" aria-hidden="true">
|
|
</span>
|
|
</span>
|
|
<span class="sr">(${submit_disabled_cta['description']})</span>
|
|
</form>
|
|
% endif
|
|
% endif
|
|
<div class="submission-feedback ${'cta-enabled' if submit_disabled_cta else ''}" id="submission_feedback_${short_id}">
|
|
## When attempts are not 0, the CTA above will contain a message about the number of used attempts
|
|
% if attempts_allowed and (not submit_disabled_cta or attempts_used == 0):
|
|
${ngettext("You have used {num_used} of {num_total} attempt", "You have used {num_used} of {num_total} attempts", attempts_allowed).format(num_used=attempts_used, num_total=attempts_allowed)}
|
|
% endif
|
|
<span class="sr">${_("Some problems have options such as save, reset, hints, or show answer. These options follow the Submit button.")}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='warning',
|
|
notification_icon='fa-exclamation-circle',
|
|
notification_name='gentle-alert',
|
|
notification_message=''"
|
|
/>
|
|
% if answer_notification_type:
|
|
% if 'correct' == answer_notification_type:
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='success',
|
|
notification_icon='fa-check',
|
|
notification_name='submit',
|
|
is_hidden=False,
|
|
notification_message=answer_notification_message"
|
|
/>
|
|
% endif
|
|
% if 'incorrect' == answer_notification_type:
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='error',
|
|
notification_icon='fa-close',
|
|
notification_name='submit',
|
|
is_hidden=False,
|
|
notification_message=answer_notification_message"
|
|
/>
|
|
% endif
|
|
% if 'partially-correct' == answer_notification_type:
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='success',
|
|
notification_icon='fa-asterisk',
|
|
notification_name='submit',
|
|
is_hidden=False,
|
|
notification_message=answer_notification_message"
|
|
/>
|
|
% endif
|
|
% if 'submitted' == answer_notification_type:
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='general',
|
|
notification_icon='fa-info-circle',
|
|
notification_name='submit',
|
|
is_hidden=False,
|
|
notification_message=answer_notification_message"
|
|
/>
|
|
% endif
|
|
% endif
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='warning',
|
|
notification_icon='fa-save',
|
|
notification_name='save',
|
|
notification_message=save_message,
|
|
is_hidden=not has_saved_answers"
|
|
/>
|
|
<%
|
|
notification_message=_('Answers are displayed within the problem')
|
|
%>
|
|
<%include file="problem_notifications.html" args="
|
|
notification_type='general',
|
|
notification_icon='fa-info-circle',
|
|
notification_name='show-answer',
|
|
notification_message=notification_message,
|
|
is_hidden=True"
|
|
/>
|
|
</div>
|
|
|
|
<script>
|
|
function emit_event(message) {
|
|
parent.postMessage(message, '*');
|
|
}
|
|
</script>
|