Hi,
We had a requirement in which we wanted to add some functionality on the existing Distribute Campaign Activity button for Campaign Activity entity.
For e.g. before we start the distribution we wanted to check for a specific value for all the Marketing Lists associated to that Campaign Activity. Based on it we wanted to proceed further or stop the distribution.
So we created a new custom button using the same definitions used for the existing Distribute Campaign Activity button (i.e. same CommandDefinitions and RuleDefinitions). The only thing we added was the new JavaScriptFunction in the Actions menu. It was referring to the function name CheckMLUA inside the webresource name new_CheckML
Now inside this new JavaScriptFunction we wanted to call the CallDistribute function that is being used by the OOB Distribute Campaign Activity button
For this to work we defined the FunctionName as isNAN for campaignactivity.js.
“For each library, add a <JavaScriptFunction Library=”$webresource:webresourceName” FunctionName=”isNaN” /> node. It requires a function name, so we’ve just been putting isNaN in there so there’s no error.”
<JavaScriptFunction
Library=“$webresource:new_CheckML“
FunctionName=“CheckMLUA“ />
<JavaScriptFunction
FunctionName=“isNaN“
Library=“/_static/ma/campaignactivity/campaignactivity.js“>
<CrmParameter
Value=“PrimaryEntityTypeCode“ />
</JavaScriptFunction>
And our function
RibbonDiffXML
</pre> <RibbonDiffXml> <CustomActions> <CustomAction Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.CustomAction" Location="Mscrm.Form.campaignactivity.MainTab.Actions.Controls._children" Sequence="41"> <CommandUIDefinition> <Button Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute" Command="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command" Sequence="0" ToolTipTitle="$LocLabels:WWB.Form.campaignactivity.MainTab.Actions.Distribute.LabelText" LabelText="$LocLabels:WWB.Form.campaignactivity.MainTab.Actions.Distribute.LabelText" ToolTipDescription="$LocLabels:WWB.Form.campaignactivity.MainTab.Actions.Distribute.Description" TemplateAlias="o1" Image16by16="/_imgs/MA/CampaignActivityDistribute_16.png" Image32by32="/_imgs/MA/CampaignActivityDistribute_32.png" /> </CommandUIDefinition> </CustomAction> </CustomActions> <Templates> <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates> </Templates> <CommandDefinitions> <CommandDefinition Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command"> <EnableRules> <EnableRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.EnableRule.FormStateRule" /> </EnableRules> <DisplayRules> <DisplayRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.DisplayRule.EntityPrivilegeRule" /> </DisplayRules> <Actions> <JavaScriptFunction Library="$webresource:new_CheckML" FunctionName="CheckMLUA" /> <JavaScriptFunction FunctionName="isNaN" Library="/_static/ma/campaignactivity/campaignactivity.js"> <CrmParameter Value="PrimaryEntityTypeCode" /> </JavaScriptFunction> </Actions> </CommandDefinition> </CommandDefinitions> <RuleDefinitions> <TabDisplayRules /> <DisplayRules> <DisplayRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.DisplayRule.EntityPrivilegeRule"> <EntityPrivilegeRule EntityName="activitypointer" PrivilegeDepth="Basic" PrivilegeType="Create" /> </DisplayRule> </DisplayRules> <EnableRules> <EnableRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.EnableRule.FormStateRule"> <FormStateRule State="Existing" /> </EnableRule> </EnableRules> </RuleDefinitions> <LocLabels> <LocLabel Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Description"> <Titles> <Title languagecode="1033" description="Distribute Description" /> </Titles> </LocLabel> <LocLabel Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.LabelText"> <Titles> <Title languagecode="1033" description="Distribute" /> </Titles> </LocLabel> </LocLabels> </RibbonDiffXml> <pre>
The helpful links
http://social.microsoft.com/Forums/is/crmdevelopment/thread/02ed3c05-05c2-4638-a139-e070db4561b0
Bye.
so the only significance of using the isNaN function specifically is that you needed any legitimate function to call that wouldnt throw an error? perhaps that should be expanded on in your blog entry as its not particularly obvious.
LikeLike
Thanks Nzregs for your suggestion.
LikeLike