Instead, we use XModule field default values when creating an empty XModule. Driven by this use case, we also allow for XModules to be created in memory without being persisted to the database at all. This necessitates a change to the Modulestore api, replacing clone_item with create_draft and save_xmodule.
46 lines
1.5 KiB
HTML
46 lines
1.5 KiB
HTML
<%! from django.core.urlresolvers import reverse %>
|
|
<%! from contentstore.utils import compute_unit_state %>
|
|
|
|
<!--
|
|
This def will enumerate through a passed in subsection and list all of the units
|
|
-->
|
|
<%def name="enum_units(subsection, actions=True, selected=None, sortable=True, subsection_units=None)">
|
|
<ol ${'class="sortable-unit-list"' if sortable else ''} data-subsection-id="${subsection.location}">
|
|
<%
|
|
if subsection_units is None:
|
|
subsection_units = subsection.get_children()
|
|
%>
|
|
% for unit in subsection_units:
|
|
<li class="leaf unit" data-id="${unit.location}">
|
|
<%
|
|
unit_state = compute_unit_state(unit)
|
|
if unit.location == selected:
|
|
selected_class = 'editing'
|
|
else:
|
|
selected_class = ''
|
|
%>
|
|
<div class="section-item ${selected_class}">
|
|
<a href="${reverse('edit_unit', args=[unit.location])}" class="${unit_state}-item">
|
|
<span class="${unit.category}-icon"></span>
|
|
<span class="unit-name">${unit.display_name_with_default}</span>
|
|
</a>
|
|
% if actions:
|
|
<div class="item-actions">
|
|
<a href="#" data-tooltip="Delete this unit" class="delete-button" data-id="${unit.location}"><span class="delete-icon"></span></a>
|
|
<a href="#" data-tooltip="Drag to sort" class="drag-handle"></a>
|
|
</div>
|
|
% endif
|
|
</div>
|
|
</li>
|
|
% endfor
|
|
<li>
|
|
<a href="#" class="new-unit-item" data-category="${new_unit_category}" data-parent="${subsection.location}">
|
|
<span class="new-unit-icon"></span>New Unit
|
|
</a>
|
|
</li>
|
|
</ol>
|
|
</%def>
|
|
|
|
|
|
|