diff --git a/db_structure.php b/db_structure.php
index e190025f7a..11bab14581 100644
--- a/db_structure.php
+++ b/db_structure.php
@@ -356,22 +356,23 @@ foreach ($tables as $keyname => $each_table) {
$browse_table_label = '' . $truename . '';
if (! $db_is_information_schema) {
- $empty_table = '';
if ($may_have_rows) {
+ $empty_table = '';
+
$empty_table .= $titles['Empty'];
+ $empty_table .= '';
} else {
- $empty_table .= $titles['NoEmpty'];
+ $empty_table = $titles['NoEmpty'];
}
- $empty_table .= '';
// truncating views doesn't work
if ($table_is_view) {
$empty_table = ' ';
diff --git a/js/messages.php b/js/messages.php
index eab572caa6..96e3c01bbf 100644
--- a/js/messages.php
+++ b/js/messages.php
@@ -231,6 +231,7 @@ $js_messages['strCancel'] = __('Cancel');
$js_messages['strLoading'] = __('Loading');
$js_messages['strProcessingRequest'] = __('Processing Request');
$js_messages['strErrorProcessingRequest'] = __('Error in Processing Request');
+$js_messages['strNoDatabasesSelected'] = __('No databases selected.');
$js_messages['strDroppingColumn'] = __('Dropping Column');
$js_messages['strAddingPrimaryKey'] = __('Adding Primary Key');
$js_messages['strOK'] = __('OK');
diff --git a/js/server_databases.js b/js/server_databases.js
new file mode 100644
index 0000000000..6436e9f5fb
--- /dev/null
+++ b/js/server_databases.js
@@ -0,0 +1,69 @@
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * @fileoverview functions used on the server databases list page
+ * @name Server Databases
+ *
+ * @requires jQuery
+ * @requires jQueryUI
+ * @required js/functions.js
+ */
+
+/**
+ * AJAX scripts for server_databases.php
+ *
+ * Actions ajaxified here:
+ * Drop Databases
+ *
+ */
+$(document).ready(function() {
+ /**
+ * Attach Event Handler for 'Drop Databases'
+ *
+ * (see $GLOBALS['cfg']['AjaxEnable'])
+ */
+ $("button[name=drop_selected_dbs].ajax").live('click', function(event) {
+ event.preventDefault();
+
+ var $form = $(this.form);
+
+ /**
+ * @var selected_dbs Array containing the names of the checked databases
+ */
+ var selected_dbs = [];
+ $form.find('input:checkbox:checked').each(function () {
+ selected_dbs[selected_dbs.length] = 'DROP DATABASE `' + escapeHtml($(this).val()) + '`;';
+ });
+ if (! selected_dbs.length) {
+ PMA_ajaxShowMessage(PMA_messages.strNoDatabasesSelected, 2000);
+ return;
+ }
+ /**
+ * @var question String containing the question to be asked for confirmation
+ */
+ var question =
+ PMA_messages.strDropDatabaseStrongWarning + ' '
+ + $.sprintf(PMA_messages.strDoYouReally, selected_dbs.join('
'));
+
+ $(this).PMA_confirm(
+ question,
+ $form.prop('action')
+ + '?' + $(this.form).serialize()
+ + '&drop_selected_dbs=1&is_js_confirmed=1&ajax_request=true',
+ function(url) {
+ PMA_ajaxShowMessage(PMA_messages.strProcessingRequest, false);
+
+ $.post(url, function(data) {
+ if(data.success == true) {
+ PMA_ajaxShowMessage(data.message);
+ if (window.parent && window.parent.frame_navigation) {
+ window.parent.frame_navigation.location.reload();
+ }
+ $('#tableslistcontainer').load('server_databases.php form#dbStatsForm');
+ }
+ else {
+ PMA_ajaxShowMessage(PMA_messages.strErrorProcessingRequest + ": " + data.error, false);
+ }
+ }); // end $.post()
+ }); // end $.PMA_confirm()
+ }) ; //end of Drop Database action
+}); // end $(document).ready()
diff --git a/js/server_privileges.js b/js/server_privileges.js
index 9edd6a71fe..8eefef7280 100644
--- a/js/server_privileges.js
+++ b/js/server_privileges.js
@@ -263,6 +263,7 @@ $(document).ready(function() {
displayPasswordGenerateButton();
PMA_convertFootnotesToTooltips($div);
PMA_ajaxRemoveMessage($msgbox);
+ $div.find("input[autofocus]").focus();
}); // end $.get()
});//end of Add New User AJAX event handler
diff --git a/js/server_variables.js b/js/server_variables.js
index 55d2b41357..f81266d003 100644
--- a/js/server_variables.js
+++ b/js/server_variables.js
@@ -132,12 +132,14 @@ function editVariable(link)
var mySaveLink = $(saveLink);
var myCancelLink = $(cancelLink);
var $cell = $(link).parent();
+ var $msgbox = PMA_ajaxShowMessage();
$cell.addClass('edit');
// remove edit link
$cell.find('a.editLink').remove();
mySaveLink.click(function() {
+ var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
$.get('server_variables.php?' + url_query, {
ajax_request: true,
type: 'setval',
@@ -146,6 +148,7 @@ function editVariable(link)
}, function(data) {
if (data.success) {
$cell.html(data.variable);
+ PMA_ajaxRemoveMessage($msgbox);
} else {
PMA_ajaxShowMessage(data.error, false);
$cell.html($cell.find('span.oldContent').html());
@@ -184,6 +187,7 @@ function editVariable(link)
// Escape key
if(event.keyCode == 27) myCancelLink.trigger('click');
});
+ PMA_ajaxRemoveMessage($msgbox);
});
return false;
diff --git a/libraries/Tracker.class.php b/libraries/Tracker.class.php
index 590b81e376..eee5ffd6a4 100644
--- a/libraries/Tracker.class.php
+++ b/libraries/Tracker.class.php
@@ -874,7 +874,7 @@ class PMA_Tracker
$result = self::parseQuery($query);
// Get database name
- $dbname = trim($GLOBALS['db'], '`');
+ $dbname = trim(isset($GLOBALS['db']) ? $GLOBALS['db'] : '', '`');
// $dbname can be empty, for example when coming from Synchronize
// and this is a query for the remote server
if (empty($dbname)) {
diff --git a/server_databases.php b/server_databases.php
index 7ad910fcfb..b822e792e9 100644
--- a/server_databases.php
+++ b/server_databases.php
@@ -10,6 +10,9 @@
*/
require_once 'libraries/common.inc.php';
+$GLOBALS['js_include'][] = 'server_databases.js';
+$GLOBALS['js_include'][] = 'functions.js';
+
require 'libraries/server_common.inc.php';
if (! PMA_DRIZZLE) {
include_once 'libraries/replication.inc.php';
@@ -85,11 +88,20 @@ if ((isset($_REQUEST['drop_selected_dbs']) || isset($_REQUEST['query_type']))
$message = PMA_Message::error(__('No databases selected.'));
} else {
$action = 'server_databases.php';
- $submit_mult = 'drop_db' ;
+ $submit_mult = 'drop_db';
$err_url = 'server_databases.php?' . PMA_generate_common_url();
- if (isset($_REQUEST['selected_dbs'])) {
+ if (isset($_REQUEST['selected_dbs'])
+ && !isset($_REQUEST['is_js_confirmed'])) {
$selected_db = $_REQUEST['selected_dbs'];
}
+ if (isset($_REQUEST['is_js_confirmed'])) {
+ $_REQUEST = array(
+ 'query_type' => $submit_mult,
+ 'selected' => $_REQUEST['selected_dbs'],
+ 'mult_btn' => __('Yes'),
+ 'db' => $GLOBALS['db'],
+ 'table' => $GLOBALS['table']);
+ }
include 'libraries/mult_submits.inc.php';
unset($action, $submit_mult, $err_url, $selected_db, $GLOBALS['db']);
if (empty($message)) {
@@ -101,7 +113,9 @@ if ((isset($_REQUEST['drop_selected_dbs']) || isset($_REQUEST['query_type']))
$message = PMA_Message::success(_ngettext('%1$d database has been dropped successfully.', '%1$d databases have been dropped successfully.', $number_of_databases));
$message->addParam($number_of_databases);
}
-
+ }
+ if ($GLOBALS['is_ajax_request'] && $message instanceof PMA_Message) {
+ PMA_ajaxResponse($message, $message->isSuccess());
}
}
@@ -282,7 +296,7 @@ if ($databases_count > 0) {
. '' . "\n"
. ' ' . __('Uncheck All') . '' . "\n"
. '' . __('With selected:') . '' . "\n";
- PMA_buttonOrImage('drop_selected_dbs', 'mult_submit', 'drop_selected_dbs', __('Drop'), 'b_deltbl.png');
+ PMA_buttonOrImage('drop_selected_dbs', 'mult_submit' . ($cfg['AjaxEnable'] ? ' ajax' : ''), 'drop_selected_dbs', __('Drop'), 'b_deltbl.png');
}
if (empty($dbstats)) {
diff --git a/server_privileges.php b/server_privileges.php
index 749e33e5bd..8c39fc2dff 100644
--- a/server_privileges.php
+++ b/server_privileges.php
@@ -882,7 +882,7 @@ function PMA_displayLoginInformationFields($mode = 'new')
: $GLOBALS['username']
) . '"'
)
- . ' onchange="pred_username.value = \'userdefined\';" />' . "\n"
+ . ' onchange="pred_username.value = \'userdefined\';" autofocus="autofocus" />' . "\n"
. '' . "\n"
. '