Index: branches/5.2.x/core/admin_templates/groups/groups_edit_permissions.tpl =================================================================== --- branches/5.2.x/core/admin_templates/groups/groups_edit_permissions.tpl +++ branches/5.2.x/core/admin_templates/groups/groups_edit_permissions.tpl @@ -129,12 +129,13 @@ while($i < $permissions.length) { $test_perm = '_cb_g-perm[' + $rets[1] + '][' + $permissions[$i] + ']'; $test_perm = document.getElementById($test_perm); - if ($test_perm) { - $test_perm.checked = $source_perm.checked; - update_checkbox($test_perm, document.getElementById('g-perm[' + $rets[1] + '][' + $permissions[$i] + ']')); + + if ( $test_perm && $test_perm.checked !== $source_perm.checked ) { + $($test_perm).prop('checked', $source_perm.checked).change(); } + $i++; } } - \ No newline at end of file + Index: branches/5.2.x/core/admin_templates/js/grid_filters.js =================================================================== --- branches/5.2.x/core/admin_templates/js/grid_filters.js +++ branches/5.2.x/core/admin_templates/js/grid_filters.js @@ -82,13 +82,16 @@ $('#' + jq($form_name)).append($div); // set click handlers - $('#_mutlioptions_cb_' + $cur_index + '_all') - .click( - function ($e) { - MultiOptions.SelectAll($cur_index); - } - ) - .prop('checked', $options.length == $options.filter(':selected').length); + var $select_all = $('#_mutlioptions_cb_' + $cur_index + '_all'), + $new_checked = $options.length === $options.filter(':selected').length; + + $select_all.click(function ($e) { + MultiOptions.SelectAll($cur_index); + }); + + if ( $select_all.prop('checked') !== $new_checked ) { + $select_all.prop('checked', $new_checked).change(); + } $('input._mutlioptions_cb_' + $cur_index).click( function ($e) { @@ -136,8 +139,11 @@ // update "Select All" checkbox var $select_all = $('#_mutlioptions_cb_' + selector_index + '_all'); var $options = $("input[type='checkbox']", '#' + jq(MultiOptions.Selectors[selector_index]) + '_div').not($select_all); + var $new_checked = $options.length === $options.filter(':checked').length; - $select_all.prop('checked', $options.length == $options.filter(':checked').length); + if ( $select_all.prop('checked') !== $new_checked ) { + $select_all.prop('checked', $new_checked).change(); + } } MultiOptions.SelectAll = function(selector_index) { @@ -145,7 +151,13 @@ var $select_all = $('#_mutlioptions_cb_' + selector_index + '_all'); var $checked = $select_all.prop('checked'); - $("input[type='checkbox']", '#' + jq(MultiOptions.Selectors[selector_index]) + '_div').not($select_all).prop('checked', $checked); + $("input[type='checkbox']", '#' + jq(MultiOptions.Selectors[selector_index]) + '_div').not($select_all).each(function () { + var $checkbox = $(this); + + if ( $checkbox.prop('checked') !== $checked ) { + $checkbox.prop('checked', $checked).change(); + } + }); // sync hidden field var $reg_exp = new RegExp('^_mutlioptions_cb_' + selector_index + '_(?!all)([0-9A-Za-z-]+)');