# ============================== # Subroutine update_reports_menu # ============================== # If the subnodes visible and visible_if_files don't yet exist in the reports_menu node # then add this nodes prior the menu gets generated. subroutine(update_reports_menu(string profile_name, node reports_menu_node), ( node menu_item; string menu_type; string report_name; node report_elements_node; node first_report_element_node; string report_element_type; foreach menu_item reports_menu_node ( menu_type = node_value(subnode_by_name(menu_item, "type")); if (menu_type eq "view") then ( report_name = node_value(subnode_by_name(menu_item, "view_name")); report_elements_node = "profiles." . profile_name . ".statistics.reports." . report_name . ".report_elements"; first_report_element_node = subnode_by_number(report_elements_node, 0); report_element_type = node_value(subnode_by_name(first_report_element_node, "type")); menu_item . ".visible" = true; if (report_element_type ne "session_page_paths") then ( menu_item . ".visible_if_files" = true; ) else ( menu_item . ".visible_if_files" = false; ); ) else ( if (node_exists(menu_item . ".items") and (num_subnodes(menu_item . ".items") > 0)) then ( # menu_type eq group, recursively handle the views in groups menu_item . ".visible" = true; menu_item . ".visible_if_files" = true; update_reports_menu(profile_name, menu_item . ".items"); ) else ( menu_item . ".visible" = false; menu_item . ".visible_if_files" = false; ); ); ); # foreach menu_item ));