From a8f258cb8d5755cfa539636f815a564fd27f9980 Mon Sep 17 00:00:00 2001 From: Thilanka Kaushalya Date: Sat, 18 Jun 2011 22:36:54 +0530 Subject: [PATCH 1/4] Added ajax dialog for table row change --- js/messages.php | 2 + js/sql.js | 127 +++++++++++++++++++++++++++++++++- libraries/display_tbl.lib.php | 6 +- sql.php | 1 + 4 files changed, 134 insertions(+), 2 deletions(-) diff --git a/js/messages.php b/js/messages.php index 01aede4630..879ae81c2e 100644 --- a/js/messages.php +++ b/js/messages.php @@ -117,6 +117,8 @@ $js_messages['strInlineEdit'] = __('Inline Edit'); $js_messages['strEdit'] = __('Edit'); $js_messages['strSave'] = __('Save'); $js_messages['strHide'] = __('Hide'); +$js_messages['strNoRowSelected'] = __('No rows has selected. Please select rows to change'); +$js_messages['strChangeTbl'] = __('Change Table'); /* For tbl_select.js */ $js_messages['strHideSearchCriteria'] = __('Hide search criteria'); diff --git a/js/sql.js b/js/sql.js index 65d209ab65..a057e058d0 100644 --- a/js/sql.js +++ b/js/sql.js @@ -937,7 +937,7 @@ $(document).ready(function() { } } }) - +rowsDeleteForm /* * update the where_clause, remove the last appended ' AND ' * */ @@ -1013,6 +1013,131 @@ $(document).ready(function() { PMA_unInlineEditRow($del_hide, $chg_submit, $this_td, $input_siblings, '', disp_mode); } }) // End After editing, clicking again should post data + +/** Ajax Event for table row change*/ + $("#resultsForm.ajax .mult_submit[value=edit]").live('click', function(event){ + event.preventDefault(); + + /*Check whether atleast one row is selected for change*/ + if($("#table_results tbody tr").hasClass("marked")){ + 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 $form = $("#resultsForm"); + var $msgbox = PMA_ajaxShowMessage(); + + $.get( $form.attr('action') , $form.serialize()+"&ajax_request=true" , 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['strChangeTbl'], + height: 230, + width: 900, + open: PMA_verifyTypeOfAllColumns, + buttons : button_options_error + })// end dialog options + } else { + div + .append(data) + .dialog({ + title: PMA_messages['strChangeTbl'], + height: 600, + width: 900, + open: PMA_verifyTypeOfAllColumns, + buttons : button_options + }) + //Remove the top menu container from the dialog + .find("#topmenucontainer").hide() + ; // end dialog options + $(".insertRowTable").addClass("ajax"); + $("#buttonYes").addClass("ajax"); + } + PMA_ajaxRemoveMessage($msgbox); + }) // end $.get() + } else { + PMA_ajaxShowMessage(PMA_messages['strNoRowSelected']); + } + }); + + $("#insertForm .insertRowTable.ajax input[value=Go]").live('click', function(event) { + event.preventDefault(); + /** + * @var the_form object referring to the insert form + */ + var $form = $("#insertForm"); + PMA_prepareForAjaxRequest($form); + //User wants to submit the form + $.post($form.attr('action'), $form.serialize() , function(data) { + if(data.success == true) { + PMA_ajaxShowMessage(data.message); + $("#pageselector").trigger('change'); + + } else { + PMA_ajaxShowMessage(data.error); + $("#table_results tbody tr.marked .multi_checkbox").prop("checked", false); + $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); + $("#table_results tbody tr").removeClass("marked"); + } + if ($("#change_row_dialog").length > 0) { + $("#change_row_dialog").dialog("close").remove(); + } + /**Update the row count at the tableForm*/ + + $("#result_query").remove(); + $("#sqlqueryresults").prepend(data.sql_query); + }) // end $.post() + }) // end insert table button "Go" + + $("#buttonYes.ajax").live('click', function(event){ + event.preventDefault(); + /** + * @var the_form object referring to the insert form + */ + var $form = $("#insertForm"); + /**Get the submit type and the after insert type in the form*/ + var selected_submit_type = $("#insertForm").find("#actions_panel .control_at_footer option:selected").attr('value'); + var selected_after_insert = $("#insertForm").find("#actions_panel select[name=after_insert] option:selected").attr('value'); + $("#result_query").remove(); + PMA_prepareForAjaxRequest($form); + //User wants to submit the form + $.post($form.attr('action'), $form.serialize() , function(data) { + if(data.success == true) { + PMA_ajaxShowMessage(data.message); + if (selected_submit_type == "showinsert") { + $("#sqlqueryresults").prepend(data.sql_query); + $("#result_query .notice").remove(); + $("#result_query").prepend(data.message); + $("#table_results tbody tr.marked .multi_checkbox").prop("checked", false); + $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); + $("#table_results tbody tr").removeClass("marked"); + } else { + $("#pageselector").trigger('change'); + $("#result_query").remove(); + $("#sqlqueryresults").prepend(data.sql_query); + } + } else { + PMA_ajaxShowMessage(data.error); + $("#table_results tbody tr.marked .multi_checkbox").prop("checked", false); + $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); + $("#table_results tbody tr").removeClass("marked"); + } + if ($("#change_row_dialog").length > 0) { + $("#change_row_dialog").dialog("close").remove(); + } + }) // end $.post() + }); + }, 'top.frame_content') // end $(document).ready() diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php index 26d362d79f..5218681843 100644 --- a/libraries/display_tbl.lib.php +++ b/libraries/display_tbl.lib.php @@ -611,7 +611,11 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $ // Start of form for multi-rows edit/delete/export if ($is_display['del_lnk'] == 'dr' || $is_display['del_lnk'] == 'kp') { - echo '
' . "\n"; + echo '' . "\n"; echo PMA_generate_common_hidden_inputs($db, $table, 1); echo '' . "\n"; } diff --git a/sql.php b/sql.php index e8850fb7b6..153c555b30 100644 --- a/sql.php +++ b/sql.php @@ -15,6 +15,7 @@ require_once './libraries/check_user_privileges.lib.php'; require_once './libraries/bookmark.lib.php'; $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js'; +$GLOBALS['js_include'][] = 'tbl_change.js'; if(isset($_SESSION['profiling'])) { $GLOBALS['js_include'][] = 'highcharts/highcharts.js'; From 0f1a038b2d79b32f723f246d05300754d22f846e Mon Sep 17 00:00:00 2001 From: Thilanka Kaushalya Date: Sun, 19 Jun 2011 10:42:43 +0530 Subject: [PATCH 2/4] Fixed the bugs at table multi row change option --- js/messages.php | 2 +- js/sql.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/js/messages.php b/js/messages.php index 7e793175e1..1293f7d955 100644 --- a/js/messages.php +++ b/js/messages.php @@ -130,7 +130,7 @@ $js_messages['strInlineEdit'] = __('Inline Edit'); $js_messages['strEdit'] = __('Edit'); $js_messages['strSave'] = __('Save'); $js_messages['strHide'] = __('Hide'); -$js_messages['strNoRowSelected'] = __('No rows has selected. Please select rows to change'); +$js_messages['strNoRowSelected'] = __('No rows selected'); $js_messages['strChangeTbl'] = __('Change Table'); /* For tbl_select.js */ diff --git a/js/sql.js b/js/sql.js index d83145a308..7e2c378d03 100644 --- a/js/sql.js +++ b/js/sql.js @@ -1079,7 +1079,7 @@ rowsDeleteForm var $form = $("#resultsForm"); var $msgbox = PMA_ajaxShowMessage(); - $.get( $form.attr('action') , $form.serialize()+"&ajax_request=true" , function(data) { + $.get( $form.attr('action') , $form.serialize()+"&ajax_request=true&submit_mult=row_edit" , function(data) { //in the case of an error, show the error message returned. if (data.success != undefined && data.success == false) { div @@ -1137,9 +1137,10 @@ rowsDeleteForm $("#change_row_dialog").dialog("close").remove(); } /**Update the row count at the tableForm*/ - $("#result_query").remove(); $("#sqlqueryresults").prepend(data.sql_query); + $("#result_query .notice").remove(); + $("#result_query").prepend((data.message)); }) // end $.post() }) // end insert table button "Go" @@ -1169,6 +1170,8 @@ rowsDeleteForm $("#pageselector").trigger('change'); $("#result_query").remove(); $("#sqlqueryresults").prepend(data.sql_query); + $("#result_query .notice").remove(); + $("#result_query").prepend((data.message)); } } else { PMA_ajaxShowMessage(data.error); From 59dfaee0d73ca68b580e5f462d016426b5b6e216 Mon Sep 17 00:00:00 2001 From: Thilanka Kaushalya Date: Sun, 19 Jun 2011 11:30:43 +0530 Subject: [PATCH 3/4] Added the update resultsForm when there in single pageination --- js/sql.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/js/sql.js b/js/sql.js index 7e2c378d03..974bad4c85 100644 --- a/js/sql.js +++ b/js/sql.js @@ -1125,7 +1125,11 @@ rowsDeleteForm $.post($form.attr('action'), $form.serialize() , function(data) { if(data.success == true) { PMA_ajaxShowMessage(data.message); - $("#pageselector").trigger('change'); + if($("#pageselector").length != 0) { + $("#pageselector").trigger('change'); + } else { + $("input[name=navig].ajax").trigger('click'); + } } else { PMA_ajaxShowMessage(data.error); @@ -1167,7 +1171,11 @@ rowsDeleteForm $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); $("#table_results tbody tr").removeClass("marked"); } else { - $("#pageselector").trigger('change'); + if($("#pageselector").length != 0) { + $("#pageselector").trigger('change'); + } else { + $("input[name=navig].ajax").trigger('click'); + } $("#result_query").remove(); $("#sqlqueryresults").prepend(data.sql_query); $("#result_query .notice").remove(); From bdea8c332b36c063631aa4ececfd3419fe1150d4 Mon Sep 17 00:00:00 2001 From: Thilanka Kaushalya Date: Sun, 19 Jun 2011 23:23:10 +0530 Subject: [PATCH 4/4] Added ajax dialog for change in vertical rows --- js/messages.php | 2 +- js/sql.js | 51 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/js/messages.php b/js/messages.php index 1293f7d955..6863532a27 100644 --- a/js/messages.php +++ b/js/messages.php @@ -131,7 +131,7 @@ $js_messages['strEdit'] = __('Edit'); $js_messages['strSave'] = __('Save'); $js_messages['strHide'] = __('Hide'); $js_messages['strNoRowSelected'] = __('No rows selected'); -$js_messages['strChangeTbl'] = __('Change Table'); +$js_messages['strChangeTbl'] = __('Change'); /* For tbl_select.js */ $js_messages['strHideSearchCriteria'] = __('Hide search criteria'); diff --git a/js/sql.js b/js/sql.js index 974bad4c85..080a2e4ab7 100644 --- a/js/sql.js +++ b/js/sql.js @@ -1058,12 +1058,14 @@ rowsDeleteForm } }) // End After editing, clicking again should post data -/** Ajax Event for table row change*/ +/** + * Ajax Event for table row change + * */ $("#resultsForm.ajax .mult_submit[value=edit]").live('click', function(event){ event.preventDefault(); /*Check whether atleast one row is selected for change*/ - if($("#table_results tbody tr").hasClass("marked")){ + if ($("#table_results tbody tr, #table_results tbody tr td").hasClass("marked")) { var div = $('
'); /** @@ -1079,7 +1081,7 @@ rowsDeleteForm var $form = $("#resultsForm"); var $msgbox = PMA_ajaxShowMessage(); - $.get( $form.attr('action') , $form.serialize()+"&ajax_request=true&submit_mult=row_edit" , function(data) { + $.get( $form.attr('action'), $form.serialize()+"&ajax_request=true&submit_mult=row_edit", function(data) { //in the case of an error, show the error message returned. if (data.success != undefined && data.success == false) { div @@ -1114,6 +1116,9 @@ rowsDeleteForm } }); +/** + * Click action for "Go" button in ajax dialog insertForm -> insertRowTable + */ $("#insertForm .insertRowTable.ajax input[value=Go]").live('click', function(event) { event.preventDefault(); /** @@ -1122,10 +1127,10 @@ rowsDeleteForm var $form = $("#insertForm"); PMA_prepareForAjaxRequest($form); //User wants to submit the form - $.post($form.attr('action'), $form.serialize() , function(data) { - if(data.success == true) { + $.post($form.attr('action'), $form.serialize(), function(data) { + if (data.success == true) { PMA_ajaxShowMessage(data.message); - if($("#pageselector").length != 0) { + if ($("#pageselector").length != 0) { $("#pageselector").trigger('change'); } else { $("input[name=navig].ajax").trigger('click'); @@ -1133,9 +1138,12 @@ rowsDeleteForm } else { PMA_ajaxShowMessage(data.error); - $("#table_results tbody tr.marked .multi_checkbox").prop("checked", false); - $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); - $("#table_results tbody tr").removeClass("marked"); + $("#table_results tbody tr.marked .multi_checkbox " + + ", #table_results tbody tr td.marked .multi_checkbox").prop("checked", false); + $("#table_results tbody tr.marked .multi_checkbox " + + ", #table_results tbody tr td.marked .multi_checkbox").removeClass("last_clicked"); + $("#table_results tbody tr" + + ", #table_results tbody tr td").removeClass("marked"); } if ($("#change_row_dialog").length > 0) { $("#change_row_dialog").dialog("close").remove(); @@ -1148,6 +1156,9 @@ rowsDeleteForm }) // end $.post() }) // end insert table button "Go" +/** + * Click action for #buttonYes button in ajax dialog insertForm + */ $("#buttonYes.ajax").live('click', function(event){ event.preventDefault(); /** @@ -1161,17 +1172,20 @@ rowsDeleteForm PMA_prepareForAjaxRequest($form); //User wants to submit the form $.post($form.attr('action'), $form.serialize() , function(data) { - if(data.success == true) { + if (data.success == true) { PMA_ajaxShowMessage(data.message); if (selected_submit_type == "showinsert") { $("#sqlqueryresults").prepend(data.sql_query); $("#result_query .notice").remove(); $("#result_query").prepend(data.message); - $("#table_results tbody tr.marked .multi_checkbox").prop("checked", false); - $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); - $("#table_results tbody tr").removeClass("marked"); + $("#table_results tbody tr.marked .multi_checkbox " + + ", #table_results tbody tr td.marked .multi_checkbox").prop("checked", false); + $("#table_results tbody tr.marked .multi_checkbox " + + ", #table_results tbody tr td.marked .multi_checkbox").removeClass("last_clicked"); + $("#table_results tbody tr" + + ", #table_results tbody tr td").removeClass("marked"); } else { - if($("#pageselector").length != 0) { + if ($("#pageselector").length != 0) { $("#pageselector").trigger('change'); } else { $("input[name=navig].ajax").trigger('click'); @@ -1183,9 +1197,12 @@ rowsDeleteForm } } else { PMA_ajaxShowMessage(data.error); - $("#table_results tbody tr.marked .multi_checkbox").prop("checked", false); - $("#table_results tbody tr.marked .multi_checkbox").removeClass("last_clicked"); - $("#table_results tbody tr").removeClass("marked"); + $("#table_results tbody tr.marked .multi_checkbox " + + ", #table_results tbody tr td.marked .multi_checkbox").prop("checked", false); + $("#table_results tbody tr.marked .multi_checkbox " + + ", #table_results tbody tr td.marked .multi_checkbox").removeClass("last_clicked"); + $("#table_results tbody tr" + + ", #table_results tbody tr td").removeClass("marked"); } if ($("#change_row_dialog").length > 0) { $("#change_row_dialog").dialog("close").remove();