mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
groups support in GetNode, regionLanguageNames
This commit is contained in:
parent
b03da8b9c6
commit
bffcb11cf9
@ -12,7 +12,7 @@ type RepoNode struct {
|
||||
Regions []string `json:"regions"`
|
||||
URIs map[string]map[string]string `json:"URIs"`
|
||||
DestinationIds map[string]map[string]string `json:"destinationIds"`
|
||||
Names map[string]string `json:"names"`
|
||||
Names map[string]map[string]string `json:"names"`
|
||||
Hidden bool `json:"hidden"` // hidden in tree
|
||||
Groups []string `json:"groups"`
|
||||
Data map[string]interface{} `json:"data"`
|
||||
@ -86,7 +86,7 @@ func (node *RepoNode) GetPath(region string, language string) []*Item {
|
||||
func (node *RepoNode) ToItem(region string, language string) *Item {
|
||||
item := NewItem()
|
||||
item.Id = node.Id
|
||||
item.Name = node.GetName(language)
|
||||
item.Name = node.GetName(region, language)
|
||||
//todo handle destinationIds ....
|
||||
item.URI = node.URIs[region][language]
|
||||
return item
|
||||
@ -101,8 +101,8 @@ func (node *RepoNode) AddNode(name string, childNode *RepoNode) *RepoNode {
|
||||
return node
|
||||
}
|
||||
|
||||
func (node *RepoNode) GetName(language string) string {
|
||||
return node.Names[language]
|
||||
func (node *RepoNode) GetName(region string, language string) string {
|
||||
return node.Names[region][language]
|
||||
}
|
||||
|
||||
func (node *RepoNode) IsOneOfTheseMimeTypes(mimeTypes []string) bool {
|
||||
@ -118,6 +118,22 @@ func (node *RepoNode) IsOneOfTheseMimeTypes(mimeTypes []string) bool {
|
||||
}
|
||||
}
|
||||
|
||||
func (node *RepoNode) CanBeAccessedByGroups(groups []string) bool {
|
||||
if len(groups) == 0 {
|
||||
return true
|
||||
} else {
|
||||
// @todo is there sth like in_array ... or some array intersection
|
||||
for _, group := range groups {
|
||||
for _, myGroup := range node.Groups {
|
||||
if group == myGroup {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func (node *RepoNode) PrintNode(id string, level int) {
|
||||
prefix := strings.Repeat(INDENT, level)
|
||||
fmt.Printf("%s %s:\n", prefix, id)
|
||||
|
||||
@ -93,18 +93,18 @@ func (repo *Repo) GetURI(region string, language string, id string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes []string, path []*content.Item, level int, region string, language string) *content.Node {
|
||||
func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes []string, path []*content.Item, level int, groups []string, region string, language string) *content.Node {
|
||||
node := content.NewNode()
|
||||
node.Item = repoNode.ToItem(region, language)
|
||||
log.Debug("repo.GetNode: " + repoNode.Id)
|
||||
for _, childId := range repoNode.Index {
|
||||
childNode := repoNode.Nodes[childId]
|
||||
if (level == 0 || expanded || !expanded && childNode.InPath(path)) && !childNode.Hidden && childNode.IsOneOfTheseMimeTypes(mimeTypes) && childNode.InRegion(region) {
|
||||
node.Nodes[childId] = repo.GetNode(childNode, expanded, mimeTypes, path, level+1, region, language)
|
||||
if (level == 0 || expanded || !expanded && childNode.InPath(path)) && !childNode.Hidden && childNode.CanBeAccessedByGroups(groups) && childNode.IsOneOfTheseMimeTypes(mimeTypes) && childNode.InRegion(region) {
|
||||
node.Nodes[childId] = repo.GetNode(childNode, expanded, mimeTypes, path, level+1, groups, region, language)
|
||||
node.Index = append(node.Index, childId)
|
||||
} else {
|
||||
fmt.Println("no see for", childNode.GetName(language), childNode.Hidden)
|
||||
}
|
||||
// fmt.Println("no see for", childNode.GetName(region, language), childNode.Hidden)
|
||||
|
||||
}
|
||||
return node
|
||||
}
|
||||
@ -115,7 +115,7 @@ func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
||||
for nodeName, nodeRequest := range r.Nodes {
|
||||
log.Debug(" adding node " + nodeName + " " + nodeRequest.Id)
|
||||
if treeNode, ok := repo.Directory[nodeRequest.Id]; ok {
|
||||
nodes[nodeName] = repo.GetNode(treeNode, nodeRequest.Expand, nodeRequest.MimeTypes, path, 0, r.Env.Defaults.Region, r.Env.Defaults.Language)
|
||||
nodes[nodeName] = repo.GetNode(treeNode, nodeRequest.Expand, nodeRequest.MimeTypes, path, 0, r.Env.Groups, r.Env.Defaults.Region, r.Env.Defaults.Language)
|
||||
} else {
|
||||
log.Warning("you are requesting an invalid tree node for " + nodeName + " : " + nodeRequest.Id)
|
||||
}
|
||||
@ -147,7 +147,7 @@ func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
|
||||
for treeName, treeRequest := range r.Nodes {
|
||||
log.Debug(" adding tree " + treeName + " " + treeRequest.Id)
|
||||
if treeNode, ok := repo.Directory[treeRequest.Id]; ok {
|
||||
c.Nodes[treeName] = repo.GetNode(treeNode, treeRequest.Expand, treeRequest.MimeTypes, c.Path, 0, region, language)
|
||||
c.Nodes[treeName] = repo.GetNode(treeNode, treeRequest.Expand, treeRequest.MimeTypes, c.Path, 0, r.Env.Groups, region, language)
|
||||
} else {
|
||||
log.Warning("you are requesting an invalid tree node for " + treeName + " : " + treeRequest.Id)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user