1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.templatingkit.templates.components;
35
36
37 import info.magnolia.cms.beans.config.ContentRepository;
38 import info.magnolia.cms.i18n.I18nContentWrapper;
39 import info.magnolia.cms.util.ContentUtil;
40 import info.magnolia.jcr.util.PropertyUtil;
41 import info.magnolia.module.templatingkit.functions.STKTemplatingFunctions;
42 import info.magnolia.module.templatingkit.navigation.NavigationModel;
43 import info.magnolia.module.templatingkit.templates.AbstractSTKTemplateModel;
44 import info.magnolia.rendering.model.RenderingModel;
45 import info.magnolia.rendering.template.TemplateDefinition;
46 import info.magnolia.templating.functions.TemplatingFunctions;
47
48 import javax.inject.Inject;
49 import javax.jcr.Node;
50 import javax.jcr.RepositoryException;
51
52
53
54
55
56
57
58
59
60 public class SiteMapParagraphModel<RD extends TemplateDefinition> extends AbstractSTKTemplateModel<TemplateDefinition>{
61
62 @Inject
63 public SiteMapParagraphModel(Node content, RD definition, RenderingModel< ? > parent, STKTemplatingFunctions stkFunctions, TemplatingFunctions templatingFunctions) {
64 super(content, definition, parent, stkFunctions, templatingFunctions);
65 }
66
67
68 public NavigationModel getSiteMapStructure() throws RepositoryException{
69 final int maxLevels = getMaxLevel();
70 boolean showSiteMapRoot = PropertyUtil.getBoolean(content, "showSiteMapRoot", true);
71 return new NavigationModel(getSiteMapRoot(), null, maxLevels, true, showSiteMapRoot);
72 }
73
74
75
76
77 private Node getSiteMapRoot() throws RepositoryException{
78 Node manualChosenRoot = stkFunctions.getReferencedContent(content, "link", ContentRepository.WEBSITE);
79
80 if(manualChosenRoot != null) {
81 if (!(manualChosenRoot instanceof I18nContentWrapper)){
82 return (new I18nContentWrapper(ContentUtil.asContent(manualChosenRoot))).getJCRNode();
83 }
84 }
85 return this.getSiteRoot();
86 }
87
88
89
90
91
92
93 private int getMaxLevel(){
94 try {
95 if (content.hasProperty("maxLevels")) {
96 return (int)content.getProperty("maxLevels").getLong();
97 }
98 return 3;
99 } catch (RepositoryException e) {
100 return 3;
101 }
102 }
103 }