diff --git a/cms/static/coffee/src/views/unit.coffee b/cms/static/coffee/src/views/unit.coffee index 3fa43f531c..a0576e9178 100644 --- a/cms/static/coffee/src/views/unit.coffee +++ b/cms/static/coffee/src/views/unit.coffee @@ -236,4 +236,5 @@ class CMS.Views.UnitEdit.SaveDraftButton extends Backbone.View @$el.addClass('disabled') enable: => - @$el.removeClass('disabled') \ No newline at end of file + @$el.removeClass('disabled') + @model.save() \ No newline at end of file diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 84c520a6ac..17a0b33ca3 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -63,6 +63,8 @@ $(document).ready(function() { // add/remove policy metadata button click handlers $('.add-policy-data').bind('click', addPolicyMetadata); $('.remove-policy-data').bind('click', removePolicyMetadata); + $body.on('click', '.policy-list-element .save-button', savePolicyMetadata); + $body.on('click', '.policy-list-element .cancel-button', cancelPolicyMetadata); $('.sync-date').bind('click', syncReleaseDate); @@ -161,19 +163,30 @@ function addPolicyMetadata(e) { newNode.insertBefore('.add-policy-data'); $('.remove-policy-data').bind('click', removePolicyMetadata); newNode.find('.policy-list-name').focus(); - newNode.find('.save-button').bind('click', savePolicyMetadata); - newNode.find('.cancel-button').bind('click', cancelPolicyMetadata); } function savePolicyMetadata(e) { e.preventDefault(); + + var $policyElement = $(this).parents('.policy-list-element'); $('.save-subsection').click(); - $(this).parents('.policy-list-element').removeClass('new-policy-list-element'); + $policyElement.removeClass('new-policy-list-element'); + $policyElement.find('.policy-list-name').attr('disabled', 'disabled'); + $policyElement.removeClass('editing'); } function cancelPolicyMetadata(e) { e.preventDefault(); - $(this).parents('.policy-list-element').remove(); + + var $policyElement = $(this).parents('.policy-list-element'); + if(!$policyElement.hasClass('editing')) { + $policyElement.remove(); + } else { + $policyElement.removeClass('new-policy-list-element'); + $policyElement.find('.policy-list-name').val($policyElement.data('currentValues')[0]); + $policyElement.find('.policy-list-value').val($policyElement.data('currentValues')[1]); + } + $policyElement.removeClass('editing'); } function removePolicyMetadata(e) { @@ -315,6 +328,7 @@ function saveSubsection(e) { 'margin-top': '-10px' }); $changedInput.after($spinner); + $spinner.show(); } var id = $(this).data('id'); diff --git a/cms/static/sass/_subsection.scss b/cms/static/sass/_subsection.scss index 5d05c81e96..0d7d518ffd 100644 --- a/cms/static/sass/_subsection.scss +++ b/cms/static/sass/_subsection.scss @@ -22,12 +22,18 @@ } .policy-list { + input[disabled] { + border: none; + @include box-shadow(none); + } + .policy-list-name { margin-right: 5px; margin-bottom: 10px; } .policy-list-value { + width: 320px; margin-right: 10px; } } @@ -37,11 +43,26 @@ .cancel-button { display: none; } + + .edit-icon { + margin-right: 8px; + } + + &.editing, + &.new-policy-list-element { + .policy-list-name, + .policy-list-value { + border: 1px solid #b0b6c2; + @include linear-gradient(top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .3)); + background-color: #edf1f5; + @include box-shadow(0 1px 2px rgba(0, 0, 0, .1) inset); + } + } } .new-policy-list-element { padding: 10px 10px 0; - margin: 0 -10px; + margin: 0 -10px 10px; border-radius: 3px; background: $mediumGrey; @@ -54,6 +75,10 @@ @include white-button; } + .edit-icon { + display: none; + } + .delete-icon { display: none; } diff --git a/cms/static/sass/_unit.scss b/cms/static/sass/_unit.scss index e15288024f..8bebc335ef 100644 --- a/cms/static/sass/_unit.scss +++ b/cms/static/sass/_unit.scss @@ -326,6 +326,10 @@ display: none; } + #delete-draft { + display: inline-block; + } + .save-button, .preview-button, .publish-button, diff --git a/cms/templates/edit_subsection.html b/cms/templates/edit_subsection.html index ab715fbe1b..b3e4031822 100644 --- a/cms/templates/edit_subsection.html +++ b/cms/templates/edit_subsection.html @@ -36,7 +36,10 @@
    % for policy_name in policy_metadata.keys():
  1. - + + Save + Cancel +
  2. % endfor