aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/js/table/operations.js
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/js/table/operations.js
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/js/table/operations.js')
-rw-r--r--srcs/phpmyadmin/js/table/operations.js321
1 files changed, 321 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/js/table/operations.js b/srcs/phpmyadmin/js/table/operations.js
new file mode 100644
index 0000000..9bd2af8
--- /dev/null
+++ b/srcs/phpmyadmin/js/table/operations.js
@@ -0,0 +1,321 @@
+/**
+ * Unbind all event handlers before tearing down a page
+ */
+AJAX.registerTeardown('table/operations.js', function () {
+ $(document).off('submit', '#copyTable.ajax');
+ $(document).off('submit', '#moveTableForm');
+ $(document).off('submit', '#tableOptionsForm');
+ $(document).off('submit', '#partitionsForm');
+ $(document).off('click', '#tbl_maintenance li a.maintain_action.ajax');
+ $(document).off('click', '#drop_tbl_anchor.ajax');
+ $(document).off('click', '#drop_view_anchor.ajax');
+ $(document).off('click', '#truncate_tbl_anchor.ajax');
+});
+
+/**
+ * jQuery coding for 'Table operations'. Used on tbl_operations.php
+ * Attach Ajax Event handlers for Table operations
+ */
+AJAX.registerOnload('table/operations.js', function () {
+ /**
+ *Ajax action for submitting the "Copy table"
+ **/
+ $(document).on('submit', '#copyTable.ajax', function (event) {
+ event.preventDefault();
+ var $form = $(this);
+ Functions.prepareForAjaxRequest($form);
+ var argsep = CommonParams.get('arg_separator');
+ $.post($form.attr('action'), $form.serialize() + argsep + 'submit_copy=Go', function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ if ($form.find('input[name=\'switch_to_new\']').prop('checked')) {
+ CommonParams.set(
+ 'db',
+ $form.find('select[name=\'target_db\']').val()
+ );
+ CommonParams.set(
+ 'table',
+ $form.find('input[name=\'new_name\']').val()
+ );
+ CommonActions.refreshMain(false, function () {
+ Functions.ajaxShowMessage(data.message);
+ });
+ } else {
+ Functions.ajaxShowMessage(data.message);
+ }
+ // Refresh navigation when the table is copied
+ Navigation.reload();
+ } else {
+ Functions.ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ });// end of copyTable ajax submit
+
+ /**
+ *Ajax action for submitting the "Move table"
+ */
+ $(document).on('submit', '#moveTableForm', function (event) {
+ event.preventDefault();
+ var $form = $(this);
+ Functions.prepareForAjaxRequest($form);
+ var argsep = CommonParams.get('arg_separator');
+ $.post($form.attr('action'), $form.serialize() + argsep + 'submit_move=1', function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ CommonParams.set('db', data.params.db);
+ CommonParams.set('table', data.params.table);
+ CommonActions.refreshMain('tbl_sql.php', function () {
+ Functions.ajaxShowMessage(data.message);
+ });
+ // Refresh navigation when the table is copied
+ Navigation.reload();
+ } else {
+ Functions.ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ });
+
+ /**
+ * Ajax action for submitting the "Table options"
+ */
+ $(document).on('submit', '#tableOptionsForm', function (event) {
+ event.preventDefault();
+ event.stopPropagation();
+ var $form = $(this);
+ var $tblNameField = $form.find('input[name=new_name]');
+ var $tblCollationField = $form.find('select[name=tbl_collation]');
+ var collationOrigValue = $('select[name="tbl_collation"] option[selected]').val();
+ var $changeAllColumnCollationsCheckBox = $('#checkbox_change_all_collations');
+ var question = Messages.strChangeAllColumnCollationsWarning;
+
+ if ($tblNameField.val() !== $tblNameField[0].defaultValue) {
+ // reload page and navigation if the table has been renamed
+ Functions.prepareForAjaxRequest($form);
+
+ if ($tblCollationField.val() !== collationOrigValue && $changeAllColumnCollationsCheckBox.is(':checked')) {
+ $form.confirm(question, $form.attr('action'), function () {
+ submitOptionsForm();
+ });
+ } else {
+ submitOptionsForm();
+ }
+ } else {
+ if ($tblCollationField.val() !== collationOrigValue && $changeAllColumnCollationsCheckBox.is(':checked')) {
+ $form.confirm(question, $form.attr('action'), function () {
+ $form.removeClass('ajax').trigger('submit').addClass('ajax');
+ });
+ } else {
+ $form.removeClass('ajax').trigger('submit').addClass('ajax');
+ }
+ }
+
+ function submitOptionsForm () {
+ $.post($form.attr('action'), $form.serialize(), function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ CommonParams.set('table', data.params.table);
+ CommonActions.refreshMain(false, function () {
+ $('#page_content').html(data.message);
+ Functions.highlightSql($('#page_content'));
+ });
+ // Refresh navigation when the table is renamed
+ Navigation.reload();
+ } else {
+ Functions.ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ }
+ });
+
+ /**
+ *Ajax events for actions in the "Table maintenance"
+ **/
+ $(document).on('click', '#tbl_maintenance li a.maintain_action.ajax', function (event) {
+ event.preventDefault();
+ var $link = $(this);
+
+ if ($('.sqlqueryresults').length !== 0) {
+ $('.sqlqueryresults').remove();
+ }
+ if ($('.result_query').length !== 0) {
+ $('.result_query').remove();
+ }
+ // variables which stores the common attributes
+ var params = $.param({
+ 'ajax_request': 1,
+ 'server': CommonParams.get('server')
+ });
+ var postData = $link.getPostData();
+ if (postData) {
+ params += CommonParams.get('arg_separator') + postData;
+ }
+
+ $.post($link.attr('href'), params, function (data) {
+ function scrollToTop () {
+ $('html, body').animate({ scrollTop: 0 });
+ }
+ var $tempDiv;
+ if (typeof data !== 'undefined' && data.success === true && data.sql_query !== undefined) {
+ Functions.ajaxShowMessage(data.message);
+ $('<div class=\'sqlqueryresults ajax\'></div>').prependTo('#page_content');
+ $('.sqlqueryresults').html(data.sql_query);
+ Functions.highlightSql($('#page_content'));
+ scrollToTop();
+ } else if (typeof data !== 'undefined' && data.success === true) {
+ $tempDiv = $('<div id=\'temp_div\'></div>');
+ $tempDiv.html(data.message);
+ var $success = $tempDiv.find('.result_query .success');
+ Functions.ajaxShowMessage($success);
+ $('<div class=\'sqlqueryresults ajax\'></div>').prependTo('#page_content');
+ $('.sqlqueryresults').html(data.message);
+ Functions.highlightSql($('#page_content'));
+ Functions.initSlider();
+ $('.sqlqueryresults').children('fieldset,br').remove();
+ scrollToTop();
+ } else {
+ $tempDiv = $('<div id=\'temp_div\'></div>');
+ $tempDiv.html(data.error);
+
+ var $error;
+ if ($tempDiv.find('.error code').length !== 0) {
+ $error = $tempDiv.find('.error code').addClass('error');
+ } else {
+ $error = $tempDiv;
+ }
+
+ Functions.ajaxShowMessage($error, false);
+ }
+ }); // end $.post()
+ });// end of table maintenance ajax click
+
+ /**
+ * Ajax action for submitting the "Partition Maintenance"
+ * Also, asks for confirmation when DROP partition is submitted
+ */
+ $(document).on('submit', '#partitionsForm', function (event) {
+ event.preventDefault();
+ var $form = $(this);
+
+ function submitPartitionMaintenance () {
+ var argsep = CommonParams.get('arg_separator');
+ var submitData = $form.serialize() + argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
+ Functions.ajaxShowMessage(Messages.strProcessingRequest);
+ AJAX.source = $form;
+ $.post($form.attr('action'), submitData, AJAX.responseHandler);
+ }
+
+ if ($('#partition_operation_DROP').is(':checked')) {
+ $form.confirm(Messages.strDropPartitionWarning, $form.attr('action'), function () {
+ submitPartitionMaintenance();
+ });
+ } else if ($('#partition_operation_TRUNCATE').is(':checked')) {
+ $form.confirm(Messages.strTruncatePartitionWarning, $form.attr('action'), function () {
+ submitPartitionMaintenance();
+ });
+ } else {
+ submitPartitionMaintenance();
+ }
+ });
+
+ $(document).on('click', '#drop_tbl_anchor.ajax', function (event) {
+ event.preventDefault();
+ var $link = $(this);
+ /**
+ * @var question String containing the question to be asked for confirmation
+ */
+ var question = Messages.strDropTableStrongWarning + ' ';
+ question += Functions.sprintf(
+ Messages.strDoYouReally,
+ 'DROP TABLE `' + Functions.escapeHtml(CommonParams.get('db')) + '`.`' + Functions.escapeHtml(CommonParams.get('table') + '`')
+ ) + Functions.getForeignKeyCheckboxLoader();
+
+ $(this).confirm(question, $(this).attr('href'), function (url) {
+ var $msgbox = Functions.ajaxShowMessage(Messages.strProcessingRequest);
+
+ var params = Functions.getJsConfirmCommonParam(this, $link.getPostData());
+
+ $.post(url, params, function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ Functions.ajaxRemoveMessage($msgbox);
+ // Table deleted successfully, refresh both the frames
+ Navigation.reload();
+ CommonParams.set('table', '');
+ CommonActions.refreshMain(
+ CommonParams.get('opendb_url'),
+ function () {
+ Functions.ajaxShowMessage(data.message);
+ }
+ );
+ } else {
+ Functions.ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ }, Functions.loadForeignKeyCheckbox);
+ }); // end of Drop Table Ajax action
+
+ $(document).on('click', '#drop_view_anchor.ajax', function (event) {
+ event.preventDefault();
+ var $link = $(this);
+ /**
+ * @var question String containing the question to be asked for confirmation
+ */
+ var question = Messages.strDropTableStrongWarning + ' ';
+ question += Functions.sprintf(
+ Messages.strDoYouReally,
+ 'DROP VIEW `' + Functions.escapeHtml(CommonParams.get('table') + '`')
+ );
+
+ $(this).confirm(question, $(this).attr('href'), function (url) {
+ var $msgbox = Functions.ajaxShowMessage(Messages.strProcessingRequest);
+ var params = Functions.getJsConfirmCommonParam(this, $link.getPostData());
+ $.post(url, params, function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ Functions.ajaxRemoveMessage($msgbox);
+ // Table deleted successfully, refresh both the frames
+ Navigation.reload();
+ CommonParams.set('table', '');
+ CommonActions.refreshMain(
+ CommonParams.get('opendb_url'),
+ function () {
+ Functions.ajaxShowMessage(data.message);
+ }
+ );
+ } else {
+ Functions.ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ });
+ }); // end of Drop View Ajax action
+
+ $(document).on('click', '#truncate_tbl_anchor.ajax', function (event) {
+ event.preventDefault();
+ var $link = $(this);
+ /**
+ * @var question String containing the question to be asked for confirmation
+ */
+ var question = Messages.strTruncateTableStrongWarning + ' ';
+ question += Functions.sprintf(
+ Messages.strDoYouReally,
+ 'TRUNCATE `' + Functions.escapeHtml(CommonParams.get('db')) + '`.`' + Functions.escapeHtml(CommonParams.get('table') + '`')
+ ) + Functions.getForeignKeyCheckboxLoader();
+ $(this).confirm(question, $(this).attr('href'), function (url) {
+ Functions.ajaxShowMessage(Messages.strProcessingRequest);
+
+ var params = Functions.getJsConfirmCommonParam(this, $link.getPostData());
+
+ $.post(url, params, function (data) {
+ if ($('.sqlqueryresults').length !== 0) {
+ $('.sqlqueryresults').remove();
+ }
+ if ($('.result_query').length !== 0) {
+ $('.result_query').remove();
+ }
+ if (typeof data !== 'undefined' && data.success === true) {
+ Functions.ajaxShowMessage(data.message);
+ $('<div class=\'sqlqueryresults ajax\'></div>').prependTo('#page_content');
+ $('.sqlqueryresults').html(data.sql_query);
+ Functions.highlightSql($('#page_content'));
+ } else {
+ Functions.ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ }, Functions.loadForeignKeyCheckbox);
+ }); // end of Truncate Table Ajax action
+}); // end $(document).ready for 'Table operations'