From c05c4da9840b909c7317e2dbb3ebbf8d8f13b6ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pracha=C5=99?= Date: Tue, 1 Feb 2011 22:50:18 +0100 Subject: [PATCH 1/4] Do not change table row state when clicked on an anchor or inside a form element in inline editing mode. --- js/functions.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/js/functions.js b/js/functions.js index 542305e32..e445b92c9 100644 --- a/js/functions.js +++ b/js/functions.js @@ -906,10 +906,13 @@ $(document).ready(function() { * next pages reached via AJAX); a tr may have the class noclick to remove * this behavior. */ - $('tr.odd:not(.noclick), tr.even:not(.noclick)').live('click',function() { - var $tr = $(this); - $tr.toggleClass('marked'); - $tr.children().toggleClass('marked'); + $('tr.odd:not(.noclick), tr.even:not(.noclick)').live('click',function(e) { + //do not trigger when clicked on anchor or inside input element (in inline editing mode) with exception of the first checkbox + if (!jQuery(e.target).is('a, a *, :input:not([name^="rows_to_delete"])')) { + var $tr = $(this); + $tr.toggleClass('marked'); + $tr.children().toggleClass('marked'); + } }); /** From 9b4543f2e8950022443575fb4614d6c4d390720b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pracha=C5=99?= Date: Tue, 1 Feb 2011 23:13:10 +0100 Subject: [PATCH 2/4] CSS: Top menu items margins and paddings converted to absolute units to prevent changing outer width on hover. --- themes/darkblue_orange/css/theme_right.css.php | 8 ++++---- themes/original/css/theme_right.css.php | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/themes/darkblue_orange/css/theme_right.css.php b/themes/darkblue_orange/css/theme_right.css.php index e555da9ee..07e786efb 100644 --- a/themes/darkblue_orange/css/theme_right.css.php +++ b/themes/darkblue_orange/css/theme_right.css.php @@ -680,14 +680,14 @@ ul#topmenu li, ul#topmenu2 li { /* default tab styles */ ul#topmenu a, ul#topmenu span { display: block; - margin: 0.2em 0.2em 0 0.2em; - padding: 0.2em 0.2em 0 0.2em; + margin: 2px 2px 0; + padding: 2px 2px 0; white-space: nowrap; } ul#topmenu ul a { margin: 0; - padding-bottom: 0.2em; + padding-bottom: 2px; } ul#topmenu .submenu { @@ -797,7 +797,7 @@ ul#topmenu ul li:first-child a { ul#topmenu > li > a:hover, ul#topmenu > li > .tabactive { margin: 0; - padding: 0.2em 0.4em 0.2em 0.4em; + padding: 2px 4px; text-decoration: none; } diff --git a/themes/original/css/theme_right.css.php b/themes/original/css/theme_right.css.php index bc5f6ee1e..02736c61b 100644 --- a/themes/original/css/theme_right.css.php +++ b/themes/original/css/theme_right.css.php @@ -655,14 +655,14 @@ ul#topmenu li, ul#topmenu2 li { /* default tab styles */ ul#topmenu a, ul#topmenu span { display: block; - margin: 0.2em 0.2em 0 0.2em; - padding: 0.2em 0.2em 0 0.2em; + margin: 2px 2px 0; + padding: 2px 2px 0; white-space: nowrap; } ul#topmenu ul a { margin: 0; - padding-bottom: 0.2em; + padding-bottom: 2px; } ul#topmenu .submenu { @@ -772,7 +772,7 @@ ul#topmenu ul li:first-child a { ul#topmenu > li > a:hover, ul#topmenu > li > .tabactive { margin: 0; - padding: 0.2em 0.4em 0.2em 0.4em; + padding: 2px 4px; text-decoration: none; } From a6f5f95600c1ad0b121de79f0d8791ae1612c2f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pracha=C5=99?= Date: Fri, 4 Feb 2011 02:10:50 +0100 Subject: [PATCH 3/4] Fix ajax dropping multiple column index. --- js/tbl_structure.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/tbl_structure.js b/js/tbl_structure.js index 2720b5104..e7fc1d20b 100644 --- a/js/tbl_structure.js +++ b/js/tbl_structure.js @@ -118,6 +118,13 @@ $(document).ready(function() { * @var curr_row Object containing reference to the current field's row */ var curr_row = $(this).parents('tr'); + /** @var Number of columns in the key */ + var rows = $(this).parents('td').attr('rowspan') || 1; + /** @var Rows that should be hidden */ + var rows_to_hide = curr_row; + for (var i = 1, last_row = curr_row.next(); i < rows; i++, last_row = last_row.next()) { + rows_to_hide = rows_to_hide.add(last_row); + } var question = $(curr_row).children('td').children('.drop_primary_key_index_msg').val(); @@ -128,7 +135,7 @@ $(document).ready(function() { $.get(url, {'is_js_confirmed': 1, 'ajax_request': true}, function(data) { if(data.success == true) { PMA_ajaxShowMessage(data.message); - $(curr_row).hide("medium").remove(); + rows_to_hide.hide("medium").remove(); } else { PMA_ajaxShowMessage(PMA_messages['strErrorProcessingRequest'] + " : " + data.error); From d17b0e157d09c67524114f72ab7c1ff824c336f4 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Fri, 4 Feb 2011 13:05:54 -0500 Subject: [PATCH 4/4] Avoid unneeded DOM traversal Avoid unneeded wrapping of a jQuery object --- js/tbl_structure.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/js/tbl_structure.js b/js/tbl_structure.js index e7fc1d20b..352848cb6 100644 --- a/js/tbl_structure.js +++ b/js/tbl_structure.js @@ -114,28 +114,30 @@ $(document).ready(function() { $('.drop_primary_key_index_anchor').live('click', function(event) { event.preventDefault(); + $anchor = $(this); + /** - * @var curr_row Object containing reference to the current field's row + * @var $curr_row Object containing reference to the current field's row */ - var curr_row = $(this).parents('tr'); + var $curr_row = $anchor.parents('tr'); /** @var Number of columns in the key */ - var rows = $(this).parents('td').attr('rowspan') || 1; + var rows = $anchor.parents('td').attr('rowspan') || 1; /** @var Rows that should be hidden */ - var rows_to_hide = curr_row; - for (var i = 1, last_row = curr_row.next(); i < rows; i++, last_row = last_row.next()) { - rows_to_hide = rows_to_hide.add(last_row); + var $rows_to_hide = $curr_row; + for (var i = 1, $last_row = $curr_row.next(); i < rows; i++, $last_row = $last_row.next()) { + $rows_to_hide = $rows_to_hide.add($last_row); } - var question = $(curr_row).children('td').children('.drop_primary_key_index_msg').val(); + var question = $curr_row.children('td').children('.drop_primary_key_index_msg').val(); - $(this).PMA_confirm(question, $(this).attr('href'), function(url) { + $anchor.PMA_confirm(question, $anchor.attr('href'), function(url) { PMA_ajaxShowMessage(PMA_messages['strDroppingPrimaryKeyIndex']); $.get(url, {'is_js_confirmed': 1, 'ajax_request': true}, function(data) { if(data.success == true) { PMA_ajaxShowMessage(data.message); - rows_to_hide.hide("medium").remove(); + $rows_to_hide.hide("medium").remove(); } else { PMA_ajaxShowMessage(PMA_messages['strErrorProcessingRequest'] + " : " + data.error);