You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
7.8 KiB
260 lines
7.8 KiB
/** |
|
* JavaScript functions used on Database Search page |
|
* |
|
* @requires jQuery |
|
* @requires js/functions.js |
|
* |
|
* @package PhpMyAdmin |
|
*/ |
|
|
|
/* global makeGrid */ |
|
// js/makegrid.js |
|
|
|
/** |
|
* AJAX script for the Database Search page. |
|
* |
|
* Actions ajaxified here: |
|
* Retrieve result of SQL query |
|
*/ |
|
|
|
/** |
|
* Unbind all event handlers before tearing down a page |
|
*/ |
|
AJAX.registerTeardown('database/search.js', function () { |
|
$('a.browse_results').off('click'); |
|
$('a.delete_results').off('click'); |
|
$('#buttonGo').off('click'); |
|
$('#togglesearchresultlink').off('click'); |
|
$('#togglequerybox').off('click'); |
|
$('#togglesearchformlink').off('click'); |
|
$('#select_all').off('click'); |
|
$('#unselect_all').off('click'); |
|
$(document).off('submit', '#db_search_form.ajax'); |
|
}); |
|
AJAX.registerOnload('database/search.js', function () { |
|
/** Hide the table link in the initial search result */ |
|
var icon = Functions.getImage('s_tbl', '', { |
|
'id': 'table-image' |
|
}).toString(); |
|
$('#table-info').prepend(icon).hide(); |
|
/** Hide the browse and deleted results in the new search criteria */ |
|
|
|
$('#buttonGo').on('click', function () { |
|
$('#table-info').hide(); |
|
$('#browse-results').hide(); |
|
$('#sqlqueryform').hide(); |
|
$('#togglequerybox').hide(); |
|
}); |
|
/** |
|
* Prepare a div containing a link for toggle the search results |
|
*/ |
|
|
|
$('#togglesearchresultsdiv') |
|
/** don't show it until we have results on-screen */ |
|
.hide(); |
|
/** |
|
* Changing the displayed text according to |
|
* the hide/show criteria in search result forms |
|
*/ |
|
|
|
$('#togglesearchresultlink').html(Messages.strHideSearchResults).on('click', function () { |
|
var $link = $(this); |
|
$('#searchresults').slideToggle(); |
|
|
|
if ($link.text() === Messages.strHideSearchResults) { |
|
$link.text(Messages.strShowSearchResults); |
|
} else { |
|
$link.text(Messages.strHideSearchResults); |
|
} |
|
/** avoid default click action */ |
|
|
|
|
|
return false; |
|
}); |
|
/** |
|
* Prepare a div containing a link for toggle the search form, |
|
* otherwise it's incorrectly displayed after a couple of clicks |
|
*/ |
|
|
|
$('#togglesearchformdiv').hide(); // don't show it until we have results on-screen |
|
|
|
/** |
|
* Changing the displayed text according to |
|
* the hide/show criteria in search form |
|
*/ |
|
|
|
$('#togglequerybox').hide().on('click', function () { |
|
var $link = $(this); |
|
$('#sqlqueryform').slideToggle('medium'); |
|
|
|
if ($link.text() === Messages.strHideQueryBox) { |
|
$link.text(Messages.strShowQueryBox); |
|
} else { |
|
$link.text(Messages.strHideQueryBox); |
|
} |
|
/** avoid default click action */ |
|
|
|
|
|
return false; |
|
}); |
|
/** don't show it until we have results on-screen */ |
|
|
|
/** |
|
* Changing the displayed text according to |
|
* the hide/show criteria in search criteria form |
|
*/ |
|
|
|
$('#togglesearchformlink').html(Messages.strShowSearchCriteria).on('click', function () { |
|
var $link = $(this); |
|
$('#db_search_form').slideToggle(); |
|
|
|
if ($link.text() === Messages.strHideSearchCriteria) { |
|
$link.text(Messages.strShowSearchCriteria); |
|
} else { |
|
$link.text(Messages.strHideSearchCriteria); |
|
} |
|
/** avoid default click action */ |
|
|
|
|
|
return false; |
|
}); |
|
/* |
|
* Ajax Event handler for retrieving the results from a table |
|
*/ |
|
|
|
$(document).on('click', 'a.browse_results', function (e) { |
|
e.preventDefault(); |
|
/** Hides the results shown by the delete criteria */ |
|
|
|
var $msg = Functions.ajaxShowMessage(Messages.strBrowsing, false); |
|
$('#sqlqueryform').hide(); |
|
$('#togglequerybox').hide(); |
|
/** Load the browse results to the page */ |
|
|
|
$('#table-info').show(); |
|
var tableName = $(this).data('table-name'); |
|
$('#table-link').attr({ |
|
'href': $(this).attr('href') |
|
}).text(tableName); |
|
var url = $(this).attr('href') + '#searchresults'; |
|
var browseSql = $(this).data('browse-sql'); |
|
var params = { |
|
'ajax_request': true, |
|
'is_js_confirmed': true, |
|
'sql_query': browseSql |
|
}; |
|
$.post(url, params, function (data) { |
|
if (typeof data !== 'undefined' && data.success) { |
|
$('#browse-results').html(data.message); |
|
Functions.ajaxRemoveMessage($msg); |
|
$('.table_results').each(function () { |
|
makeGrid(this, true, true, true, true); |
|
}); |
|
$('#browse-results').show(); |
|
Functions.highlightSql($('#browse-results')); |
|
$('html, body').animate({ |
|
scrollTop: $('#browse-results').offset().top |
|
}, 1000); |
|
} else { |
|
Functions.ajaxShowMessage(data.error, false); |
|
} |
|
}); |
|
}); |
|
/* |
|
* Ajax Event handler for deleting the results from a table |
|
*/ |
|
|
|
$(document).on('click', 'a.delete_results', function (e) { |
|
e.preventDefault(); |
|
/** Hides the results shown by the browse criteria */ |
|
|
|
$('#table-info').hide(); |
|
$('#sqlqueryform').hide(); |
|
$('#togglequerybox').hide(); |
|
/** Conformation message for deletion */ |
|
|
|
var msg = Functions.sprintf(Messages.strConfirmDeleteResults, $(this).data('table-name')); |
|
|
|
if (confirm(msg)) { |
|
var $msg = Functions.ajaxShowMessage(Messages.strDeleting, false); |
|
/** Load the deleted option to the page*/ |
|
|
|
$('#sqlqueryform').html(''); |
|
var params = { |
|
'ajax_request': true, |
|
'is_js_confirmed': true, |
|
'sql_query': $(this).data('delete-sql') |
|
}; |
|
var url = $(this).attr('href'); |
|
$.post(url, params, function (data) { |
|
if (typeof data === 'undefined' || !data.success) { |
|
Functions.ajaxShowMessage(data.error, false); |
|
return; |
|
} |
|
|
|
$('#sqlqueryform').html(data.sql_query); |
|
/** Refresh the search results after the deletion */ |
|
|
|
$('#buttonGo').trigger('click'); |
|
$('#togglequerybox').html(Messages.strHideQueryBox); |
|
/** Show the results of the deletion option */ |
|
|
|
$('#browse-results').hide(); |
|
$('#sqlqueryform').show(); |
|
$('#togglequerybox').show(); |
|
$('html, body').animate({ |
|
scrollTop: $('#browse-results').offset().top |
|
}, 1000); |
|
Functions.ajaxRemoveMessage($msg); |
|
}); |
|
} |
|
}); |
|
/** |
|
* Ajax Event handler for retrieving the result of an SQL Query |
|
*/ |
|
|
|
$(document).on('submit', '#db_search_form.ajax', function (event) { |
|
event.preventDefault(); |
|
|
|
if ($('#criteriaTables :selected').length === 0) { |
|
Functions.ajaxShowMessage(Messages.strNoTableSelected); |
|
return; |
|
} |
|
|
|
var $msgbox = Functions.ajaxShowMessage(Messages.strSearching, false); // jQuery object to reuse |
|
|
|
var $form = $(this); |
|
Functions.prepareForAjaxRequest($form); |
|
var url = $form.serialize() + CommonParams.get('arg_separator') + 'submit_search=' + $('#buttonGo').val(); |
|
$.post($form.attr('action'), url, function (data) { |
|
if (typeof data !== 'undefined' && data.success === true) { |
|
// found results |
|
$('#searchresults').html(data.message); |
|
$('#togglesearchresultlink') // always start with the Show message |
|
.text(Messages.strHideSearchResults); |
|
$('#togglesearchresultsdiv') // now it's time to show the div containing the link |
|
.show(); |
|
$('#searchresults').show(); |
|
$('#db_search_form') // workaround for Chrome problem (bug #3168569) |
|
.slideToggle().hide(); |
|
$('#togglesearchformlink') // always start with the Show message |
|
.text(Messages.strShowSearchCriteria); |
|
$('#togglesearchformdiv') // now it's time to show the div containing the link |
|
.show(); |
|
} else { |
|
// error message (zero rows) |
|
$('#searchresults').html(data.error).show(); |
|
} |
|
|
|
Functions.ajaxRemoveMessage($msgbox); |
|
}); |
|
}); |
|
$('#select_all').on('click', function () { |
|
Functions.setSelectOptions('db_search', 'criteriaTables[]', true); |
|
return false; |
|
}); |
|
$('#unselect_all').on('click', function () { |
|
Functions.setSelectOptions('db_search', 'criteriaTables[]', false); |
|
return false; |
|
}); |
|
}); // end $()
|