diff --git a/app/views/issues/update_form.js.erb b/app/views/issues/update_form.js.erb index 46fc972..8c94aec 100644 --- a/app/views/issues/update_form.js.erb +++ b/app/views/issues/update_form.js.erb @@ -1,4 +1,4 @@ -$('#all_attributes').html('<%= escape_javascript(render :partial => 'form') %>'); +replaceIssueFormWith('<%= escape_javascript(render :partial => 'form') %>'); <% if User.current.allowed_to?(:log_time, @issue.project) %> $('#log_time').show(); diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 3a1b9cb..3220283 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -444,8 +444,10 @@ function randomKey(size) { return key; } -// Can't use Rails' remote select because we need the form data function updateIssueFrom(url) { + $('#all_attributes input, #all_attributes textarea, #all_attributes select').each(function(){ + $(this).data('valuebeforeupdate', $(this).val()); + }); $.ajax({ url: url, type: 'post', @@ -453,6 +455,21 @@ function updateIssueFrom(url) { }); } +function replaceIssueFormWith(html){ + var replacement = $(html); + $('#all_attributes input, #all_attributes textarea, #all_attributes select').each(function(){ + var object_id = $(this).attr('id'); + if (object_id && $(this).data('valuebeforeupdate')!=$(this).val()) { + replacement.find('#'+object_id).val($(this).val()); + } + }); + $('#all_attributes').empty(); + $('#all_attributes').prepend(replacement); + if (focus) { + $('#'+focus).focus(); + } +} + function updateBulkEditFrom(url) { $.ajax({ url: url,