I solve this trouble. I create custom action which has the same id as system button, then set callback and call location.reload(true)
in that callback. here is my code:
<CustomAction Id="Ribbon.Permission.Modify"
Location="CommandUI.Ribbon"
RequireSiteAdministrator="false" >
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition Location="Ribbon.Permission.Modify.EditUsrPerm">
<Button
Id="Ribbon.Permission.Modify.EditUsrPerm"
Command="EditItemPermission"
Sequence="11"
Image16by16="/_layouts/$Resources:core,Language;/images/formatmap16x16.png" Image16by16Top="-128" Image16by16Left="-192"
Image32by32="/_layouts/$Resources:core,Language;/images/formatmap32x32.png" Image32by32Top="-96" Image32by32Left="-384"
LabelText="$Resources:core,cui_EditUsrPerm;"
Alt="$Resources:core,cui_EditUsrPerm;"
ToolTipTitle="$Resources:core,cui_EditUsrPermToolTipTitle;"
ToolTipDescription="$Resources:core,cui_EditUsrPermToolTip;"
TemplateAlias="o1"
/>
</CommandUIDefinition>
</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command="EditItemPermission"
EnabledScript="javascript:
function IsEntriesSelected()
{
// form.PrincipalId and form.PrincipalName locate in /_layouts/User.aspx
var form = document.forms.aspnetForm;
var elemId = form.PrincipalId;
var elemName = form.PrincipalName;
if (elemId == null)
return false;
var len = elemId.length;
if (len == null)
{
if(elemId.checked)
return true;
}
else
{
for (var i = 0; i < len; i++)
{
if (elemId[i].checked)
return true;
}
}
}
IsEntriesSelected();"
CommandAction= "javascript:
function SetRolesFromModalDialog()
{
// this function locate in /_layouts/User.aspx
var selected = GetSelectedPrincipals();
var ids = selected.strIds;
// strAclObject - this variable locate in /_layouts/User.aspx
var options =
{
url:'/_layouts/editprms.aspx?obj=' + strAclObject + '&sel=' + escapeProperly(ids),
allowMaximize: false,
showClose: true,
showMaximized: false,
dialogReturnValueCallback: CallBack
};
SP.UI.ModalDialog.showModalDialog(options);
}
function CallBack(dialogResult, retValue)
{
if(dialogResult == SP.UI.DialogResult.OK)
location.reload(true);
}
SetRolesFromModalDialog();"
/>
</CommandUIHandlers>
</CommandUIExtension>