Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiyush Vijay <piyushvijay.1997@gmail.com>2018-07-28 15:03:01 +0300
committerPiyush Vijay <piyushvijay.1997@gmail.com>2018-08-17 11:25:24 +0300
commit0a979865e11433d88e4b1d4ae827ba732b81a76a (patch)
treefd24f147e203c0c44e272ac50095ecbad52b15e0
parent5e10b2c6b77152a2efe0f194cbd20133d3af0eac (diff)
Add db_operations.js to modular code.
Signed-Off-By: Piyush Vijay <piyushvijay.1997@gmail.com>
-rw-r--r--db_operations.php2
-rw-r--r--js/src/ajax.js3
-rw-r--r--js/src/consts/files.js3
-rw-r--r--js/src/db_operations.js175
4 files changed, 180 insertions, 3 deletions
diff --git a/db_operations.php b/db_operations.php
index ea199ea8e7..d7396bac80 100644
--- a/db_operations.php
+++ b/db_operations.php
@@ -38,7 +38,7 @@ require_once 'libraries/check_user_privileges.inc.php';
$response = Response::getInstance();
$header = $response->getHeader();
$scripts = $header->getScripts();
-$scripts->addFile('db_operations.js');
+$scripts->addFile('db_operations');
$sql_query = '';
diff --git a/js/src/ajax.js b/js/src/ajax.js
index 17b253b707..e595875154 100644
--- a/js/src/ajax.js
+++ b/js/src/ajax.js
@@ -602,7 +602,8 @@ export let AJAX = {
var fileImports = ['server_privileges', 'server_databases', 'error_report', 'navigation', 'server_status_advisor',
'server_status_processes', 'server_status_variables', 'server_plugins', 'server_status_sorter', 'server_status_queries',
'server_status_monitor', 'server_variables', 'server_user_groups', 'replication', 'export', 'import', 'config',
- 'page_settings', 'shortcuts_handler', 'db_search', 'sql', 'functions', 'multi_column_sort', 'db_structure'
+ 'page_settings', 'shortcuts_handler', 'db_search', 'sql', 'functions', 'multi_column_sort', 'db_structure',
+ 'db_operations'
];
if ($.inArray(file, fileImports) !== -1) {
// Dynamic import to load the files dynamically
diff --git a/js/src/consts/files.js b/js/src/consts/files.js
index 8f3ee42759..e2df0c847c 100644
--- a/js/src/consts/files.js
+++ b/js/src/consts/files.js
@@ -27,7 +27,8 @@ const files = {
tbl_sql: ['sql', 'multi_column_sort'],
db_sql: ['sql', 'multi_column_sort'],
sql: ['sql', 'multi_column_sort'],
- db_structure: ['db_structure']
+ db_structure: ['db_structure'],
+ db_operations: ['db_operations']
};
export default files;
diff --git a/js/src/db_operations.js b/js/src/db_operations.js
new file mode 100644
index 0000000000..c6f9dc629c
--- /dev/null
+++ b/js/src/db_operations.js
@@ -0,0 +1,175 @@
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+import { PMA_commonActions } from './classes/CommonActions';
+import PMA_commonParams from './variables/common_params';
+import { PMA_Messages as PMA_messages } from './variables/export_variables';
+import { PMA_ajaxShowMessage } from './utils/show_ajax_messages';
+import { escapeHtml } from './utils/Sanitise';
+import { PMA_prepareForAjaxRequest } from './functions/AjaxRequest';
+import { PMA_sprintf } from './utils/sprintf';
+import { getJSConfirmCommonParam } from './functions/Common';
+/**
+ * @fileoverview function used in server privilege pages
+ * @name Database Operations
+ *
+ * @requires jQuery
+ * @requires jQueryUI
+ * @requires js/functions.js
+ *
+ */
+
+/**
+ * Ajax event handlers here for db_operations.php
+ *
+ * Actions Ajaxified here:
+ * Rename Database
+ * Copy Database
+ * Change Charset
+ * Drop Database
+ */
+
+/**
+ * Unbind all event handlers before tearing down a page
+ */
+export function teardownDbOperations () {
+ $(document).off('submit', '#rename_db_form.ajax');
+ $(document).off('submit', '#copy_db_form.ajax');
+ $(document).off('submit', '#change_db_charset_form.ajax');
+ $(document).off('click', '#drop_db_anchor.ajax');
+}
+
+export function onloadDbOperations () {
+ /**
+ * Ajax event handlers for 'Rename Database'
+ */
+ $(document).on('submit', '#rename_db_form.ajax', function (event) {
+ event.preventDefault();
+
+ var old_db_name = PMA_commonParams.get('db');
+ var new_db_name = $('#new_db_name').val();
+
+ if (new_db_name === old_db_name) {
+ PMA_ajaxShowMessage(PMA_messages.strDatabaseRenameToSameName, false, 'error');
+ return false;
+ }
+
+ var $form = $(this);
+
+ var question = escapeHtml('CREATE DATABASE ' + new_db_name + ' / DROP DATABASE ' + old_db_name);
+
+ PMA_prepareForAjaxRequest($form);
+
+ $form.PMA_confirm(question, $form.attr('action'), function (url) {
+ PMA_ajaxShowMessage(PMA_messages.strRenamingDatabases, false);
+ $.post(url, $('#rename_db_form').serialize() + PMA_commonParams.get('arg_separator') + 'is_js_confirmed=1', function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ PMA_ajaxShowMessage(data.message);
+ PMA_commonParams.set('db', data.newname);
+
+ PMA_reloadNavigation(function () {
+ $('#pma_navigation_tree')
+ .find('a:not(\'.expander\')')
+ .each(function (index) {
+ var $thisAnchor = $(this);
+ if ($thisAnchor.text() === data.newname) {
+ // simulate a click on the new db name
+ // in navigation
+ $thisAnchor.trigger('click');
+ }
+ });
+ });
+ } else {
+ PMA_ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ });
+ }); // end Rename Database
+
+ /**
+ * Ajax Event Handler for 'Copy Database'
+ */
+ $(document).on('submit', '#copy_db_form.ajax', function (event) {
+ event.preventDefault();
+ PMA_ajaxShowMessage(PMA_messages.strCopyingDatabase, false);
+ var $form = $(this);
+ PMA_prepareForAjaxRequest($form);
+ $.post($form.attr('action'), $form.serialize(), function (data) {
+ // use messages that stay on screen
+ $('div.success, div.error').fadeOut();
+ if (typeof data !== 'undefined' && data.success === true) {
+ if ($('#checkbox_switch').is(':checked')) {
+ PMA_commonParams.set('db', data.newname);
+ PMA_commonActions.refreshMain(false, function () {
+ PMA_ajaxShowMessage(data.message);
+ });
+ } else {
+ PMA_commonParams.set('db', data.db);
+ PMA_ajaxShowMessage(data.message);
+ }
+ PMA_reloadNavigation();
+ } else {
+ PMA_ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ }); // end copy database
+
+ /**
+ * Change tables columns visible only if change tables is checked
+ */
+ $('#span_change_all_tables_columns_collations').hide();
+ $('#checkbox_change_all_tables_collations').on('click', function () {
+ $('#span_change_all_tables_columns_collations').toggle();
+ });
+
+ /**
+ * Ajax Event handler for 'Change Charset' of the database
+ */
+ $(document).on('submit', '#change_db_charset_form.ajax', function (event) {
+ event.preventDefault();
+ var $form = $(this);
+ PMA_prepareForAjaxRequest($form);
+ PMA_ajaxShowMessage(PMA_messages.strChangingCharset);
+ $.post($form.attr('action'), $form.serialize() + PMA_commonParams.get('arg_separator') + 'submitcollation=1', function (data) {
+ if (typeof data !== 'undefined' && data.success === true) {
+ PMA_ajaxShowMessage(data.message);
+ } else {
+ PMA_ajaxShowMessage(data.error, false);
+ }
+ }); // end $.post()
+ }); // end change charset
+
+ /**
+ * Ajax event handlers for Drop Database
+ */
+ $(document).on('click', '#drop_db_anchor.ajax', function (event) {
+ event.preventDefault();
+ var $link = $(this);
+ /**
+ * @var question String containing the question to be asked for confirmation
+ */
+ var question = PMA_messages.strDropDatabaseStrongWarning + ' ';
+ question += PMA_sprintf(
+ PMA_messages.strDoYouReally,
+ 'DROP DATABASE `' + escapeHtml(PMA_commonParams.get('db') + '`')
+ );
+ var params = getJSConfirmCommonParam(this, $link.getPostData());
+
+ $(this).PMA_confirm(question, $(this).attr('href'), function (url) {
+ PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
+ $.post(url, params, function (data) {
+ if (typeof data !== 'undefined' && data.success) {
+ // Database deleted successfully, refresh both the frames
+ PMA_reloadNavigation();
+ PMA_commonParams.set('db', '');
+ PMA_commonActions.refreshMain(
+ 'server_databases.php',
+ function () {
+ PMA_ajaxShowMessage(data.message);
+ }
+ );
+ } else {
+ PMA_ajaxShowMessage(data.error, false);
+ }
+ });
+ });
+ });
+}