123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * JavaScript functions used on Database Search page
- *
- * @requires jQuery
- * @requires js/functions.js
- *
- * @package PhpMyAdmin
- */
- /**
- * 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('db_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');
- $(document).off('submit', '#db_search_form.ajax');
- });
- AJAX.registerOnload('db_search.js', function () {
- /** Hide the table link in the initial search result */
- var icon = PMA_getImage('s_tbl', '', { 'id': 'table-image' }).toString();
- $('#table-info').prepend(icon).hide();
- /** Hide the browse and deleted results in the new search criteria */
- $('#buttonGo').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(PMA_messages.strHideSearchResults)
- .on('click', function () {
- var $link = $(this);
- $('#searchresults').slideToggle();
- if ($link.text() === PMA_messages.strHideSearchResults) {
- $link.text(PMA_messages.strShowSearchResults);
- } else {
- $link.text(PMA_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() === PMA_messages.strHideQueryBox) {
- $link.text(PMA_messages.strShowQueryBox);
- } else {
- $link.text(PMA_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(PMA_messages.strShowSearchCriteria)
- .on('click', function () {
- var $link = $(this);
- $('#db_search_form').slideToggle();
- if ($link.text() === PMA_messages.strHideSearchCriteria) {
- $link.text(PMA_messages.strShowSearchCriteria);
- } else {
- $link.text(PMA_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 = PMA_ajaxShowMessage(PMA_messages.strBrowsing, false);
- $('#sqlqueryform').hide();
- $('#togglequerybox').hide();
- /** Load the browse results to the page */
- $('#table-info').show();
- var table_name = $(this).data('table-name');
- $('#table-link').attr({ 'href' : $(this).attr('href') }).text(table_name);
- var url = $(this).attr('href') + '#searchresults';
- var browse_sql = $(this).data('browse-sql');
- var params = {
- 'ajax_request': true,
- 'is_js_confirmed': true,
- 'sql_query' : browse_sql
- };
- $.post(url, params, function (data) {
- if (typeof data !== 'undefined' && data.success) {
- $('#browse-results').html(data.message);
- PMA_ajaxRemoveMessage($msg);
- $('.table_results').each(function () {
- PMA_makegrid(this, true, true, true, true);
- });
- $('#browse-results').show();
- PMA_highlightSQL($('#browse-results'));
- $('html, body')
- .animate({
- scrollTop: $('#browse-results').offset().top
- }, 1000);
- } else {
- PMA_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 = PMA_sprintf(
- PMA_messages.strConfirmDeleteResults,
- $(this).data('table-name')
- );
- if (confirm(msg)) {
- var $msg = PMA_ajaxShowMessage(PMA_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) {
- PMA_ajaxShowMessage(data.error, false);
- return;
- }
- $('#sqlqueryform').html(data.sql_query);
- /** Refresh the search results after the deletion */
- document.getElementById('buttonGo').click();
- $('#togglequerybox').html(PMA_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);
- PMA_ajaxRemoveMessage($msg);
- });
- }
- });
- /**
- * Ajax Event handler for retrieving the result of an SQL Query
- */
- $(document).on('submit', '#db_search_form.ajax', function (event) {
- event.preventDefault();
- var $msgbox = PMA_ajaxShowMessage(PMA_messages.strSearching, false);
- // jQuery object to reuse
- var $form = $(this);
- PMA_prepareForAjaxRequest($form);
- var url = $form.serialize() + PMA_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(PMA_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(PMA_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();
- }
- PMA_ajaxRemoveMessage($msgbox);
- });
- });
- }); // end $()
|