Fixes sitemap and proxy calls (#860)
* Passes sitemap to the renderers for proper display and makes adjustments to the proxy call Signed-off-by: Brian Homeyer <bhomeyer@gmail.com>3.0.x
parent
1a197b59e3
commit
4d74bba05d
|
@ -63,7 +63,7 @@ public class ChartRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Chart chart = (Chart) w;
|
||||
|
||||
try {
|
||||
|
|
|
@ -59,7 +59,7 @@ public class ColorpickerRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Colorpicker cp = (Colorpicker) w;
|
||||
|
||||
String snippet = getSnippet("colorpicker");
|
||||
|
|
|
@ -54,7 +54,7 @@ public class FrameRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
String snippet = getSnippet("frame");
|
||||
String label = StringEscapeUtils.escapeHtml(itemUIRegistry.getLabel(w));
|
||||
List<String> frameClassList = new ArrayList<>();
|
||||
|
|
|
@ -51,7 +51,7 @@ public class GroupRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
String snippet = getSnippet("group");
|
||||
|
||||
snippet = preprocessSnippet(snippet, w);
|
||||
|
|
|
@ -58,7 +58,7 @@ public class ImageRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Image image = (Image) w;
|
||||
String snippet = (image.getChildren().size() > 0) ? getSnippet("image_link") : getSnippet("image");
|
||||
|
||||
|
@ -72,10 +72,6 @@ public class ImageRenderer extends AbstractWidgetRenderer {
|
|||
snippet = StringUtils.replace(snippet, "%id%", widgetId);
|
||||
snippet = preprocessSnippet(snippet, w);
|
||||
|
||||
String sitemap = null;
|
||||
if (w.eResource() != null) {
|
||||
sitemap = w.eResource().getURI().path();
|
||||
}
|
||||
boolean validUrl = isValidURL(image.getUrl());
|
||||
String proxiedUrl = "../proxy?sitemap=" + sitemap + "&widgetId=" + widgetId;
|
||||
State state = itemUIRegistry.getState(w);
|
||||
|
|
|
@ -52,7 +52,7 @@ public class ListRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
String snippet = getSnippet("list");
|
||||
snippet = snippet.replaceAll("%label%", getLabel(w));
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ public class MapviewRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Mapview mapview = (Mapview) w;
|
||||
String snippet = getSnippet("mapview");
|
||||
snippet = preprocessSnippet(snippet, mapview);
|
||||
|
|
|
@ -122,7 +122,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
|||
StringBuilder postChildren = new StringBuilder(parts[1]);
|
||||
|
||||
if (parts.length == 2) {
|
||||
processChildren(preChildren, postChildren, children);
|
||||
processChildren(preChildren, postChildren, children, sitemap);
|
||||
} else if (parts.length > 2) {
|
||||
logger.error("Snippet '{}' contains multiple %children% sections, but only one is allowed!",
|
||||
async ? "layer" : "main");
|
||||
|
@ -130,7 +130,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
|||
return preChildren.append(postChildren);
|
||||
}
|
||||
|
||||
private void processChildren(StringBuilder sb_pre, StringBuilder sb_post, EList<Widget> children)
|
||||
private void processChildren(StringBuilder sb_pre, StringBuilder sb_post, EList<Widget> children, String sitemap)
|
||||
throws RenderException {
|
||||
// put a single frame around all children widgets, if there are no explicit frames
|
||||
if (!children.isEmpty()) {
|
||||
|
@ -158,7 +158,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
|||
StringBuilder newPre = new StringBuilder();
|
||||
StringBuilder newPost = new StringBuilder();
|
||||
StringBuilder widgetSB = new StringBuilder();
|
||||
EList<Widget> nextChildren = renderWidget(w, widgetSB);
|
||||
EList<Widget> nextChildren = renderWidget(w, widgetSB, sitemap);
|
||||
if (!nextChildren.isEmpty()) {
|
||||
String[] parts = widgetSB.toString().split("%children%");
|
||||
// no %children% placeholder found or at the end
|
||||
|
@ -179,7 +179,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
|||
"Snippet for widget '{}' contains multiple %children% sections, but only one is allowed!",
|
||||
widgetType);
|
||||
}
|
||||
processChildren(newPre, newPost, nextChildren);
|
||||
processChildren(newPre, newPost, nextChildren, sitemap);
|
||||
sb_pre.append(newPre);
|
||||
sb_pre.append(newPost);
|
||||
} else {
|
||||
|
@ -189,10 +189,10 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
for (WidgetRenderer renderer : widgetRenderers) {
|
||||
if (renderer.canRender(w)) {
|
||||
return renderer.renderWidget(w, sb);
|
||||
return renderer.renderWidget(w, sb, sitemap);
|
||||
}
|
||||
}
|
||||
return ECollections.emptyEList();
|
||||
|
|
|
@ -67,7 +67,7 @@ public class SelectionRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
String snippet = getSnippet("selection");
|
||||
|
||||
snippet = preprocessSnippet(snippet, w);
|
||||
|
|
|
@ -53,7 +53,7 @@ public class SetpointRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Setpoint sp = (Setpoint) w;
|
||||
|
||||
// set defaults for min, max and step
|
||||
|
|
|
@ -56,7 +56,7 @@ public class SliderRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Slider s = (Slider) w;
|
||||
|
||||
String snippetName = "slider";
|
||||
|
|
|
@ -73,7 +73,7 @@ public class SwitchRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Switch s = (Switch) w;
|
||||
|
||||
String snippetName = null;
|
||||
|
|
|
@ -51,7 +51,7 @@ public class TextRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Text text = (Text) w;
|
||||
String snippet = (text.getChildren().size() > 0) ? getSnippet("text_link") : getSnippet("text");
|
||||
|
||||
|
|
|
@ -56,12 +56,11 @@ public class VideoRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Video videoWidget = (Video) w;
|
||||
String snippet = null;
|
||||
|
||||
String widgetId = itemUIRegistry.getWidgetId(w);
|
||||
String sitemap = w.eResource().getURI().path();
|
||||
|
||||
// we handle mjpeg streams as an html image as browser can usually handle this
|
||||
String snippetName = (videoWidget.getEncoding() != null
|
||||
|
@ -100,7 +99,6 @@ public class VideoRenderer extends AbstractWidgetRenderer {
|
|||
snippet = StringUtils.replace(snippet, "%url%", url);
|
||||
snippet = StringUtils.replace(snippet, "%media_type%", mediaType);
|
||||
}
|
||||
|
||||
sb.append(snippet);
|
||||
return ECollections.emptyEList();
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ public class WebviewRenderer extends AbstractWidgetRenderer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||
Webview webview = (Webview) w;
|
||||
String snippet = getSnippet("webview");
|
||||
snippet = preprocessSnippet(snippet, webview);
|
||||
|
|
|
@ -168,7 +168,6 @@ public class WebAppServlet extends BaseServlet {
|
|||
return;
|
||||
}
|
||||
|
||||
logger.debug("reading sitemap {}", sitemap.getName());
|
||||
if (widgetId == null || widgetId.isEmpty() || widgetId.equals(sitemapName)) {
|
||||
// we are at the homepage, so we render the children of the sitemap root node
|
||||
if (subscriptionId != null) {
|
||||
|
|
|
@ -43,7 +43,7 @@ public interface WidgetRenderer {
|
|||
* a "%children%" placeholder for them.
|
||||
* @throws RenderException if an error occurs during rendering
|
||||
*/
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException;
|
||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException;
|
||||
|
||||
/**
|
||||
* Applies a servlet configuration to the renderer
|
||||
|
|
Loading…
Reference in New Issue