为标准Ribbon设置可用规则:enableRule

通过Ribbon workbench 可以追加新的ribbon并且追加相应的事件事件。
但是对于标准Ribbon则只能做到隐藏,不能追加自定义逻辑。
查阅了一些资料发现可以通过修改xml的形式进行操作。
以account为例,对【新建】Ribbon设置enablerule规则。
1、首先查阅sdk中如下路径: \SDK 2015\Resources\ExportedRibbonXml 中的accountRibbon.xml文件。
找到下面的xml配置。
这个就是crm底层的标准配置,我们将其粘贴出来放到自定义的节点上。

      <CommandDefinition Id="Mscrm.NewRecordFromForm">
        <EnableRules>
          <EnableRule Id="Mscrm.AvailableOnForm" />
        EnableRules>
        <DisplayRules>
          <DisplayRule Id="Mscrm.PrimaryIsNotActivity" />
          <DisplayRule Id="Mscrm.HideInLegacyRibbon" />
          <DisplayRule Id="Mscrm.CreatePrimaryEntityPermission" />
        DisplayRules>
        <Actions>
          <JavaScriptFunction FunctionName="Mscrm.RibbonActions.openNewRecord" Library="/_static/_common/scripts/RibbonActions.js">
            <CrmParameter Value="PrimaryEntityTypeName" />
          JavaScriptFunction>
        Actions>
      CommandDefinition>

2、我们新建一个solution把account实体添加进去。然后导出。
在RibbonDiffXml 节点做如下修改:

<RibbonDiffXml>
        <CustomActions />
        <Templates>
          <RibbonTemplates Id="Mscrm.Templates">RibbonTemplates>
        Templates>
        <CommandDefinitions>
          
          <CommandDefinition Id="Mscrm.NewRecordFromForm">
            <EnableRules>
              <EnableRule Id="Mscrm.AvailableOnForm" />
              <!-追加下面的EnableRule规则->
              <EnableRule Id="Mscrm.Home.Ribbons.OpenNewRecord.EnableRule" />
            EnableRules>
            <DisplayRules>
              <DisplayRule Id="Mscrm.PrimaryIsNotActivity" />
              <DisplayRule Id="Mscrm.HideInLegacyRibbon" />
              <DisplayRule Id="Mscrm.CreatePrimaryEntityPermission" />
            DisplayRules>
            <Actions>
              <JavaScriptFunction FunctionName="Mscrm.RibbonActions.openNewRecord" Library="/_static/_common/scripts/RibbonActions.js">
                <CrmParameter Value="PrimaryEntityTypeName" />
              JavaScriptFunction>
            Actions>
            
          CommandDefinition>
        CommandDefinitions>
        <RuleDefinitions>
          <TabDisplayRules />
          <DisplayRules />
          <EnableRules>
            
            <EnableRule Id="Mscrm.Home.Ribbons.OpenNewRecord.EnableRule">
                <-!指定个人自定义的JS事件!->
              <CustomRule FunctionName="test" Library="$webresource:new_test.js" Default="false">
              CustomRule>
              
            EnableRule>
          EnableRules>
        RuleDefinitions>
        <LocLabels />
      RibbonDiffXml>

new_test.js 中test方法只有 return false。

function test()
{

return false;
}

3、重新导入solution。
4、效果
为标准Ribbon设置可用规则:enableRule_第1张图片

将方法改为return true.

```
function test()
{

return true;
}

“`
效果如下:
为标准Ribbon设置可用规则:enableRule_第2张图片

你可能感兴趣的:(CRM2015)