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;
35
36 import javax.jcr.Node;
37 import javax.jcr.RepositoryException;
38
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41
42 import info.magnolia.module.resources.ResourcesModule;
43 import info.magnolia.module.resources.templates.ResourceTemplate;
44 import info.magnolia.module.templatingkit.functions.STKTemplatingFunctions;
45 import info.magnolia.module.templatingkit.sites.Site;
46 import info.magnolia.module.templatingkit.templates.pages.STKPage;
47 import info.magnolia.objectfactory.Components;
48 import info.magnolia.rendering.template.TemplateAvailability;
49 import info.magnolia.rendering.template.TemplateDefinition;
50
51
52
53
54
55
56 public class STKTemplateAvailability implements TemplateAvailability {
57
58 private static final Logger log = LoggerFactory.getLogger(STKTemplateAvailability.class);
59
60 @Override
61 public boolean isAvailable(Node node, TemplateDefinition templateDefinition) {
62
63 final String workspaceName = getNodeWorkspaceName(node);
64
65 if(ResourcesModule.DEFAULT_WORKSPACE.equals(workspaceName) && !(templateDefinition instanceof ResourceTemplate)) {
66 return false;
67 }
68
69 if (!(templateDefinition instanceof STKPage)) {
70 return true;
71 }
72
73 Site site = Components.getComponent(STKTemplatingFunctions.class).site(node);
74
75 if (site == null || site.getTemplates() == null || site.getTemplates().getAvailability() == null) {
76
77
78 return false;
79 }
80
81 return site.getTemplates().getAvailability().isAvailable(node, (STKPage) templateDefinition);
82 }
83
84 private String getNodeWorkspaceName(final Node node) {
85 try {
86 return node.getSession().getWorkspace().getName();
87 } catch (RepositoryException e) {
88 log.error("An error occurred while trying to access session for jcr node {}", node, e);
89 return null;
90 }
91 }
92 }