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.renderers;
35
36 import info.magnolia.cms.beans.config.ServerConfiguration;
37 import info.magnolia.cms.gui.inline.BarMain;
38 import info.magnolia.cms.security.PermissionUtil;
39 import info.magnolia.context.MgnlContext;
40 import info.magnolia.rendering.context.RenderingContext;
41 import info.magnolia.rendering.engine.RenderingEngine;
42 import info.magnolia.rendering.model.RenderingModel;
43 import info.magnolia.rendering.renderer.AbstractRenderer;
44 import info.magnolia.rendering.template.RenderableDefinition;
45 import info.magnolia.rendering.util.AppendableWriter;
46
47 import java.io.IOException;
48 import java.util.HashMap;
49 import java.util.Map;
50
51 import javax.inject.Inject;
52 import javax.jcr.Node;
53 import javax.jcr.RepositoryException;
54 import javax.jcr.Session;
55 import javax.servlet.http.HttpServletResponse;
56
57 import org.apache.commons.lang.StringUtils;
58
59
60
61
62 public class PlainTextTemplateRenderer extends AbstractRenderer {
63
64
65
66
67 public PlainTextTemplateRenderer() {
68 }
69
70 @Inject
71 public PlainTextTemplateRenderer(RenderingEngine renderingEngine) {
72 super(renderingEngine);
73 }
74
75 @Override
76 protected String resolveTemplateScript(Node content, RenderableDefinition definition, RenderingModel<?> model, String actionResult) {
77 return StringUtils.EMPTY;
78 }
79
80 @Override
81 protected void onRender(Node content, info.magnolia.rendering.template.RenderableDefinition definition, RenderingContext renderingCtx, Map<String, Object> ctx, String templateScript) throws info.magnolia.rendering.engine.RenderException {
82 final HttpServletResponse response = MgnlContext.getWebContext().getResponse();
83
84 final boolean isAdmin = ServerConfiguration.getInstance().isAdmin();
85 final boolean isPreview = MgnlContext.getAggregationState().isPreviewMode();
86 try {
87
88 final String text = content.getProperty("text").getString();
89 final String contentType = content.getProperty("contentType").getString();
90
91 AppendableWriter out = renderingCtx.getAppendable();
92 if (!isAdmin || isPreview) {
93 response.setContentType(contentType);
94 out.write(text);
95 } else {
96 final String dialogName = (String) definition.getParameters().get("dialog");
97 response.setContentType("text/html");
98
99 out.write("<html>\n");
100 out.write("<body>\n");
101
102 if (PermissionUtil.isGranted(content.getSession(), content.getPath(), Session.ACTION_SET_PROPERTY)) {
103 BarMain bar = new BarMain();
104 bar.setPath(content.getPath());
105 bar.setDialog(dialogName);
106 bar.setAdminButtonVisible(true);
107 bar.setDefaultButtons();
108 bar.placeDefaultButtons();
109 bar.drawHtml(out);
110 }
111
112 out.write("<h2 style=\"padding-top: 30px;\">");
113 out.write(content.getPath());
114 out.write(" : ");
115 out.write(contentType);
116 out.write("</h2>");
117 out.write("<pre>\n");
118 out.write(text);
119 out.write("</pre>\n");
120 out.write("</body>\n");
121 out.write("</html>\n");
122 }
123 } catch (RepositoryException e) {
124 throw new info.magnolia.rendering.engine.RenderException(e);
125 } catch (IOException e) {
126 throw new info.magnolia.rendering.engine.RenderException(e);
127 }
128 }
129
130 @Override
131 protected Map newContext() {
132 return new HashMap<String, Object>();
133 }
134
135 }