カスタマイズする際、リボンのタブ、グループ、ボタンなどのidはRibbon Browserで確認します。
1.非表示
1-1.ボタンの非表示
取引先企業サブグリッドリボンの「新規」ボタン
<HideCustomAction HideActionId = "Mscrm.SubGrid.account.NewRecord" Location = "Mscrm.SubGrid.account.NewRecord" />
1-2.グループの非表示
取引先企業グリッドリボンの「レコード」グループ
<HideCustomAction HideActionId = "Mscrm.HomepageGrid.account.MainTab.Management" Location = "Mscrm.HomepageGrid.account.MainTab.Management" />
1-3.タブの非表示
取引先企業フォームリボンのカスタマイズタブ
<HideCustomAction HideActionId = "Mscrm.Form.account.Developer" Location = "Mscrm.Form.account.Developer" />
1-4.リボンの非表示
この処理はできません。
1-5.ファイルメニュの非表示
一覧画面またはフォーム画面のリボンの一番左側にある青色のタブです。
このタブを丸ごと非表示することはできませんが、タブの中身を非表示することができます。
「活動」を非表示にするサンプル
<HideCustomAction HideActionId = "Mscrm.Jewel.NewMenu.NewActivity" Location = "Mscrm.Jewel.NewMenu.NewActivity" />
2.ボタンの追加
取引先企業のグリッドリボンのレコードグループに、詳細ボタンを追加
<CustomAction Id = "Mscrm.HomepageGrid.account.MainTab.Management.AddControl_Shosai" Location = "Mscrm.HomepageGrid.account.MainTab.Management.Controls._children"><CommandUIDefinition><Button Alt = "詳細" Command = "Mscrm.Torihikisaki.Shosai.Command" CommandType = "General" Id = "Mscrm.HomepageGrid.account.Shosai_Button" Image16by16 = "/WebResources/new_shosai_16" Image32by32 = "/WebResources/new_shosai_32" LabelText = "詳細" Sequence = "59" TemplateAlias = "o1" ToolTipDescription = "取引先企業の詳細を表示します。" ToolTipTitle = "詳細" /></CommandUIDefinition></CustomAction>
青文字の3箇所が重要です。
・._childre:追加という意味で、ボタンだけでなく、グループの追加も「._childre」を使います。
・Sequence:追加されたボタンを表示する箇所を決めます。
・TemplateAlias:この場合、「o1」という値が設定され、ボタンは大きいサイズで表示されます。小さいサイズで表示する場合は「o2」と設定します。
3.ボタン順序の変更
既存ボタンを上書きして、設定を変更することができません。
ボタンの順序を変更する場合は、既存ボタンを非表示にしてから、新しいボタンを追加することになります。
4.グループの追加
以前書いたカスタムリボンの表示制御に、グループを追加するサンプルがあります。
グループ追加の一部として、ボタンもあわせて設定する必要があります。この際、Template属性をうまく設定しないと、ボタンが表示されないことがしばしばあります。
ボタン数にあわせて、テンプレートを設定する必要がありそうです。
ボタン二つ → "Mscrm.Templates.3”
ボタン三つ、四つ → "Mscrm.Templates.FourOverflow"
とすれば、うまくいきます。
グループを追加する際、原因不明な現象に遭遇しています。
ソリューションエクスポート→XMLファイル修正→ソリューションインポート→公開
といった方式で修正した場合に、なぜか追加されたグループのボタンは全部Disableになっています。幸いに、Ribbon Editorで公開すれば直ります。
5.リボンの活性化制御
5-1.行の選択によるボタンの性化制御
取引先企業を1つから3つまで選択したときだけ、マージボタンを活性化にします。
<EnableRule Id= " Mscrm.Torihikisaki.Merge.EnableRule.Select"><SelectionCountRule Default = "false" InvertResult="false" AppliesTo="SelectedEntity" Minimum = "1" Maximum = "3" /></EnableRule>
5-2.新規登録フォームの新規ボタンを非活性にする
<EnableRule Id = "Mscrm.Torihikisaki.form.NotNew.EnableRule"><FormStateRule State = "Create" InvertResult = "true" /></EnableRule>
6.ボタンの表示制御
取引先企業エンティティの削除権限があれば、「TestButton」を表示する
<DisplayRule Id = "Mscrm.TestButton"><EntityPrivilegeRule Default = "false" InvertResult = "false" EntityName = "account" PrivilegeDepth = "Global" PrivilegeType = "Delete"/></DisplayRule>
以上
2012年2月16日木曜日
2012年2月11日土曜日
セキュリティロールによるリボンの表示制御 第2回
4.リボンをカスタマイズします。
4-1.リボンのカスタマイズに使うツール
・Ribbon Browser
・XML Notepad
・Ribbon Editor
Ribbon Browserで、取引先企業のグリッドリボン、ビュータブのIdを確認します。
「Mscrm.HomepageGrid.account.View.Groups」となっています。
次に、取引先企業エンティティを含むソリューションを作ってエクスポートして、Xml Notepadでリボンを編集します。
4-2.リボン編集
//RibbonDiffXml/CustomActionsに、「帳票」グループと二つの帳票ボタンを定義します。
・Group
<CustomAction Id = "Mscrm.HomepageGrid.account.View.Tyohyo" Location = "Mscrm.HomepageGrid.account.View.Groups._children">
<CommandUIDefinition>
<Group Command = "Mscrm.Enabled" Id = "Mscrm.HomepageGrid.account.View.Tyohyo_Group" Image32by32Popup = "/_imgs/advfind/progress.gif" Sequence = "40" Template = "Mscrm.Templates.3" Title = "帳票">
<Controls Id = "Mscrm.HomepageGrid.account.View.Tyohyo.Controls">
<Button Alt = "帳票A" Command = "Mscrm.TyohyoA" CommandType = "General" Id = "Mscrm.HomepageGrid.account.View.TyohyoA" Image16by16 = "/_imgs/advfind/and.gif" Image32by32 = "/_imgs/advfind/progress.gif" LabelText = "帳票A" Sequence = "10" TemplateAlias = "o1" ToolTipDescription = "帳票Aを出力します。" ToolTipTitle = "帳票A"/>
<Button Alt = "帳票B" Command = "Mscrm.TyohyoB" CommandType = "General" Id = "Mscrm.HomepageGrid.account.View.TyohyoB" Image16by16 = "/_imgs/advfind/and.gif" Image32by32 = "/_imgs/advfind/progress.gif" LabelText = "帳票B" Sequence = "20" TemplateAlias = "o1" ToolTipDescription = "帳票Bを出力します。" ToolTipTitle = "帳票B"/>
</Controls>
</Group>
</CommandUIDefinition>
</CustomAction>
・MaxSize
<CustomAction Id = "Mscrm.HomepageGrid.account.View.Scaling_MaxSize.CustomAction" Location = "Mscrm.HomepageGrid.account.View.Scaling._children">
<CommandUIDefinition>
<MaxSize GroupId = "Mscrm.HomepageGrid.account.View.Tyohyo_Group" Id = "Mscrm.HomepageGrid.account.View.Tyohyo_MaxSize" Sequence = "15" Size = "Large"/>
</CommandUIDefinition>
</CustomAction>
・Scale
<CustomAction Id = "Mscrm.HomepageGrid.account.View.Scaling_Scale.CustomAction" Location = "Mscrm.HomepageGrid.account.View.Scaling._children">
<CommandUIDefinition>
<Scale GroupId = "Mscrm.HomepageGrid.account.View.Tyohyo_Group" Id = "Mscrm.HomepageGrid.account.View.Tyohyo_Scale" Sequence = "55" Size = "Popup"/>
</CommandUIDefinition>
</CustomAction>
//RibbonDiffXml/CommandDefinitionsに、コマンドを定義します。
<DisplayRules>
<DisplayRule Id = "Mscrm.TyohyoA_Show"/>
</DisplayRules>
<Actions/>
</CommandDefinition>
<CommandDefinition Id = "Mscrm.TyohyoB">
<EnableRules/>
<DisplayRules>
<DisplayRule Id = "Mscrm.TyohyoB_Show"/>
</DisplayRules>
<Actions/>
</CommandDefinition>
</DisplayRule>
<DisplayRule Id = "Mscrm.TyohyoB_Show">
<EntityPrivilegeRule Default = "false" InvertResult = "false" EntityName = "new_tyohyob" PrivilegeDepth = "Global" PrivilegeType = "Read"/>
</DisplayRule>
4-1.リボンのカスタマイズに使うツール
・Ribbon Browser
・XML Notepad
・Ribbon Editor
Ribbon Browserで、取引先企業のグリッドリボン、ビュータブのIdを確認します。
「Mscrm.HomepageGrid.account.View.Groups」となっています。
次に、取引先企業エンティティを含むソリューションを作ってエクスポートして、Xml Notepadでリボンを編集します。
4-2.リボン編集
//RibbonDiffXml/CustomActionsに、「帳票」グループと二つの帳票ボタンを定義します。
・Group
<CustomAction Id = "Mscrm.HomepageGrid.account.View.Tyohyo" Location = "Mscrm.HomepageGrid.account.View.Groups._children">
<CommandUIDefinition>
<Group Command = "Mscrm.Enabled" Id = "Mscrm.HomepageGrid.account.View.Tyohyo_Group" Image32by32Popup = "/_imgs/advfind/progress.gif" Sequence = "40" Template = "Mscrm.Templates.3" Title = "帳票">
<Controls Id = "Mscrm.HomepageGrid.account.View.Tyohyo.Controls">
<Button Alt = "帳票A" Command = "Mscrm.TyohyoA" CommandType = "General" Id = "Mscrm.HomepageGrid.account.View.TyohyoA" Image16by16 = "/_imgs/advfind/and.gif" Image32by32 = "/_imgs/advfind/progress.gif" LabelText = "帳票A" Sequence = "10" TemplateAlias = "o1" ToolTipDescription = "帳票Aを出力します。" ToolTipTitle = "帳票A"/>
<Button Alt = "帳票B" Command = "Mscrm.TyohyoB" CommandType = "General" Id = "Mscrm.HomepageGrid.account.View.TyohyoB" Image16by16 = "/_imgs/advfind/and.gif" Image32by32 = "/_imgs/advfind/progress.gif" LabelText = "帳票B" Sequence = "20" TemplateAlias = "o1" ToolTipDescription = "帳票Bを出力します。" ToolTipTitle = "帳票B"/>
</Controls>
</Group>
</CommandUIDefinition>
</CustomAction>
・MaxSize
<CustomAction Id = "Mscrm.HomepageGrid.account.View.Scaling_MaxSize.CustomAction" Location = "Mscrm.HomepageGrid.account.View.Scaling._children">
<CommandUIDefinition>
<MaxSize GroupId = "Mscrm.HomepageGrid.account.View.Tyohyo_Group" Id = "Mscrm.HomepageGrid.account.View.Tyohyo_MaxSize" Sequence = "15" Size = "Large"/>
</CommandUIDefinition>
</CustomAction>
・Scale
<CustomAction Id = "Mscrm.HomepageGrid.account.View.Scaling_Scale.CustomAction" Location = "Mscrm.HomepageGrid.account.View.Scaling._children">
<CommandUIDefinition>
<Scale GroupId = "Mscrm.HomepageGrid.account.View.Tyohyo_Group" Id = "Mscrm.HomepageGrid.account.View.Tyohyo_Scale" Sequence = "55" Size = "Popup"/>
</CommandUIDefinition>
</CustomAction>
//RibbonDiffXml/CommandDefinitionsに、コマンドを定義します。
<CommandDefinition Id = "Mscrm.TyohyoA">
<EnableRules/><DisplayRules>
<DisplayRule Id = "Mscrm.TyohyoA_Show"/>
</DisplayRules>
<Actions/>
</CommandDefinition>
<CommandDefinition Id = "Mscrm.TyohyoB">
<EnableRules/>
<DisplayRules>
<DisplayRule Id = "Mscrm.TyohyoB_Show"/>
</DisplayRules>
<Actions/>
</CommandDefinition>
//RibbonDiffXml/RuleDefinitions/DisplayRulesに、表示ルールを定義します。
<DisplayRule Id = "Mscrm.TyohyoA_Show">
<EntityPrivilegeRule Default = "false" InvertResult = "false" EntityName = "new_tyohyoa" PrivilegeDepth = "Global" PrivilegeType = "Read"/></DisplayRule>
<DisplayRule Id = "Mscrm.TyohyoB_Show">
<EntityPrivilegeRule Default = "false" InvertResult = "false" EntityName = "new_tyohyob" PrivilegeDepth = "Global" PrivilegeType = "Read"/>
</DisplayRule>
修正が終わったら、ソリューションをインポートして公開します。
※追加した二つのボタンがなぜかDisable状態になった場合に、Ribbon Editorでもう一度公開すれば直ります。
5.動作確認します。
・システム管理者でログインした場合、帳票Aボタン、帳票Bボタンは両方表示されます。
・ユーザAでログインした場合、帳票Aボタンのみ表示されます。
・ユーザBでログインした場合、帳票Bボタンのみ表示されます。
以上
2012年2月10日金曜日
セキュリティロールによるリボンの表示制御 第1回
リボンにある任意のボタンをセキュリティロールによって、表示・非表示の制御ができます。
リボンから、ログインユーザのセキュリティロールを直接判別できませんが、ログインユーザが特定エンティティへのアクセス権限を判別できます。この性質を利用して、カスタムリボンの表示制御は次のアプローチで実現します。
・カスタムリボン(ボタン)ごとに、エンティティを作ります。
・セキュリティロールで、エンティティへのアクセス権限を設定します。
・ログインユーザに、セキュリティロールを設定します。
・リボン定義で、ログインユーザがエンティティへのアクセス権限を判別し、ボタンの示/非表示を決めます。
ここから、以下仮想要件のもとで、実践していきます。
・取引先企業というエンティティグリッドリボンのビュータブに、「帳票」というグループを追加します。帳票グループのなかに、「帳票A」と「帳票B」二つのボタンを設置します。
・システム管理者以外に、ユーザA、ユーザBを登録しておきます。システム管理者に、「帳票A」と「帳票B」両方表示します。ユーザAに「帳票A」だけ、ユーザBに「帳票B」だけ表示します。
作業手順:
1.エンティティを作ります。
2.セキュリティロールを作成します。
3.ユーザを登録(セキュリティロール割り当て含む)します。
4.リボンをカスタマイズします。
5.動作確認します。
手順を説明していきます。
1.エンティティを作ります。
以下要領で、名前が「帳票A」と「帳票B」のエンティティを作る
・表示名:帳票A、帳票B
・英語名:new_tyohyoa、new_tyohyob
・企業形態:組織全体
・メモ、活動、接続など、デフォルトがチェックされている項目をすべてOFFに
企業形態を組織全体にするというのは、後のセキュリティロール設定を簡素化するためです。
メモ、活動、接続などのチェック項目を外すのは、必要以上にシステムに負担を掛けないためです。
英語名はあとのリボンカスタマイズするとき使うので、記述しておきます。
2.セキュリティロールを作成します。
簡素化するため、既存の営業課長というセキュリティロールをコピーして、名前が「試験ロールA」と「試験ロールB」のセキュリティロールを作ります。
試験ロールAでは、帳票Aエンティティの読込み権限を組織全体と設定し、帳票Bエンティティの読込み権限を選択なしと設定します。
試験ロールBでは、帳票Aエンティティの読込み権限を選択なしと設定し、帳票Bエンティティの読込み権限を組織全体と設定します。
エンティティを作成するとき、企業形態を「組織全体」と設定したため、ワンクリックで、選択のオンとオフを切り替えられます。
3.ユーザを登録します。
WindowsLiveIDをふたつ取得して、ユーザAとユーザBを登録します。
ユーザAに、セキュリティロールの「試験ロールA」を、ユーザBに「試験ロールB」を割り当てます。
続き・・・
・カスタムリボン(ボタン)ごとに、エンティティを作ります。
・セキュリティロールで、エンティティへのアクセス権限を設定します。
・ログインユーザに、セキュリティロールを設定します。
・リボン定義で、ログインユーザがエンティティへのアクセス権限を判別し、ボタンの示/非表示を決めます。
ここから、以下仮想要件のもとで、実践していきます。
・取引先企業というエンティティグリッドリボンのビュータブに、「帳票」というグループを追加します。帳票グループのなかに、「帳票A」と「帳票B」二つのボタンを設置します。
・システム管理者以外に、ユーザA、ユーザBを登録しておきます。システム管理者に、「帳票A」と「帳票B」両方表示します。ユーザAに「帳票A」だけ、ユーザBに「帳票B」だけ表示します。
作業手順:
1.エンティティを作ります。
2.セキュリティロールを作成します。
3.ユーザを登録(セキュリティロール割り当て含む)します。
4.リボンをカスタマイズします。
5.動作確認します。
手順を説明していきます。
1.エンティティを作ります。
以下要領で、名前が「帳票A」と「帳票B」のエンティティを作る
・表示名:帳票A、帳票B
・英語名:new_tyohyoa、new_tyohyob
・企業形態:組織全体
・メモ、活動、接続など、デフォルトがチェックされている項目をすべてOFFに
企業形態を組織全体にするというのは、後のセキュリティロール設定を簡素化するためです。
メモ、活動、接続などのチェック項目を外すのは、必要以上にシステムに負担を掛けないためです。
英語名はあとのリボンカスタマイズするとき使うので、記述しておきます。
2.セキュリティロールを作成します。
簡素化するため、既存の営業課長というセキュリティロールをコピーして、名前が「試験ロールA」と「試験ロールB」のセキュリティロールを作ります。
試験ロールAでは、帳票Aエンティティの読込み権限を組織全体と設定し、帳票Bエンティティの読込み権限を選択なしと設定します。
試験ロールBでは、帳票Aエンティティの読込み権限を選択なしと設定し、帳票Bエンティティの読込み権限を組織全体と設定します。
エンティティを作成するとき、企業形態を「組織全体」と設定したため、ワンクリックで、選択のオンとオフを切り替えられます。
3.ユーザを登録します。
WindowsLiveIDをふたつ取得して、ユーザAとユーザBを登録します。
ユーザAに、セキュリティロールの「試験ロールA」を、ユーザBに「試験ロールB」を割り当てます。
続き・・・
登録:
投稿 (Atom)






