Commit 153d5d69 by chrisndodge

Merge pull request #814 from MITx/feature/cale/cas-reorder-unit

Enable reordering on the unit page
parents 2412885e bd7ea442
...@@ -41,6 +41,7 @@ class CMS.Views.ModuleEdit extends Backbone.View ...@@ -41,6 +41,7 @@ class CMS.Views.ModuleEdit extends Backbone.View
template: template template: template
}, (data) => }, (data) =>
@model.set(id: data.id) @model.set(id: data.id)
@$el.data('id', data.id)
@render() @render()
) )
......
class CMS.Views.UnitEdit extends Backbone.View
events:
'click .new-component .new-component-type a': 'showComponentTemplates'
'click .new-component .cancel-button': 'closeNewComponent'
'click .new-component-templates .new-component-template a': 'saveNewComponent'
'click .new-component-templates .cancel-button': 'closeNewComponent'
'click .new-component-button': 'showNewComponentForm'
'click .unit-actions .save-button': 'save'
initialize: =>
@$newComponentItem = @$('.new-component-item')
@$newComponentTypePicker = @$('.new-component')
@$newComponentTemplatePickers = @$('.new-component-templates')
@$newComponentButton = @$('.new-component-button')
@$('.components').sortable(
handle: '.drag-handle'
update: (event, ui) => @saveOrder()
)
@$('.component').each((idx, element) ->
new CMS.Views.ModuleEdit(
el: element,
model: new CMS.Models.Module(
id: $(element).data('id'),
)
)
)
@model.components = @components()
showNewComponentForm: (event) =>
event.preventDefault()
@$newComponentItem.addClass('adding')
$(event.target).slideUp(150)
@$newComponentTypePicker.slideDown(250)
showComponentTemplates: (event) =>
event.preventDefault()
type = $(event.currentTarget).data('type')
@$newComponentTypePicker.slideUp(250)
@$(".new-component-#{type}").slideDown(250)
closeNewComponent: (event) =>
event.preventDefault()
@$newComponentTypePicker.slideUp(250)
@$newComponentTemplatePickers.slideUp(250)
@$newComponentButton.slideDown(250)
@$newComponentItem.removeClass('adding')
@$newComponentItem.find('.rendered-component').remove()
saveNewComponent: (event) =>
event.preventDefault()
editor = new CMS.Views.ModuleEdit(
model: new CMS.Models.Module()
)
@$newComponentItem.before(editor.$el)
editor.cloneTemplate($(event.currentTarget).data('location'))
@closeNewComponent(event)
components: => @$('.component').map((idx, el) -> $(el).data('id')).get()
saveOrder: =>
@model.save(
children: @components()
)
...@@ -14,24 +14,9 @@ $(document).ready(function() { ...@@ -14,24 +14,9 @@ $(document).ready(function() {
$newComponentTemplatePickers = $('.new-component-templates'); $newComponentTemplatePickers = $('.new-component-templates');
$newComponentButton = $('.new-component-button'); $newComponentButton = $('.new-component-button');
$('li.component').each(function(idx, element) {
new CMS.Views.ModuleEdit({
el: element,
model: new CMS.Models.Module({
id: $(element).data('id'),
})
});
});
$('.expand-collapse-icon').bind('click', toggleSubmodules); $('.expand-collapse-icon').bind('click', toggleSubmodules);
$('.visibility-options').bind('change', setVisibility); $('.visibility-options').bind('change', setVisibility);
$newComponentButton.bind('click', showNewComponentForm);
$newComponentTypePicker.find('.new-component-type a').bind('click', showComponentTemplates);
$newComponentTypePicker.find('.cancel-button').bind('click', closeNewComponent);
$newComponentTemplatePickers.find('.new-component-template a').bind('click', saveNewComponent);
$newComponentTemplatePickers.find('.cancel-button').bind('click', closeNewComponent);
$('.unit-history ol a').bind('click', showHistoryModal); $('.unit-history ol a').bind('click', showHistoryModal);
$modal.bind('click', hideHistoryModal); $modal.bind('click', hideHistoryModal);
$modalCover.bind('click', hideHistoryModal); $modalCover.bind('click', hideHistoryModal);
...@@ -58,44 +43,6 @@ function closeComponentEditor(e) { ...@@ -58,44 +43,6 @@ function closeComponentEditor(e) {
$(this).closest('.xmodule_edit').removeClass('editing').find('.component-editor').slideUp(150); $(this).closest('.xmodule_edit').removeClass('editing').find('.component-editor').slideUp(150);
} }
function showNewComponentForm(e) {
e.preventDefault();
$newComponentItem.addClass('adding');
$(this).slideUp(150);
$newComponentTypePicker.slideDown(250);
}
function showComponentTemplates(e) {
e.preventDefault();
var type = $(this).data('type');
$newComponentTypePicker.slideUp(250);
$('.new-component-'+type).slideDown(250);
}
function closeNewComponent(e) {
e.preventDefault();
$newComponentTypePicker.slideUp(250);
$newComponentTemplatePickers.slideUp(250);
$newComponentButton.slideDown(250);
$newComponentItem.removeClass('adding');
$newComponentItem.find('.rendered-component').remove();
}
function saveNewComponent(e) {
e.preventDefault();
editor = new CMS.Views.ModuleEdit({
model: new CMS.Models.Module()
})
$newComponentItem.before(editor.$el)
editor.cloneTemplate($(this).data('location'))
closeNewComponent(e);
}
function showHistoryModal(e) { function showHistoryModal(e) {
e.preventDefault(); e.preventDefault();
......
...@@ -38,6 +38,8 @@ ...@@ -38,6 +38,8 @@
<%block name="content"></%block> <%block name="content"></%block>
<%block name="jsextra"></%block>
</body> </body>
</html> </html>
......
...@@ -3,7 +3,7 @@ ${preview} ...@@ -3,7 +3,7 @@ ${preview}
<a href="#" class="edit-button"><span class="edit-icon white"></span>Edit</a> <a href="#" class="edit-button"><span class="edit-icon white"></span>Edit</a>
<a href="#" class="delete-button wip"><span class="delete-icon white"></span>Delete</a> <a href="#" class="delete-button wip"><span class="delete-icon white"></span>Delete</a>
</div> </div>
<a href="#" class="drag-handle wip"></a> <a href="#" class="drag-handle"></a>
<div class="component-editor"> <div class="component-editor">
<div class="module-editor"> <div class="module-editor">
${editor} ${editor}
......
...@@ -2,6 +2,16 @@ ...@@ -2,6 +2,16 @@
<%! from django.core.urlresolvers import reverse %> <%! from django.core.urlresolvers import reverse %>
<%block name="bodyclass">unit</%block> <%block name="bodyclass">unit</%block>
<%block name="title">CMS Unit</%block> <%block name="title">CMS Unit</%block>
<%block name="jsextra">
<script type='text/javascript'>
new CMS.Views.UnitEdit({
el: $('.main-wrapper'),
model: new CMS.Models.Module({
id: '${unit.location.url()}'
})
});
</script>
</%block>
<%block name="content"> <%block name="content">
<div class="main-wrapper"> <div class="main-wrapper">
<div class="inner-wrapper"> <div class="inner-wrapper">
...@@ -49,8 +59,8 @@ ...@@ -49,8 +59,8 @@
</article> </article>
</div> </div>
<div class="sidebar"> <div class="sidebar wip-box">
<div class="unit-properties window wip-box"> <div class="unit-properties window">
<h4>Unit Properties</h4> <h4>Unit Properties</h4>
<div class="window-contents"> <div class="window-contents">
<div class="due-date-input row"> <div class="due-date-input row">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment