最近のアクセス:
GAM - メニュー用の API

GAM のメニューの取得、作成、更新には、次の API を使用します。

GAMApplication 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 API

&GAMRepository.GetApplicationMenu(&AppGUID,&MenuGUID, &Errors)
次の静的メソッドもあります:
GAMRepository.GetApplicationMenu(&AppGUID,&MenuGUID, &Errors)

I. 動的プロパティを使用したメニューの作成

メニューの動的プロパティを使用して、各メニューオプションに使用するクラスやアイコンを定義できます。
&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

II. 次のコードでは、指定したメニューのメニューオプションを取得します:

//&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    

III. 追加パラメーターを使用した動的プロパティのロード

メニューオプションの動的プロパティをロードするには、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

IV. メニューオプションの絶対 URL または相対 URL の使用

各メニューオプション用に返される URL は、メニューが定義されている GAM アプリケーションの [ Use absolute URL by environment ] プロパティの設定に応じて、絶対 URL か相対 URL かが決まります。
イメージ:51907.jpg
この値は、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)

V. 権限なしでオプションをロード

ユーザーのアクセス許可に関係なく、すべてのメニューを取得できると便利な場合があります。
次のプロパティは、ユーザーメニューの取得に使用するメソッドのパラメーターである 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


サブページ
Created: 17/05/30 19:01 by Admin Last update: 23/04/24 18:06 by Admin
カテゴリ
Powered by GXwiki 3.0