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 java.util.Collection;
37
38 import info.magnolia.cms.core.Content;
39 import info.magnolia.cms.core.ItemType;
40 import info.magnolia.module.admininterface.AdminTreeMVCHandler;
41 import info.magnolia.objectfactory.Components;
42 import info.magnolia.rendering.template.TemplateDefinition;
43 import info.magnolia.rendering.template.assignment.TemplateDefinitionAssignment;
44 import info.magnolia.rendering.template.registry.TemplateDefinitionRegistry;
45
46 import javax.jcr.Node;
47 import javax.jcr.RepositoryException;
48 import javax.servlet.http.HttpServletRequest;
49 import javax.servlet.http.HttpServletResponse;
50
51 import org.slf4j.Logger;
52 import org.slf4j.LoggerFactory;
53
54
55
56
57
58
59
60 public class WebsiteTreeHandler extends AdminTreeMVCHandler {
61 private static final Logger log = LoggerFactory.getLogger(WebsiteTreeHandler.class);
62
63 private TemplateDefinitionRegistry templateRegistry;
64 private TemplateDefinitionAssignment templateAssignment;
65
66 public WebsiteTreeHandler(String name, HttpServletRequest request, HttpServletResponse response) {
67 super(name, request, response);
68
69 templateAssignment = Components.getComponent(TemplateDefinitionAssignment.class);
70 templateRegistry = Components.getComponent(TemplateDefinitionRegistry.class);
71 }
72
73 @Override
74 public String createNode() {
75 String view = super.createNode();
76 try {
77
78 if (this.getCreateItemType().equals(ItemType.PAGE.getSystemName())) {
79
80 Content parentNode = this.getHierarchyManager().getContent(this.getPath());
81 Content newNode = parentNode.getContent(this.getNewNodeName());
82 TemplateDefinition newTemplate = getDefaultTemplate(newNode.getJCRNode());
83 if (newTemplate != null) {
84 newNode.getMetaData().setTemplate(newTemplate.getId());
85 newNode.save();
86 }
87 }
88 }
89 catch (RepositoryException e) {
90 log.error("can't set template", e);
91 }
92 return view;
93 }
94
95 protected TemplateDefinition getDefaultTemplate(Node node) {
96 return templateAssignment.getDefaultTemplate(node);
97 }
98
99 @Override
100 public String show() {
101
102 Collection<TemplateDefinition> templateDefinitions = templateRegistry.getTemplateDefinitions();
103
104 boolean isDeletedNodeTemplate = templateDefinitions.size() == 1 && "adminInterface:mgnlDeleted".equals(templateDefinitions.iterator().next().getId());
105 if (templateDefinitions.isEmpty() || isDeletedNodeTemplate) {
106 try {
107 request.getRequestDispatcher("/.magnolia/pages/quickstart.html").forward(request, response);
108 return "";
109 } catch (Exception e) {
110 log.error("Couldn't forward to quickstart page: " + e.getMessage());
111 }
112 }
113 return super.show();
114 }
115 }