diff --git a/cms/envs/common.py b/cms/envs/common.py index 7190ba9e51..7ea70114c1 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -275,7 +275,7 @@ PIPELINE_JS = { pth.replace(PROJECT_ROOT / 'static/', '') for pth in glob2.glob(PROJECT_ROOT / 'static/coffee/src/**/*.coffee') - ], + ] + ['js/base.js'], 'output_filename': 'js/cms-application.js', }, 'module-js': { diff --git a/cms/static/js/base.js b/cms/static/js/base.js new file mode 100644 index 0000000000..bf8c845f57 --- /dev/null +++ b/cms/static/js/base.js @@ -0,0 +1,169 @@ +var $body; +var $modal; +var $modalCover; +var $newComponentItem; +var $newComponentStep1; +var $newComponentStep2; + +$(document).ready(function() { + $body = $('body'); + $modal = $('.history-modal'); + $modalCover = $('.modal-cover'); + $newComponentItem = $('.new-component-item'); + $newComponentStep1 = $('.new-component-step-1'); + $newComponentStep2 = $('.new-component-step-2'); + $newComponentButton = $('.new-component-button'); + + $('.expand-collapse-icon').bind('click', toggleSubmodules); + $('.visibility-options').bind('change', setVisibility); + + $body.delegate('.components .edit-button', 'click', editComponent); + $body.delegate('.component-editor .save-button, .component-editor .cancel-button', 'click', closeComponentEditor); + + $newComponentButton.bind('click', showNewComponentForm); + $newComponentStep1.find('.new-component-type a').bind('click', showNewComponentProperties); + $newComponentStep2.find('.save-button').bind('click', saveNewComponent); + $newComponentStep2.find('.cancel-button').bind('click', cancelNewComponent); + + $('.unit-history ol a').bind('click', showHistoryModal); + $modal.bind('click', hideHistoryModal); + $modalCover.bind('click', hideHistoryModal); +}); + +function toggleSubmodules(e) { + e.preventDefault(); + $(this).toggleClass('expand').toggleClass('collapse'); + $(this).closest('.branch, .window').toggleClass('collapsed'); +} + +function setVisibility(e) { + $(this).find('.checked').removeClass('checked'); + $(e.target).closest('.option').addClass('checked'); +} + +function editComponent(e) { + e.preventDefault(); + $(this).closest('li').addClass('editing').find('.component-editor').slideDown(150); +} + +function closeComponentEditor(e) { + e.preventDefault(); + $(this).closest('li').removeClass('editing').find('.component-editor').slideUp(150); +} + +function showNewComponentForm(e) { + e.preventDefault(); + $newComponentItem.addClass('adding'); + $(this).slideUp(150); + $newComponentStep1.slideDown(150); +} + +function showNewComponentProperties(e) { + e.preventDefault(); + + var displayName; + var componentSource; + var selectionRange; + var $renderedComponent; + + switch($(this).attr('data-type')) { + case 'video': + displayName = 'Video'; + componentSource = '