2017-05-17 4 views
0

this Code을 기반으로 각 사용자에게 미리 정의 된 즐겨 찾기 세트를 제공하는 기능의 기초를 작성했습니다.사용자 즐겨 찾기에 기존 디스플레이 메뉴 항목 추가

그러나이 특정 코드는 각 사용자의 각 즐겨 찾기에 대해 새로운 AOT 요소를 만듭니다. 메뉴 항목을 수동으로 구성하고 스크립트로 간단하게 배포하고 싶습니다.

어떻게하면 기존 노드 \Menu Items\Display에 대한 참조를 가져 와서 Menu 클래스의 객체에 추가 할 수 있습니까? 이것은 내가 지금까지 무엇을 가지고

:

MyFavorites obj = new MyFavorites(); 
Menu menuNode; 

MenuFunction mf; 
TreeNode treeNode; 

info("Applying favorites..."); 

menuNode = obj.getOrCreateRoot(); 
if (menuNode == null) return; 

treeNode = menuNode.AOTfindChild("Administrator"); 
if (!treeNode) 
{ 
    menuNode.addSubmenu("Administrator"); 
    treeNode = menuNode.AOTfindChild("Administrator"); 
    info("Created submenu"); 
} 
else info("Found submenu"); 

menuNode = treeNode; 

// Here I need help. I don't want to recreate all these AOT nodes every time the script is run. 
mf = new MenuFunction("Fav_AllUsers",MenuItemType::Display); 
mf.AOTsave(); 

menuNode.addMenuitem(mf); 

답변

2

는 여기에 즐겨 찾기에 그 추가 "SalesTable"메뉴를 썼다 빠른 일이다. 주의 할

Also here's a link that shows how to copy favorites between users

일 당신이 당신이 원하는 것을 달성하기 위해 객체 UserMenuList, Menu, 또는 해당 테이블을 사용해야하므로 데이터의 덩어리를 저장하는 테이블 SysPersonalization입니다. 이것은 당신을 시작해야합니다.

static void Job4(Args _args) 
{ 
    TreeNode    treeNode; 
    TreeNode    menuToAdd = TreeNode::findNode(@"\Menu Items\Display\SalesTable"); 
    TreeNodeIterator  iterator; 
    UserMenuList   userMenu; 
    Menu     menuNode; 


    treeNode = infolog.userNode(); 
    iterator = treeNode.AOTiterator(); 
    treeNode = iterator.next(); 
    if (treeNode) 
    { 
     userMenu = treeNode; 

     // find 'My Favorites' user menu; 
     treeNode = userMenu.AOTfindChild("@SYS95713"); 

     // Note menuNode is a different object than userMenu 
     menuNode = treeNode; 

     menuNode.addMenuitem(menuToAdd); 
    }  
}