编辑全局命令栏示例(点击按钮展示当前用户的角色)

风流不在谈锋胜,袖手无言味最长。这篇文章主要讲述编辑全局命令栏示例:点击按钮展示当前用户的角色相关的知识,希望能为你提供帮助。
我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复468或者20220424可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

在系统中查看自己授予的角色,目前据我所知没有特别简便的方法。当然可以通过类似下面的高级查找列出自己分派给自己的角色,然后把这个私有视图贡献给普通用户所在的团队也可以。普通用户操作起来还是稍显麻烦。

还可以在导航栏中增加一个导航项目,点击打开一个html Web资源,通过代码展示当前用户的角色也可以。
但是可以用另外一种更加简便对于普通用于更加友好的方法,定制全局命令栏增加一个按钮,点击后弹出对话框告诉用户当前拥有的角色。
本文主要参考 ??Global ribbon Customization in Dynamics 365?? ,下面是效果,可以看到在右上角这里增加了一个图标,提示文字是  我的安全角色。

点击这个按钮就会弹出提示框,告知当前用户的安全角色。

然后接着讲实现方法。将Application Ribbons添加到我专门用于定制命令栏的自定义解决方案中,不添加依赖项,移除解决方案中的其他组件,确保该解决方案中的组件数量最少。



然后使用Ribbon Workbench打开这个解决方案进行编辑,找到 Mscrm.GlobalTab  在这个tab中添加一个按钮。



除了设置提示文本之外,这个按钮的图标(ModernImage属性)我设置为  $webresource:msdyn_/Images/IC_SecurityRole ,因为这个图标刚好契合,而且是白色的SVG图片,和背景不会有违和感。
然后我增加一个命令,命令的设置如下,我只设置了Action,没有设置Enable Rule和Display Rule。

这里我使用的JScript  类型的Web资源的代码如下:

"use strict";
var LuoYong = window.LuoYong || ;
LuoYong.Common = LuoYong.Common || ;
(function ()
this.DisplayMyRoles = function ()
var currentRoles = Xrm.Utility.getGlobalContext().userSettings.roles;
var roles = "";
currentRoles.forEach(function (role)roles += role.name + "\\n" );
var alertStrings =confirmButtonLabel: "确定", text: `$roles`, title: "我的角色" ;
var alertOptions =height: 220, width: 260 ;
Xrm.Navigation.openAlertDialog(alertStrings, alertOptions);

).call(LuoYong.Common);



然后将这个命令和按钮关联起来,在Ribbon Workbench中的展示如下:

【编辑全局命令栏示例(点击按钮展示当前用户的角色)】

我们知道在Ribbon Workbench中一顿操作猛如虎,也是改动RibbonDiff中的内容,我这里贴出来改了啥:
< RibbonDiffXml>
< CustomActions>
< CustomAction Id="ly.ApplicationRibbon.DisplayMyRoles.Button.CustomAction" Location="Mscrm.GlobalTab.Tools.Controls._children" Sequence="60">
< CommandUIDefinition>
< Button Alt="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.Alt" Command="ly.ApplicationRibbon.DisplayMyRoles.Command" Id="ly.ApplicationRibbon.DisplayMyRoles.Button" LabelText="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.LabelText" Sequence="60" TemplateAlias="o1" ToolTipTitle="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipTitle" ToolTipDescription="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipDescription" ModernImage="$webresource:msdyn_/Images/IC_SecurityRole" />
< /CommandUIDefinition>
< /CustomAction>
< /CustomActions>
< Templates>
< RibbonTemplates Id="Mscrm.Templates"> < /RibbonTemplates>
< /Templates>
< CommandDefinitions>
< CommandDefinition Id="ly.ApplicationRibbon.DisplayMyRoles.Command">
< EnableRules />
< DisplayRules />
< Actions>
< javascriptFunction FunctionName="LuoYong.Common.DisplayMyRoles" Library="$webresource:ly_/scripts/common/common.js" />
< /Actions>
< /CommandDefinition>
< /CommandDefinitions>
< RuleDefinitions>
< TabDisplayRules />
< DisplayRules />
< EnableRules />
< /RuleDefinitions>
< LocLabels>
< LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.Alt">
< Titles>
< Title description="我的安全角色" languagecode="1033" />
< /Titles>
< /LocLabel>
< LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.LabelText">
< Titles>
< Title description="我的安全角色" languagecode="1033" />
< /Titles>
< /LocLabel>
< LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipDescription">
< Titles>
< Title description="我的安全角色" languagecode="1033" />
< /Titles>
< /LocLabel>
< LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipTitle">
< Titles>
< Title description="我的安全角色" languagecode="1033" />
< /Titles>
< /LocLabel>
< /LocLabels>
< /RibbonDiffXml>

发布成功后,强制刷新浏览器(Ctrl + F5)就可以看到我前面介绍的效果了。

    推荐阅读