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.areas;
35
36 import info.magnolia.cms.core.MgnlNodeType;
37 import info.magnolia.module.templatingkit.functions.STKTemplatingFunctions;
38 import info.magnolia.module.templatingkit.navigation.Link;
39 import info.magnolia.module.templatingkit.templates.AbstractSTKTemplateModel;
40 import info.magnolia.objectfactory.Components;
41 import info.magnolia.rendering.model.RenderingModel;
42 import info.magnolia.rendering.template.AreaDefinition;
43 import info.magnolia.templating.functions.TemplatingFunctions;
44
45 import java.util.ArrayList;
46 import java.util.Collection;
47 import java.util.List;
48
49 import javax.inject.Inject;
50 import javax.jcr.Node;
51 import javax.jcr.RepositoryException;
52
53 import org.slf4j.Logger;
54 import org.slf4j.LoggerFactory;
55
56
57
58
59
60
61
62
63
64
65 public class BreadcrumbAreaModel<RD extends AreaDefinition> extends AbstractSTKTemplateModel<RD> {
66
67 private static Logger log = LoggerFactory.getLogger(BreadcrumbAreaModel.class);
68
69 @Inject
70 public BreadcrumbAreaModel(Node content, RD definition, RenderingModel<?> parent, STKTemplatingFunctions stkFunctions, TemplatingFunctions templatingFunctions) {
71 super(content, definition, parent, stkFunctions, templatingFunctions);
72 }
73
74 public Collection<Link> getBreadcrumb() throws RepositoryException {
75 List<Node> ancestors = stkFunctions.ancestorsInSite(content, MgnlNodeType.NT_PAGE);
76
77 List<Link> items = new ArrayList<Link>();
78 for(Node current : ancestors){
79 items.add(Components.newInstance(Link.class, current));
80 }
81 items.add(Components.newInstance(Link.class, content));
82 return items;
83 }
84
85 }