From ef5ce4e8f4f353410d0a5f338adb6495f2fd9fd9 Mon Sep 17 00:00:00 2001 From: Tom Giannattasio Date: Wed, 24 Oct 2012 11:48:44 -0400 Subject: [PATCH] fixed policy editing workflow --- cms/static/js/base.js | 32 ++++++++++++++++++++++++++---- cms/static/sass/_subsection.scss | 28 +++++++++++++++++++++++++- cms/templates/edit_subsection.html | 7 ++++++- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 522d0e1b5b..8ad8bb7a8f 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -63,6 +63,9 @@ $(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', '.edit-policy-data', editPolicyMetadata); + $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 +164,40 @@ 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 editPolicyMetadata(e) { + e.preventDefault(); + + var $policyElement = $(this).parents('.policy-list-element'); + $policyElement.data('currentValues', [$policyElement.find('.policy-list-name').val(), $policyElement.find('.policy-list-value').val()]); + $policyElement.addClass('new-policy-list-element').addClass('editing'); + $policyElement.find('.policy-list-name, .policy-list-value').removeAttr('disabled'); } 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.find('.policy-list-value').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) { diff --git a/cms/static/sass/_subsection.scss b/cms/static/sass/_subsection.scss index 5d05c81e96..23dae7e353 100644 --- a/cms/static/sass/_subsection.scss +++ b/cms/static/sass/_subsection.scss @@ -22,12 +22,19 @@ } .policy-list { + .policy-list-name, + .policy-list-value { + 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 +44,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 +76,10 @@ @include white-button; } + .edit-icon { + display: none; + } + .delete-icon { display: none; } diff --git a/cms/templates/edit_subsection.html b/cms/templates/edit_subsection.html index ab715fbe1b..d86f65f9c4 100644 --- a/cms/templates/edit_subsection.html +++ b/cms/templates/edit_subsection.html @@ -36,7 +36,11 @@
    % for policy_name in policy_metadata.keys():
  1. - + + Save + Cancel + +
  2. % endfor @@ -55,6 +59,7 @@ Save Cancel +