2 * Unbind all event handlers before tearing down a page
4 AJAX.registerTeardown('tbl_operations.js', function () {
5 $(document).off('submit', "#copyTable.ajax");
6 $(document).off('submit', "#moveTableForm");
7 $(document).off('submit', "#tableOptionsForm");
8 $(document).off('submit', "#partitionsForm");
9 $(document).off('click', "#tbl_maintenance li a.maintain_action.ajax");
10 $(document).off('click', "#drop_tbl_anchor.ajax");
11 $(document).off('click', "#drop_view_anchor.ajax");
12 $(document).off('click', "#truncate_tbl_anchor.ajax");
16 * jQuery coding for 'Table operations'. Used on tbl_operations.php
17 * Attach Ajax Event handlers for Table operations
19 AJAX.registerOnload('tbl_operations.js', function () {
21 *Ajax action for submitting the "Copy table"
23 $(document).on('submit', "#copyTable.ajax", function (event) {
24 event.preventDefault();
26 PMA_prepareForAjaxRequest($form);
27 $.post($form.attr('action'), $form.serialize() + "&submit_copy=Go", function (data) {
28 if (typeof data !== 'undefined' && data.success === true) {
29 if ($form.find("input[name='switch_to_new']").prop('checked')) {
32 $form.find("select[name='target_db']").val()
36 $form.find("input[name='new_name']").val()
38 PMA_commonActions.refreshMain(false, function () {
39 PMA_ajaxShowMessage(data.message);
42 PMA_ajaxShowMessage(data.message);
44 // Refresh navigation when the table is copied
45 PMA_reloadNavigation();
47 PMA_ajaxShowMessage(data.error, false);
50 });//end of copyTable ajax submit
53 *Ajax action for submitting the "Move table"
55 $(document).on('submit', "#moveTableForm", function (event) {
56 event.preventDefault();
58 var db = $form.find('select[name=target_db]').val();
59 var tbl = $form.find('input[name=new_name]').val();
60 PMA_prepareForAjaxRequest($form);
61 $.post($form.attr('action'), $form.serialize() + "&submit_move=1", function (data) {
62 if (typeof data !== 'undefined' && data.success === true) {
63 PMA_commonParams.set('db', db);
64 PMA_commonParams.set('table', tbl);
65 PMA_commonActions.refreshMain(false, function () {
66 PMA_ajaxShowMessage(data.message);
68 // Refresh navigation when the table is copied
69 PMA_reloadNavigation();
71 PMA_ajaxShowMessage(data.error, false);
77 * Ajax action for submitting the "Table options"
79 $(document).on('submit', "#tableOptionsForm", function (event) {
80 event.preventDefault();
81 event.stopPropagation();
83 var $tblNameField = $form.find('input[name=new_name]');
84 var $tblCollationField = $form.find('select[name=tbl_collation]');
85 var collationOrigValue = $('select[name="tbl_collation"] option[selected]').val();
86 var $changeAllColumnCollationsCheckBox = $('#checkbox_change_all_collations');
87 var question = PMA_messages.strChangeAllColumnCollationsWarning;
89 if ($tblNameField.val() !== $tblNameField[0].defaultValue) {
90 // reload page and navigation if the table has been renamed
91 PMA_prepareForAjaxRequest($form);
93 if ($tblCollationField.val() !== collationOrigValue && $changeAllColumnCollationsCheckBox.is(':checked')) {
94 $form.PMA_confirm(question, $form.attr('action'), function (url) {
102 if ($tblCollationField.val() !== collationOrigValue && $changeAllColumnCollationsCheckBox.is(':checked')) {
103 $form.PMA_confirm(question, $form.attr('action'), function (url) {
104 $form.removeClass('ajax').submit().addClass('ajax');
107 $form.removeClass('ajax').submit().addClass('ajax');
111 function submitOptionsForm() {
112 $.post($form.attr('action'), $form.serialize(), function (data) {
113 if (typeof data !== 'undefined' && data.success === true) {
114 PMA_commonParams.set('table', data._params['table']);
115 PMA_commonActions.refreshMain(false, function () {
116 $('#page_content').html(data.message);
117 PMA_highlightSQL($('#page_content'));
119 // Refresh navigation when the table is renamed
120 PMA_reloadNavigation();
122 PMA_ajaxShowMessage(data.error, false);
129 *Ajax events for actions in the "Table maintenance"
131 $(document).on('click', "#tbl_maintenance li a.maintain_action.ajax", function (event) {
132 event.preventDefault();
133 if ($(".sqlqueryresults").length !== 0) {
134 $(".sqlqueryresults").remove();
136 if ($(".result_query").length !== 0) {
137 $(".result_query").remove();
139 //variables which stores the common attributes
140 $.post($(this).attr('href'), { ajax_request: 1 }, function (data) {
141 function scrollToTop() {
142 $('html, body').animate({ scrollTop: 0 });
145 if (typeof data !== 'undefined' && data.success === true && data.sql_query !== undefined) {
146 PMA_ajaxShowMessage(data.message);
147 $("<div class='sqlqueryresults ajax'></div>").prependTo("#page_content");
148 $(".sqlqueryresults").html(data.sql_query);
149 PMA_highlightSQL($('#page_content'));
151 } else if (typeof data !== 'undefined' && data.success === true) {
152 var $temp_div = $("<div id='temp_div'></div>");
153 $temp_div.html(data.message);
154 var $success = $temp_div.find(".result_query .success");
155 PMA_ajaxShowMessage($success);
156 $("<div class='sqlqueryresults ajax'></div>").prependTo("#page_content");
157 $(".sqlqueryresults").html(data.message);
158 PMA_highlightSQL($('#page_content'));
160 $(".sqlqueryresults").children("fieldset,br").remove();
163 $temp_div = $("<div id='temp_div'></div>");
164 $temp_div.html(data.error);
165 var $error = $temp_div.find("code").addClass("error");
166 PMA_ajaxShowMessage($error, false);
169 });//end of table maintenance ajax click
172 * Ajax action for submitting the "Partition Maintenance"
173 * Also, asks for confirmation when DROP partition is submitted
175 $(document).on('submit', "#partitionsForm", function (event) {
176 event.preventDefault();
179 function submitPartitionMaintenance() {
180 var submitData = $form.serialize() + '&ajax_request=true&ajax_page_request=true';
181 PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
183 $.post($form.attr('action'), submitData, AJAX.responseHandler);
186 if ($('#partition_operation_DROP').is(':checked')) {
187 var question = PMA_messages.strDropPartitionWarning;
188 $form.PMA_confirm(question, $form.attr('action'), function (url) {
189 submitPartitionMaintenance();
191 } else if ($('#partition_operation_TRUNCATE').is(':checked')) {
192 var question = PMA_messages.strTruncatePartitionWarning;
193 $form.PMA_confirm(question, $form.attr('action'), function (url) {
194 submitPartitionMaintenance();
197 submitPartitionMaintenance();
201 $(document).on('click', "#drop_tbl_anchor.ajax", function (event) {
202 event.preventDefault();
204 * @var question String containing the question to be asked for confirmation
206 var question = PMA_messages.strDropTableStrongWarning + ' ';
207 question += PMA_sprintf(
208 PMA_messages.strDoYouReally,
209 'DROP TABLE ' + escapeHtml(PMA_commonParams.get('table'))
210 ) + getForeignKeyCheckboxLoader();
212 $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
214 var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
216 var params = getJSConfirmCommonParam(this);
218 $.get(url, params, function (data) {
219 if (typeof data !== 'undefined' && data.success === true) {
220 PMA_ajaxRemoveMessage($msgbox);
221 // Table deleted successfully, refresh both the frames
222 PMA_reloadNavigation();
223 PMA_commonParams.set('table', '');
224 PMA_commonActions.refreshMain(
225 PMA_commonParams.get('opendb_url'),
227 PMA_ajaxShowMessage(data.message);
231 PMA_ajaxShowMessage(data.error, false);
234 }, loadForeignKeyCheckbox); // end $.PMA_confirm()
235 }); //end of Drop Table Ajax action
237 $(document).on('click', "#drop_view_anchor.ajax", function (event) {
238 event.preventDefault();
240 * @var question String containing the question to be asked for confirmation
242 var question = PMA_messages.strDropTableStrongWarning + ' ';
243 question += PMA_sprintf(
244 PMA_messages.strDoYouReally,
245 'DROP VIEW ' + escapeHtml(PMA_commonParams.get('table'))
248 $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
250 var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
251 $.get(url, {'is_js_confirmed': '1', 'ajax_request': true}, function (data) {
252 if (typeof data !== 'undefined' && data.success === true) {
253 PMA_ajaxRemoveMessage($msgbox);
254 // Table deleted successfully, refresh both the frames
255 PMA_reloadNavigation();
256 PMA_commonParams.set('table', '');
257 PMA_commonActions.refreshMain(
258 PMA_commonParams.get('opendb_url'),
260 PMA_ajaxShowMessage(data.message);
264 PMA_ajaxShowMessage(data.error, false);
267 }); // end $.PMA_confirm()
268 }); //end of Drop View Ajax action
270 $(document).on('click', "#truncate_tbl_anchor.ajax", function (event) {
271 event.preventDefault();
273 * @var question String containing the question to be asked for confirmation
275 var question = PMA_messages.strTruncateTableStrongWarning + ' ';
276 question += PMA_sprintf(
277 PMA_messages.strDoYouReally,
278 'TRUNCATE ' + escapeHtml(PMA_commonParams.get('table'))
279 ) + getForeignKeyCheckboxLoader();
280 $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
281 PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
283 var params = getJSConfirmCommonParam(this);
285 $.get(url, params, function (data) {
286 if ($(".sqlqueryresults").length !== 0) {
287 $(".sqlqueryresults").remove();
289 if ($(".result_query").length !== 0) {
290 $(".result_query").remove();
292 if (typeof data !== 'undefined' && data.success === true) {
293 PMA_ajaxShowMessage(data.message);
294 $("<div class='sqlqueryresults ajax'></div>").prependTo("#page_content");
295 $(".sqlqueryresults").html(data.sql_query);
296 PMA_highlightSQL($('#page_content'));
298 PMA_ajaxShowMessage(data.error, false);
301 }, loadForeignKeyCheckbox); // end $.PMA_confirm()
302 }); //end of Truncate Table Ajax action
304 }); //end $(document).ready for 'Table operations'