2 * @fileoverview function used in server privilege pages
3 * @name Database Operations
7 * @requires js/functions.js
12 * Ajax event handlers here for /database/operations
14 * Actions Ajaxified here:
22 * Unbind all event handlers before tearing down a page
24 AJAX.registerTeardown('database/operations.js', function () {
25 $(document).off('submit', '#rename_db_form.ajax');
26 $(document).off('submit', '#copy_db_form.ajax');
27 $(document).off('submit', '#change_db_charset_form.ajax');
28 $(document).off('click', '#drop_db_anchor.ajax');
31 AJAX.registerOnload('database/operations.js', function () {
33 * Ajax event handlers for 'Rename Database'
35 $(document).on('submit', '#rename_db_form.ajax', function (event) {
36 event.preventDefault();
38 if (Functions.emptyCheckTheField(this, 'newname')) {
39 Functions.ajaxShowMessage(Messages.strFormEmpty, false, 'error');
43 var oldDbName = CommonParams.get('db');
44 var newDbName = $('#new_db_name').val();
46 if (newDbName === oldDbName) {
47 Functions.ajaxShowMessage(Messages.strDatabaseRenameToSameName, false, 'error');
53 var question = Functions.escapeHtml('CREATE DATABASE ' + newDbName + ' / DROP DATABASE ' + oldDbName);
55 Functions.prepareForAjaxRequest($form);
57 $form.confirm(question, $form.attr('action'), function (url) {
58 Functions.ajaxShowMessage(Messages.strRenamingDatabases, false);
59 $.post(url, $('#rename_db_form').serialize() + CommonParams.get('arg_separator') + 'is_js_confirmed=1', function (data) {
60 if (typeof data !== 'undefined' && data.success === true) {
61 Functions.ajaxShowMessage(data.message);
62 CommonParams.set('db', data.newname);
64 Navigation.reload(function () {
65 $('#pma_navigation_tree')
66 .find('a:not(\'.expander\')')
68 var $thisAnchor = $(this);
69 if ($thisAnchor.text() === data.newname) {
70 // simulate a click on the new db name
72 $thisAnchor.trigger('click');
77 Functions.ajaxShowMessage(data.error, false);
81 }); // end Rename Database
84 * Ajax Event Handler for 'Copy Database'
86 $(document).on('submit', '#copy_db_form.ajax', function (event) {
87 event.preventDefault();
89 if (Functions.emptyCheckTheField(this, 'newname')) {
90 Functions.ajaxShowMessage(Messages.strFormEmpty, false, 'error');
94 Functions.ajaxShowMessage(Messages.strCopyingDatabase, false);
96 Functions.prepareForAjaxRequest($form);
97 $.post($form.attr('action'), $form.serialize(), function (data) {
98 // use messages that stay on screen
99 $('.alert-success, .alert-danger').fadeOut();
100 if (typeof data !== 'undefined' && data.success === true) {
101 if ($('#checkbox_switch').is(':checked')) {
102 CommonParams.set('db', data.newname);
103 CommonActions.refreshMain(false, function () {
104 Functions.ajaxShowMessage(data.message);
107 CommonParams.set('db', data.db);
108 Functions.ajaxShowMessage(data.message);
112 Functions.ajaxShowMessage(data.error, false);
115 }); // end copy database
118 * Change tables columns visible only if change tables is checked
120 $('#span_change_all_tables_columns_collations').hide();
121 $('#checkbox_change_all_tables_collations').on('click', function () {
122 $('#span_change_all_tables_columns_collations').toggle();
126 * Ajax Event handler for 'Change Charset' of the database
128 $(document).on('submit', '#change_db_charset_form.ajax', function (event) {
129 event.preventDefault();
131 Functions.prepareForAjaxRequest($form);
132 Functions.ajaxShowMessage(Messages.strChangingCharset);
133 $.post($form.attr('action'), $form.serialize() + CommonParams.get('arg_separator') + 'submitcollation=1', function (data) {
134 if (typeof data !== 'undefined' && data.success === true) {
135 Functions.ajaxShowMessage(data.message);
137 Functions.ajaxShowMessage(data.error, false);
140 }); // end change charset
143 * Ajax event handlers for Drop Database
145 $(document).on('click', '#drop_db_anchor.ajax', function (event) {
146 event.preventDefault();
149 * @var question String containing the question to be asked for confirmation
151 var question = Messages.strDropDatabaseStrongWarning + ' ';
152 question += Functions.sprintf(
153 Messages.strDoYouReally,
154 'DROP DATABASE `' + Functions.escapeHtml(CommonParams.get('db') + '`')
156 var params = Functions.getJsConfirmCommonParam(this, $link.getPostData());
158 $(this).confirm(question, $(this).attr('href'), function (url) {
159 Functions.ajaxShowMessage(Messages.strProcessingRequest);
160 $.post(url, params, function (data) {
161 if (typeof data !== 'undefined' && data.success) {
162 // Database deleted successfully, refresh both the frames
164 CommonParams.set('db', '');
165 CommonActions.refreshMain(
166 'index.php?route=/server/databases',
168 Functions.ajaxShowMessage(data.message);
172 Functions.ajaxShowMessage(data.error, false);