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.jcr.util.PropertyUtil;
38 import info.magnolia.jcr.wrapper.I18nNodeWrapper;
39 import info.magnolia.module.templatingkit.functions.STKTemplatingFunctions;
40 import info.magnolia.module.templatingkit.navigation.NavigationModel;
41 import info.magnolia.module.templatingkit.templates.AbstractSTKTemplateModel;
42 import info.magnolia.rendering.model.RenderingModel;
43 import info.magnolia.rendering.template.TemplateDefinition;
44 import info.magnolia.repository.RepositoryConstants;
45 import info.magnolia.templating.functions.TemplatingFunctions;
46
47 import javax.inject.Inject;
48 import javax.jcr.Node;
49 import javax.jcr.RepositoryException;
50
51
52
53
54
55
56
57 public class SiteMapParagraphModel<RD extends TemplateDefinition> extends AbstractSTKTemplateModel<TemplateDefinition> {
58
59 @Inject
60 public SiteMapParagraphModel(Node content, RD definition, RenderingModel<?> parent, STKTemplatingFunctions stkFunctions, TemplatingFunctions templatingFunctions) {
61 super(content, definition, parent, stkFunctions, templatingFunctions);
62 }
63
64
65 public NavigationModel getSiteMapStructure() throws RepositoryException {
66 final int maxLevels = getMaxLevel();
67 boolean showSiteMapRoot = PropertyUtil.getBoolean(content, "showSiteMapRoot", true);
68 return new NavigationModel(getSiteMapRoot(), null, maxLevels, true, showSiteMapRoot);
69 }
70
71 private Node getSiteMapRoot() throws RepositoryException {
72 Node manualChosenRoot = stkFunctions.getReferencedContent(content, "link", RepositoryConstants.WEBSITE);
73
74 if (manualChosenRoot != null) {
75 if (!(manualChosenRoot instanceof I18nNodeWrapper)) {
76 return new I18nNodeWrapper(manualChosenRoot);
77 }
78 }
79 return this.getSiteRoot();
80 }
81
82
83
84
85
86 private int getMaxLevel() {
87 try {
88 if (content.hasProperty("maxLevels")) {
89 return (int) content.getProperty("maxLevels").getLong();
90 }
91 return 3;
92 } catch (RepositoryException e) {
93 return 3;
94 }
95 }
96 }