GAM のメニューの取得、作成、更新には、次の API を使用します。
&GAMApplication.GetMenus(&MenuFilter, &Errors) //&Errors は GAMError コレクション、&MenuFilter は GAMApplicationMenuFilter データタイプ
|
&GAMApplication.GetMenu(&MenuId, &Errors)
|
&GAMApplication.GetSubMenus(&MenuId, &Errors)
|
&GAMApplication.AddMenu(&Menu,&Errors) //&Menu は GAMApplicationMenu
|
&GAMApplication.UpdateMenu(&Menu,&Errors)
|
&GAMApplication.DeleteMenu(&Menu,&Errors)
|
&GAMApplication.AddMenuOption(&MenuId, &MenuOption, &Errors) //&MenuOption は GAMApplicationMenuOption データタイプ
|
&GAMApplication.UpdateMenuOption(&MenuId, &MenuOption, &Errors)
|
&GAMApplication.DeleteMenuOption(&MenuId, &MenuOption, &Errors)
|
&GAMApplication.GetMenuOptions(&MenuId, &MenuOptionFilter, &Errors) //&MenuOptionFilter は GAMApplicationMenuOptionFilter データタイプ
|
|
&GAMApplication.GetMenuOption(&MenuId, &MenuOptionId, &Errors)
|
|
&GAMApplication.GetPermissionResources(&PermissionFilter, &Errors)
|
リソースが関連付けられている GAM アプリケーションの権限をすべて返します。 |
&GAMApplication.GetUserMenu(&MenuId,&GAMMenuAdditionalParameters, &Errors) //&GAMMenuAdditionalParameters は GAMMenuAdditionalParameters データタイプ
|
セッション中のユーザーのアクセス許可に応じて、&MenuId パラメーターで指定されたメニューを返します。 |
&GAMApplication.GetUserMainMenu(&GAMMenuAdditionalParameters, &Errors)
|
セッション中のユーザーのアクセス許可に応じて、GAM アプリケーションのメインメニューを返します。 |
&GAMApplication.GetUserMenuByGUID(&MenuGUID,&GAMMenuAdditionalParameters, &Errors)
|
セッション中のユーザーのアクセス許可に応じて、&MenuGUID パラメーターで指定されたメニューを返します。 |
注:
前述の例では、次のいずれかの方法で &GAMApplication をインスタンス化する必要があります。
-
&GAMApplication.Load(&GAMApplicationId)
-
&GAMApplication = GAMRepository.GetApplicationByGUID(&GAMApplicationGUID,&Errors) //&Errors は GAMError コレクション
&GAMRepository.GetApplicationMenu(&AppGUID,&MenuGUID, &Errors)
|
次の静的メソッドもあります:
GAMRepository.GetApplicationMenu(&AppGUID,&MenuGUID, &Errors)
|
メニューの動的プロパティを使用して、各メニューオプションに使用するクラスやアイコンを定義できます。
&GAMApplication.Load(1)
&GUID.FromString('d0bfd659-7912-4fb8-9751-4a27546fb400')
&ApplicationMenu.GUID = &GUID
&ApplicationMenu.Name = !"Security"
&ApplicationMenu.Description = !"Security"
&isOK = &GAMApplication.AddMenu(&ApplicationMenu, &Errors)
If &isOK
Commit
&MenuId = &ApplicationMenu.Id
//メニューオプションの定義
&ApplicationMenuOption = new()
&GUID.FromString('dcdee429-45ae-4bd6-bf71-16e4cc90f724')
&Name = !"Users"
&Dsc = !"Users"
&Type = GAMMenuOptionType.Simple
&MenusId = 0
//メニューオプションの動的プロパティの定義
&GAMProperty = new()
&GAMProperty.Id = !"IconClassUsers"
&GAMProperty.Value = !"IconClassUsers"
&ApplicationMenuOption.Properties.Add(&GAMProperty)
&GAMApplicationPermission = &GAMApplication.GetPermissionByName(!"gamexamplewwusers_Execute",&Errors)
&RelResId = &GAMApplicationPermission.GUID
&Resource = !"gamexamplewwusers"
Do 'Load_ApplicationMenuOption'
&isOK = &GAMApplication.AddMenuOption(&MenuId, &ApplicationMenuOption, &Errors)
endif
Sub 'Load_ApplicationMenuOption'
&ApplicationMenuOption.GUID = &GUID
&ApplicationMenuOption.Name = &Name
&ApplicationMenuOption.Description = &Dsc
&ApplicationMenuOption.Type = &Type
&ApplicationMenuOption.SubMenuId = &MenusId
&ApplicationMenuOption.PermissionResourceGUID = &RelResId
&ApplicationMenuOption.Resource = &Resource
&ApplicationMenuOption.ResourceParameters = &ResourceParameters
EndSub
//&AppMenuOption は GAMApplicationMenuOption データタイプ
//&Application は GAMApplication
//&Filter は GAMApplicationMenuOptionFilter
//&Errors は GAMError コレクション
&Application.Load(&ApplicationId)
For &AppMenuOption in &Application.GetMenuOptions(&MenuId, &Filter, &Errors)
&Id = &AppMenuOption.Id
&Name = &AppMenuOption.Name
&Dsc = &AppMenuOption.Description
&Type = &AppMenuOption.Type
&Order = &AppMenuOption.Order
EndFor
メニューオプションの動的プロパティをロードするには、GAMMenuAdditionalParameters (GetUserMenuByGUID メソッドのパラメーター) の
LoadProperties メソッドを使用します。
&GUID = 'd0bfd659-7912-4fb8-9751-4a27546fb400'
&GAMApplication.Load(1)
&GAMMenuAdditionalParameters.LoadProperties = TRUE
&GAMMenuAdditionalParameters.Levels = &levels
&GAMMenuOptionList = &GAMApplication.GetUserMenuByGUID(&GUID,&GAMMenuAdditionalParameters,&Errors)
if &Errors.Count <> 0
msg(&Errors.Item(1).Code + " " + &Errors.item(1).Message)
endif
各メニューオプション用に返される URL は、メニューが定義されている GAM アプリケーションの [
Use absolute URL by environment ] プロパティの設定に応じて、絶対 URL か相対 URL かが決まります。
この値は、GAMMenuAdditionalParameters (ユーザーメニューの取得に使用するメソッドのパラメーター) の [
ReturnAbsoluteUrlByEnvironment ] プロパティを使用して上書きできます。
[
ReturnAbsoluteUrlByEnvironment ] プロパティには次の値を指定できます。
Yes |
URL は絶対 URL になります。 |
No |
URL は相対 URL になります。 |
Default |
GAM アプリケーションの [ Use absolute URL by environment ] プロパティに設定されている値が使用されます。 |
サンプルコード:
&GAMApplication.Load(1)
&GAMMenuAdditionalParameters.ReturnAbsoluteUrlByEnvironment = TRUE
&GAMMenuOptionList = &GAMApplication.GetUserMenuByGUID(&GUID,&GAMMenuAdditionalParameters,&Errors)
ユーザーのアクセス許可に関係なく、すべてのメニューを取得できると便利な場合があります。
次のプロパティは、ユーザーメニューの取得に使用するメソッドのパラメーターである GAMMenuAdditionalParameters オブジェクトに属しています。
IgnoreUserPermissions: GAMBoolean |
True の場合、ユーザーのアクセス許可を無視してメニューを取得します。アクセス許可はチェックされず、メニューオプションはすべて有効になります。
False の場合、メニューのロード時にアクセス許可が考慮されます。これが既定値です。
|
ReturnOptionsWithoutPermission: GAMBoolean |
True の場合、ユーザーにアクセス許可がないメニューオプションも返されます。この場合、メニューオプションは許可されていない状態で、 [ URLOptionsWithoutPermissions ] プロパティで指定されているリンクに割り当てられます。
False の場合、ユーザーにアクセス許可がないメニューオプションはロードされません。これが既定値です。
|
URLOptionsWithoutPermissions: GAMURL |
ユーザーがアクセス許可を持っていないメニューオプションに割り当てられるリンクです。このプロパティは、ReturnOptionsWithoutPermission = TRUE の場合にのみ考慮されます。URL は絶対 URL である必要があります。 |
サンプルコード:
&GAMApplication.Load(1)
&GAMMenuAdditionalParameters.ReturnOptionsWithoutPermission = TRUE
&GAMMenuAdditionalParameters.URLOptionsWithoutPermissions = &link
&GAMMenuOptionList = &GAMApplication.GetUserMenuByGUID(&GUID,&GAMMenuAdditionalParameters,&Errors)
これらの API は、GeneXus と合わせて配布される
GAM Examples に含まれています。これらは、
GAM のアクティベーションプロセス中に統合されます。特に次のオブジェクトは、API の使用方法について理解するのに役立ちます。
- GAMExampleAppMenuEntry
- GAMExampleAppMenuOptionEntry
- GAMExampleWWAppMenus
- GAMExampleWWAppMenuOptions