200c Menu Items

SOLVED

Good morning!

This relates to 'on premise' 200c Professional v12 -

When the menu has been customised, does anyone know how to find the target of a menu item ?

I can't find anything in the Company or Config databases, and there's nothing helpful in the .dif file from the menu export.

I've even asked our Partner, and they don't know !

Any advice gratefully recieved ...

Kind regards,

Paul.

  • +1
    verified answer

    From what i can see, it doesnt seem to use any files anymore, it looks like it handles it within the configuration database.  When you add a menu item or remove a menu item it add/takes away from the tblNavigationItem table.  I would then imagine that the role access controls what people can see and a combination of other tables would control position etc

  • 0 in reply to Gary Butler_1

    Thanks Gary - I'd missed that table !

    The target GUID from tblNavigationItem can be used to get the tblFeatureTarget record which contains the target filename.

    Menu position etc is determined within tblNavigation, and role access through refRoleFeature and refUserRole.

  • 0 in reply to Gary Butler_1

    I have an SQL query that produces an indented list of the whole menu.  Run it against the 200c configuration database.  It can be used as the data source for an Excel sheet to allow for searching/filtering etc.  It's also useful for finding the Feature Group (eg. Basic, Advanced) for a particular menu option.

    This is a sample of the output in Excel:

    This is the query: 

    with TreeMenu(NavigationItemID,lvl,keyvalue) as (
     Select NavigationItemID,0,cast(PositionIndex+1 as bigint )  From tblNavigationItem where ParentNavigationItemID is null
     union all 
     select tblNavigationItem.NavigationItemID,TreeMenu.lvl+1,cast(TreeMenu.keyvalue*1000+tblNavigationItem.PositionIndex+1 as bigint) 
      from tblNavigationItem Inner Join TreeMenu on tblNavigationItem.ParentNavigationItemID=TreeMenu.NavigationItemID)
    
    select  TreeMenu.lvl,space(treemenu.lvl*2) + tblNavigationItem.Title,tblNavigationItem.NavigationItemID,ParentNavigationItemID ,t1.FeatureGroupName ,t1.FeatureTargetAction
    from TreeMenu inner join tblNavigationItem on TreeMenu.NavigationItemID=tblNavigationItem.NavigationItemID
    left outer join (SELECT distinct tblFeatureTarget.FeatureTargetGUID, tblFeatureTarget.FeatureTargetAction,tblFeatureGroup.FeatureGroupName
    FROM            tblFeatureTarget INNER JOIN
                             tblFeature ON tblFeatureTarget.FeatureTargetFeatureID = tblFeature.FeatureID INNER JOIN
                             refFeatureGroupFeature ON tblFeature.FeatureID = refFeatureGroupFeature.FeatureID INNER JOIN
                             tblFeatureGroup ON refFeatureGroupFeature.FeatureGroupID = tblFeatureGroup.FeatureGroupID) as t1 on tblNavigationItem.TargetGUID=t1.FeatureTargetGUID
    order by cast(TreeMenu.keyvalue as varchar )
    
    

  • 0 in reply to Geoff Turner

    Thanks Geoff,

    Nice query but I'd suggest changing the joins to outer joins to catch FeatureTargetActions that aren't within FeatureGroups