Sunday, 26 May 2013

Adding Custom Button in MsCrm 2011

Suppose we want to add a button next to “Save & Close” button in Account Entity’s form.
To do that we need to define a CustomAction child element to CustomActions element within RibbonDiffXml.
Export the solution containing the account entity.
Attributes for CustomAction are
ID- Give it any unique id.
Location- For defining location we first need to find out the id for Save group within the MainTab of the form and then append _children to it.
_children needs to be defined to add a custom button to an existing group.
Open the accountribbon.xml file within
.. sdk\samplecode\cs\client\ribbon\exportribbonxml\exportedribbonxml\
There we can find the following info.

<Groups Id=”Mscrm.Form.account.MainTab.Groups“>


<Group Id=”
Mscrm.Form.account.MainTab.Save“ Command=”Mscrm.Enabled“ Sequence=”10“ Title=”$Resources:Ribbon.Form.MainTab.Save“ Image32by32Popup=”/_imgs/ribbon/save32.png“ Template=”Mscrm.Templates.Flexible2“>


<Controls Id=”
Mscrm.Form.account.MainTab.Save.Controls“>


<Button Id=”Mscrm.Form.account.SaveAsComplete“ ToolTipTitle=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete“ ToolTipDescription=”$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAsComplete“ Command=”Mscrm.SavePrimaryActivityAsComplete“ Sequence=”10“ LabelText=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete“ Alt=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete“ Image16by16=”/_imgs/ribbon/SaveAsCompleted_16.png“ Image32by32=”/_imgs/ribbon/SaveAsCompleted_32.png“ TemplateAlias=”o1“
/>


Sequence : For sequence first find out the sequence defined for Save & Close button.
<Button Id=”Mscrm.Form.account.SaveAndClose“ ToolTipTitle=”$Resources:Mscrm_Form_Other_MainTab_Save_SaveAndClose_ToolTipTitle“ ToolTipDescription=”$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAndClose“ Command=”Mscrm.SaveAndClosePrimary“
Sequence=”30″
LabelText=”$Resources:Ribbon.Form.MainTab.Save.SaveAndClose“ Alt=”$Resources:Ribbon.Form.MainTab.Save.SaveAndClose“ Image16by16=”/_imgs/ribbon/saveandclose16.png“ Image32by32=”/_imgs/ribbon/saveandclose32.png“ TemplateAlias=”o1“
/>


So now our CustomAction should look like this
<CustomAction Id=”CA_MyFirstButton“ Location=”Mscrm.Form.account.MainTab.Save.Controls._children“ Sequence=”31“>

Now we next need to define CommandUIDefinition and Button child element to our CustomAction
<CommandUIDefinition>

<Button
Id=“B_MyFirstButton“


LabelText=“My First Button“


ToolTipTitle=“My First Button Tool Tip Title“


ToolTipDescription=“My First Button Tool Tip Description“


TemplateAlias=“o1“


Image16by16=“/_imgs/ribbon/saveandclose16.png“


Image32by32=“/_imgs/ribbon/saveandclose32.png“

/>

</CommandUIDefinition>

Here we are using the existing icon of Save and Close button.
Save the file, zip it as a part of the solution and import and publish it.

Final definition should look something like this. 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<RibbonDiffXml>
<CustomActions>
<CustomAction
 Id="CA_MyFirstButton"
 Location="Mscrm.Form.account.MainTab.Save.Controls._children"
 Sequence="31">
<CommandUIDefinition>
<Button
 Id="B_MyFirstButton"
 LabelText="My First Button"
 ToolTipTitle="My First Button Tool Tip Title"
 ToolTipDescription="My First Button Tool Tip Description"
 TemplateAlias="o1"
 Image16by16="/_imgs/ribbon/saveandclose16.png"
 Image32by32="/_imgs/ribbon/saveandclose32.png"/>
</CommandUIDefinition>
</CustomAction>
</CustomActions>
<Templates>
<RibbonTemplates
 Id="Mscrm.Templates"/>
</Templates>
<CommandDefinitions/>
<RuleDefinitions>
<TabDisplayRules/>
<DisplayRules/>
<EnableRules/>
</RuleDefinitions>
<LocLabels/>
</RibbonDiffXml>

1 comment: