diff --git a/ChangeLog b/ChangeLog index ae70fb7359..bd8ab2ef2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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 diff --git a/js/messages.php b/js/messages.php index 7851a19ea8..b8ac2bac3a 100644 --- a/js/messages.php +++ b/js/messages.php @@ -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'); diff --git a/js/sql.js b/js/sql.js index 14f4c05410..48fb65f609 100644 --- a/js/sql.js +++ b/js/sql.js @@ -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') }, diff --git a/js/tbl_structure.js b/js/tbl_structure.js index d1a2676253..d4ef1cdf97 100644 --- a/js/tbl_structure.js +++ b/js/tbl_structure.js @@ -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 = $('
'); + + /** + * @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); + $("
").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 = $("
").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 = $("
").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 = $("
").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 + */ + $('
') + .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() diff --git a/libraries/Index.class.php b/libraries/Index.class.php index 9992e1cc05..1800aee33d 100644 --- a/libraries/Index.class.php +++ b/libraries/Index.class.php @@ -419,10 +419,10 @@ class PMA_Index $r = ''; - $r .= '

' . __('Indexes') . ': '; + $r .= '

' . __('Indexes') . ': '; $r .= PMA_showMySQLDocu('optimization', 'optimizing-database-structure'); $r .= '

'; - $r .= ''; + $r .= '
'; $r .= ''; $r .= ''; if (! $print_mode) { @@ -450,7 +450,11 @@ class PMA_Index if (! $print_mode) { $this_params = $GLOBALS['url_params']; $this_params['index'] = $index->getName(); - $r .= '' . "\n"; diff --git a/tbl_indexes.php b/tbl_indexes.php index e366047a21..995ee2431f 100644 --- a/tbl_indexes.php +++ b/tbl_indexes.php @@ -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 ?> - onsubmit="if (typeof(this.elements['index'].disabled) != 'undefined') { this.elements['index'].disabled = false}"> must be the name of and only of a primary key!)'))->display(); ?> -
' + $r .= '' . ' ' . PMA_getIcon('b_edit.png', __('Edit')) . '' . '
+
diff --git a/tbl_structure.php b/tbl_structure.php index 081b4b5734..10cc8d339e 100644 --- a/tbl_structure.php +++ b/tbl_structure.php @@ -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) {
+
> -
+