mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
fix #6: getNodes uses env dimensions if no node dimension was given by client request
This commit is contained in:
parent
a54924ee8d
commit
f9b44183f7
18
repo/repo.go
18
repo/repo.go
@ -66,16 +66,28 @@ func (repo *Repo) GetURIs(dimension string, ids []string) map[string]string {
|
|||||||
|
|
||||||
// GetNodes get nodes
|
// GetNodes get nodes
|
||||||
func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
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{}
|
nodes := map[string]*content.Node{}
|
||||||
path := []*content.Item{}
|
path := []*content.Item{}
|
||||||
|
groups := env.Groups
|
||||||
for nodeName, nodeRequest := range nodeRequests {
|
for nodeName, nodeRequest := range nodeRequests {
|
||||||
log.Debug(" adding node " + nodeName + " " + nodeRequest.ID)
|
log.Debug(" adding node " + nodeName + " " + nodeRequest.ID)
|
||||||
|
|
||||||
dimensionNode, ok := repo.Directory[nodeRequest.Dimension]
|
dimensionNode, ok := repo.Directory[nodeRequest.Dimension]
|
||||||
nodes[nodeName] = nil
|
nodes[nodeName] = nil
|
||||||
|
|
||||||
|
if !ok && nodeRequest.Dimension == "" {
|
||||||
|
for _, dimension := range env.Dimensions {
|
||||||
|
dimensionNode, ok = repo.Directory[dimension]
|
||||||
|
if ok {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Warning("could not get dimension root node for nodeRequest.Dimension: " + nodeRequest.Dimension)
|
log.Warning("could not get dimension root node for nodeRequest.Dimension: " + nodeRequest.Dimension)
|
||||||
continue
|
continue
|
||||||
@ -144,7 +156,7 @@ func (repo *Repo) GetContent(r *requests.Content) (c *content.SiteContent, err e
|
|||||||
node.Dimension = resolvedDimension
|
node.Dimension = resolvedDimension
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c.Nodes = repo.getNodes(r.Nodes, r.Env.Groups)
|
c.Nodes = repo.getNodes(r.Nodes, r.Env)
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ type Env struct {
|
|||||||
Data interface{} `json:"data"`
|
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 {
|
type Node struct {
|
||||||
// this one should be obvious
|
// this one should be obvious
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user