212 lines
9.6 KiB
HTML
212 lines
9.6 KiB
HTML
<%inherit file="base.html" />
|
|
<%!
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext as _
|
|
from xmodule.modulestore.django import loc_mapper
|
|
%>
|
|
<%namespace name="units" file="widgets/units.html" />
|
|
<%block name="title">${_("Individual Unit")}</%block>
|
|
<%block name="bodyclass">is-signedin course unit view-unit</%block>
|
|
|
|
<%block name="jsextra">
|
|
<script type='text/javascript'>
|
|
require(["domReady!", "jquery", "js/models/module_info", "coffee/src/views/unit", "jquery.ui"],
|
|
function(doc, $, ModuleModel, UnitEditView, ui) {
|
|
window.unit_location_analytics = '${unit_locator}';
|
|
|
|
// tabs
|
|
$('.tab-group').tabs();
|
|
|
|
new UnitEditView({
|
|
el: $('.main-wrapper'),
|
|
model: new ModuleModel({
|
|
id: '${unit_locator}',
|
|
state: '${unit_state}'
|
|
})
|
|
});
|
|
|
|
$('.new-component-template').each(function(){
|
|
$emptyEditor = $(this).find('.empty');
|
|
$(this).prepend($emptyEditor);
|
|
});
|
|
});
|
|
</script>
|
|
|
|
</%block>
|
|
<%block name="content">
|
|
<div class="main-wrapper edit-state-${unit_state}" data-locator="${unit_locator}">
|
|
<div class="inner-wrapper">
|
|
<div class="alert editing-draft-alert">
|
|
<p class="alert-message"><strong>${_("You are editing a draft.")}</strong>
|
|
% if published_date:
|
|
${_("This unit was originally published on {date}.").format(date=published_date)}
|
|
% endif
|
|
</p>
|
|
<a href="${published_preview_link}" target="_blank" class="alert-action secondary">${_("View the Live Version")}</a>
|
|
</div>
|
|
<div class="main-column">
|
|
<article class="unit-body window">
|
|
<p class="unit-name-input"><label for="unit-display-name-input">${_("Display Name:")}</label><input type="text" value="${unit.display_name_with_default | h}" id="unit-display-name-input" class="unit-display-name-input" /></p>
|
|
<ol class="components">
|
|
% for locator in components:
|
|
<li class="component" data-locator="${locator}"/>
|
|
% endfor
|
|
<li class="new-component-item adding">
|
|
<div class="new-component">
|
|
<h5>${_("Add New Component")}</h5>
|
|
<ul class="new-component-type">
|
|
% for type, templates in sorted(component_templates.items()):
|
|
<li>
|
|
% if type == 'advanced' or len(templates) > 1:
|
|
<a href="#" class="multiple-templates" data-type="${type}">
|
|
% else:
|
|
% for __, category, __, __ in templates:
|
|
<a href="#" class="single-template" data-type="${type}" data-category="${category}">
|
|
% endfor
|
|
% endif
|
|
<span class="large-template-icon large-${type}-icon"></span>
|
|
<span class="name">${type}</span>
|
|
</a>
|
|
</li>
|
|
% endfor
|
|
</ul>
|
|
</div>
|
|
% for type, templates in sorted(component_templates.items()):
|
|
% if len(templates) > 1 or type == 'advanced':
|
|
<div class="new-component-templates new-component-${type}">
|
|
% if type == "problem":
|
|
<div class="tab-group tabs">
|
|
<ul class="problem-type-tabs nav-tabs">
|
|
<li class="current">
|
|
<a class="link-tab" href="#tab1">${_("Common Problem Types")}</a>
|
|
</li>
|
|
<li>
|
|
<a class="link-tab" href="#tab2">${_("Advanced")}</a>
|
|
</li>
|
|
</ul>
|
|
% endif
|
|
<div class="tab current" id="tab1">
|
|
<ul class="new-component-template">
|
|
% for name, category, has_markdown, boilerplate_name in sorted(templates):
|
|
% if has_markdown or type != "problem":
|
|
% if boilerplate_name is None:
|
|
<li class="editor-md empty">
|
|
<a href="#" data-category="${category}">
|
|
<span class="name">${name}</span>
|
|
</a>
|
|
</li>
|
|
|
|
% else:
|
|
<li class="editor-md">
|
|
<a href="#" data-category="${category}"
|
|
data-boilerplate="${boilerplate_name}">
|
|
<span class="name">${name}</span>
|
|
</a>
|
|
</li>
|
|
% endif
|
|
% endif
|
|
|
|
%endfor
|
|
</ul>
|
|
</div>
|
|
% if type == "problem":
|
|
<div class="tab" id="tab2">
|
|
<ul class="new-component-template">
|
|
% for name, category, has_markdown, boilerplate_name in sorted(templates):
|
|
% if not has_markdown:
|
|
<li class="editor-manual">
|
|
<a href="#" data-category="${category}"
|
|
data-boilerplate="${boilerplate_name}">
|
|
<span class="name">${name}</span>
|
|
</a>
|
|
</li>
|
|
% endif
|
|
% endfor
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
% endif
|
|
<a href="#" class="cancel-button">Cancel</a>
|
|
</div>
|
|
% endif
|
|
% endfor
|
|
</li>
|
|
</ol>
|
|
</article>
|
|
</div>
|
|
|
|
<%
|
|
ctx_loc = context_course.location
|
|
index_url = loc_mapper().translate_location(ctx_loc.course_id, ctx_loc, False, True).url_reverse('course')
|
|
subsection_url = loc_mapper().translate_location(
|
|
ctx_loc.course_id, subsection.location, False, True
|
|
).url_reverse('subsection')
|
|
%>
|
|
<div class="sidebar">
|
|
<div class="unit-settings window">
|
|
<h4 class="header">${_("Unit Settings")}</h4>
|
|
<div class="window-contents">
|
|
<div class="row visibility">
|
|
<label for="visibility-select" class="inline-label">${_("Visibility:")}</label>
|
|
<select name="visibility-select" id="visibility-select" class='visibility-select'>
|
|
<option value="public">${_("Public")}</option>
|
|
<option value="private">${_("Private")}</option>
|
|
</select>
|
|
</div>
|
|
<div class="row published-alert">
|
|
<p class="edit-draft-message">${_('This unit has been published. To make changes, you must {link_start}edit a draft{link_end}.').format(link_start='<a href="#" class="create-draft">', link_end='</a>')}</p>
|
|
<p class="publish-draft-message">${_('This is a draft of the published unit. To update the live version, you must {link_start}replace it with this draft{link_end}.').format(link_start='<a href="#" class="publish-draft">', link_end='</a>')}</p>
|
|
</div>
|
|
<div class="row status">
|
|
<p>${_("This unit is scheduled to be released to <strong>students</strong>")}
|
|
% if release_date is not None:
|
|
${_(u"on {date}").format(date=u"<strong>{}</strong>".format(release_date))}
|
|
% endif
|
|
${_("with the subsection {link_start}{name}{link_end}").format(
|
|
name=subsection.display_name_with_default,
|
|
link_start='<a href="{url}">'.format(url=subsection_url),
|
|
link_end='</a>',
|
|
)}
|
|
</p>
|
|
</div>
|
|
<div class="row unit-actions">
|
|
<a href="#" class="delete-draft delete-button">${_("Delete Draft")}</a>
|
|
<a href="${draft_preview_link}" target="_blank" class="preview-button">${_("Preview")}</a>
|
|
<a href="${published_preview_link}" target="_blank" class="view-button">${_("View Live")}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="window unit-location">
|
|
<h4 class="header">${_("Unit Location")}</h4>
|
|
<div class="window-contents">
|
|
<div class="row wrapper-unit-id">
|
|
<p class="unit-id">
|
|
<label for="unit-location-id-input">${_("Unit Identifier:")}</label>
|
|
<input type="text" class="url value" id="unit-location-id-input" value="${unit.location.name}" readonly />
|
|
</p>
|
|
</div>
|
|
<div class="unit-tree-location">
|
|
<ol>
|
|
<li class="section">
|
|
<a href="${index_url}" class="section-item section-name">
|
|
<span class="section-name">${section.display_name_with_default}</span>
|
|
</a>
|
|
<ol>
|
|
<li class="subsection">
|
|
<a href="${subsection_url}" class="section-item">
|
|
<span class="subsection-name"><span class="subsection-name-value">${subsection.display_name_with_default}</span></span>
|
|
</a>
|
|
${units.enum_units(subsection, actions=False, selected=unit.location)}
|
|
</li>
|
|
</ol>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</%block>
|