]> source.dussan.org Git - redmine.git/commitdiff
AJAX call on the issue form resets data entered during the call (#14621).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 29 Sep 2013 10:29:29 +0000 (10:29 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 29 Sep 2013 10:29:29 +0000 (10:29 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12166 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/issues/update_form.js.erb
public/javascripts/application.js

index 46fc9722e47d4d9ce42ffde30a84df6fcbef189b..8c94aecebdfa5dd0adf3e4c00dec163841f66ea1 100644 (file)
@@ -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();
index 3a1b9cb79f7d6ae0898b6473b1751c5cd6a7b4c9..32202839d42d03d481b9fe7752283237dd5417de 100644 (file)
@@ -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,