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.templating.elements;
35
36 import info.magnolia.cms.beans.config.ServerConfiguration;
37 import info.magnolia.rendering.context.RenderingContext;
38 import info.magnolia.rendering.engine.RenderException;
39 import info.magnolia.rendering.template.TemplateDefinition;
40 import info.magnolia.templating.freemarker.AbstractDirective;
41
42 import java.io.IOException;
43
44 import javax.jcr.Node;
45
46 import org.apache.commons.lang3.StringUtils;
47
48
49
50
51 public class PageElement extends AbstractContentTemplatingElement {
52
53 private static final String CMS_PAGE_TAG = "cms:page";
54 private String dialog;
55
56 public PageElement(ServerConfiguration server, RenderingContext renderingContext) {
57 super(server, renderingContext);
58 }
59
60 @Override
61 public void begin(Appendable out) throws IOException, RenderException {
62 if (!renderComments()) {
63 return;
64 }
65
66 Node content = getPassedContent();
67 if (content == null) {
68 content = currentContent();
69 }
70
71 TemplateDefinition templateDefinition = getRequiredTemplateDefinition();
72
73 dialog = resolveDialog(templateDefinition);
74
75 MarkupHelper helper = new MarkupHelper(out);
76
77 helper.openComment(CMS_PAGE_TAG);
78 if (content != null) {
79 helper.attribute(AbstractDirective.CONTENT_ATTRIBUTE, getNodePath(content));
80 }
81 if (dialog != null) {
82 helper.attribute("dialog", dialog);
83 }
84 helper.append(" -->\n");
85 helper.closeComment(CMS_PAGE_TAG);
86
87 }
88
89 @Override
90 public void end(Appendable out) throws IOException, RenderException {
91 if (!renderComments()) {
92 return;
93 }
94 }
95
96 public void setDialog(String dialog) {
97 this.dialog = dialog;
98 }
99
100 private TemplateDefinition getRequiredTemplateDefinition() {
101 return (TemplateDefinition) getRenderingContext().getRenderableDefinition();
102 }
103
104 private String resolveDialog(TemplateDefinition component) {
105 if (StringUtils.isNotEmpty(this.dialog)) {
106 return this.dialog;
107 }
108 String dialog = component.getDialog();
109 if (StringUtils.isNotEmpty(dialog)) {
110 return dialog;
111 }
112 return null;
113 }
114 }