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.jcr.util.ContentMap;
37 import info.magnolia.objectfactory.Components;
38 import info.magnolia.rendering.context.RenderingContext;
39 import info.magnolia.rendering.engine.RenderException;
40 import info.magnolia.rendering.renderer.AbstractRenderer;
41 import info.magnolia.rendering.template.RenderableDefinition;
42 import info.magnolia.templating.elements.AreaElement;
43 import info.magnolia.templating.elements.ComponentElement;
44
45 import java.util.ArrayList;
46 import java.util.HashMap;
47 import java.util.List;
48 import java.util.Map;
49
50 import javax.jcr.Node;
51
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
54
55
56
57
58
59
60 public class NoScriptRenderer extends AbstractRenderer {
61
62 public static final String NO_SCRIPT_RENDERER = "noscript";
63 private final Logger log = LoggerFactory.getLogger(getClass());
64
65 @Override
66 public void render(RenderingContext renderingCtx, Map<String, Object> contextObjects) throws RenderException {
67 onRender(null, null, renderingCtx, contextObjects, null);
68 }
69
70 @Override
71 protected void onRender(Node content, RenderableDefinition definition, RenderingContext renderingCtx, Map<String, Object> ctx, String templateScript) throws RenderException {
72
73 List<ContentMap> components = null;
74 if (ctx.get(AreaElement.ATTRIBUTE_COMPONENT) instanceof ContentMap) {
75 components = new ArrayList<ContentMap>();
76 components.add((ContentMap) ctx.get(AreaElement.ATTRIBUTE_COMPONENT));
77 } else if (ctx.get(AreaElement.ATTRIBUTE_COMPONENTS) instanceof List) {
78 components = (List<ContentMap>) ctx.get(AreaElement.ATTRIBUTE_COMPONENTS);
79 } else {
80 return;
81 }
82
83 try {
84 Appendable out = renderingCtx.getOutputProvider().getAppendable();
85
86 for (ContentMap component : components) {
87 ComponentElement componentElement = Components.newInstance(ComponentElement.class);
88 componentElement.setContent(component.getJCRNode());
89 componentElement.begin(out);
90 componentElement.end(out);
91
92 }
93 } catch (Exception e) {
94 throw new RenderException(e);
95 }
96 }
97
98 @Override
99 protected Map<String, Object> newContext() {
100 return new HashMap<String, Object>();
101 }
102
103 }