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