PageRenderTime 44ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/phpmyadmin/js/tbl_operations.js

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