# # # # # config_util.cfv # # # get_rbac_based_config_feature_groups() # build_config_navbar() # build_config_navitems() # # include "templates.util.base_util"; # include "templates.util.admin_config_util"; include "templates.util.encoding"; include "templates.util.user_agent"; include "templates.util.html"; include "templates.util.linked_files_util"; include "templates.util.product_bar"; # include "templates.util.build_item_list_move_control"; # include "templates.util.option_info.option_info_image"; # include "templates.util.option_info.option_info_section"; # # # # # get_rbac_based_config_feature_groups() # # # # # subroutine(get_rbac_based_config_feature_groups( node config_navigation, string profile_name), ( # This returns a new feature_groups node which contains only features for which the user has view permission. debug_message("\n\n#### get_rbac_based_config_feature_groups START"); # debug_message("\n" . node_as_string(config_navigation) . "\n"); # debug_message("#### profile_name: " . profile_name . "\n"); node feature_groups = config_navigation{"feature_groups"}; node group_item; node feature_item; string group_name; string feature_name; node new_feature_groups = new_node(); string session_id = volatile.session_id; node super_role = get_super_role_of_profile(session_id, profile_name); # debug_message("\n#### super_role:\n" . node_as_string(super_role) . "\n"); node super_role_config; if (super_role?{"config"}) then ( super_role_config = super_role{"config"}; ) else ( # Set empty node super_role_config = new_node(); ); # debug_message("#### super_role_config:\n" . node_as_string(super_role_config) ."\n"); if (num_subnodes(super_role_config) > 0) then ( foreach group_item feature_groups ( group_name = node_name(group_item); foreach feature_item group_item ( feature_name = node_name(feature_item); if (super_role_config?{feature_name}) then ( # User has permission to view this page, add feature to new_feature_groups @new_feature_groups{group_name}{feature_name} = ""; ); ); ); ); new_feature_groups; )); # # # # # build_config_navbar() # # # # subroutine(build_config_navbar( string profile_name, string profile_label_html, string active_page, string active_page_label_html, bool is_update_database_permission, bool is_build_database_permission, bool is_view_reports_permission, string default_date_filter), ( ''; )); # # # # build_config_navitems() # # # subroutine(build_config_navitems( bool is_lite, bool is_root_admin, node config_navigation, string profile_name, bool is_config_home), ( # # Get final feature_groups node # node feature_groups; if (!is_lite) then ( if (is_root_admin) then ( feature_groups = config_navigation{"feature_groups"}; ) else ( # # Handle RBAC permissions # feature_groups = get_rbac_based_config_feature_groups(config_navigation, profile_name); ); ) else ( # # Lite version # feature_groups = config_navigation{"lite_feature_groups"}; ); # # # Create menu lists # # int number_of_groups = num_subnodes(feature_groups); if (number_of_groups > 0) then ( node item; string feature_name; string feature_label; string href; node group_item; node feature_item; node the_feature; int number_of_features; if (is_config_home) then ( '
'; ) else ( # Add iframe for IE6 ''; # Actual nav-bar '
'; ); # Add View Reports group ''; foreach group_item feature_groups ( number_of_features = num_subnodes(group_item); if (number_of_features > 0) then ( ''; ); ); '
'; ); ));