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.admininterface.trees;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.core.MgnlNodeType;
38 import info.magnolia.cms.gui.control.Select;
39 import info.magnolia.cms.gui.control.TreeColumn;
40 import info.magnolia.cms.i18n.Messages;
41 import info.magnolia.cms.i18n.MessagesManager;
42 import info.magnolia.jcr.RuntimeRepositoryException;
43 import info.magnolia.objectfactory.Components;
44 import info.magnolia.registry.RegistrationException;
45 import info.magnolia.rendering.template.TemplateDefinition;
46 import info.magnolia.rendering.template.registry.TemplateDefinitionRegistry;
47
48 import javax.jcr.RepositoryException;
49 import javax.servlet.http.HttpServletRequest;
50
51 import org.apache.commons.lang.StringUtils;
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
54
55
56
57
58
59 public class TemplateColumn extends TreeColumn {
60 private static final Logger log = LoggerFactory.getLogger(TemplateColumn.class);
61
62 private TemplateDefinitionRegistry templateRegistry;
63 Select templateSelect;
64
65 public TemplateColumn(String javascriptTree, HttpServletRequest request) {
66 super(javascriptTree, request);
67
68 this.templateRegistry = Components.getComponent(TemplateDefinitionRegistry.class);
69
70
71
72
73 this.setEvent("ondblclick", javascriptTree + ".selectedNode.getAvailableTemplates(this)", true);
74 }
75
76 @Override
77 public String getHtml() {
78 Content content = this.getWebsiteNode();
79 try {
80 if (MgnlNodeType.NT_FOLDER.equals(content.getNodeTypeName())) {
81 return "";
82 }
83 } catch (RepositoryException e) {
84 throw new RuntimeRepositoryException("Could not retrieve node type name for content " + content, e);
85 }
86 String templateName = content.getMetaData().getTemplate();
87
88 TemplateDefinition template = null;
89 try {
90 template = templateRegistry.getTemplateDefinition(templateName);
91 } catch (RegistrationException e) {
92 log.error("Template with id {} doesn't exist.", templateName);
93 }
94 return template != null ? getI18nTitle(template) : "Missing: " + StringUtils.defaultString(templateName);
95
96 }
97
98 private String getI18nTitle(TemplateDefinition template) {
99 Messages messages = MessagesManager.getMessages(template.getI18nBasename());
100 String title = template.getTitle();
101 return messages.getWithDefault(title, title);
102 }
103 }