whole_func_string: function parseNavItem (item) {
          if (item.route === req.path) {
              item.isActive = true;
          }
  
          // replace object by array structure
          var childArray = [];
          for (var child in item.children) {
              var subItem = parseNavItem( item.children[ child ] );
              if (subItem.isActive || subItem.hasActiveChildren) {
                  item.hasActiveChildren = true;
              }
              // check if user can access item
              if (userHasAccess(subItem)) {
                  childArray.push(subItem);
              }
          }
          // sort by _w
          childArray.sort(function (a, b) { return a._w - b._w });
          item.children = childArray;
  
          return item;
      }
func_code_string: function parseNavItem (item) {
          if (item.route === req.path) {
              item.isActive = true;
          }
  
          // replace object by array structure
          var childArray = [];
          for (var child in item.children) {
              var subItem = parseNavItem( item.children[ child ] );
              if (subItem.isActive || subItem.hasActiveChildren) {
                  item.hasActiveChildren = true;
              }
              // check if user can access item
              if (userHasAccess(subItem)) {
                  childArray.push(subItem);
              }
          }
          // sort by _w
          childArray.sort(function (a, b) { return a._w - b._w });
          item.children = childArray;
  
          return item;
      }
func_documentation_string: Method recursively iterates over items and adds `isActive` and `hasActiveChild` fields