Translated using Weblate (Greek)
[phpmyadmin.git] / js / tbl_operations.js
blobf5a02a599972b19b25c6180d3f6e62940cbc4e65
1 /**
2  * Unbind all event handlers before tearing down a page
3  */
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");
13 });
15 /**
16  * jQuery coding for 'Table operations'.  Used on tbl_operations.php
17  * Attach Ajax Event handlers for Table operations
18  */
19 AJAX.registerOnload('tbl_operations.js', function () {
20     /**
21      *Ajax action for submitting the "Copy table"
22      **/
23     $(document).on('submit', "#copyTable.ajax", function (event) {
24         event.preventDefault();
25         var $form = $(this);
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')) {
30                     PMA_commonParams.set(
31                         'db',
32                         $form.find("select[name='target_db']").val()
33                     );
34                     PMA_commonParams.set(
35                         'table',
36                         $form.find("input[name='new_name']").val()
37                     );
38                     PMA_commonActions.refreshMain(false, function () {
39                         PMA_ajaxShowMessage(data.message);
40                     });
41                 } else {
42                     PMA_ajaxShowMessage(data.message);
43                 }
44                 // Refresh navigation when the table is copied
45                 PMA_reloadNavigation();
46             } else {
47                 PMA_ajaxShowMessage(data.error, false);
48             }
49         }); // end $.post()
50     });//end of copyTable ajax submit
52     /**
53      *Ajax action for submitting the "Move table"
54      */
55     $(document).on('submit', "#moveTableForm", function (event) {
56         event.preventDefault();
57         var $form = $(this);
58         PMA_prepareForAjaxRequest($form);
59         $.post($form.attr('action'), $form.serialize() + "&submit_move=1", function (data) {
60             if (typeof data !== 'undefined' && data.success === true) {
61                 PMA_commonParams.set('db', data._params.db);
62                 PMA_commonParams.set('table', data._params.tbl);
63                 PMA_commonActions.refreshMain(false, function () {
64                     PMA_ajaxShowMessage(data.message);
65                 });
66                 // Refresh navigation when the table is copied
67                 PMA_reloadNavigation();
68             } else {
69                 PMA_ajaxShowMessage(data.error, false);
70             }
71         }); // end $.post()
72     });
74     /**
75      * Ajax action for submitting the "Table options"
76      */
77     $(document).on('submit', "#tableOptionsForm", function (event) {
78         event.preventDefault();
79         event.stopPropagation();
80         var $form = $(this);
81         var $tblNameField = $form.find('input[name=new_name]');
82         var $tblCollationField = $form.find('select[name=tbl_collation]');
83         var collationOrigValue = $('select[name="tbl_collation"] option[selected]').val();
84         var $changeAllColumnCollationsCheckBox = $('#checkbox_change_all_collations');
85         var question = PMA_messages.strChangeAllColumnCollationsWarning;
87         if ($tblNameField.val() !== $tblNameField[0].defaultValue) {
88             // reload page and navigation if the table has been renamed
89             PMA_prepareForAjaxRequest($form);
91             if ($tblCollationField.val() !== collationOrigValue && $changeAllColumnCollationsCheckBox.is(':checked')) {
92                 $form.PMA_confirm(question, $form.attr('action'), function (url) {
93                     submitOptionsForm();
94                 });
95             } else {
96                 submitOptionsForm();
97             }
98         } else {
100             if ($tblCollationField.val() !== collationOrigValue && $changeAllColumnCollationsCheckBox.is(':checked')) {
101                 $form.PMA_confirm(question, $form.attr('action'), function (url) {
102                     $form.removeClass('ajax').submit().addClass('ajax');
103                 });
104             } else {
105                 $form.removeClass('ajax').submit().addClass('ajax');
106             }
107         }
109         function submitOptionsForm() {
110             $.post($form.attr('action'), $form.serialize(), function (data) {
111                 if (typeof data !== 'undefined' && data.success === true) {
112                     PMA_commonParams.set('table', data._params.table);
113                     PMA_commonActions.refreshMain(false, function () {
114                         $('#page_content').html(data.message);
115                         PMA_highlightSQL($('#page_content'));
116                     });
117                     // Refresh navigation when the table is renamed
118                     PMA_reloadNavigation();
119                 } else {
120                     PMA_ajaxShowMessage(data.error, false);
121                 }
122             }); // end $.post()
123         }
124     });
126     /**
127      *Ajax events for actions in the "Table maintenance"
128     **/
129     $(document).on('click', "#tbl_maintenance li a.maintain_action.ajax", function (event) {
130         event.preventDefault();
131         if ($(".sqlqueryresults").length !== 0) {
132             $(".sqlqueryresults").remove();
133         }
134         if ($(".result_query").length !== 0) {
135             $(".result_query").remove();
136         }
137         //variables which stores the common attributes
138         var params = {
139             ajax_request: 1,
140             server: PMA_commonParams.get('server'),
141             token: PMA_commonParams.get('token')
142         };
143         $.post($(this).attr('href'), params, function (data) {
144             function scrollToTop() {
145                 $('html, body').animate({ scrollTop: 0 });
146             }
147             var $temp_div;
148             if (typeof data !== 'undefined' && data.success === true && data.sql_query !== undefined) {
149                 PMA_ajaxShowMessage(data.message);
150                 $("<div class='sqlqueryresults ajax'></div>").prependTo("#page_content");
151                 $(".sqlqueryresults").html(data.sql_query);
152                 PMA_highlightSQL($('#page_content'));
153                 scrollToTop();
154             } else if (typeof data !== 'undefined' && data.success === true) {
155                 var $temp_div = $("<div id='temp_div'></div>");
156                 $temp_div.html(data.message);
157                 var $success = $temp_div.find(".result_query .success");
158                 PMA_ajaxShowMessage($success);
159                 $("<div class='sqlqueryresults ajax'></div>").prependTo("#page_content");
160                 $(".sqlqueryresults").html(data.message);
161                 PMA_highlightSQL($('#page_content'));
162                 PMA_init_slider();
163                 $(".sqlqueryresults").children("fieldset,br").remove();
164                 scrollToTop();
165             } else {
166                 $temp_div = $("<div id='temp_div'></div>");
167                 $temp_div.html(data.error);
168                 var $error = $temp_div.find("code").addClass("error");
169                 PMA_ajaxShowMessage($error, false);
170             }
171         }); // end $.post()
172     });//end of table maintenance ajax click
174     /**
175      * Ajax action for submitting the "Partition Maintenance"
176      * Also, asks for confirmation when DROP partition is submitted
177      */
178     $(document).on('submit', "#partitionsForm", function (event) {
179         event.preventDefault();
180         var $form = $(this);
182         function submitPartitionMaintenance() {
183             var submitData = $form.serialize() + '&ajax_request=true&ajax_page_request=true';
184             PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
185             AJAX.source = $form;
186             $.post($form.attr('action'), submitData, AJAX.responseHandler);
187         }
189         if ($('#partition_operation_DROP').is(':checked')) {
190             var question = PMA_messages.strDropPartitionWarning;
191             $form.PMA_confirm(question, $form.attr('action'), function (url) {
192                 submitPartitionMaintenance();
193             });
194         } else if ($('#partition_operation_TRUNCATE').is(':checked')) {
195             var question = PMA_messages.strTruncatePartitionWarning;
196             $form.PMA_confirm(question, $form.attr('action'), function (url) {
197                 submitPartitionMaintenance();
198             });
199         } else {
200             submitPartitionMaintenance();
201         }
202     });
204     $(document).on('click', "#drop_tbl_anchor.ajax", function (event) {
205         event.preventDefault();
206         /**
207          * @var question    String containing the question to be asked for confirmation
208          */
209         var question = PMA_messages.strDropTableStrongWarning + ' ';
210         question += PMA_sprintf(
211             PMA_messages.strDoYouReally,
212             'DROP TABLE `' + escapeHtml(PMA_commonParams.get('table') + '`')
213         ) + getForeignKeyCheckboxLoader();
215         $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
217             var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
219             var params = getJSConfirmCommonParam(this);
220             params.token = PMA_commonParams.get('token');
222             $.post(url, params, function (data) {
223                 if (typeof data !== 'undefined' && data.success === true) {
224                     PMA_ajaxRemoveMessage($msgbox);
225                     // Table deleted successfully, refresh both the frames
226                     PMA_reloadNavigation();
227                     PMA_commonParams.set('table', '');
228                     PMA_commonActions.refreshMain(
229                         PMA_commonParams.get('opendb_url'),
230                         function () {
231                             PMA_ajaxShowMessage(data.message);
232                         }
233                     );
234                 } else {
235                     PMA_ajaxShowMessage(data.error, false);
236                 }
237             }); // end $.post()
238         }, loadForeignKeyCheckbox); // end $.PMA_confirm()
239     }); //end of Drop Table Ajax action
241     $(document).on('click', "#drop_view_anchor.ajax", function (event) {
242         event.preventDefault();
243         /**
244          * @var question    String containing the question to be asked for confirmation
245          */
246         var question = PMA_messages.strDropTableStrongWarning + ' ';
247         question += PMA_sprintf(
248             PMA_messages.strDoYouReally,
249             'DROP VIEW `' + escapeHtml(PMA_commonParams.get('table') + '`')
250         );
252         $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
254             var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
255             var params = {
256                 'is_js_confirmed': '1',
257                 'ajax_request': true,
258                 'token': PMA_commonParams.get('token')
259             };
260             $.post(url, params, function (data) {
261                 if (typeof data !== 'undefined' && data.success === true) {
262                     PMA_ajaxRemoveMessage($msgbox);
263                     // Table deleted successfully, refresh both the frames
264                     PMA_reloadNavigation();
265                     PMA_commonParams.set('table', '');
266                     PMA_commonActions.refreshMain(
267                         PMA_commonParams.get('opendb_url'),
268                         function () {
269                             PMA_ajaxShowMessage(data.message);
270                         }
271                     );
272                 } else {
273                     PMA_ajaxShowMessage(data.error, false);
274                 }
275             }); // end $.post()
276         }); // end $.PMA_confirm()
277     }); //end of Drop View Ajax action
279     $(document).on('click', "#truncate_tbl_anchor.ajax", function (event) {
280         event.preventDefault();
281         /**
282          * @var question    String containing the question to be asked for confirmation
283          */
284         var question = PMA_messages.strTruncateTableStrongWarning + ' ';
285         question += PMA_sprintf(
286             PMA_messages.strDoYouReally,
287             'TRUNCATE `' + escapeHtml(PMA_commonParams.get('table') + '`')
288         ) + getForeignKeyCheckboxLoader();
289         $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
290             PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
292             var params = getJSConfirmCommonParam(this);
293             params.token = PMA_commonParams.get('token');
295             $.post(url, params, function (data) {
296                 if ($(".sqlqueryresults").length !== 0) {
297                     $(".sqlqueryresults").remove();
298                 }
299                 if ($(".result_query").length !== 0) {
300                     $(".result_query").remove();
301                 }
302                 if (typeof data !== 'undefined' && data.success === true) {
303                     PMA_ajaxShowMessage(data.message);
304                     $("<div class='sqlqueryresults ajax'></div>").prependTo("#page_content");
305                     $(".sqlqueryresults").html(data.sql_query);
306                     PMA_highlightSQL($('#page_content'));
307                 } else {
308                     PMA_ajaxShowMessage(data.error, false);
309                 }
310             }); // end $.post()
311         }, loadForeignKeyCheckbox); // end $.PMA_confirm()
312     }); //end of Truncate Table Ajax action
314 }); //end $(document).ready for 'Table operations'