')
- .append(
- '
' +
- PMA_messages.strConsoleDebugShowArgs +
- ' '
- )
- .append(
- '
' +
- PMA_messages.strConsoleDebugHideArgs +
- ' '
- )
- );
- }
- }
- $traceElem.append($stepElem);
- }
- }
- return $traceElem;
- },
- _formatQueryOrGroup: function (queryInfo, totalTime) {
- var grouped;
- var queryText;
- var queryTime;
- var count;
- var i;
- if (Array.isArray(queryInfo)) {
- // It is grouped
- grouped = true;
-
- queryText = queryInfo[0].query;
-
- queryTime = 0;
- for (i in queryInfo) {
- queryTime += queryInfo[i].time;
- }
-
- count = queryInfo.length;
- } else {
- queryText = queryInfo.query;
- queryTime = queryInfo.time;
- }
-
- var $query = $('
')
- .append(
- $('#debug_console').find('.templates .debug_query').clone()
- )
- .append(
- $('
')
- .text(queryText)
- )
- .data('queryInfo', queryInfo)
- .data('totalTime', totalTime);
- if (grouped) {
- $query.find('.text.count').removeClass('hide');
- $query.find('.text.count span').text(count);
- }
- $query.find('.text.time span').text(queryTime + 's (' + ((queryTime * 100) / totalTime).toFixed(3) + '%)');
-
- return $query;
- },
- _appendQueryExtraInfo: function (query, $elem) {
- if ('error' in query) {
- $elem.append(
- $('
').html(query.error)
- );
- }
- $elem.append(this._formatBackTrace(query.trace));
- },
- getQueryDetails: function (queryInfo, totalTime, $query) {
- if (Array.isArray(queryInfo)) {
- var $singleQuery;
- for (var i in queryInfo) {
- $singleQuery = $('
')
- .text((parseInt(i) + 1) + '.')
- .append(
- $('
').text(
- PMA_messages.strConsoleDebugTimeTaken +
- ' ' + queryInfo[i].time + 's' +
- ' (' + ((queryInfo[i].time * 100) / totalTime).toFixed(3) + '%)'
- )
- );
- this._appendQueryExtraInfo(queryInfo[i], $singleQuery);
- $query
- .append('')
- .append($singleQuery);
- }
- } else {
- this._appendQueryExtraInfo(queryInfo, $query);
- }
- },
- showLog: function (debugInfo, url) {
- this._lastDebugInfo.debugInfo = debugInfo;
- this._lastDebugInfo.url = url;
-
- $('#debug_console').find('.debugLog').empty();
- $('#debug_console').find('.debug>.welcome').empty();
-
- var debugJson = false;
- var i;
- if (typeof debugInfo === 'object' && 'queries' in debugInfo) {
- // Copy it to debugJson, so that it doesn't get changed
- if (!('queries' in debugInfo)) {
- debugJson = false;
- } else {
- debugJson = { queries: [] };
- for (i in debugInfo.queries) {
- debugJson.queries[i] = debugInfo.queries[i];
- }
- }
- } else if (typeof debugInfo === 'string') {
- try {
- debugJson = JSON.parse(debugInfo);
- } catch (e) {
- debugJson = false;
- }
- if (debugJson && !('queries' in debugJson)) {
- debugJson = false;
- }
- }
- if (debugJson === false) {
- $('#debug_console').find('.debug>.welcome').text(
- PMA_messages.strConsoleDebugError
- );
- return;
- }
- var allQueries = debugJson.queries;
- var uniqueQueries = {};
-
- var totalExec = allQueries.length;
-
- // Calculate total time and make unique query array
- var totalTime = 0;
- for (i = 0; i < totalExec; ++i) {
- totalTime += allQueries[i].time;
- if (!(allQueries[i].hash in uniqueQueries)) {
- uniqueQueries[allQueries[i].hash] = [];
- }
- uniqueQueries[allQueries[i].hash].push(allQueries[i]);
- }
- // Count total unique queries, convert uniqueQueries to Array
- var totalUnique = 0;
- var uniqueArray = [];
- for (var hash in uniqueQueries) {
- if (uniqueQueries.hasOwnProperty(hash)) {
- ++totalUnique;
- uniqueArray.push(uniqueQueries[hash]);
- }
- }
- uniqueQueries = uniqueArray;
- // Show summary
- $('#debug_console').find('.debug>.welcome').append(
- $('
').text(
- PMA_sprintf(
- PMA_messages.strConsoleDebugSummary,
- totalUnique,
- totalExec,
- totalTime
- )
- )
- );
- if (url) {
- $('#debug_console').find('.debug>.welcome').append(
- $('').text(url.split('?')[0])
- );
- }
-
- // For sorting queries
- function sortByTime (a, b) {
- var order = ((PMA_console.config.Order === 'asc') ? 1 : -1);
- if (Array.isArray(a) && Array.isArray(b)) {
- // It is grouped
- var timeA = 0;
- var timeB = 0;
- var i;
- for (i in a) {
- timeA += a[i].time;
- }
- for (i in b) {
- timeB += b[i].time;
- }
- return (timeA - timeB) * order;
- } else {
- return (a.time - b.time) * order;
- }
- }
-
- function sortByCount (a, b) {
- var order = ((PMA_console.config.Oorder === 'asc') ? 1 : -1);
- return (a.length - b.length) * order;
- }
-
- var orderBy = PMA_console.config.OrderBy;
- var order = PMA_console.config.Order;
-
- if (PMA_console.config.GroupQueries) {
- // Sort queries
- if (orderBy === 'time') {
- uniqueQueries.sort(sortByTime);
- } else if (orderBy === 'count') {
- uniqueQueries.sort(sortByCount);
- } else if (orderBy === 'exec' && order === 'desc') {
- uniqueQueries.reverse();
- }
- for (i in uniqueQueries) {
- if (orderBy === 'time') {
- uniqueQueries[i].sort(sortByTime);
- } else if (orderBy === 'exec' && order === 'desc') {
- uniqueQueries[i].reverse();
- }
- $('#debug_console').find('.debugLog').append(this._formatQueryOrGroup(uniqueQueries[i], totalTime));
- }
- } else {
- if (orderBy === 'time') {
- allQueries.sort(sortByTime);
- } else if (order === 'desc') {
- allQueries.reverse();
- }
- for (i = 0; i < totalExec; ++i) {
- $('#debug_console').find('.debugLog').append(this._formatQueryOrGroup(allQueries[i], totalTime));
- }
- }
-
- PMA_consoleMessages._msgEventBinds($('#debug_console').find('.message:not(.binded)'));
- },
- refresh: function () {
- var last = this._lastDebugInfo;
- PMA_consoleDebug.showLog(last.debugInfo, last.url);
- }
-};
-
-/** s
- * Executed on page load
- */
-$(function () {
- PMA_console.initialize();
-});
diff --git a/js/export.js b/js/export.js
deleted file mode 100644
index f47d829ede..0000000000
--- a/js/export.js
+++ /dev/null
@@ -1,996 +0,0 @@
-/* vim: set expandtab sw=4 ts=4 sts=4: */
-/**
- * Functions used in the export tab
- *
- */
-
-/**
- * Disables the "Dump some row(s)" sub-options
- */
-function disable_dump_some_rows_sub_options () {
- $('label[for=\'limit_to\']').fadeTo('fast', 0.4);
- $('label[for=\'limit_from\']').fadeTo('fast', 0.4);
- $('input[type=\'text\'][name=\'limit_to\']').prop('disabled', 'disabled');
- $('input[type=\'text\'][name=\'limit_from\']').prop('disabled', 'disabled');
-}
-
-/**
- * Enables the "Dump some row(s)" sub-options
- */
-function enable_dump_some_rows_sub_options () {
- $('label[for=\'limit_to\']').fadeTo('fast', 1);
- $('label[for=\'limit_from\']').fadeTo('fast', 1);
- $('input[type=\'text\'][name=\'limit_to\']').prop('disabled', '');
- $('input[type=\'text\'][name=\'limit_from\']').prop('disabled', '');
-}
-
-/**
- * Return template data as a json object
- *
- * @returns template data
- */
-function getTemplateData () {
- var $form = $('form[name="dump"]');
- var blacklist = ['token', 'server', 'db', 'table', 'single_table',
- 'export_type', 'export_method', 'sql_query', 'template_id'];
- var obj = {};
- var arr = $form.serializeArray();
- $.each(arr, function () {
- if ($.inArray(this.name, blacklist) < 0) {
- if (obj[this.name] !== undefined) {
- if (! obj[this.name].push) {
- obj[this.name] = [obj[this.name]];
- }
- obj[this.name].push(this.value || '');
- } else {
- obj[this.name] = this.value || '';
- }
- }
- });
- // include unchecked checboxes (which are ignored by serializeArray()) with null
- // to uncheck them when loading the template
- $form.find('input[type="checkbox"]:not(:checked)').each(function () {
- if (obj[this.name] === undefined) {
- obj[this.name] = null;
- }
- });
- // include empty multiselects
- $form.find('select').each(function () {
- if ($(this).find('option:selected').length === 0) {
- obj[this.name] = [];
- }
- });
- return obj;
-}
-
-/**
- * Create a template with selected options
- *
- * @param name name of the template
- */
-function createTemplate (name) {
- var templateData = getTemplateData();
-
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- db : PMA_commonParams.get('db'),
- table : PMA_commonParams.get('table'),
- exportType : $('input[name="export_type"]').val(),
- templateAction : 'create',
- templateName : name,
- templateData : JSON.stringify(templateData)
- };
-
- PMA_ajaxShowMessage();
- $.post('tbl_export.php', params, function (response) {
- if (response.success === true) {
- $('#templateName').val('');
- $('#template').html(response.data);
- $('#template').find('option').each(function () {
- if ($(this).text() === name) {
- $(this).prop('selected', true);
- }
- });
- PMA_ajaxShowMessage(PMA_messages.strTemplateCreated);
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
-}
-
-/**
- * Loads a template
- *
- * @param id ID of the template to load
- */
-function loadTemplate (id) {
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- db : PMA_commonParams.get('db'),
- table : PMA_commonParams.get('table'),
- exportType : $('input[name="export_type"]').val(),
- templateAction : 'load',
- templateId : id,
- };
-
- PMA_ajaxShowMessage();
- $.post('tbl_export.php', params, function (response) {
- if (response.success === true) {
- var $form = $('form[name="dump"]');
- var options = JSON.parse(response.data);
- $.each(options, function (key, value) {
- var $element = $form.find('[name="' + key + '"]');
- if ($element.length) {
- if (($element.is('input') && $element.attr('type') === 'checkbox') && value === null) {
- $element.prop('checked', false);
- } else {
- if (($element.is('input') && $element.attr('type') === 'checkbox') ||
- ($element.is('input') && $element.attr('type') === 'radio') ||
- ($element.is('select') && $element.attr('multiple') === 'multiple')) {
- if (! value.push) {
- value = [value];
- }
- }
- $element.val(value);
- }
- $element.trigger('change');
- }
- });
- $('input[name="template_id"]').val(id);
- PMA_ajaxShowMessage(PMA_messages.strTemplateLoaded);
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
-}
-
-/**
- * Updates an existing template with current options
- *
- * @param id ID of the template to update
- */
-function updateTemplate (id) {
- var templateData = getTemplateData();
-
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- db : PMA_commonParams.get('db'),
- table : PMA_commonParams.get('table'),
- exportType : $('input[name="export_type"]').val(),
- templateAction : 'update',
- templateId : id,
- templateData : JSON.stringify(templateData)
- };
-
- PMA_ajaxShowMessage();
- $.post('tbl_export.php', params, function (response) {
- if (response.success === true) {
- PMA_ajaxShowMessage(PMA_messages.strTemplateUpdated);
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
-}
-
-/**
- * Delete a template
- *
- * @param id ID of the template to delete
- */
-function deleteTemplate (id) {
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- db : PMA_commonParams.get('db'),
- table : PMA_commonParams.get('table'),
- exportType : $('input[name="export_type"]').val(),
- templateAction : 'delete',
- templateId : id,
- };
-
- PMA_ajaxShowMessage();
- $.post('tbl_export.php', params, function (response) {
- if (response.success === true) {
- $('#template').find('option[value="' + id + '"]').remove();
- PMA_ajaxShowMessage(PMA_messages.strTemplateDeleted);
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
-}
-
-/**
- * Unbind all event handlers before tearing down a page
- */
-AJAX.registerTeardown('export.js', function () {
- $('#plugins').off('change');
- $('input[type=\'radio\'][name=\'sql_structure_or_data\']').off('change');
- $('input[type=\'radio\'][name$=\'_structure_or_data\']').off('change');
- $('input[type=\'radio\'][name=\'output_format\']').off('change');
- $('#checkbox_sql_include_comments').off('change');
- $('input[type=\'radio\'][name=\'quick_or_custom\']').off('change');
- $('input[type=\'radio\'][name=\'allrows\']').off('change');
- $('#btn_alias_config').off('click');
- $('.alias_remove').off('click');
- $('#db_alias_button').off('click');
- $('#table_alias_button').off('click');
- $('#column_alias_button').off('click');
- $('input[name="table_select[]"]').off('change');
- $('input[name="table_structure[]"]').off('change');
- $('input[name="table_data[]"]').off('change');
- $('#table_structure_all').off('change');
- $('#table_data_all').off('change');
- $('input[name="createTemplate"]').off('click');
- $('select[name="template"]').off('change');
- $('input[name="updateTemplate"]').off('click');
- $('input[name="deleteTemplate"]').off('click');
-});
-
-AJAX.registerOnload('export.js', function () {
- /**
- * Export template handling code
- */
- // create a new template
- $('input[name="createTemplate"]').on('click', function (e) {
- e.preventDefault();
- var name = $('input[name="templateName"]').val();
- if (name.length) {
- createTemplate(name);
- }
- });
-
- // load an existing template
- $('select[name="template"]').on('change', function (e) {
- e.preventDefault();
- var id = $(this).val();
- if (id.length) {
- loadTemplate(id);
- }
- });
-
- // udpate an existing template with new criteria
- $('input[name="updateTemplate"]').on('click', function (e) {
- e.preventDefault();
- var id = $('select[name="template"]').val();
- if (id.length) {
- updateTemplate(id);
- }
- });
-
- // delete an existing template
- $('input[name="deleteTemplate"]').on('click', function (e) {
- e.preventDefault();
- var id = $('select[name="template"]').val();
- if (id.length) {
- deleteTemplate(id);
- }
- });
-
- /**
- * Toggles the hiding and showing of each plugin's options
- * according to the currently selected plugin from the dropdown list
- */
- $('#plugins').on('change', function () {
- $('#format_specific_opts').find('div.format_specific_options').hide();
- var selected_plugin_name = $('#plugins').find('option:selected').val();
- $('#' + selected_plugin_name + '_options').show();
- });
-
- /**
- * Toggles the enabling and disabling of the SQL plugin's comment options that apply only when exporting structure
- */
- $('input[type=\'radio\'][name=\'sql_structure_or_data\']').on('change', function () {
- var comments_are_present = $('#checkbox_sql_include_comments').prop('checked');
- var show = $('input[type=\'radio\'][name=\'sql_structure_or_data\']:checked').val();
- if (show === 'data') {
- // disable the SQL comment options
- if (comments_are_present) {
- $('#checkbox_sql_dates').prop('disabled', true).parent().fadeTo('fast', 0.4);
- }
- $('#checkbox_sql_relation').prop('disabled', true).parent().fadeTo('fast', 0.4);
- $('#checkbox_sql_mime').prop('disabled', true).parent().fadeTo('fast', 0.4);
- } else {
- // enable the SQL comment options
- if (comments_are_present) {
- $('#checkbox_sql_dates').prop('disabled', false).parent().fadeTo('fast', 1);
- }
- $('#checkbox_sql_relation').prop('disabled', false).parent().fadeTo('fast', 1);
- $('#checkbox_sql_mime').prop('disabled', false).parent().fadeTo('fast', 1);
- }
-
- if (show === 'structure') {
- $('#checkbox_sql_auto_increment').prop('disabled', true).parent().fadeTo('fast', 0.4);
- } else {
- $('#checkbox_sql_auto_increment').prop('disabled', false).parent().fadeTo('fast', 1);
- }
- });
-
- // For separate-file exports only ZIP compression is allowed
- $('input[type="checkbox"][name="as_separate_files"]').on('change', function () {
- if ($(this).is(':checked')) {
- $('#compression').val('zip');
- }
- });
-
- $('#compression').on('change', function () {
- if ($('option:selected').val() !== 'zip') {
- $('input[type="checkbox"][name="as_separate_files"]').prop('checked', false);
- }
- });
-});
-
-function setup_table_structure_or_data () {
- if ($('input[name=\'export_type\']').val() !== 'database') {
- return;
- }
- var pluginName = $('#plugins').find('option:selected').val();
- var formElemName = pluginName + '_structure_or_data';
- var force_structure_or_data = !($('input[name=\'' + formElemName + '_default\']').length);
-
- if (force_structure_or_data === true) {
- $('input[name="structure_or_data_forced"]').val(1);
- $('.export_structure input[type="checkbox"], .export_data input[type="checkbox"]')
- .prop('disabled', true);
- $('.export_structure, .export_data').fadeTo('fast', 0.4);
- } else {
- $('input[name="structure_or_data_forced"]').val(0);
- $('.export_structure input[type="checkbox"], .export_data input[type="checkbox"]')
- .prop('disabled', false);
- $('.export_structure, .export_data').fadeTo('fast', 1);
-
- var structure_or_data = $('input[name="' + formElemName + '_default"]').val();
-
- if (structure_or_data === 'structure') {
- $('.export_data input[type="checkbox"]')
- .prop('checked', false);
- } else if (structure_or_data === 'data') {
- $('.export_structure input[type="checkbox"]')
- .prop('checked', false);
- }
- if (structure_or_data === 'structure' || structure_or_data === 'structure_and_data') {
- if (!$('.export_structure input[type="checkbox"]:checked').length) {
- $('input[name="table_select[]"]:checked')
- .closest('tr')
- .find('.export_structure input[type="checkbox"]')
- .prop('checked', true);
- }
- }
- if (structure_or_data === 'data' || structure_or_data === 'structure_and_data') {
- if (!$('.export_data input[type="checkbox"]:checked').length) {
- $('input[name="table_select[]"]:checked')
- .closest('tr')
- .find('.export_data input[type="checkbox"]')
- .prop('checked', true);
- }
- }
-
- check_selected_tables();
- check_table_select_all();
- check_table_select_struture_or_data();
- }
-}
-
-/**
- * Toggles the hiding and showing of plugin structure-specific and data-specific
- * options
- */
-function toggle_structure_data_opts () {
- var pluginName = $('select#plugins').val();
- var radioFormName = pluginName + '_structure_or_data';
- var dataDiv = '#' + pluginName + '_data';
- var structureDiv = '#' + pluginName + '_structure';
- var show = $('input[type=\'radio\'][name=\'' + radioFormName + '\']:checked').val();
- if (show === 'data') {
- $(dataDiv).slideDown('slow');
- $(structureDiv).slideUp('slow');
- } else {
- $(structureDiv).slideDown('slow');
- if (show === 'structure') {
- $(dataDiv).slideUp('slow');
- } else {
- $(dataDiv).slideDown('slow');
- }
- }
-}
-
-/**
- * Toggles the disabling of the "save to file" options
- */
-function toggle_save_to_file () {
- var $ulSaveAsfile = $('#ul_save_asfile');
- if (!$('#radio_dump_asfile').prop('checked')) {
- $ulSaveAsfile.find('> li').fadeTo('fast', 0.4);
- $ulSaveAsfile.find('> li > input').prop('disabled', true);
- $ulSaveAsfile.find('> li > select').prop('disabled', true);
- } else {
- $ulSaveAsfile.find('> li').fadeTo('fast', 1);
- $ulSaveAsfile.find('> li > input').prop('disabled', false);
- $ulSaveAsfile.find('> li > select').prop('disabled', false);
- }
-}
-
-AJAX.registerOnload('export.js', function () {
- toggle_save_to_file();
- $('input[type=\'radio\'][name=\'output_format\']').on('change', toggle_save_to_file);
-});
-
-/**
- * For SQL plugin, toggles the disabling of the "display comments" options
- */
-function toggle_sql_include_comments () {
- $('#checkbox_sql_include_comments').on('change', function () {
- var $ulIncludeComments = $('#ul_include_comments');
- if (!$('#checkbox_sql_include_comments').prop('checked')) {
- $ulIncludeComments.find('> li').fadeTo('fast', 0.4);
- $ulIncludeComments.find('> li > input').prop('disabled', true);
- } else {
- // If structure is not being exported, the comment options for structure should not be enabled
- if ($('#radio_sql_structure_or_data_data').prop('checked')) {
- $('#text_sql_header_comment').prop('disabled', false).parent('li').fadeTo('fast', 1);
- } else {
- $ulIncludeComments.find('> li').fadeTo('fast', 1);
- $ulIncludeComments.find('> li > input').prop('disabled', false);
- }
- }
- });
-}
-
-function check_table_select_all () {
- var total = $('input[name="table_select[]"]').length;
- var str_checked = $('input[name="table_structure[]"]:checked').length;
- var data_checked = $('input[name="table_data[]"]:checked').length;
- var str_all = $('#table_structure_all');
- var data_all = $('#table_data_all');
-
- if (str_checked === total) {
- str_all
- .prop('indeterminate', false)
- .prop('checked', true);
- } else if (str_checked === 0) {
- str_all
- .prop('indeterminate', false)
- .prop('checked', false);
- } else {
- str_all
- .prop('indeterminate', true)
- .prop('checked', false);
- }
-
- if (data_checked === total) {
- data_all
- .prop('indeterminate', false)
- .prop('checked', true);
- } else if (data_checked === 0) {
- data_all
- .prop('indeterminate', false)
- .prop('checked', false);
- } else {
- data_all
- .prop('indeterminate', true)
- .prop('checked', false);
- }
-}
-
-function check_table_select_struture_or_data () {
- var str_checked = $('input[name="table_structure[]"]:checked').length;
- var data_checked = $('input[name="table_data[]"]:checked').length;
- var auto_increment = $('#checkbox_sql_auto_increment');
-
- var pluginName = $('select#plugins').val();
- var dataDiv = '#' + pluginName + '_data';
- var structureDiv = '#' + pluginName + '_structure';
-
- if (str_checked === 0) {
- $(structureDiv).slideUp('slow');
- } else {
- $(structureDiv).slideDown('slow');
- }
-
- if (data_checked === 0) {
- $(dataDiv).slideUp('slow');
- auto_increment.prop('disabled', true).parent().fadeTo('fast', 0.4);
- } else {
- $(dataDiv).slideDown('slow');
- auto_increment.prop('disabled', false).parent().fadeTo('fast', 1);
- }
-}
-
-function toggle_table_select_all_str () {
- var str_all = $('#table_structure_all').is(':checked');
- if (str_all) {
- $('input[name="table_structure[]"]').prop('checked', true);
- } else {
- $('input[name="table_structure[]"]').prop('checked', false);
- }
-}
-
-function toggle_table_select_all_data () {
- var data_all = $('#table_data_all').is(':checked');
- if (data_all) {
- $('input[name="table_data[]"]').prop('checked', true);
- } else {
- $('input[name="table_data[]"]').prop('checked', false);
- }
-}
-
-function check_selected_tables (argument) {
- $('.export_table_select tbody tr').each(function () {
- check_table_selected(this);
- });
-}
-
-function check_table_selected (row) {
- var $row = $(row);
- var table_select = $row.find('input[name="table_select[]"]');
- var str_check = $row.find('input[name="table_structure[]"]');
- var data_check = $row.find('input[name="table_data[]"]');
-
- var data = data_check.is(':checked:not(:disabled)');
- var structure = str_check.is(':checked:not(:disabled)');
-
- if (data && structure) {
- table_select.prop({ checked: true, indeterminate: false });
- $row.addClass('marked');
- } else if (data || structure) {
- table_select.prop({ checked: true, indeterminate: true });
- $row.removeClass('marked');
- } else {
- table_select.prop({ checked: false, indeterminate: false });
- $row.removeClass('marked');
- }
-}
-
-function toggle_table_select (row) {
- var $row = $(row);
- var table_selected = $row.find('input[name="table_select[]"]').is(':checked');
-
- if (table_selected) {
- $row.find('input[type="checkbox"]:not(:disabled)').prop('checked', true);
- $row.addClass('marked');
- } else {
- $row.find('input[type="checkbox"]:not(:disabled)').prop('checked', false);
- $row.removeClass('marked');
- }
-}
-
-function handleAddProcCheckbox () {
- if ($('#table_structure_all').is(':checked') === true
- && $('#table_data_all').is(':checked') === true
- ) {
- $('#checkbox_sql_procedure_function').prop('checked', true);
- } else {
- $('#checkbox_sql_procedure_function').prop('checked', false);
- }
-}
-
-AJAX.registerOnload('export.js', function () {
- /**
- * For SQL plugin, if "CREATE TABLE options" is checked/unchecked, check/uncheck each of its sub-options
- */
- var $create = $('#checkbox_sql_create_table_statements');
- var $create_options = $('#ul_create_table_statements').find('input');
- $create.on('change', function () {
- $create_options.prop('checked', $(this).prop('checked'));
- });
- $create_options.on('change', function () {
- if ($create_options.is(':checked')) {
- $create.prop('checked', true);
- }
- });
-
- /**
- * Disables the view output as text option if the output must be saved as a file
- */
- $('#plugins').on('change', function () {
- var active_plugin = $('#plugins').find('option:selected').val();
- var force_file = $('#force_file_' + active_plugin).val();
- if (force_file === 'true') {
- if ($('#radio_dump_asfile').prop('checked') !== true) {
- $('#radio_dump_asfile').prop('checked', true);
- toggle_save_to_file();
- }
- $('#radio_view_as_text').prop('disabled', true).parent().fadeTo('fast', 0.4);
- } else {
- $('#radio_view_as_text').prop('disabled', false).parent().fadeTo('fast', 1);
- }
- });
-
- $('input[type=\'radio\'][name$=\'_structure_or_data\']').on('change', function () {
- toggle_structure_data_opts();
- });
-
- $('input[name="table_select[]"]').on('change', function () {
- toggle_table_select($(this).closest('tr'));
- check_table_select_all();
- handleAddProcCheckbox();
- check_table_select_struture_or_data();
- });
-
- $('input[name="table_structure[]"]').on('change', function () {
- check_table_selected($(this).closest('tr'));
- check_table_select_all();
- handleAddProcCheckbox();
- check_table_select_struture_or_data();
- });
-
- $('input[name="table_data[]"]').on('change', function () {
- check_table_selected($(this).closest('tr'));
- check_table_select_all();
- handleAddProcCheckbox();
- check_table_select_struture_or_data();
- });
-
- $('#table_structure_all').on('change', function () {
- toggle_table_select_all_str();
- check_selected_tables();
- handleAddProcCheckbox();
- check_table_select_struture_or_data();
- });
-
- $('#table_data_all').on('change', function () {
- toggle_table_select_all_data();
- check_selected_tables();
- handleAddProcCheckbox();
- check_table_select_struture_or_data();
- });
-
- if ($('input[name=\'export_type\']').val() === 'database') {
- // Hide structure or data radio buttons
- $('input[type=\'radio\'][name$=\'_structure_or_data\']').each(function () {
- var $this = $(this);
- var name = $this.prop('name');
- var val = $('input[name="' + name + '"]:checked').val();
- var name_default = name + '_default';
- if (!$('input[name="' + name_default + '"]').length) {
- $this
- .after(
- $('')
- )
- .after(
- $('')
- );
- $this.parent().find('label').remove();
- } else {
- $this.parent().remove();
- }
- });
- $('input[type=\'radio\'][name$=\'_structure_or_data\']').remove();
-
- // Disable CREATE table checkbox for sql
- var createTableCheckbox = $('#checkbox_sql_create_table');
- createTableCheckbox.prop('checked', true);
- var dummyCreateTable = $('#checkbox_sql_create_table')
- .clone()
- .removeAttr('id')
- .attr('type', 'hidden');
- createTableCheckbox
- .prop('disabled', true)
- .after(dummyCreateTable)
- .parent()
- .fadeTo('fast', 0.4);
-
- setup_table_structure_or_data();
- }
-
- /**
- * Handle force structure_or_data
- */
- $('#plugins').on('change', setup_table_structure_or_data);
-});
-
-/**
- * Toggles display of options when quick and custom export are selected
- */
-function toggle_quick_or_custom () {
- if ($('input[name=\'quick_or_custom\']').length === 0 // custom_no_form option
- || $('#radio_custom_export').prop('checked') // custom
- ) {
- $('#databases_and_tables').show();
- $('#rows').show();
- $('#output').show();
- $('#format_specific_opts').show();
- $('#output_quick_export').hide();
- var selected_plugin_name = $('#plugins').find('option:selected').val();
- $('#' + selected_plugin_name + '_options').show();
- } else { // quick
- $('#databases_and_tables').hide();
- $('#rows').hide();
- $('#output').hide();
- $('#format_specific_opts').hide();
- $('#output_quick_export').show();
- }
-}
-var time_out;
-function check_time_out (time_limit) {
- if (typeof time_limit === 'undefined' || time_limit === 0) {
- return true;
- }
- // margin of one second to avoid race condition to set/access session variable
- time_limit = time_limit + 1;
- var href = 'export.php';
- var params = {
- 'ajax_request' : true,
- 'check_time_out' : true
- };
- clearTimeout(time_out);
- time_out = setTimeout(function () {
- $.get(href, params, function (data) {
- if (data.message === 'timeout') {
- PMA_ajaxShowMessage(
- '' +
- PMA_messages.strTimeOutError +
- '
',
- false
- );
- }
- });
- }, time_limit * 1000);
-}
-
-/**
- * Handler for Database/table alias select
- *
- * @param event object the event object
- *
- * @return void
- */
-function aliasSelectHandler (event) {
- var sel = event.data.sel;
- var type = event.data.type;
- var inputId = $(this).val();
- var $label = $(this).next('label');
- $('input#' + $label.attr('for')).addClass('hide');
- $('input#' + inputId).removeClass('hide');
- $label.attr('for', inputId);
- $('#alias_modal ' + sel + '[id$=' + type + ']:visible').addClass('hide');
- var $inputWrapper = $('#alias_modal ' + sel + '#' + inputId + type);
- $inputWrapper.removeClass('hide');
- if (type === '_cols' && $inputWrapper.length > 0) {
- var outer = $inputWrapper[0].outerHTML;
- // Replace opening tags
- var regex = /');
- option.text(db);
- option.attr('value', db);
- $('#db_alias_select').append(option).val(db).trigger('change');
- } else {
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- type: 'list-databases'
- };
- $.post('ajax.php', params, function (response) {
- if (response.success === true) {
- $.each(response.databases, function (idx, value) {
- var option = $('');
- option.text(value);
- option.attr('value', value);
- $('#db_alias_select').append(option);
- });
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
- }
- },
- close: function () {
- var isEmpty = true;
- $(this).find('input[type="text"]').each(function () {
- // trim empty input fields on close
- if ($(this).val()) {
- isEmpty = false;
- } else {
- $(this).parents('tr').remove();
- }
- });
- // Toggle checkbox based on aliases
- $('input#btn_alias_config').prop('checked', !isEmpty);
- },
- position: { my: 'center top', at: 'center top', of: window }
- });
-}
-
-function aliasToggleRow (elm) {
- var inputs = elm.parents('tr').find('input,button');
- if (elm.val()) {
- inputs.attr('disabled', false);
- } else {
- inputs.attr('disabled', true);
- }
-}
-
-function addAlias (type, name, field, value) {
- if (value === '') {
- return;
- }
-
- var row = $('#alias_data tfoot tr').clone();
- row.find('th').text(type);
- row.find('td:first').text(name);
- row.find('input').attr('name', field);
- row.find('input').val(value);
- row.find('.alias_remove').on('click', function () {
- $(this).parents('tr').remove();
- });
-
- var matching = $('#alias_data [name="' + $.escapeSelector(field) + '"]');
- if (matching.length > 0) {
- matching.parents('tr').remove();
- }
-
- $('#alias_data tbody').append(row);
-}
-
-AJAX.registerOnload('export.js', function () {
- $('input[type=\'radio\'][name=\'quick_or_custom\']').on('change', toggle_quick_or_custom);
-
- $('#scroll_to_options_msg').hide();
- $('#format_specific_opts').find('div.format_specific_options')
- .hide()
- .css({
- 'border': 0,
- 'margin': 0,
- 'padding': 0
- })
- .find('h3')
- .remove();
- toggle_quick_or_custom();
- toggle_structure_data_opts();
- toggle_sql_include_comments();
- check_table_select_all();
- handleAddProcCheckbox();
-
- /**
- * Initially disables the "Dump some row(s)" sub-options
- */
- disable_dump_some_rows_sub_options();
-
- /**
- * Disables the "Dump some row(s)" sub-options when it is not selected
- */
- $('input[type=\'radio\'][name=\'allrows\']').on('change', function () {
- if ($('input[type=\'radio\'][name=\'allrows\']').prop('checked')) {
- enable_dump_some_rows_sub_options();
- } else {
- disable_dump_some_rows_sub_options();
- }
- });
-
- // Open Alias Modal Dialog on click
- $('#btn_alias_config').on('click', createAliasModal);
- $('.alias_remove').on('click', function () {
- $(this).parents('tr').remove();
- });
- $('#db_alias_select').on('change', function () {
- aliasToggleRow($(this));
- var db = $(this).val();
- var table = PMA_commonParams.get('table');
- if (table) {
- var option = $('');
- option.text(table);
- option.attr('value', table);
- $('#table_alias_select').append(option).val(table).trigger('change');
- } else {
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- db : $(this).val(),
- type: 'list-tables'
- };
- $.post('ajax.php', params, function (response) {
- if (response.success === true) {
- $.each(response.tables, function (idx, value) {
- var option = $('');
- option.text(value);
- option.attr('value', value);
- $('#table_alias_select').append(option);
- });
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
- }
- });
- $('#table_alias_select').on('change', function () {
- aliasToggleRow($(this));
- var params = {
- ajax_request : true,
- server : PMA_commonParams.get('server'),
- db : $('#db_alias_select').val(),
- table: $(this).val(),
- type: 'list-columns'
- };
- $.post('ajax.php', params, function (response) {
- if (response.success === true) {
- $.each(response.columns, function (idx, value) {
- var option = $('');
- option.text(value);
- option.attr('value', value);
- $('#column_alias_select').append(option);
- });
- } else {
- PMA_ajaxShowMessage(response.error, false);
- }
- });
- });
- $('#column_alias_select').on('change', function () {
- aliasToggleRow($(this));
- });
- $('#db_alias_button').on('click', function (e) {
- e.preventDefault();
- var db = $('#db_alias_select').val();
- addAlias(
- PMA_messages.strAliasDatabase,
- db,
- 'aliases[' + db + '][alias]',
- $('#db_alias_name').val()
- );
- $('#db_alias_name').val('');
- });
- $('#table_alias_button').on('click', function (e) {
- e.preventDefault();
- var db = $('#db_alias_select').val();
- var table = $('#table_alias_select').val();
- addAlias(
- PMA_messages.strAliasTable,
- db + '.' + table,
- 'aliases[' + db + '][tables][' + table + '][alias]',
- $('#table_alias_name').val()
- );
- $('#table_alias_name').val('');
- });
- $('#column_alias_button').on('click', function (e) {
- e.preventDefault();
- var db = $('#db_alias_select').val();
- var table = $('#table_alias_select').val();
- var column = $('#column_alias_select').val();
- addAlias(
- PMA_messages.strAliasColumn,
- db + '.' + table + '.' + column,
- 'aliases[' + db + '][tables][' + table + '][colums][' + column + ']',
- $('#column_alias_name').val()
- );
- $('#column_alias_name').val('');
- });
-});
diff --git a/js/import.js b/js/import.js
deleted file mode 100644
index 8efebe9fbe..0000000000
--- a/js/import.js
+++ /dev/null
@@ -1,155 +0,0 @@
-/* vim: set expandtab sw=4 ts=4 sts=4: */
-/**
- * Functions used in the import tab
- *
- */
-
-
-/**
- * Toggles the hiding and showing of each plugin's options
- * according to the currently selected plugin from the dropdown list
- */
-function changePluginOpts () {
- $('#format_specific_opts').find('div.format_specific_options').each(function () {
- $(this).hide();
- });
- var selected_plugin_name = $('#plugins').find('option:selected').val();
- $('#' + selected_plugin_name + '_options').fadeIn('slow');
- if (selected_plugin_name === 'csv') {
- $('#import_notification').text(PMA_messages.strImportCSV);
- } else {
- $('#import_notification').text('');
- }
-}
-
-/**
- * Toggles the hiding and showing of each plugin's options and sets the selected value
- * in the plugin dropdown list according to the format of the selected file
- */
-function matchFile (fname) {
- var fname_array = fname.toLowerCase().split('.');
- var len = fname_array.length;
- if (len !== 0) {
- var extension = fname_array[len - 1];
- if (extension === 'gz' || extension === 'bz2' || extension === 'zip') {
- len--;
- }
- // Only toggle if the format of the file can be imported
- if ($('select[name=\'format\'] option').filterByValue(fname_array[len - 1]).length === 1) {
- $('select[name=\'format\'] option').filterByValue(fname_array[len - 1]).prop('selected', true);
- changePluginOpts();
- }
- }
-}
-
-/**
- * Unbind all event handlers before tearing down a page
- */
-AJAX.registerTeardown('import.js', function () {
- $('#plugins').off('change');
- $('#input_import_file').off('change');
- $('#select_local_import_file').off('change');
- $('#input_import_file').off('change').off('focus');
- $('#select_local_import_file').off('focus');
- $('#text_csv_enclosed').add('#text_csv_escaped').off('keyup');
-});
-
-AJAX.registerOnload('import.js', function () {
- // import_file_form validation.
- $(document).on('submit', '#import_file_form', function (event) {
- var radioLocalImport = $('#radio_local_import_file');
- var radioImport = $('#radio_import_file');
- var fileMsg = '
' + PMA_messages.strImportDialogMessage + '
';
-
- if (radioLocalImport.length !== 0) {
- // remote upload.
-
- if (radioImport.is(':checked') && $('#input_import_file').val() === '') {
- $('#input_import_file').trigger('focus');
- PMA_ajaxShowMessage(fileMsg, false);
- return false;
- }
-
- if (radioLocalImport.is(':checked')) {
- if ($('#select_local_import_file').length === 0) {
- PMA_ajaxShowMessage('
' + PMA_messages.strNoImportFile + '
', false);
- return false;
- }
-
- if ($('#select_local_import_file').val() === '') {
- $('#select_local_import_file').trigger('focus');
- PMA_ajaxShowMessage(fileMsg, false);
- return false;
- }
- }
- } else {
- // local upload.
- if ($('#input_import_file').val() === '') {
- $('#input_import_file').trigger('focus');
- PMA_ajaxShowMessage(fileMsg, false);
- return false;
- }
- }
-
- // show progress bar.
- $('#upload_form_status').css('display', 'inline');
- $('#upload_form_status_info').css('display', 'inline');
- });
-
- // Initially display the options for the selected plugin
- changePluginOpts();
-
- // Whenever the selected plugin changes, change the options displayed
- $('#plugins').on('change', function () {
- changePluginOpts();
- });
-
- $('#input_import_file').on('change', function () {
- matchFile($(this).val());
- });
-
- $('#select_local_import_file').on('change', function () {
- matchFile($(this).val());
- });
-
- /*
- * When the "Browse the server" form is clicked or the "Select from the web server upload directory"
- * form is clicked, the radio button beside it becomes selected and the other form becomes disabled.
- */
- $('#input_import_file').on('focus change', function () {
- $('#radio_import_file').prop('checked', true);
- $('#radio_local_import_file').prop('checked', false);
- });
- $('#select_local_import_file').on('focus', function () {
- $('#radio_local_import_file').prop('checked', true);
- $('#radio_import_file').prop('checked', false);
- });
-
- /**
- * Set up the interface for Javascript-enabled browsers since the default is for
- * Javascript-disabled browsers
- */
- $('#scroll_to_options_msg').hide();
- $('#format_specific_opts').find('div.format_specific_options')
- .css({
- 'border': 0,
- 'margin': 0,
- 'padding': 0
- })
- .find('h3')
- .remove();
- // $("form[name=import] *").unwrap();
-
- /**
- * for input element text_csv_enclosed and text_csv_escaped allow just one character to enter.
- * as mysql allows just one character for these fields,
- * if first character is escape then allow two including escape character.
- */
- $('#text_csv_enclosed').add('#text_csv_escaped').on('keyup', function () {
- if ($(this).val().length === 2 && $(this).val().charAt(0) !== '\\') {
- $(this).val($(this).val().substring(0, 1));
- return false;
- }
- return true;
- });
-});
diff --git a/js/indexes.js b/js/indexes.js
deleted file mode 100644
index 4ce50bc60d..0000000000
--- a/js/indexes.js
+++ /dev/null
@@ -1,755 +0,0 @@
-/* vim: set expandtab sw=4 ts=4 sts=4: */
-/**
- * @fileoverview function used for index manipulation pages
- * @name Table Structure
- *
- * @requires jQuery
- * @requires jQueryUI
- * @required js/functions.js
- */
-
-/**
- * Returns the array of indexes based on the index choice
- *
- * @param index_choice index choice
- */
-function PMA_getIndexArray (index_choice) {
- var source_array = null;
-
- switch (index_choice.toLowerCase()) {
- case 'primary':
- source_array = primary_indexes;
- break;
- case 'unique':
- source_array = unique_indexes;
- break;
- case 'index':
- source_array = indexes;
- break;
- case 'fulltext':
- source_array = fulltext_indexes;
- break;
- case 'spatial':
- source_array = spatial_indexes;
- break;
- default:
- return null;
- }
- return source_array;
-}
-
-/**
- * Hides/shows the inputs and submits appropriately depending
- * on whether the index type chosen is 'SPATIAL' or not.
- */
-function checkIndexType () {
- /**
- * @var Object Dropdown to select the index choice.
- */
- var $select_index_choice = $('#select_index_choice');
- /**
- * @var Object Dropdown to select the index type.
- */
- var $select_index_type = $('#select_index_type');
- /**
- * @var Object Table header for the size column.
- */
- var $size_header = $('#index_columns').find('thead tr th:nth-child(2)');
- /**
- * @var Object Inputs to specify the columns for the index.
- */
- var $column_inputs = $('select[name="index[columns][names][]"]');
- /**
- * @var Object Inputs to specify sizes for columns of the index.
- */
- var $size_inputs = $('input[name="index[columns][sub_parts][]"]');
- /**
- * @var Object Footer containg the controllers to add more columns
- */
- var $add_more = $('#index_frm').find('.add_more');
-
- if ($select_index_choice.val() === 'SPATIAL') {
- // Disable and hide the size column
- $size_header.hide();
- $size_inputs.each(function () {
- $(this)
- .prop('disabled', true)
- .parent('td').hide();
- });
-
- // Disable and hide the columns of the index other than the first one
- var initial = true;
- $column_inputs.each(function () {
- $column_input = $(this);
- if (! initial) {
- $column_input
- .prop('disabled', true)
- .parent('td').hide();
- } else {
- initial = false;
- }
- });
-
- // Hide controllers to add more columns
- $add_more.hide();
- } else {
- // Enable and show the size column
- $size_header.show();
- $size_inputs.each(function () {
- $(this)
- .prop('disabled', false)
- .parent('td').show();
- });
-
- // Enable and show the columns of the index
- $column_inputs.each(function () {
- $(this)
- .prop('disabled', false)
- .parent('td').show();
- });
-
- // Show controllers to add more columns
- $add_more.show();
- }
-
- if ($select_index_choice.val() === 'SPATIAL' ||
- $select_index_choice.val() === 'FULLTEXT') {
- $select_index_type.val('').prop('disabled', true);
- } else {
- $select_index_type.prop('disabled', false);
- }
-}
-
-/**
- * Sets current index information into form parameters.
- *
- * @param array source_array Array containing index columns
- * @param string index_choice Choice of index
- *
- * @return void
- */
-function PMA_setIndexFormParameters (source_array, index_choice) {
- if (index_choice === 'index') {
- $('input[name="indexes"]').val(JSON.stringify(source_array));
- } else {
- $('input[name="' + index_choice + '_indexes"]').val(JSON.stringify(source_array));
- }
-}
-
-/**
- * Removes a column from an Index.
- *
- * @param string col_index Index of column in form
- *
- * @return void
- */
-function PMA_removeColumnFromIndex (col_index) {
- // Get previous index details.
- var previous_index = $('select[name="field_key[' + col_index + ']"]')
- .attr('data-index');
- if (previous_index.length) {
- previous_index = previous_index.split(',');
- var source_array = PMA_getIndexArray(previous_index[0]);
- if (source_array === null) {
- return;
- }
-
- // Remove column from index array.
- var source_length = source_array[previous_index[1]].columns.length;
- for (var i = 0; i < source_length; i++) {
- if (source_array[previous_index[1]].columns[i].col_index === col_index) {
- source_array[previous_index[1]].columns.splice(i, 1);
- }
- }
-
- // Remove index completely if no columns left.
- if (source_array[previous_index[1]].columns.length === 0) {
- source_array.splice(previous_index[1], 1);
- }
-
- // Update current index details.
- $('select[name="field_key[' + col_index + ']"]').attr('data-index', '');
- // Update form index parameters.
- PMA_setIndexFormParameters(source_array, previous_index[0].toLowerCase());
- }
-}
-
-/**
- * Adds a column to an Index.
- *
- * @param array source_array Array holding corresponding indexes
- * @param string array_index Index of an INDEX in array
- * @param string index_choice Choice of Index
- * @param string col_index Index of column on form
- *
- * @return void
- */
-function PMA_addColumnToIndex (source_array, array_index, index_choice, col_index) {
- if (col_index >= 0) {
- // Remove column from other indexes (if any).
- PMA_removeColumnFromIndex(col_index);
- }
- var index_name = $('input[name="index[Key_name]"]').val();
- var index_comment = $('input[name="index[Index_comment]"]').val();
- var key_block_size = $('input[name="index[Key_block_size]"]').val();
- var parser = $('input[name="index[Parser]"]').val();
- var index_type = $('select[name="index[Index_type]"]').val();
- var columns = [];
- $('#index_columns').find('tbody').find('tr').each(function () {
- // Get columns in particular order.
- var col_index = $(this).find('select[name="index[columns][names][]"]').val();
- var size = $(this).find('input[name="index[columns][sub_parts][]"]').val();
- columns.push({
- 'col_index': col_index,
- 'size': size
- });
- });
-
- // Update or create an index.
- source_array[array_index] = {
- 'Key_name': index_name,
- 'Index_comment': index_comment,
- 'Index_choice': index_choice.toUpperCase(),
- 'Key_block_size': key_block_size,
- 'Parser': parser,
- 'Index_type': index_type,
- 'columns': columns
- };
-
- // Display index name (or column list)
- var displayName = index_name;
- if (displayName === '') {
- var columnNames = [];
- $.each(columns, function () {
- columnNames.push($('input[name="field_name[' + this.col_index + ']"]').val());
- });
- displayName = '[' + columnNames.join(', ') + ']';
- }
- $.each(columns, function () {
- var id = 'index_name_' + this.col_index + '_8';
- var $name = $('#' + id);
- if ($name.length === 0) {
- $name = $('');
- $name.insertAfter($('select[name="field_key[' + this.col_index + ']"]'));
- }
- var $text = $('').text(displayName);
- $name.html($text);
- });
-
- if (col_index >= 0) {
- // Update index details on form.
- $('select[name="field_key[' + col_index + ']"]')
- .attr('data-index', index_choice + ',' + array_index);
- }
- PMA_setIndexFormParameters(source_array, index_choice.toLowerCase());
-}
-
-/**
- * Get choices list for a column to create a composite index with.
- *
- * @param string index_choice Choice of index
- * @param array source_array Array hodling columns for particular index
- *
- * @return jQuery Object
- */
-function PMA_getCompositeIndexList (source_array, col_index) {
- // Remove any previous list.
- if ($('#composite_index_list').length) {
- $('#composite_index_list').remove();
- }
-
- // Html list.
- var $composite_index_list = $(
- ''
- );
-
- // Add each column to list available for composite index.
- var source_length = source_array.length;
- var already_present = false;
- for (var i = 0; i < source_length; i++) {
- var sub_array_len = source_array[i].columns.length;
- var column_names = [];
- for (var j = 0; j < sub_array_len; j++) {
- column_names.push(
- $('input[name="field_name[' + source_array[i].columns[j].col_index + ']"]').val()
- );
-
- if (col_index === source_array[i].columns[j].col_index) {
- already_present = true;
- }
- }
-
- $composite_index_list.append(
- '' +
- '' +
- ''
- );
- }
-
- return $composite_index_list;
-}
-
-/**
- * Shows 'Add Index' dialog.
- *
- * @param array source_array Array holding particluar index
- * @param string array_index Index of an INDEX in array
- * @param array target_columns Columns for an INDEX
- * @param string col_index Index of column on form
- * @param object index Index detail object
- *
- * @return void
- */
-function PMA_showAddIndexDialog (source_array, array_index, target_columns, col_index, index) {
- // Prepare post-data.
- var $table = $('input[name="table"]');
- var table = $table.length > 0 ? $table.val() : '';
- var post_data = {
- server: PMA_commonParams.get('server'),
- db: $('input[name="db"]').val(),
- table: table,
- ajax_request: 1,
- create_edit_table: 1,
- index: index
- };
-
- var columns = {};
- for (var i = 0; i < target_columns.length; i++) {
- var column_name = $('input[name="field_name[' + target_columns[i] + ']"]').val();
- var column_type = $('select[name="field_type[' + target_columns[i] + ']"]').val().toLowerCase();
- columns[column_name] = [column_type, target_columns[i]];
- }
- post_data.columns = JSON.stringify(columns);
-
- var button_options = {};
- button_options[PMA_messages.strGo] = function () {
- var is_missing_value = false;
- $('select[name="index[columns][names][]"]').each(function () {
- if ($(this).val() === '') {
- is_missing_value = true;
- }
- });
-
- if (! is_missing_value) {
- PMA_addColumnToIndex(
- source_array,
- array_index,
- index.Index_choice,
- col_index
- );
- } else {
- PMA_ajaxShowMessage(
- '
' + PMA_messages.strMissingColumn +
- '
', false
- );
-
- return false;
- }
-
- $(this).dialog('close');
- };
- button_options[PMA_messages.strCancel] = function () {
- if (col_index >= 0) {
- // Handle state on 'Cancel'.
- var $select_list = $('select[name="field_key[' + col_index + ']"]');
- if (! $select_list.attr('data-index').length) {
- $select_list.find('option[value*="none"]').attr('selected', 'selected');
- } else {
- var previous_index = $select_list.attr('data-index').split(',');
- $select_list.find('option[value*="' + previous_index[0].toLowerCase() + '"]')
- .attr('selected', 'selected');
- }
- }
- $(this).dialog('close');
- };
- var $msgbox = PMA_ajaxShowMessage();
- $.post('tbl_indexes.php', post_data, function (data) {
- if (data.success === false) {
- // in the case of an error, show the error message returned.
- PMA_ajaxShowMessage(data.error, false);
- } else {
- PMA_ajaxRemoveMessage($msgbox);
- // Show dialog if the request was successful
- var $div = $('');
- $div
- .append(data.message)
- .dialog({
- title: PMA_messages.strAddIndex,
- width: 450,
- minHeight: 250,
- open: function () {
- checkIndexName('index_frm');
- PMA_showHints($div);
- PMA_init_slider();
- $('#index_columns').find('td').each(function () {
- $(this).css('width', $(this).width() + 'px');
- });
- $('#index_columns').find('tbody').sortable({
- axis: 'y',
- containment: $('#index_columns').find('tbody'),
- tolerance: 'pointer'
- });
- // We dont need the slider at this moment.
- $(this).find('fieldset.tblFooters').remove();
- },
- modal: true,
- buttons: button_options,
- close: function () {
- $(this).remove();
- }
- });
- }
- });
-}
-
-/**
- * Creates a advanced index type selection dialog.
- *
- * @param array source_array Array holding a particular type of indexes
- * @param string index_choice Choice of index
- * @param string col_index Index of new column on form
- *
- * @return void
- */
-function PMA_indexTypeSelectionDialog (source_array, index_choice, col_index) {
- var $single_column_radio = $('' +
- '');
- var $composite_index_radio = $('' +
- '');
- var $dialog_content = $('');
- $dialog_content.append('');
-
-
- // For UNIQUE/INDEX type, show choice for single-column and composite index.
- $dialog_content.append($single_column_radio);
- $dialog_content.append($composite_index_radio);
-
- var button_options = {};
- // 'OK' operation.
- button_options[PMA_messages.strGo] = function () {
- if ($('#single_column').is(':checked')) {
- var index = {
- 'Key_name': (index_choice === 'primary' ? 'PRIMARY' : ''),
- 'Index_choice': index_choice.toUpperCase()
- };
- PMA_showAddIndexDialog(source_array, (source_array.length), [col_index], col_index, index);
- }
-
- if ($('#composite_index').is(':checked')) {
- if ($('input[name="composite_with"]').length !== 0 && $('input[name="composite_with"]:checked').length === 0
- ) {
- PMA_ajaxShowMessage(
- '
' +
- PMA_messages.strFormEmpty +
- '
',
- false
- );
- return false;
- }
-
- var array_index = $('input[name="composite_with"]:checked').val();
- var source_length = source_array[array_index].columns.length;
- var target_columns = [];
- for (var i = 0; i < source_length; i++) {
- target_columns.push(source_array[array_index].columns[i].col_index);
- }
- target_columns.push(col_index);
-
- PMA_showAddIndexDialog(source_array, array_index, target_columns, col_index,
- source_array[array_index]);
- }
-
- $(this).remove();
- };
- button_options[PMA_messages.strCancel] = function () {
- // Handle state on 'Cancel'.
- var $select_list = $('select[name="field_key[' + col_index + ']"]');
- if (! $select_list.attr('data-index').length) {
- $select_list.find('option[value*="none"]').attr('selected', 'selected');
- } else {
- var previous_index = $select_list.attr('data-index').split(',');
- $select_list.find('option[value*="' + previous_index[0].toLowerCase() + '"]')
- .attr('selected', 'selected');
- }
- $(this).remove();
- };
- var $dialog = $('').append($dialog_content).dialog({
- minWidth: 525,
- minHeight: 200,
- modal: true,
- title: PMA_messages.strAddIndex,
- resizable: false,
- buttons: button_options,
- open: function () {
- $('#composite_index').on('change', function () {
- if ($(this).is(':checked')) {
- $dialog_content.append(PMA_getCompositeIndexList(source_array, col_index));
- }
- });
- $('#single_column').on('change', function () {
- if ($(this).is(':checked')) {
- if ($('#composite_index_list').length) {
- $('#composite_index_list').remove();
- }
- }
- });
- },
- close: function () {
- $('#composite_index').off('change');
- $('#single_column').off('change');
- $(this).remove();
- }
- });
-}
-
-/**
- * Unbind all event handlers before tearing down a page
- */
-AJAX.registerTeardown('indexes.js', function () {
- $(document).off('click', '#save_index_frm');
- $(document).off('click', '#preview_index_frm');
- $(document).off('change', '#select_index_choice');
- $(document).off('click', 'a.drop_primary_key_index_anchor.ajax');
- $(document).off('click', '#table_index tbody tr td.edit_index.ajax, #index_div .add_index.ajax');
- $(document).off('click', '#index_frm input[type=submit]');
- $('body').off('change', 'select[name*="field_key"]');
- $(document).off('click', '.show_index_dialog');
-});
-
-/**
- * @description Ajax scripts for table index page
- *
- * Actions ajaxified here:
- *
- * - Showing/hiding inputs depending on the index type chosen
- * - create/edit/drop indexes
- *
- */
-AJAX.registerOnload('indexes.js', function () {
- // Re-initialize variables.
- primary_indexes = [];
- unique_indexes = [];
- indexes = [];
- fulltext_indexes = [];
- spatial_indexes = [];
-
- // for table creation form
- var $engine_selector = $('.create_table_form select[name=tbl_storage_engine]');
- if ($engine_selector.length) {
- PMA_hideShowConnection($engine_selector);
- }
-
- var $form = $('#index_frm');
- if ($form.length > 0) {
- showIndexEditDialog($form);
- }
-
- $(document).on('click', '#save_index_frm', function (event) {
- event.preventDefault();
- var $form = $('#index_frm');
- var argsep = PMA_commonParams.get('arg_separator');
- var submitData = $form.serialize() + argsep + 'do_save_data=1' + argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
- var $msgbox = PMA_ajaxShowMessage(PMA_messages.strProcessingRequest);
- AJAX.source = $form;
- $.post($form.attr('action'), submitData, AJAX.responseHandler);
- });
-
- $(document).on('click', '#preview_index_frm', function (event) {
- event.preventDefault();
- PMA_previewSQL($('#index_frm'));
- });
-
- $(document).on('change', '#select_index_choice', function (event) {
- event.preventDefault();
- checkIndexType();
- checkIndexName('index_frm');
- });
-
- /**
- * Ajax Event handler for 'Drop Index'
- */
- $(document).on('click', 'a.drop_primary_key_index_anchor.ajax', function (event) {
- event.preventDefault();
- var $anchor = $(this);
- /**
- * @var $curr_row Object containing reference to the current field's row
- */
- var $curr_row = $anchor.parents('tr');
- /** @var Number of columns in the key */
- var rows = $anchor.parents('td').attr('rowspan') || 1;
- /** @var Rows that should be hidden */
- var $rows_to_hide = $curr_row;
- for (var i = 1, $last_row = $curr_row.next(); i < rows; i++, $last_row = $last_row.next()) {
- $rows_to_hide = $rows_to_hide.add($last_row);
- }
-
- var question = escapeHtml(
- $curr_row.children('td')
- .children('.drop_primary_key_index_msg')
- .val()
- );
-
- $anchor.PMA_confirm(question, $anchor.attr('href'), function (url) {
- var $msg = PMA_ajaxShowMessage(PMA_messages.strDroppingPrimaryKeyIndex, false);
- var params = getJSConfirmCommonParam(this, $anchor.getPostData());
- $.post(url, params, function (data) {
- if (typeof data !== 'undefined' && data.success === true) {
- PMA_ajaxRemoveMessage($msg);
- var $table_ref = $rows_to_hide.closest('table');
- if ($rows_to_hide.length === $table_ref.find('tbody > tr').length) {
- // We are about to remove all rows from the table
- $table_ref.hide('medium', function () {
- $('div.no_indexes_defined').show('medium');
- $rows_to_hide.remove();
- });
- $table_ref.siblings('div.notice').hide('medium');
- } else {
- // We are removing some of the rows only
- $rows_to_hide.hide('medium', function () {
- $(this).remove();
- });
- }
- if ($('.result_query').length) {
- $('.result_query').remove();
- }
- if (data.sql_query) {
- $('')
- .html(data.sql_query)
- .prependTo('#structure_content');
- PMA_highlightSQL($('#page_content'));
- }
- PMA_commonActions.refreshMain(false, function () {
- $('a.ajax[href^=#indexes]').trigger('click');
- });
- PMA_reloadNavigation();
- } else {
- PMA_ajaxShowMessage(PMA_messages.strErrorProcessingRequest + ' : ' + data.error, false);
- }
- }); // end $.post()
- }); // end $.PMA_confirm()
- }); // end Drop Primary Key/Index
-
- /**
- *Ajax event handler for index edit
- **/
- $(document).on('click', '#table_index tbody tr td.edit_index.ajax, #index_div .add_index.ajax', function (event) {
- event.preventDefault();
- var url;
- var title;
- if ($(this).find('a').length === 0) {
- // Add index
- var valid = checkFormElementInRange(
- $(this).closest('form')[0],
- 'added_fields',
- 'Column count has to be larger than zero.'
- );
- if (! valid) {
- return;
- }
- url = $(this).closest('form').serialize();
- title = PMA_messages.strAddIndex;
- } else {
- // Edit index
- url = $(this).find('a').attr('href');
- if (url.substring(0, 16) === 'tbl_indexes.php?') {
- url = url.substring(16, url.length);
- }
- title = PMA_messages.strEditIndex;
- }
- url += PMA_commonParams.get('arg_separator') + 'ajax_request=true';
- indexEditorDialog(url, title, function () {
- // refresh the page using ajax
- PMA_commonActions.refreshMain(false, function () {
- $('a.ajax[href^=#indexes]').trigger('click');
- });
- });
- });
-
- /**
- * Ajax event handler for advanced index creation during table creation
- * and column addition.
- */
- $('body').on('change', 'select[name*="field_key"]', function () {
- // Index of column on Table edit and create page.
- var col_index = /\d+/.exec($(this).attr('name'));
- col_index = col_index[0];
- // Choice of selected index.
- var index_choice = /[a-z]+/.exec($(this).val());
- index_choice = index_choice[0];
- // Array containing corresponding indexes.
- var source_array = null;
-
- if (index_choice === 'none') {
- PMA_removeColumnFromIndex(col_index);
- return false;
- }
-
- // Select a source array.
- source_array = PMA_getIndexArray(index_choice);
- if (source_array === null) {
- return;
- }
-
- if (source_array.length === 0) {
- var index = {
- 'Key_name': (index_choice === 'primary' ? 'PRIMARY' : ''),
- 'Index_choice': index_choice.toUpperCase()
- };
- PMA_showAddIndexDialog(source_array, 0, [col_index], col_index, index);
- } else {
- if (index_choice === 'primary') {
- var array_index = 0;
- var source_length = source_array[array_index].columns.length;
- var target_columns = [];
- for (var i = 0; i < source_length; i++) {
- target_columns.push(source_array[array_index].columns[i].col_index);
- }
- target_columns.push(col_index);
-
- PMA_showAddIndexDialog(source_array, array_index, target_columns, col_index,
- source_array[array_index]);
- } else {
- // If there are multiple columns selected for an index, show advanced dialog.
- PMA_indexTypeSelectionDialog(source_array, index_choice, col_index);
- }
- }
- });
-
- $(document).on('click', '.show_index_dialog', function (e) {
- e.preventDefault();
-
- // Get index details.
- var previous_index = $(this).prev('select')
- .attr('data-index')
- .split(',');
-
- var index_choice = previous_index[0];
- var array_index = previous_index[1];
-
- var source_array = PMA_getIndexArray(index_choice);
- var source_length = source_array[array_index].columns.length;
-
- var target_columns = [];
- for (var i = 0; i < source_length; i++) {
- target_columns.push(source_array[array_index].columns[i].col_index);
- }
-
- PMA_showAddIndexDialog(source_array, array_index, target_columns, -1, source_array[array_index]);
- });
-
- $('#index_frm').on('submit', function () {
- if (typeof(this.elements['index[Key_name]'].disabled) !== 'undefined') {
- this.elements['index[Key_name]'].disabled = false;
- }
- });
-});
diff --git a/js/shortcuts_handler.js b/js/shortcuts_handler.js
deleted file mode 100644
index 4fc3c59a7b..0000000000
--- a/js/shortcuts_handler.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/* vim: set expandtab sw=4 ts=4 sts=4: */
-/**
- * @fileoverview Handle shortcuts in various pages
- * @name Shortcuts handler
- *
- * @requires jQuery
- * @requires jQueryUI
- */
-
-/**
- * Register key events on load
- */
-$(document).ready(function () {
- var databaseOp = false;
- var tableOp = false;
- var keyD = 68;
- var keyT = 84;
- var keyK = 75;
- var keyS = 83;
- var keyF = 70;
- var keyE = 69;
- var keyH = 72;
- var keyC = 67;
- var keyBackSpace = 8;
- $(document).on('keyup', function (e) {
- if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA' || e.target.nodeName === 'SELECT') {
- return;
- }
-
- if (e.keyCode === keyD) {
- setTimeout(function () {
- databaseOp = false;
- }, 2000);
- } else if (e.keyCode === keyT) {
- setTimeout(function () {
- tableOp = false;
- }, 2000);
- }
- });
- $(document).on('keydown', function (e) {
- if (e.ctrlKey && e.altKey && e.keyCode === keyC) {
- PMA_console.toggle();
- }
-
- if (e.ctrlKey && e.keyCode === keyK) {
- e.preventDefault();
- PMA_console.toggle();
- }
-
- if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA' || e.target.nodeName === 'SELECT') {
- return;
- }
-
- var isTable;
- var isDb;
- if (e.keyCode === keyD) {
- databaseOp = true;
- } else if (e.keyCode === keyK) {
- e.preventDefault();
- PMA_console.toggle();
- } else if (e.keyCode === keyS) {
- if (databaseOp === true) {
- isTable = PMA_commonParams.get('table');
- isDb = PMA_commonParams.get('db');
- if (isDb && ! isTable) {
- $('.tab .ic_b_props').first().trigger('click');
- }
- } else if (tableOp === true) {
- isTable = PMA_commonParams.get('table');
- isDb = PMA_commonParams.get('db');
- if (isDb && isTable) {
- $('.tab .ic_b_props').first().trigger('click');
- }
- } else {
- $('#pma_navigation_settings_icon').trigger('click');
- }
- } else if (e.keyCode === keyF) {
- if (databaseOp === true) {
- isTable = PMA_commonParams.get('table');
- isDb = PMA_commonParams.get('db');
- if (isDb && ! isTable) {
- $('.tab .ic_b_search').first().trigger('click');
- }
- } else if (tableOp === true) {
- isTable = PMA_commonParams.get('table');
- isDb = PMA_commonParams.get('db');
- if (isDb && isTable) {
- $('.tab .ic_b_search').first().trigger('click');
- }
- }
- } else if (e.keyCode === keyT) {
- tableOp = true;
- } else if (e.keyCode === keyE) {
- $('.ic_b_export').first().trigger('click');
- } else if (e.keyCode === keyBackSpace) {
- window.history.back();
- } else if (e.keyCode === keyH) {
- $('.ic_b_home').first().trigger('click');
- }
- });
-});
diff --git a/js/src/shortcuts_handler.js b/js/src/shortcuts_handler.js
index 376bbb7670..572d306e8f 100644
--- a/js/src/shortcuts_handler.js
+++ b/js/src/shortcuts_handler.js
@@ -49,6 +49,10 @@ $(document).ready(function () {
}
});
$(document).on('keydown', function (e) {
+ // disable the shortcuts when session has timed out.
+ if ($('#modalOverlay').length > 0) {
+ return;
+ }
if (e.ctrlKey && e.altKey && e.keyCode === keyC) {
Console.toggle();
}
diff --git a/libraries/tbl_columns_definition_form.inc.php b/libraries/tbl_columns_definition_form.inc.php
index b35cb52c59..9939eae5cf 100644
--- a/libraries/tbl_columns_definition_form.inc.php
+++ b/libraries/tbl_columns_definition_form.inc.php
@@ -501,10 +501,5 @@ $html = $template->render('columns_definitions/column_definitions_form', [
unset($form_params);
$response = Response::getInstance();
-$response->getHeader()->getScripts()->addFiles(
- [
- 'vendor/jquery/jquery.uitablefilter.js',
- 'indexes.js'
- ]
-);
+$response->getHeader()->getScripts()->addFiles('indexes');
$response->addHTML($html);
diff --git a/tbl_addfield.php b/tbl_addfield.php
index 04ecb80dad..7ec1d9323a 100644
--- a/tbl_addfield.php
+++ b/tbl_addfield.php
@@ -22,7 +22,7 @@ require_once 'libraries/common.inc.php';
$response = Response::getInstance();
$header = $response->getHeader();
$scripts = $header->getScripts();
-$scripts->addFile('tbl_structure.js');
+$scripts->addFile('tbl_structure');
// Check parameters
Util::checkParameters(['db', 'table']);