diff --git a/ChangeLog b/ChangeLog index b223c7721c..7408a6de61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ phpMyAdmin - ChangeLog ====================== 4.1.0.0 (not yet released) ++ rfe #499 On user creation, warn if the user already exists ++ Use indeterminate check all checkbox in server privileges ++ Break server_status.php functions into smaller functions + PMA_DBI functions in database_interface.lib.php renamed to be compliant with PEAR standards 4.0.1.0 (not yet released) diff --git a/db_structure.php b/db_structure.php index ed5a481518..5bbc0e6f2a 100644 --- a/db_structure.php +++ b/db_structure.php @@ -132,7 +132,7 @@ $response->addHTML( $response->addHTML(PMA_generate_common_hidden_inputs($db)); $response->addHTML( - PMA_TableHeader($db_is_information_schema, $server_slave_status) + PMA_tableHeader($db_is_information_schema, $server_slave_status) ); $i = $sum_entries = 0; @@ -263,7 +263,7 @@ foreach ($tables as $keyname => $current_table) { '' ); - $response->addHTML(PMA_TableHeader(false, $server_slave_status)); + $response->addHTML(PMA_tableHeader(false, $server_slave_status)); } list($do, $ignored) = PMA_getServerSlaveStatus( diff --git a/js/functions.js b/js/functions.js index 875907282d..f07294a656 100644 --- a/js/functions.js +++ b/js/functions.js @@ -3755,14 +3755,13 @@ $(function () { /** * Watches checkboxes in a form to set the checkall box accordingly */ -var checkboxes_sel = "input.checkall:checkbox:enabled"; -$(checkboxes_sel).live("change", function () { +var checkboxes_changed = function () { var $form = $(this.form); // total number of checkboxes in current form var total_boxes = $form.find(checkboxes_sel).length; // number of checkboxes checked in current form var checked_boxes = $form.find(checkboxes_sel + ":checked").length; - var $checkall = $form.find("input#checkall"); + var $checkall = $form.find("input.checkall_box"); if (total_boxes == checked_boxes) { $checkall.prop({checked: true, indeterminate: false}); } @@ -3772,8 +3771,11 @@ $(checkboxes_sel).live("change", function () { else { $checkall.prop({checked: false, indeterminate: false}); } -}); -$("input#checkall").live("change", function () { +}; +var checkboxes_sel = "input.checkall:checkbox:enabled"; +$(checkboxes_sel).live("change", checkboxes_changed); + +$("input.checkall_box").live("change", function () { var is_checked = $(this).is(":checked"); $(this.form).find(checkboxes_sel).prop("checked", is_checked) .parents("tr").toggleClass("marked", is_checked); diff --git a/js/server_databases.js b/js/server_databases.js index 17dfb8e01b..c6e844fc8f 100644 --- a/js/server_databases.js +++ b/js/server_databases.js @@ -36,8 +36,8 @@ AJAX.registerOnload('server_databases.js', function () { * @var selected_dbs Array containing the names of the checked databases */ var selected_dbs = []; - // loop over all checked checkboxes, except the #checkall checkbox - $form.find('input:checkbox:checked:not(#checkall)').each(function () { + // loop over all checked checkboxes, except the .checkall_box checkbox + $form.find('input:checkbox:checked:not(.checkall_box)').each(function () { $(this).closest('tr').addClass('removeMe'); selected_dbs[selected_dbs.length] = 'DROP DATABASE `' + escapeHtml($(this).val()) + '`;'; }); diff --git a/js/server_privileges.js b/js/server_privileges.js index 8863b4cceb..7e170fe613 100644 --- a/js/server_privileges.js +++ b/js/server_privileges.js @@ -165,7 +165,8 @@ function addUser($form) /** * Unbind all event handlers before tearing down a page */ -AJAX.registerTeardown('server_privileges.js', function () { +AJAX.registerTeardown('server_privileges.js', function() { + $("#fieldset_add_user_login input[name='username']").die("focusout"); $("#fieldset_add_user a.ajax").die("click"); $('form[name=usersForm]').unbind('submit'); $("#reload_privileges_anchor.ajax").die("click"); @@ -176,9 +177,35 @@ AJAX.registerTeardown('server_privileges.js', function () { $("a.export_user_anchor.ajax").die('click'); $("#initials_table").find("a.ajax").die('click'); $('#checkbox_drop_users_db').unbind('click'); + $(".checkall_box").die("click"); }); AJAX.registerOnload('server_privileges.js', function () { + /** + * Display a warning if there is already a user by the name entered as the username. + */ + $("#fieldset_add_user_login input[name='username']").live("focusout", function() { + var username = $(this).val(); + var $warning = $("#user_exists_warning"); + if ($("#select_pred_username").val() == 'userdefined' && username != '') { + var href = $("form[name='usersForm']").attr('action'); + var params = { + 'ajax_request' : true, + 'token' : PMA_commonParams.get('token'), + 'validate_username' : true, + 'username' : username + }; + $.get(href, params, function(data) { + if (data['user_exists']) { + $warning.show(); + } else { + $warning.hide(); + } + }); + } else { + $warning.hide(); + } + }); /** * AJAX event handler for 'Add a New User' * @@ -335,6 +362,7 @@ AJAX.registerOnload('server_privileges.js', function () { } $div.html(data.message); displayPasswordGenerateButton(); + $(checkboxes_sel).trigger("change"); PMA_ajaxRemoveMessage($msgbox); PMA_showHints($div); } else { diff --git a/libraries/DisplayResults.class.php b/libraries/DisplayResults.class.php index c364c7f6af..7cb30073ba 100644 --- a/libraries/DisplayResults.class.php +++ b/libraries/DisplayResults.class.php @@ -5037,9 +5037,9 @@ class PMA_DisplayResults . ' alt="' . __('With selected:') . '" />'; } - $links_html .= ' ' - . ' ' + $links_html .= ' ' + . ' ' . '' . __('With selected:') . '' . "\n"; $links_html .= PMA_Util::getButtonOrImage( diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 471fc0ef9d..62f7af4427 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -774,12 +774,9 @@ function PMA_getHtmlForGlobalOrDbSpecificPrivs($db, $table, $row) } else { $html_output .= __('Table-specific privileges'); } - $html_output .= ' (' . __('Check All') . ' /' - . '' . __('Uncheck All') . ')'; + $html_output .= ' ' + . ' '; $html_output .= ''; $html_output .= '

' . __('Note: MySQL privilege names are expressed in English') @@ -982,7 +979,7 @@ function PMA_getHtmlForGlobalPrivTableWithCheckboxes( . '' . $privTable_names[$i] . '' . "\n"; foreach ($table as $priv) { $html_output .= '

' . "\n" - . '' . "\n"; @@ -1068,8 +1066,15 @@ function PMA_getHtmlForDisplayLoginInformationFields($mode = 'new') : $GLOBALS['username'] ) . '"' ) - . ' onchange="pred_username.value = \'userdefined\';" />' . "\n" - . '
' . "\n"; + . ' onchange="pred_username.value = \'userdefined\';" />' . "\n"; + + $html_output .= ''; + $html_output .= ''; $html_output .= '
' . "\n" . '