diff --git a/repo/repo.go b/repo/repo.go index b5aab0f..0300f80 100644 --- a/repo/repo.go +++ b/repo/repo.go @@ -66,16 +66,28 @@ func (repo *Repo) GetURIs(dimension string, ids []string) map[string]string { // GetNodes get nodes func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node { - return repo.getNodes(r.Nodes, r.Env.Groups) + return repo.getNodes(r.Nodes, r.Env) } -func (repo *Repo) getNodes(nodeRequests map[string]*requests.Node, groups []string) map[string]*content.Node { +func (repo *Repo) getNodes(nodeRequests map[string]*requests.Node, env *requests.Env) map[string]*content.Node { nodes := map[string]*content.Node{} path := []*content.Item{} + groups := env.Groups for nodeName, nodeRequest := range nodeRequests { log.Debug(" adding node " + nodeName + " " + nodeRequest.ID) + dimensionNode, ok := repo.Directory[nodeRequest.Dimension] nodes[nodeName] = nil + + if !ok && nodeRequest.Dimension == "" { + for _, dimension := range env.Dimensions { + dimensionNode, ok = repo.Directory[dimension] + if ok { + break + } + } + } + if !ok { log.Warning("could not get dimension root node for nodeRequest.Dimension: " + nodeRequest.Dimension) continue @@ -144,7 +156,7 @@ func (repo *Repo) GetContent(r *requests.Content) (c *content.SiteContent, err e node.Dimension = resolvedDimension } } - c.Nodes = repo.getNodes(r.Nodes, r.Env.Groups) + c.Nodes = repo.getNodes(r.Nodes, r.Env) return c, nil } diff --git a/requests/requests.go b/requests/requests.go index 2f745b6..9b10206 100644 --- a/requests/requests.go +++ b/requests/requests.go @@ -10,7 +10,7 @@ type Env struct { Data interface{} `json:"data"` } -// Node - an abdtract node request, use this one to request navigations +// Node - an abstract node request, use this one to request navigations type Node struct { // this one should be obvious ID string `json:"id"`