Merge remote-tracking branch 'origin/master'

This commit is contained in:
Pootle server 2011-07-03 12:40:10 +02:00
commit 819a520744
7 changed files with 171 additions and 14 deletions

View File

@ -25,7 +25,9 @@ phpMyAdmin - ChangeLog
+ [display] More options for browsing GIS data
+ [interface] Support for spatial indexes
+ [display] GIS data visualization
+ AJAX for table structure multiple-columns change
+ AJAX for table structure multiple-column change
+ AJAX for table structure index edit
+ Show/hide indexes in table structure
3.4.4.0 (not yet released)
- bug #3323060 [parser] SQL parser breaks AJAX requests if query has unclosed quotes

View File

@ -110,6 +110,8 @@ $js_messages['strNo'] = __('No');
/* For db_stucture.js */
$js_messages['strInsertTable'] = __('Insert Table');
$js_messages['strHideIndexes'] = __('Hide indexes');
$js_messages['strShowIndexes'] = __('Show indexes');
/* For db_search.js */
$js_messages['strSearching'] = __('Searching');

View File

@ -1163,7 +1163,7 @@ $(document).ready(function() {
}) // end $.post()
}) // end insert table button "Go"
/**
/**$("#buttonYes.ajax").live('click'
* Click action for #buttonYes button in ajax dialog insertForm
*/
$("#buttonYes.ajax").live('click', function(event){
@ -1370,22 +1370,22 @@ $(document).ready(function() {
$("#sqlqueryresults").trigger('makegrid');
});
/*
/*
* Profiling Chart
*/
function createProfilingChart() {
if($('#profilingchart').length==0) return;
var cdata = new Array();
$.each(jQuery.parseJSON($('#profilingchart').html()),function(key,value) {
cdata.push([key,parseFloat(value)]);
});
// Prevent the user from seeing the JSON code
$('div#profilingchart').html('').show();
PMA_createChart({
chart: {
chart: {
renderTo: 'profilingchart',
backgroundColor: $('#sqlqueryresults fieldset').css('background-color')
},

View File

@ -250,4 +250,146 @@ $(document).ready(function() {
}) // end $.post()
}) // end insert table button "do_save_data"
/**
*Ajax event handler for index edit
**/
$("#table_index tbody tr td.edit_index.ajax").live('click', function(event){
event.preventDefault();
var url = $(this).find("a").attr("href");
if (url.substring(0, 16) == "tbl_indexes.php?") {
url = url.substring(16, url.length );
}
url = url + "&ajax_request=true";
var div = $('<div id="edit_index_dialog"></div>');
/**
* @var button_options Object that stores the options passed to jQueryUI
* dialog
*/
var button_options = {};
// in the following function we need to use $(this)
button_options[PMA_messages['strCancel']] = function() {$(this).parent().dialog('close').remove();}
var button_options_error = {};
button_options_error[PMA_messages['strOK']] = function() {$(this).parent().dialog('close').remove();}
var $msgbox = PMA_ajaxShowMessage();
$.get( "tbl_indexes.php" , url , function(data) {
//in the case of an error, show the error message returned.
if (data.success != undefined && data.success == false) {
div
.append(data.error)
.dialog({
title: PMA_messages['strEdit'],
height: 230,
width: 900,
open: PMA_verifyTypeOfAllColumns,
buttons : button_options_error
})// end dialog options
} else {
div
.append(data)
.dialog({
title: PMA_messages['strEdit'],
height: 600,
width: 900,
open: PMA_verifyTypeOfAllColumns,
buttons : button_options
})
//Remove the top menu container from the dialog
.find("#topmenucontainer").hide()
; // end dialog options
}
PMA_ajaxRemoveMessage($msgbox);
}) // end $.get()
});
/**
*Ajax action for submiting the index form
**/
$("#index_frm.ajax input[name=do_save_data]").live('click', function(event) {
event.preventDefault();
/**
* @var the_form object referring to the export form
*/
var $form = $("#index_frm");
PMA_prepareForAjaxRequest($form);
//User wants to submit the form
$.post($form.attr('action'), $form.serialize()+"&do_save_data=Save", function(data) {
if ($("#sqlqueryresults").length != 0) {
$("#sqlqueryresults").remove();
}
if (data.success == true) {
PMA_ajaxShowMessage(data.message);
$("<div id='sqlqueryresults'></div>").insertAfter("#topmenucontainer");
$("#sqlqueryresults").html(data.sql_query);
$("#result_query .notice").remove();
$("#result_query").prepend((data.message));
/*Reload the field form*/
$("#table_index").remove();
var temp_div = $("<div id='temp_div'><div>").append(data.index_table);
$(temp_div).find("#table_index").insertAfter("#index_header");
if ($("#edit_index_dialog").length > 0) {
$("#edit_index_dialog").dialog("close").remove();
}
} else {
var temp_div = $("<div id='temp_div'><div>").append(data.error);
var error = $(temp_div).find(".error code").addClass("error");
PMA_ajaxShowMessage(error);
}
}) // end $.post()
}) // end insert table button "do_save_data"
/**
*Ajax action for submiting the index form for add more columns
**/
$("#index_frm.ajax input[name=add_fields]").live('click', function(event) {
event.preventDefault();
/**
* @var the_form object referring to the export form
*/
var $form = $("#index_frm");
PMA_prepareForAjaxRequest($form);
//User wants to submit the form
$.post($form.attr('action'), $form.serialize()+"&add_fields=Go", function(data) {
$("#index_columns").remove();
var temp_div = $("<div id='temp_div'><div>").append(data);
$(temp_div).find("#index_columns").insertAfter("#index_frm fieldset .error");
}) // end $.post()
}) // end insert table button "Go"
/**Add the show/hide index table option if the index is available*/
if ($("#index_div.ajax").find("#table_index").length != 0) {
/**
*Prepare a div containing a link for toggle the index table
*/
$('<div id="toggletableindexdiv"><a id="toggletableindexlink"></a></div>')
.insertAfter('#index_div')
/** don't show it until we have index table on-screen */
.show();
/** Changing the displayed text according to the hide/show criteria in table index*/
$('#toggletableindexlink')
.html(PMA_messages['strHideIndexes'])
.bind('click', function() {
var $link = $(this);
$('#index_div').slideToggle();
if ($link.text() == PMA_messages['strHideIndexes']) {
$link.text(PMA_messages['strShowIndexes']);
} else {
$link.text(PMA_messages['strHideIndexes']);
}
/** avoid default click action */
return false;
});
} //end show/hide table index
}) // end $(document).ready()

View File

@ -419,10 +419,10 @@ class PMA_Index
$r = '';
$r .= '<h2>' . __('Indexes') . ': ';
$r .= '<h2 id="index_header">' . __('Indexes') . ': ';
$r .= PMA_showMySQLDocu('optimization', 'optimizing-database-structure');
$r .= '</h2>';
$r .= '<table>';
$r .= '<table id="table_index">';
$r .= '<thead>';
$r .= '<tr>';
if (! $print_mode) {
@ -450,7 +450,11 @@ class PMA_Index
if (! $print_mode) {
$this_params = $GLOBALS['url_params'];
$this_params['index'] = $index->getName();
$r .= '<td ' . $row_span . '>'
$r .= '<td class="edit_index ';
if ($GLOBALS['cfg']['AjaxEnable']) {
$r .= 'ajax" ';
}
$r .= '" ' . $row_span . '>'
. ' <a href="tbl_indexes.php' . PMA_generate_common_url($this_params)
. '">' . PMA_getIcon('b_edit.png', __('Edit')) . '</a>'
. '</td>' . "\n";

View File

@ -97,7 +97,13 @@ if (isset($_REQUEST['do_save_data'])) {
PMA_DBI_query($sql_query);
$message = PMA_Message::success(__('Table %1$s has been altered successfully'));
$message->addParam($table);
if( $GLOBALS['is_ajax_request'] == true) {
$extra_data['index_table'] = PMA_Index::getView($table, $db);
$extra_data['sql_query'] = PMA_showMessage(NULL, $sql_query);
PMA_ajaxResponse($message, $message->isSuccess(), $extra_data);
}
$active_page = 'tbl_structure.php';
require './tbl_structure.php';
exit;
@ -133,7 +139,7 @@ if (isset($_REQUEST['index']) && is_array($_REQUEST['index'])) {
// end preparing form values
?>
<form action="./tbl_indexes.php" method="post" name="index_frm"
<form action="./tbl_indexes.php" method="post" name="index_frm" id="index_frm" <?php echo ($GLOBALS['cfg']['AjaxEnable'] ? ' class="ajax"' : ''); ?>
onsubmit="if (typeof(this.elements['index'].disabled) != 'undefined') {
this.elements['index'].disabled = false}">
<?php
@ -183,7 +189,7 @@ if (isset($_REQUEST['create_index'])) {
PMA_Message::error(__('("PRIMARY" <b>must</b> be the name of and <b>only of</b> a primary key!)'))->display();
?>
<table>
<table id="index_columns">
<thead>
<tr><th><?php echo __('Column'); ?></th>
<th><?php echo __('Size'); ?></th>

View File

@ -14,7 +14,7 @@ require_once './libraries/mysql_charsets.lib.php';
$GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
$GLOBALS['js_include'][] = 'tbl_structure.js';
$GLOBALS['js_include'][] = 'indexes.js';
/**
* handle multiple field commands if required
*
@ -699,6 +699,7 @@ if (! $tbl_is_view && ! $db_is_information_schema) {
</form>
<iframe class="IE_hack" scrolling="no"></iframe>
<hr />
<div id="index_div" <?php echo ($GLOBALS['cfg']['AjaxEnable'] ? ' class="ajax"' : ''); ?> >
<?php
}
@ -720,7 +721,7 @@ if (! $tbl_is_view && ! $db_is_information_schema && 'ARCHIVE' != $tbl_type) {
*/
echo PMA_Index::getView($table, $db);
?>
<br />
</div>
<form action="./tbl_indexes.php" method="post"
onsubmit="return checkFormElementInRange(this, 'idx_num_fields',
'<?php echo str_replace('\'', '\\\'', __('Column count has to be larger than zero.')); ?>',