From 8f08c0283d5cecf338a6747ab832330cdbd2ecef Mon Sep 17 00:00:00 2001 From: Aris Feryanto Date: Fri, 29 Jul 2011 14:41:28 +0800 Subject: [PATCH] Grid edit: correctly update the WHERE clause --- js/makegrid.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/js/makegrid.js b/js/makegrid.js index cc72920468..3756f777ad 100644 --- a/js/makegrid.js +++ b/js/makegrid.js @@ -880,7 +880,7 @@ $('.to_be_saved').parents('tr').each(function() { var where_clause = $(this).find('.where_clause').val(); full_where_clause.push(unescape(where_clause.replace(/[+]/g, ' '))); - var new_clause = ''; + var new_clause = where_clause; /** * multi edit variables, for current row @@ -939,17 +939,13 @@ $.extend(relation_fields[cell_index], this_field_params); } if (where_clause.indexOf(field_name) > -1) { - new_clause += '`' + window.parent.table + '`.' + '`' + field_name + "` = '" + this_field_params[field_name].replace(/'/g,"''") + "'" + ' AND '; + var old_sub_clause_regex = new RegExp(PMA_urlencode('`' + window.parent.table + '`.' + '`' + field_name + '`') + '[+]%3D[+][^+]*'); + var new_sub_clause = '`' + window.parent.table + '`.' + '`' + field_name + "` = '" + this_field_params[field_name].replace(/'/g,"''") + "'"; + new_clause = new_clause.replace(old_sub_clause_regex, new_sub_clause); } } - /* - * update the where_clause, remove the last appended ' AND ' - * */ - - // prepare and save new_clause - new_clause = new_clause.substring(0, new_clause.length-5); - new_clause = PMA_urlencode(new_clause); + // save new_clause $this_field.parent('tr').data('new_clause', new_clause); }); // end of loop for every edited cells in a row @@ -1011,7 +1007,13 @@ $('.to_be_saved').each(function() { var new_clause = $(this).parent('tr').data('new_clause'); if (new_clause != '') { - $(this).parent('tr').find('.where_clause').attr('value', new_clause); + var $where_clause = $(this).parent('tr').find('.where_clause'); + var old_clause = $where_clause.attr('value'); + $where_clause.attr('value', new_clause); + // update Edit, Copy, and Delete links also + $(this).parent('tr').find('a').each(function() { + $(this).attr('href', $(this).attr('href').replace(old_clause, new_clause)); + }); } }); // remove possible previous feedback message