operations.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. "use strict";
  2. /**
  3. * @fileoverview function used in server privilege pages
  4. * @name Database Operations
  5. *
  6. * @requires jQuery
  7. * @requires jQueryUI
  8. * @requires js/functions.js
  9. *
  10. */
  11. /**
  12. * Ajax event handlers here for /database/operations
  13. *
  14. * Actions Ajaxified here:
  15. * Rename Database
  16. * Copy Database
  17. * Change Charset
  18. * Drop Database
  19. */
  20. /**
  21. * Unbind all event handlers before tearing down a page
  22. */
  23. AJAX.registerTeardown('database/operations.js', function () {
  24. $(document).off('submit', '#rename_db_form.ajax');
  25. $(document).off('submit', '#copy_db_form.ajax');
  26. $(document).off('submit', '#change_db_charset_form.ajax');
  27. $(document).off('click', '#drop_db_anchor.ajax');
  28. });
  29. AJAX.registerOnload('database/operations.js', function () {
  30. /**
  31. * Ajax event handlers for 'Rename Database'
  32. */
  33. $(document).on('submit', '#rename_db_form.ajax', function (event) {
  34. event.preventDefault();
  35. if (Functions.emptyCheckTheField(this, 'newname')) {
  36. Functions.ajaxShowMessage(Messages.strFormEmpty, false, 'error');
  37. return false;
  38. }
  39. var oldDbName = CommonParams.get('db');
  40. var newDbName = $('#new_db_name').val();
  41. if (newDbName === oldDbName) {
  42. Functions.ajaxShowMessage(Messages.strDatabaseRenameToSameName, false, 'error');
  43. return false;
  44. }
  45. var $form = $(this);
  46. var question = Functions.escapeHtml('CREATE DATABASE ' + newDbName + ' / DROP DATABASE ' + oldDbName);
  47. Functions.prepareForAjaxRequest($form);
  48. $form.confirm(question, $form.attr('action'), function (url) {
  49. Functions.ajaxShowMessage(Messages.strRenamingDatabases, false);
  50. $.post(url, $('#rename_db_form').serialize() + CommonParams.get('arg_separator') + 'is_js_confirmed=1', function (data) {
  51. if (typeof data !== 'undefined' && data.success === true) {
  52. Functions.ajaxShowMessage(data.message);
  53. CommonParams.set('db', data.newname);
  54. Navigation.reload(function () {
  55. $('#pma_navigation_tree').find('a:not(\'.expander\')').each(function () {
  56. var $thisAnchor = $(this);
  57. if ($thisAnchor.text() === data.newname) {
  58. // simulate a click on the new db name
  59. // in navigation
  60. $thisAnchor.trigger('click');
  61. }
  62. });
  63. });
  64. } else {
  65. Functions.ajaxShowMessage(data.error, false);
  66. }
  67. }); // end $.post()
  68. });
  69. }); // end Rename Database
  70. /**
  71. * Ajax Event Handler for 'Copy Database'
  72. */
  73. $(document).on('submit', '#copy_db_form.ajax', function (event) {
  74. event.preventDefault();
  75. if (Functions.emptyCheckTheField(this, 'newname')) {
  76. Functions.ajaxShowMessage(Messages.strFormEmpty, false, 'error');
  77. return false;
  78. }
  79. Functions.ajaxShowMessage(Messages.strCopyingDatabase, false);
  80. var $form = $(this);
  81. Functions.prepareForAjaxRequest($form);
  82. $.post($form.attr('action'), $form.serialize(), function (data) {
  83. // use messages that stay on screen
  84. $('.alert-success, .alert-danger').fadeOut();
  85. if (typeof data !== 'undefined' && data.success === true) {
  86. if ($('#checkbox_switch').is(':checked')) {
  87. CommonParams.set('db', data.newname);
  88. CommonActions.refreshMain(false, function () {
  89. Functions.ajaxShowMessage(data.message);
  90. });
  91. } else {
  92. CommonParams.set('db', data.db);
  93. Functions.ajaxShowMessage(data.message);
  94. }
  95. Navigation.reload();
  96. } else {
  97. Functions.ajaxShowMessage(data.error, false);
  98. }
  99. }); // end $.post()
  100. }); // end copy database
  101. /**
  102. * Change tables columns visible only if change tables is checked
  103. */
  104. $('#span_change_all_tables_columns_collations').hide();
  105. $('#checkbox_change_all_tables_collations').on('click', function () {
  106. $('#span_change_all_tables_columns_collations').toggle();
  107. });
  108. /**
  109. * Ajax Event handler for 'Change Charset' of the database
  110. */
  111. $(document).on('submit', '#change_db_charset_form.ajax', function (event) {
  112. event.preventDefault();
  113. var $form = $(this);
  114. Functions.prepareForAjaxRequest($form);
  115. Functions.ajaxShowMessage(Messages.strChangingCharset);
  116. $.post($form.attr('action'), $form.serialize(), function (data) {
  117. if (typeof data !== 'undefined' && data.success === true) {
  118. Functions.ajaxShowMessage(data.message);
  119. } else {
  120. Functions.ajaxShowMessage(data.error, false);
  121. }
  122. }); // end $.post()
  123. }); // end change charset
  124. /**
  125. * Ajax event handlers for Drop Database
  126. */
  127. $(document).on('click', '#drop_db_anchor.ajax', function (event) {
  128. event.preventDefault();
  129. var $link = $(this);
  130. /**
  131. * @var question String containing the question to be asked for confirmation
  132. */
  133. var question = Messages.strDropDatabaseStrongWarning + ' ';
  134. question += Functions.sprintf(Messages.strDoYouReally, 'DROP DATABASE `' + Functions.escapeHtml(CommonParams.get('db') + '`'));
  135. var params = Functions.getJsConfirmCommonParam(this, $link.getPostData());
  136. $(this).confirm(question, $(this).attr('href'), function (url) {
  137. Functions.ajaxShowMessage(Messages.strProcessingRequest);
  138. $.post(url, params, function (data) {
  139. if (typeof data !== 'undefined' && data.success) {
  140. // Database deleted successfully, refresh both the frames
  141. Navigation.reload();
  142. CommonParams.set('db', '');
  143. CommonActions.refreshMain('index.php?route=/server/databases', function () {
  144. Functions.ajaxShowMessage(data.message);
  145. });
  146. } else {
  147. Functions.ajaxShowMessage(data.error, false);
  148. }
  149. });
  150. });
  151. });
  152. });