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.cms.gui.misc.Sources;
38 import info.magnolia.cms.i18n.I18nContentSupport;
39 import info.magnolia.cms.i18n.I18nContentSupportFactory;
40 import info.magnolia.context.MgnlContext;
41 import info.magnolia.rendering.context.RenderingContext;
42 import info.magnolia.rendering.engine.RenderException;
43 import info.magnolia.rendering.template.TemplateDefinition;
44
45 import java.io.IOException;
46
47 import javax.jcr.Node;
48
49 import org.apache.commons.lang.StringUtils;
50
51
52
53
54
55
56
57 public class InitElement extends AbstractContentTemplatingElement {
58
59 public static final String PAGE_EDITOR_JS_SOURCE = MgnlContext.getContextPath() + "/.resources/editor/info.magnolia.templating.editor.PageEditor/info.magnolia.templating.editor.PageEditor.nocache.js";
60 public static final String PAGE_EDITOR_CSS = MgnlContext.getContextPath() + "/.resources/magnolia-templating-editor/css/editor.css";
61 private static final String CMS_TAG = "cms:page";
62
63 private I18nContentSupport i18nSupport = I18nContentSupportFactory.getI18nSupport();
64 private String dialog;
65
66 public InitElement(ServerConfiguration server, RenderingContext renderingContext) {
67 super(server, renderingContext);
68 }
69
70 @Override
71 public void begin(Appendable out) throws IOException, RenderException {
72 if (!isAdmin()) {
73 return;
74 }
75
76 Node content = getPassedContent();
77 if(content == null){
78 content = currentContent();
79 }
80
81 TemplateDefinition templateDefinition = getRequiredTemplateDefinition();
82
83 dialog = resolveDialog(templateDefinition);
84
85 Sources src = new Sources(MgnlContext.getContextPath());
86 MarkupHelper helper = new MarkupHelper(out);
87 helper.append("<!-- begin js and css added by @cms.init -->\n");
88 helper.append("<meta name=\"gwt:property\" content=\"locale=" + i18nSupport.getLocale() +"\"/>\n");
89 helper.append(src.getHtmlCss());
90 helper.append(src.getHtmlJs());
91 helper.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + PAGE_EDITOR_CSS + "\"></link>\n");
92 helper.append("<script type=\"text/javascript\" src=\"" + PAGE_EDITOR_JS_SOURCE + "\"></script>\n");
93
94
95
96 helper.openComment(CMS_TAG);
97 if(content != null) {
98 helper.attribute("content", getNodePath(content));
99 }
100 helper.attribute("dialog", dialog);
101 helper.append(" -->\n");
102 helper.closeComment(CMS_TAG);
103
104 }
105
106 @Override
107 public void end(Appendable out) throws IOException, RenderException {
108 if (!isAdmin()) {
109 return;
110 }
111 MarkupHelper helper = new MarkupHelper(out);
112 helper.append("\n<!-- end js and css added by @cms.init -->\n");
113 }
114
115
116 private TemplateDefinition getRequiredTemplateDefinition() {
117 return (TemplateDefinition) getRenderingContext().getRenderableDefinition();
118 }
119
120 private String resolveDialog(TemplateDefinition component) {
121 if (StringUtils.isNotEmpty(this.dialog)) {
122 return this.dialog;
123 }
124 String dialog = component.getDialog();
125 if (StringUtils.isNotEmpty(dialog)) {
126 return dialog;
127 }
128 return null;
129 }
130
131 public void setDialog(String dialog) {
132 this.dialog = dialog;
133 }
134 }