Results for tag "ribbon-button"

CRM 2011 – RibbonsDiffXml – Verwenden von DisplayRules (ValueRule)

Hi Leute,

heute möchte ich euch ein einfaches Beispiel liefern, wie sich (mittels CRM-Standard) div. Ribbon-Buttons an Hand div. Regeln ein bzw. ausblenden lassen.
Dafür ist es, wie (fast) immer bei Änderungen an Ribbon-Buttons notwendig, dass Ihr zunächst das Menüband in eure Lösung aufnehmt und die Lösung downloaded und extrahiert. Wie das genau geht, habe ich schon mehrfach beschrieben, u.a. hier.

Dieses Beispiel geht davon aus, dass Ihr bereits einen eigenen Ribbon-Button hinzugefügt habt. Wie das geht, beschreibe ich ebenfalls hier.

Öffnet nun die „Customizations.xml“ und sucht die Entität die Ihr verändern wollt und öffnet dort die Node „RibbonDiffXml“. Euer Custom-Ribbon-Button hat das Attribute „Command“, wo auf eine „CommandDefinition“ verwiesen wird. Sucht dieses Element. Es sollte in etwa wie folgt aussehen:

[sourcecode language=“xml“]
<CommandDefinition Id="Sample.SubGrid.xyz_auftrag.Button1">
<EnableRules />
<DisplayRules />
<Actions>
<JavaScriptFunction Library="$webresource:xyz_cs_auftrag" FunctionName="Storno"></JavaScriptFunction>
</Actions>
</CommandDefinition>
[/sourcecode]

Fügt nun den DisplayRules eine Regel hinzu, das geht wie folgt:

[sourcecode language=“xml“]
<DisplayRules>
<DisplayRule Id="ShowStorno" />
</DisplayRules>
[/sourcecode]

Etwas weiter unten im RibbonDiffXml müssen wir die Rule, auf die wir eben verwiesen haben („ShowStorno“) auch noch definieren. Sucht dafür den Node „RuleDefinitions“ und fügt eine DisplayRule hinzu. Das könnte nun wie folgt aussehen:

[sourcecode language=“xml“]
<RuleDefinitions>
<DisplayRules>
<DisplayRule Id="ShowStorno">
[ …. ]
</DisplayRule>
</DisplayRules>
<EnableRules />
</RuleDefinitions>
[/sourcecode]

Eine DisplayRule kann nun mehrere Arten von Conditions hinterlegt bekommen. Lt. SDK sind das die folgenden:

[sourcecode language=“xml“]
<CrmClientTypeRule />
<CrmOfflineAccessStateRule />
<CrmOutlookClientTypeRule />
<CrmOutlookClientVersionRule />
<EntityPrivilegeRule />
<EntityPropertyRule />
<EntityRule />
<FormEntityContextRule />
<FormStateRule />
<MiscellaneousPrivilegeRule />
<OrganizationSettingRule />
<OrRule />
<OutlookRenderTypeRule />
<OutlookVersionRule />
<PageRule />
<ReferencingAttributeRequiredRule />
<RelationshipTypeRule />
<SkuRule />
<ValueRule />
[/sourcecode]

Ich denke die meisten von uns werden die Notwendigkeit haben, an Hand eines bestimmten Attributs im Formular, einen Button ein oder ausblenden zu müssen. Deswegen gehe ich in diesem Beispiel nur auf die ValueRule ein.

Diese wiederum gestaltet sich in der Regel sehr einfach:

[sourcecode language=“xml“]
<ValueRule Field="xyz_type" Value="908940000"></ValueRule>
[/sourcecode]

Solltet Ihr an anderen Rules interessiert sein, postet einfach einen Kommentar und ich helfe euch weiter. Oder seht selbst in der SDK nach.

Verpackt nun wieder sämtliche Dateien in ein ZIP-Archiv und importiert dieses in eure CRM-Instanz.

Cheers,
Christian

CRM 2011 – Custom Ribbon Button – Mehr als 3 Elemente – Buttons deaktiviert

Mal wieder etwas spannendes…

Vergisst man beim Definieren der Ribbon-Buttons im customization.xml die Sequence hochzuzählen, so zeigt dies zunächst keine Auswirkungen.
Die Buttons 1-3 werden wie erwartet dargestellt und entsprechend der Rules aktiviert/deaktiviert.

Fügt man jedoch einen 4. oder 5. Button hinzu, werden diese sofort deaktiviert, die Enable/Display-Rule gar nicht mehr aufgerufen.

Funktioniert:
[sourcecode language=“xml“]
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control0" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control0" LabelText="$LocLabels:BestellungGenerieren.Label" ToolTipTitle="$LocLabels:BestellungGenerieren.Tooltip" ToolTipDescription="$LocLabels:BestellungGenerieren.Description" Image16by16="$webresource:hcs_bestellung_32" Image32by32="$webresource:hcs_bestellung_32" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control1" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control1" LabelText="$LocLabels:AngebotSenden.Label" ToolTipTitle="$LocLabels:AngebotSenden.Tooltip" ToolTipDescription="$LocLabels:AngebotSenden.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_mail" Image32by32="$webresource:prefix_icon_kalkulation_angebot_mail" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control2" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control2" LabelText="$LocLabels:AngebotWord.Label" ToolTipTitle="$LocLabels:AngebotWord.Tooltip" ToolTipDescription="$LocLabels:AngebotWord.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_word" Image32by32="$webresource:prefix_icon_kalkulation_angebot_word" TemplateAlias="o1"></Button>
[/sourcecode]

Funktioniert nur für die ersten 3 Buttons:
[sourcecode language=“xml“]
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control0" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control0" LabelText="$LocLabels:BestellungGenerieren.Label" ToolTipTitle="$LocLabels:BestellungGenerieren.Tooltip" ToolTipDescription="$LocLabels:BestellungGenerieren.Description" Image16by16="$webresource:hcs_bestellung_32" Image32by32="$webresource:hcs_bestellung_32" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control1" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control1" LabelText="$LocLabels:AngebotSenden.Label" ToolTipTitle="$LocLabels:AngebotSenden.Tooltip" ToolTipDescription="$LocLabels:AngebotSenden.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_mail" Image32by32="$webresource:prefix_icon_kalkulation_angebot_mail" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control2" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control2" LabelText="$LocLabels:AngebotWord.Label" ToolTipTitle="$LocLabels:AngebotWord.Tooltip" ToolTipDescription="$LocLabels:AngebotWord.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_word" Image32by32="$webresource:prefix_icon_kalkulation_angebot_word" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control3" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control3" LabelText="$LocLabels:AngebotUebergeben.Label" ToolTipTitle="$LocLabels:AngebotUebergeben.Tooltip" ToolTipDescription="$LocLabels:AngebotUebergeben.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_uebergeben" Image32by32="$webresource:prefix_icon_kalkulation_angebot_uebergeben" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control4" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control4" LabelText="$LocLabels:AngebotObsolet.Label" ToolTipTitle="$LocLabels:AngebotObsolet.Tooltip" ToolTipDescription="$LocLabels:AngebotObsolet.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_obsolet" Image32by32="$webresource:prefix_icon_kalkulation_angebot_obsolet" TemplateAlias="o1"></Button>
[/sourcecode]

UPDATE!!!! Die Sequence sollte man in mind. 10er Schritten hochzählen. Verwendet man Einerschritte, ist beim 5. Button Sense und das Problem, dass der Button automatisch deaktiviert und die EnableRule ignoriert wird, tritt wieder auf!!

Richtig:
[sourcecode language=“xml“]
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control0" Sequence="10" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control0" LabelText="$LocLabels:BestellungGenerieren.Label" ToolTipTitle="$LocLabels:BestellungGenerieren.Tooltip" ToolTipDescription="$LocLabels:BestellungGenerieren.Description" Image16by16="$webresource:hcs_bestellung_32" Image32by32="$webresource:hcs_bestellung_32" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control1" Sequence="20" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control1" LabelText="$LocLabels:AngebotSenden.Label" ToolTipTitle="$LocLabels:AngebotSenden.Tooltip" ToolTipDescription="$LocLabels:AngebotSenden.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_mail" Image32by32="$webresource:prefix_icon_kalkulation_angebot_mail" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control2" Sequence="30" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control2" LabelText="$LocLabels:AngebotWord.Label" ToolTipTitle="$LocLabels:AngebotWord.Tooltip" ToolTipDescription="$LocLabels:AngebotWord.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_word" Image32by32="$webresource:prefix_icon_kalkulation_angebot_word" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control3" Sequence="40" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control3" LabelText="$LocLabels:AngebotUebergeben.Label" ToolTipTitle="$LocLabels:AngebotUebergeben.Tooltip" ToolTipDescription="$LocLabels:AngebotUebergeben.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_uebergeben" Image32by32="$webresource:prefix_icon_kalkulation_angebot_uebergeben" TemplateAlias="o1"></Button>
<Button Id="Mscrm.Isv.prefix_angebot.Form.Group0.Control4" Sequence="50" Command="Mscrm.Isv.prefix_angebot.Form.Group0.Control4" LabelText="$LocLabels:AngebotObsolet.Label" ToolTipTitle="$LocLabels:AngebotObsolet.Tooltip" ToolTipDescription="$LocLabels:AngebotObsolet.Description" Image16by16="$webresource:prefix_icon_kalkulation_angebot_obsolet" Image32by32="$webresource:prefix_icon_kalkulation_angebot_obsolet" TemplateAlias="o1"></Button>
[/sourcecode]

Cheers,
Christian