290 lines
10 KiB
JavaScript
290 lines
10 KiB
JavaScript
/* 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', '');
|
|
}
|
|
|
|
/**
|
|
* Unbind all event handlers before tearing down a page
|
|
*/
|
|
AJAX.registerTeardown('export.js', function () {
|
|
$("#plugins").unbind('change');
|
|
$("input[type='radio'][name='sql_structure_or_data']").unbind('change');
|
|
$("input[type='radio'][name='latex_structure_or_data']").unbind('change');
|
|
$("input[type='radio'][name='odt_structure_or_data']").unbind('change');
|
|
$("input[type='radio'][name='texytext_structure_or_data']").unbind('change');
|
|
$("input[type='radio'][name='htmlword_structure_or_data']").unbind('change');
|
|
$("input[type='radio'][name='sql_structure_or_data']").unbind('change');
|
|
$("input[type='radio'][name='output_format']").unbind('change');
|
|
$("#checkbox_sql_include_comments").unbind('change');
|
|
$("#plugins").unbind('change');
|
|
$("input[type='radio'][name='quick_or_custom']").unbind('change');
|
|
$("input[type='radio'][name='allrows']").unbind('change');
|
|
});
|
|
|
|
AJAX.registerOnload('export.js', function () {
|
|
/**
|
|
* Toggles the hiding and showing of each plugin's options
|
|
* according to the currently selected plugin from the dropdown list
|
|
*/
|
|
$("#plugins").change(function () {
|
|
$("#format_specific_opts div.format_specific_options").hide();
|
|
var selected_plugin_name = $("#plugins 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']").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").removeProp('disabled').parent().fadeTo('fast', 1);
|
|
}
|
|
$("#checkbox_sql_relation").removeProp('disabled').parent().fadeTo('fast', 1);
|
|
$("#checkbox_sql_mime").removeProp('disabled').parent().fadeTo('fast', 1);
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
/**
|
|
* Toggles the hiding and showing of plugin structure-specific and data-specific
|
|
* options
|
|
*/
|
|
function toggle_structure_data_opts(pluginName)
|
|
{
|
|
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');
|
|
}
|
|
}
|
|
}
|
|
|
|
AJAX.registerOnload('export.js', function () {
|
|
$("input[type='radio'][name='latex_structure_or_data']").change(function () {
|
|
toggle_structure_data_opts("latex");
|
|
});
|
|
$("input[type='radio'][name='odt_structure_or_data']").change(function () {
|
|
toggle_structure_data_opts("odt");
|
|
});
|
|
$("input[type='radio'][name='texytext_structure_or_data']").change(function () {
|
|
toggle_structure_data_opts("texytext");
|
|
});
|
|
$("input[type='radio'][name='htmlword_structure_or_data']").change(function () {
|
|
toggle_structure_data_opts("htmlword");
|
|
});
|
|
$("input[type='radio'][name='sql_structure_or_data']").change(function () {
|
|
toggle_structure_data_opts("sql");
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Toggles the disabling of the "save to file" options
|
|
*/
|
|
function toggle_save_to_file()
|
|
{
|
|
if (!$("#radio_dump_asfile").prop("checked")) {
|
|
$("#ul_save_asfile > li").fadeTo('fast', 0.4);
|
|
$("#ul_save_asfile > li > input").prop('disabled', true);
|
|
$("#ul_save_asfile > li> select").prop('disabled', true);
|
|
} else {
|
|
$("#ul_save_asfile > li").fadeTo('fast', 1);
|
|
$("#ul_save_asfile > li > input").prop('disabled', false);
|
|
$("#ul_save_asfile > li> select").prop('disabled', false);
|
|
}
|
|
}
|
|
|
|
AJAX.registerOnload('export.js', function () {
|
|
toggle_save_to_file();
|
|
$("input[type='radio'][name='output_format']").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").change(function () {
|
|
if (!$("#checkbox_sql_include_comments").prop("checked")) {
|
|
$("#ul_include_comments > li").fadeTo('fast', 0.4);
|
|
$("#ul_include_comments > 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").removeProp('disabled').parent("li").fadeTo('fast', 1);
|
|
} else {
|
|
$("#ul_include_comments > li").fadeTo('fast', 1);
|
|
$("#ul_include_comments > li > input").removeProp('disabled');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
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 input");
|
|
$create.change(function () {
|
|
$create_options.prop('checked', $(this).prop("checked"));
|
|
});
|
|
$create_options.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").change(function () {
|
|
var active_plugin = $("#plugins 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);
|
|
}
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Toggles display of options when quick and custom export are selected
|
|
*/
|
|
function toggle_quick_or_custom()
|
|
{
|
|
if ($("#radio_custom_export").prop("checked")) {
|
|
$("#databases_and_tables").show();
|
|
$("#rows").show();
|
|
$("#output").show();
|
|
$("#format_specific_opts").show();
|
|
$("#output_quick_export").hide();
|
|
var selected_plugin_name = $("#plugins option:selected").val();
|
|
$("#" + selected_plugin_name + "_options").show();
|
|
} else {
|
|
$("#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,
|
|
'token' : PMA_commonParams.get('token'),
|
|
'check_time_out' : true
|
|
};
|
|
clearTimeout(time_out);
|
|
time_out = setTimeout(function(){
|
|
$.get(href, params, function (data) {
|
|
if (data['message'] === 'timeout') {
|
|
PMA_ajaxShowMessage(
|
|
'<div class="error">' +
|
|
PMA_messages.strTimeOutError +
|
|
'</div>',
|
|
false
|
|
);
|
|
}
|
|
});
|
|
}, time_limit * 1000);
|
|
|
|
}
|
|
AJAX.registerOnload('export.js', function () {
|
|
$("input[type='radio'][name='quick_or_custom']").change(toggle_quick_or_custom);
|
|
|
|
/**
|
|
* Sets up the interface for Javascript-enabled browsers since the default is for
|
|
* Javascript-disabled browsers
|
|
* TODO: drop non-JS behaviour
|
|
*/
|
|
if ($("input[type='hidden'][name='export_method']").val() != "custom-no-form") {
|
|
$("#quick_or_custom").show();
|
|
}
|
|
$("#scroll_to_options_msg").hide();
|
|
$("#format_specific_opts div.format_specific_options")
|
|
.hide()
|
|
.css({
|
|
"border": 0,
|
|
"margin": 0,
|
|
"padding": 0
|
|
})
|
|
.find("h3")
|
|
.remove();
|
|
toggle_quick_or_custom();
|
|
toggle_structure_data_opts($("select#plugins").val());
|
|
toggle_sql_include_comments();
|
|
|
|
/**
|
|
* 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']").change(function () {
|
|
if ($("input[type='radio'][name='allrows']").prop("checked")) {
|
|
enable_dump_some_rows_sub_options();
|
|
} else {
|
|
disable_dump_some_rows_sub_options();
|
|
}
|
|
});
|
|
});
|