diff --git a/db_sql.php b/db_sql.php index 67bbbb59d6..987dbaff5f 100644 --- a/db_sql.php +++ b/db_sql.php @@ -19,6 +19,7 @@ $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('functions.js'); $scripts->addFile('makegrid.js'); +$scripts->addFile('jquery/jquery.uitablefilter.js'); $scripts->addFile('sql.js'); require 'libraries/db_common.inc.php'; diff --git a/js/db_search.js b/js/db_search.js index a25b8296d2..3562b1345f 100644 --- a/js/db_search.js +++ b/js/db_search.js @@ -44,7 +44,7 @@ function loadResult(result_path, table_name, link) /** Load the browse results to the page */ $("#table-info").show(); $('#table-link').attr({"href" : 'sql.php' + link }).text(table_name); - var url = result_path + "#sqlqueryresults"; + var url = result_path + "#searchresults"; $.get(url, {'ajax_request': true, 'is_js_confirmed': true}, function (data) { if (typeof data !== 'undefined' && data.success) { $('#browse-results').html(data.message); @@ -53,7 +53,9 @@ function loadResult(result_path, table_name, link) scrollTop: $("#browse-results").offset().top }, 1000); PMA_ajaxRemoveMessage($msg); - PMA_makegrid($('#table_results')[0], true, true, true, true); + $('.table_results').each(function () { + PMA_makegrid(this, true, true, true, true); + }) $('#browse-results').show(); } else { PMA_ajaxShowMessage(data.error, false); @@ -82,7 +84,7 @@ function deleteResult(result_path, msg) var $msg = PMA_ajaxShowMessage(PMA_messages.strDeleting, false); /** Load the deleted option to the page*/ $('#sqlqueryform').html(''); - var url = result_path + "#result_query, #sqlqueryform"; + var url = result_path; $.get(url, {'ajax_request': true, 'is_js_confirmed': true}, function (data) { if (typeof data !== 'undefined' && data.success) { @@ -228,7 +230,7 @@ AJAX.registerOnload('db_search.js', function () { .show(); } else { // error message (zero rows) - $("#sqlqueryresults").html(data.error); + $("#searchresults").html(data.error).show(); } PMA_ajaxRemoveMessage($msgbox); diff --git a/js/functions.js b/js/functions.js index b5b5397cd6..5ec3ab83ef 100644 --- a/js/functions.js +++ b/js/functions.js @@ -2698,11 +2698,11 @@ AJAX.registerOnload('functions.js', function () { **/ $("#tbl_maintenance li a.maintain_action.ajax").live('click', function (event) { event.preventDefault(); - if ($("#sqlqueryresults").length !== 0) { - $("#sqlqueryresults").remove(); + if ($(".sqlqueryresults").length !== 0) { + $(".sqlqueryresults").remove(); } - if ($("#result_query").length !== 0) { - $("#result_query").remove(); + if ($(".result_query").length !== 0) { + $(".result_query").remove(); } //variables which stores the common attributes $.post($(this).attr('href'), { ajax_request: 1 }, function (data) { @@ -2712,20 +2712,20 @@ AJAX.registerOnload('functions.js', function () { var $temp_div; if (typeof data !== 'undefined' && data.success === true && data.sql_query !== undefined) { PMA_ajaxShowMessage(data.message); - $("
").prependTo("#page_content"); - $("#sqlqueryresults").html(data.sql_query); + $("").prependTo("#page_content"); + $(".sqlqueryresults").html(data.sql_query); PMA_highlightSQL($('#page_content')); scrollToTop(); } else if (typeof data !== 'undefined' && data.success === true) { var $temp_div = $(""); $temp_div.html(data.message); - var $success = $temp_div.find("#result_query .success"); + var $success = $temp_div.find(".result_query .success"); PMA_ajaxShowMessage($success); - $("").prependTo("#page_content"); - $("#sqlqueryresults").html(data.message); + $("").prependTo("#page_content"); + $(".sqlqueryresults").html(data.message); PMA_highlightSQL($('#page_content')); PMA_init_slider(); - $("#sqlqueryresults").children("fieldset,br").remove(); + $(".sqlqueryresults").children("fieldset,br").remove(); scrollToTop(); } else { $temp_div = $(""); @@ -3411,22 +3411,22 @@ function indexEditorDialog(url, title, callback_success, callback_failure) PMA_prepareForAjaxRequest($form); //User wants to submit the form $.post($form.attr('action'), $form.serialize() + "&do_save_data=1", function (data) { - if ($("#sqlqueryresults").length !== 0) { - $("#sqlqueryresults").remove(); + if ($(".sqlqueryresults").length !== 0) { + $(".sqlqueryresults").remove(); } if (typeof data !== 'undefined' && data.success === true) { PMA_ajaxShowMessage(data.message); - if ($('#result_query').length) { - $('#result_query').remove(); + if ($('.result_query').length) { + $('.result_query').remove(); } if (data.sql_query) { - $('') + $('') .html(data.sql_query) .prependTo('#page_content'); PMA_highlightSQL($('#page_content')); } - $("#result_query .notice").remove(); - $("#result_query").prepend(data.message); + $(".result_query .notice").remove(); + $(".result_query").prepend(data.message); /*Reload the field form*/ $("#table_index").remove(); var $temp_div = $("').parent().html(); // sqlOuter and tools will not be present if 'Show SQL queries' configuration is off if (typeof sqlOuter != 'undefined' && typeof tools != 'undefined') { + $existing_query = $(g.o).find('.result_query'); // If two query box exists update query in second else add a second box - if ($('#result_query').find('div.sqlOuter').length > 1) { - $('#result_query').children(":nth-child(4)").remove(); - $('#result_query').children(":nth-child(4)").remove(); - $('#result_query').append(sqlOuter + tools); + if ($existing_query.find('div.sqlOuter').length > 1) { + $existing_query.children(":nth-child(4)").remove(); + $existing_query.children(":nth-child(4)").remove(); + $existing_query.append(sqlOuter + tools); } else { - $('#result_query').append(sqlOuter + tools); + $existing_query.append(sqlOuter + tools); } - PMA_highlightSQL($('#result_query')); + PMA_highlightSQL($existing_query); } } // hide and/or update the successfully saved cells g.hideEditCell(true, data); // remove the "Save edited cells" button - $('div.save_edited').hide(); + $(g.o).find('div.save_edited').hide(); // update saved fields $(g.t).find('.to_be_saved') .removeClass('to_be_saved') @@ -1355,7 +1352,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi * @var field_name String containing the name of this field. * @see getFieldName() */ - var field_name = getFieldName($this_field); + var field_name = getFieldName($(g.t), $this_field); /** * @var this_field_params Array temporary storage for the name/value of current field @@ -1409,7 +1406,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi $(g.currentEditCell).addClass('to_be_saved') .data('value', this_field_params[field_name]); if (g.saveCellsAtOnce) { - $('div.save_edited').show(); + $(g.o).find('div.save_edited').show(); } g.isCellEdited = true; } @@ -1485,7 +1482,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi var $firstRowCols = $(g.t).find('tr:first th.draggable'); // initialize column order - $col_order = $('#col_order'); // check if column order is passed from PHP + $col_order = $(g.o).find('.col_order'); // check if column order is passed from PHP if ($col_order.length > 0) { g.colOrder = $col_order.val().split(','); for (var i = 0; i < g.colOrder.length; i++) { @@ -1499,9 +1496,9 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } // register events - $(t).find('th.draggable') + $(g.t).find('th.draggable') .mousedown(function (e) { - $('#sqlqueryresults').addClass("turnOffSelect"); + $(g.o).addClass("turnOffSelect"); if (g.visibleHeadersCount > 1) { g.dragStartReorder(e, this); } @@ -1536,12 +1533,12 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi }) .find("input").focus().select(); }); - $(t).find('th.draggable a') + $(g.t).find('th.draggable a') .dblclick(function (e) { e.stopPropagation(); }); // restore column order when the restore button is clicked - $('div.restore_column').click(function () { + $(g.o).find('div.restore_column').click(function () { g.restoreColOrder(); }); @@ -1550,7 +1547,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi $(g.gDiv).append(g.cCpy); // prevent default "dragstart" event when dragging a link - $(t).find('th a').bind('dragstart', function () { + $(g.t).find('th a').bind('dragstart', function () { return false; }); @@ -1579,7 +1576,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi var $firstRowCols = $(g.t).find('tr:first th.draggable'); // initialize column visibility - var $col_visib = $('#col_visib'); // check if column visibility is passed from PHP + var $col_visib = $(g.o).find('.col_visib'); // check if column visibility is passed from PHP if ($col_visib.length > 0) { g.colVisib = $col_visib.val().split(','); for (var i = 0; i < g.colVisib.length; i++) { @@ -1655,7 +1652,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } // hide column visibility list if we move outside the list - $(t).find('td, th.draggable').mouseenter(function () { + $(g.t).find('td, th.draggable').mouseenter(function () { g.hideColList(); }); @@ -1704,11 +1701,11 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi g.showDataRowLinkText = PMA_messages.strShowDataRowLink; // initialize cell editing configuration - g.saveCellsAtOnce = $('#save_cells_at_once').val(); + g.saveCellsAtOnce = $(g.o).find('.save_cells_at_once').val(); g.maxTruncatedLen = PMA_commonParams.get('LimitChars'); // register events - $(t).find('td.data.click1') + $(g.t).find('td.data.click1') .click(function (e) { startGridEditing(e, this); // prevent default action when clicking on "link" in a table @@ -1717,7 +1714,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } }); - $(t).find('td.data.click2') + $(g.t).find('td.data.click2') .click(function (e) { $cell = $(this); // In the case of relational link, We want single click on the link @@ -1807,7 +1804,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi g.hideEditCell(true); } }); - $('div.save_edited').click(function () { + $(g.o).find('div.save_edited').click(function () { g.hideEditCell(); g.postEditedCell(); }); @@ -1846,6 +1843,9 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi // initialize the table variable g.t = t; + // enclosing .sqlqueryresults div + g.o = $(t).parents('.sqlqueryresults'); + // get data columns in the first row of the table var $firstRowCols = $(t).find('tr:first th.draggable'); @@ -1860,8 +1860,8 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } // assign table create time - // #table_create_time will only available if we are in "Browse" tab - g.tableCreateTime = $('#table_create_time').val(); + // table_create_time will only available if we are in "Browse" tab + g.tableCreateTime = $(t).find('.table_create_time').val(); // assign the hints g.sortHint = PMA_messages.strSortHint; @@ -1870,7 +1870,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi g.copyHint = PMA_messages.strColNameCopyHint; // assign common hidden inputs - var $common_hidden_inputs = $('div.common_hidden_inputs'); + var $common_hidden_inputs = $(g.o).find('div.common_hidden_inputs'); g.token = $common_hidden_inputs.find('input[name=token]').val(); g.server = $common_hidden_inputs.find('input[name=server]').val(); g.db = $common_hidden_inputs.find('input[name=db]').val(); @@ -1895,7 +1895,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi g.initColResize(); } if (enableReorder && - $('table.navigation').length > 0) // disable reordering for result from EXPLAIN or SHOW syntax, which do not have a table navigation panel + $(g.o).find('table.navigation').length > 0) // disable reordering for result from EXPLAIN or SHOW syntax, which do not have a table navigation panel { g.initColReorder(); } @@ -1938,7 +1938,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi g.dragMove(e); }); $(document).mouseup(function (e) { - $('#sqlqueryresults').removeClass("turnOffSelect"); + $(g.o).removeClass("turnOffSelect"); g.dragEnd(e); }); } diff --git a/js/navigation.js b/js/navigation.js index a72647dc7e..ad530c0fa5 100644 --- a/js/navigation.js +++ b/js/navigation.js @@ -993,8 +993,8 @@ var ResizeHandler = function () { event.preventDefault(); var pos = event.data.resize_handler.getPos(event); event.data.resize_handler.setWidth(pos); - if($('#sticky_columns').length !== 0) { - handleStickyColumns(); + if ($('.sticky_columns').length !== 0) { + handleAllStickyColumns(); } }; /** diff --git a/js/normalization.js b/js/normalization.js index d30b4232d4..e34ab284c4 100644 --- a/js/normalization.js +++ b/js/normalization.js @@ -653,8 +653,8 @@ AJAX.registerOnload('normalization.js', function() { var title = PMA_messages.strAddPrimaryKey; indexEditorDialog(url, title, function(){ //on success - $("#sqlqueryresults").remove(); - $('#result_query').remove(); + $(".sqlqueryresults").remove(); + $('.result_query').remove(); $('.tblFooters').html(''); goToStep2('goToStep3'); }); diff --git a/js/sql.js b/js/sql.js index ae969f0b2b..d0060909f1 100644 --- a/js/sql.js +++ b/js/sql.js @@ -40,23 +40,24 @@ function PMA_urlencode(str) * Get the field name for the current field. Required to construct the query * for grid editing * - * @param $this_field jQuery object that points to the current field's tr + * @param $table_results enclosing results table + * @param $this_field jQuery object that points to the current field's tr */ -function getFieldName($this_field) +function getFieldName($table_results, $this_field) { var this_field_index = $this_field.index(); // ltr or rtl direction does not impact how the DOM was generated // check if the action column in the left exist - var left_action_exist = !$('#table_results').find('th:first').hasClass('draggable'); + var left_action_exist = !$table_results.find('th:first').hasClass('draggable'); // number of column span for checkbox and Actions - var left_action_skip = left_action_exist ? $('#table_results').find('th:first').attr('colspan') - 1 : 0; + var left_action_skip = left_action_exist ? $table_results.find('th:first').attr('colspan') - 1 : 0; // If this column was sorted, the text of the a element contains something // like 1 that is useful to indicate the order in case // of a sort on multiple columns; however, we dont want this as part // of the column name so we strip it ( .clone() to .end() ) - var field_name = $('#table_results') + var field_name = $table_results .find('thead') .find('th:eq(' + (this_field_index - left_action_skip) + ') a') .clone() // clone the element @@ -66,7 +67,7 @@ function getFieldName($this_field) .text(); // grab the text // happens when just one row (headings contain no a) if (field_name === '') { - var $heading = $('#table_results').find('thead').find('th:eq(' + (this_field_index - left_action_skip) + ')').children('span'); + var $heading = $table_results.find('thead').find('th:eq(' + (this_field_index - left_action_skip) + ')').children('span'); // may contain column comment enclosed in a span - detach it temporarily to read the column name var $tempColComment = $heading.children().detach(); field_name = $heading.text(); @@ -84,18 +85,16 @@ function getFieldName($this_field) */ AJAX.registerTeardown('sql.js', function () { $('a.delete_row.ajax').die('click'); - $('#bookmarkQueryForm').die('submit'); + $('.bookmarkQueryForm').die('submit'); $('input#bkm_label').unbind('keyup'); - $("#sqlqueryresults").die('makegrid'); - $("#sqlqueryresults").die('stickycolumns'); + $(".sqlqueryresults").die('makegrid'); + $(".sqlqueryresults").die('stickycolumns'); $("#togglequerybox").unbind('click'); $("#button_submit_query").die('click'); $("input[name=bookmark_variable]").unbind("keypress"); $("#sqlqueryform.ajax").die('submit'); $("input[name=navig].ajax").die('click'); - $("#pageselector").die('change'); - $("#table_results.ajax").find("a[title=Sort]").die('click'); - $("#displayOptionsForm.ajax").die('submit'); + $("form[name='displayOptionsForm'].ajax").die('submit'); $('th.column_heading.pointer').die('hover'); $('th.column_heading.marker').die('click'); $(window).unbind('scroll'); @@ -143,7 +142,7 @@ AJAX.registerOnload('sql.js', function () { }); // Ajaxification for 'Bookmark this SQL query' - $('#bookmarkQueryForm').live('submit', function (e) { + $('.bookmarkQueryForm').live('submit', function (e) { e.preventDefault(); PMA_ajaxShowMessage(); $.post($(this).attr('action'), 'ajax_request=1&' + $(this).serialize(), function (data) { @@ -167,8 +166,10 @@ AJAX.registerOnload('sql.js', function () { * triggered manually everytime the table of results is reloaded * @memberOf jQuery */ - $("#sqlqueryresults").live('makegrid', function () { - PMA_makegrid($('#table_results')[0]); + $(".sqlqueryresults").live('makegrid', function () { + $('.table_results').each(function () { + PMA_makegrid(this); + }); }); /* @@ -176,16 +177,17 @@ AJAX.registerOnload('sql.js', function () { * triggered manually everytime the table of results is reloaded * @memberOf jQuery */ - $("#sqlqueryresults").live('stickycolumns', function () { - if ($("#table_results").length === 0) { - return; - } - //add sticky columns div - initStickyColumns(); - rearrangeStickyColumns(); - //adjust sticky columns on scroll - $(window).bind('scroll', function() { - handleStickyColumns(); + $(".sqlqueryresults").live('stickycolumns', function () { + $(".sticky_columns").remove(); + $(".table_results").each(function () { + var $table_results = $(this); + //add sticky columns div + var $stick_columns = initStickyColumns($table_results); + rearrangeStickyColumns($stick_columns, $table_results); + //adjust sticky columns on scroll + $(window).bind('scroll', function() { + handleStickyColumns($stick_columns, $table_results); + }); }); }); @@ -287,7 +289,7 @@ AJAX.registerOnload('sql.js', function () { $('div.error').remove(); var $msgbox = PMA_ajaxShowMessage(); - var $sqlqueryresults = $('#sqlqueryresults'); + var $sqlqueryresultsouter = $('#sqlqueryresultsouter'); PMA_prepareForAjaxRequest($form); @@ -314,10 +316,10 @@ AJAX.registerOnload('sql.js', function () { } } } - $sqlqueryresults + $sqlqueryresultsouter .show() .html(data.message); - PMA_highlightSQL($('#result_query')); + PMA_highlightSQL($sqlqueryresultsouter); if (typeof data.ajax_reload != 'undefined') { if (data.ajax_reload.reload) { @@ -342,19 +344,14 @@ AJAX.registerOnload('sql.js', function () { url = 'server_sql.php'; } PMA_commonActions.refreshMain(url, function () { - if ($('#result_query').length) { - $('#result_query').remove(); - } - if (data.sql_query) { - $('
') - .html(data.sql_query) - .prependTo('#page_content'); - PMA_highlightSQL($('#page_content')); - } + $('#sqlqueryresultsouter') + .show() + .html(data.message); + PMA_highlightSQL($('#sqlqueryresultsouter')); }); } - $sqlqueryresults.show().trigger('makegrid').trigger('stickycolumns'); + $('.sqlqueryresults').trigger('makegrid').trigger('stickycolumns'); $('#togglequerybox').show(); PMA_init_slider(); @@ -367,44 +364,41 @@ AJAX.registerOnload('sql.js', function () { } } else if (typeof data !== 'undefined' && data.success === false) { // show an error message that stays on screen - $('#sqlqueryform').before(data.error); - $sqlqueryresults.hide(); + $sqlqueryresultsouter + .show() + .html(data.error); } PMA_ajaxRemoveMessage($msgbox); }); // end $.post() }); // end SQL Query submit - /** - * Paginate results with Page Selector dropdown - * @memberOf jQuery - * @name paginate_dropdown_change - */ - $("#pageselector").live('change', function (event) { - var $form = $(this).parent("form"); - $form.submit(); - }); // end Paginate results with Page Selector - /** * Ajax Event handler for the display options * @memberOf jQuery * @name displayOptionsForm_submit */ - $("#displayOptionsForm.ajax").live('submit', function (event) { + $("form[name='displayOptionsForm'].ajax").live('submit', function (event) { event.preventDefault(); $form = $(this); + var $msgbox = PMA_ajaxShowMessage(); $.post($form.attr('action'), $form.serialize() + '&ajax_request=true', function (data) { - $("#sqlqueryresults") + PMA_ajaxRemoveMessage($msgbox); + var $sqlqueryresults = $form.parents(".sqlqueryresults") + $sqlqueryresults .html(data.message) - .trigger('makegrid'); + .trigger('makegrid') + .trigger('stickycolumns'); PMA_init_slider(); + PMA_highlightSQL($sqlqueryresults); }); // end $.post() }); //end displayOptionsForm handler // Filter row handling. --STARTS-- $(".filter_rows").live("keyup", function () { - var $target_table = $("#table_results"); + var unique_id = $(this).data("for"); + var $target_table = $(".table_results[data-uniqueId='" + unique_id + "']"); var $header_cells = $target_table.find("th[data-column]"); var target_columns = Array(); // To handle colspan=4, in case of edit,copy etc options. @@ -418,7 +412,7 @@ AJAX.registerOnload('sql.js', function () { var phrase = $(this).val(); // Set same value to both Filter rows fields. - $(".filter_rows").val(phrase); + $(".filter_rows[data-for='" + unique_id + "']").val(phrase); // Handle colspan. $target_table.find("thead > tr").prepend(dummy_th); $.uiTableFilter($target_table, phrase, target_columns); @@ -557,7 +551,7 @@ function PMA_changeClassForColumn($this_th, newclass, isAddClass) if (has_big_t) { th_index--; } - var $tds = $("#table_results").find('tbody tr').find('td.data:eq(' + th_index + ')'); + var $tds = $this_th.parents(".table_results").find('tbody tr').find('td.data:eq(' + th_index + ')'); if (isAddClass === undefined) { $tds.toggleClass(newclass); } else { @@ -661,7 +655,7 @@ AJAX.registerOnload('sql.js', function () { /** * create resizable table */ - $("#sqlqueryresults").trigger('makegrid').trigger('stickycolumns'); + $(".sqlqueryresults").trigger('makegrid').trigger('stickycolumns'); }); /* @@ -725,39 +719,35 @@ function initProfilingTables() /* * Set position, left, top, width of sticky_columns div */ -function setStickyColumnsPosition(position, top, left) { - if ($("#sticky_columns").length !== 0) { - $("#sticky_columns") - .css("position", position) - .css("top", top) - .css("left", left ? left : "auto") - .css("width", $("#table_results").width()); - } +function setStickyColumnsPosition($sticky_columns, $table_results, position, top, left) { + $sticky_columns + .css("position", position) + .css("top", top) + .css("left", left ? left : "auto") + .css("width", $table_results.width()); } /* * Initialize sticky columns */ -function initStickyColumns() { +function initStickyColumns($table_results) { fixedTop = $('#floating_menubar').height(); - if ($("#sticky_columns").length === 0) { - $('