fix #6: getNodes uses env dimensions if no node dimension was given by client request

This commit is contained in:
Frederik Löffert 2016-05-30 18:47:26 +02:00
parent a54924ee8d
commit f9b44183f7
2 changed files with 16 additions and 4 deletions

View File

@ -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
}

View File

@ -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"`