|
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/MacroTreeRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/MacroTreeRenderer.java?rev=1044202&r1=1044201&r2=1044202&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/MacroTreeRenderer.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/MacroTreeRenderer.java Fri Dec 10 02:40:02 2010 @@ -1,382 +1,382 @@ -/******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - *******************************************************************************/ -package org.ofbiz.widget.tree; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.StringUtil; -import org.ofbiz.base.util.UtilGenerics; -import org.ofbiz.base.util.UtilMisc; -import org.ofbiz.base.util.UtilValidate; -import org.ofbiz.base.util.template.FreeMarkerWorker; -import org.ofbiz.webapp.control.RequestHandler; -import org.ofbiz.webapp.taglib.ContentUrlTag; -import org.ofbiz.widget.ModelWidget; -import org.ofbiz.widget.WidgetWorker; -import org.ofbiz.widget.screen.ScreenRenderer; -import org.ofbiz.widget.screen.ScreenStringRenderer; -import org.ofbiz.widget.tree.ModelTree; -import org.ofbiz.widget.tree.TreeStringRenderer; - -import freemarker.core.Environment; -import freemarker.template.Template; -import freemarker.template.TemplateException; - -/** - * Widget Library - Tree Renderer implementation based on Freemarker macros - * - */ -public class MacroTreeRenderer implements TreeStringRenderer { - - public static final String module = MacroTreeRenderer.class.getName(); - ScreenStringRenderer screenStringRenderer = null; - private Template macroLibrary; - private Environment environment; - protected boolean widgetCommentsEnabled = false; - - - public MacroTreeRenderer(String macroLibraryPath, Appendable writer) throws TemplateException, IOException { - this.macroLibrary = FreeMarkerWorker.getTemplate(macroLibraryPath); - Map<String, Object> input = UtilMisc.toMap("key", null); - this.environment = FreeMarkerWorker.renderTemplate(this.macroLibrary, input, writer); - } - - private void executeMacro(Appendable writer, String macro) throws IOException { - try { - Reader templateReader = new StringReader(macro); - // FIXME: I am using a Date as an hack to provide a unique name for the template... - Template template = new Template((new java.util.Date()).toString(), templateReader, FreeMarkerWorker.getDefaultOfbizConfig()); - templateReader.close(); - if (writer != null) { - Map<String, Object> input = UtilMisc.toMap("key", null); - Environment tmpEnvironment = FreeMarkerWorker.renderTemplate(this.macroLibrary, input, writer); - tmpEnvironment.include(template); - } else { - this.environment.include(template); - } - } catch (TemplateException e) { - Debug.logError(e, "Error rendering screen thru ftl", module); - } catch (IOException e) { - Debug.logError(e, "Error rendering screen thru ftl", module); - } - } - - private void executeMacro(String macro) throws IOException { - executeMacro(null, macro); - } - - /** - * Renders the beginning boundary comment string. - * @param writer The writer to write to - * @param widgetType The widget type: "Screen Widget", "Tree Widget", etc. - * @param modelWidget The widget - */ - public void renderBeginningBoundaryComment(Appendable writer, String widgetType, ModelWidget modelWidget) throws IOException { - if (this.widgetCommentsEnabled) { - StringWriter sr = new StringWriter(); - sr.append("<@formatBoundaryComment "); - sr.append(" boundaryType=\""); - sr.append("Begin"); - sr.append("\" widgetType=\""); - sr.append(widgetType); - sr.append("\" widgetName=\""); - sr.append(modelWidget.getBoundaryCommentName()); - sr.append("\" />"); - executeMacro(sr.toString()); - } - } - - /** - * Renders the ending boundary comment string. - * @param writer The writer to write to - * @param widgetType The widget type: "Screen Widget", "Tree Widget", etc. - * @param modelWidget The widget - */ - public void renderEndingBoundaryComment(Appendable writer, String widgetType, ModelWidget modelWidget) throws IOException { - if (this.widgetCommentsEnabled) { - StringWriter sr = new StringWriter(); - sr.append("<@formatBoundaryComment "); - sr.append(" boundaryType=\""); - sr.append("End"); - sr.append("\" widgetType=\""); - sr.append(widgetType); - sr.append("\" widgetName=\""); - sr.append(modelWidget.getBoundaryCommentName()); - sr.append("\" />"); - executeMacro(sr.toString()); - } - } - - public void renderNodeBegin(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node, int depth) throws IOException { - String currentNodeTrailPiped = null; - List<String> currentNodeTrail = UtilGenerics.toList(context.get("currentNodeTrail")); - - String style = ""; - if (node.isRootNode()) { - this.widgetCommentsEnabled = ModelWidget.widgetBoundaryCommentsEnabled(context); - renderBeginningBoundaryComment(writer, "Tree Widget", node.getModelTree()); - style = "basic-tree"; - } - - StringWriter sr = new StringWriter(); - sr.append("<@renderNodeBegin "); - sr.append(" style=\""); - sr.append(style); - sr.append("\" />"); - executeMacro(sr.toString()); - - String pkName = node.getPkName(); - String entityId = null; - String entryName = node.getEntryName(); - if (UtilValidate.isNotEmpty(entryName)) { - Map map = (Map)context.get(entryName); - entityId = (String)map.get(pkName); - } else { - entityId = (String) context.get(pkName); - } - boolean hasChildren = node.hasChildren(context); - - ModelTree.ModelNode.Link expandCollapseLink = new ModelTree.ModelNode.Link(); - // check to see if this node needs to be expanded. - if (hasChildren && node.isExpandCollapse()) { - String targetEntityId = null; - List<String> targetNodeTrail = UtilGenerics.toList(context.get("targetNodeTrail")); - if (depth < targetNodeTrail.size()) { - targetEntityId = targetNodeTrail.get(depth); - } - - int openDepth = node.getModelTree().getOpenDepth(); - if (depth >= openDepth && (targetEntityId == null || !targetEntityId.equals(entityId))) { - // Not on the trail - if (node.showPeers(depth, context)) { - context.put("processChildren", Boolean.FALSE); - //expandCollapseLink.setText(" + "); - currentNodeTrailPiped = StringUtil.join(currentNodeTrail, "|"); - expandCollapseLink.setStyle("collapsed"); - StringBuilder target = new StringBuilder(node.getModelTree().getExpandCollapseRequest(context)); - String trailName = node.getModelTree().getTrailName(context); - if (target.indexOf("?") < 0) { - target.append("?"); - } else { - target.append("&"); - } - target.append(trailName).append("=").append(currentNodeTrailPiped); - expandCollapseLink.setTarget(target.toString()); - } - } else { - context.put("processChildren", Boolean.TRUE); - //expandCollapseLink.setText(" - "); - String lastContentId = currentNodeTrail.remove(currentNodeTrail.size() - 1); - currentNodeTrailPiped = StringUtil.join(currentNodeTrail, "|"); - if (currentNodeTrailPiped == null) { - currentNodeTrailPiped = ""; - } - expandCollapseLink.setStyle("expanded"); - StringBuilder target = new StringBuilder(node.getModelTree().getExpandCollapseRequest(context)); - String trailName = node.getModelTree().getTrailName(context); - if (target.indexOf("?") < 0) { - target.append("?"); - } else { - target.append("&"); - } - target.append(trailName).append("=").append(currentNodeTrailPiped); - expandCollapseLink.setTarget(target.toString()); - // add it so it can be remove in renderNodeEnd - currentNodeTrail.add(lastContentId); - } - renderLink(writer, context, expandCollapseLink); - } else if (!hasChildren) { - context.put("processChildren", Boolean.FALSE); - expandCollapseLink.setStyle("leafnode"); - renderLink(writer, context, expandCollapseLink); - } - } - - public void renderNodeEnd(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node) throws IOException { - Boolean processChildren = (Boolean) context.get("processChildren"); - if (node.isRootNode()) { - renderEndingBoundaryComment(writer, "Tree Widget", node.getModelTree()); - } - - StringWriter sr = new StringWriter(); - sr.append("<@renderNodeEnd "); - sr.append(" processChildren="); - sr.append(Boolean.toString(processChildren.booleanValue())); - sr.append(" isRootNode="); - sr.append(Boolean.toString(node.isRootNode())); - sr.append(" />"); - executeMacro(sr.toString()); - } - - public void renderLastElement(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node) throws IOException { - Boolean processChildren = (Boolean) context.get("processChildren"); - if (processChildren.booleanValue()) { - StringWriter sr = new StringWriter(); - sr.append("<@renderLastElement "); - sr.append("style=\""); - sr.append("basic-tree"); - sr.append("\" />"); - executeMacro(sr.toString()); - } - } - - public void renderLabel(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Label label) throws IOException { - String id = label.getId(context); - String style = label.getStyle(context); - String labelText = label.getText(context); - - StringWriter sr = new StringWriter(); - sr.append("<@renderLabel "); - sr.append("id=\""); - sr.append(id); - sr.append("\" style=\""); - sr.append(style); - sr.append("\" labelText=\""); - sr.append(labelText); - sr.append("\" />"); - executeMacro(sr.toString()); - } - - public void renderLink(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Link link) throws IOException { - String target = link.getTarget(context); - StringBuilder linkUrl = new StringBuilder(); - HttpServletResponse response = (HttpServletResponse) context.get("response"); - HttpServletRequest request = (HttpServletRequest) context.get("request"); - - if (UtilValidate.isNotEmpty(target)) { - WidgetWorker.buildHyperlinkUrl(linkUrl, target, link.getUrlMode(), link.getParameterMap(context), link.getPrefix(context), - link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context); - } - - String id = link.getId(context); - String style = link.getStyle(context); - String name = link.getName(context); - String title = link.getTitle(context); - String targetWindow = link.getTargetWindow(context); - String linkText = link.getText(context); - - String imgStr = ""; - ModelTree.ModelNode.Image img = link.getImage(); - if (img != null) { - StringWriter sw = new StringWriter(); - renderImage(sw, context, img); - imgStr = sw.toString(); - } - - StringWriter sr = new StringWriter(); - sr.append("<@renderLink "); - sr.append("id=\""); - sr.append(id); - sr.append("\" style=\""); - sr.append(style); - sr.append("\" name=\""); - sr.append(name); - sr.append("\" title=\""); - sr.append(title); - sr.append("\" targetWindow=\""); - sr.append(targetWindow); - sr.append("\" linkUrl=\""); - sr.append(linkUrl); - sr.append("\" linkText=\""); - sr.append(linkText); - sr.append("\" imgStr=\""); - sr.append(imgStr.replaceAll("\"", "\\\\\"")); - sr.append("\" />"); - executeMacro(sr.toString()); - } - - public void renderImage(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Image image) throws IOException { - if (image == null) { - return ; - } - HttpServletResponse response = (HttpServletResponse) context.get("response"); - HttpServletRequest request = (HttpServletRequest) context.get("request"); - - String urlMode = image.getUrlMode(); - String src = image.getSrc(context); - String id = image.getId(context); - String style = image.getStyle(context); - String wid = image.getWidth(context); - String hgt = image.getHeight(context); - String border = image.getBorder(context); - String alt = ""; //TODO add alt to tree images image.getAlt(context); - - boolean fullPath = false; - boolean secure = false; - boolean encode = false; - String urlString = ""; - - if (urlMode != null && urlMode.equalsIgnoreCase("intra-app")) { - if (request != null && response != null) { - ServletContext ctx = (ServletContext) request.getAttribute("servletContext"); - RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_"); - urlString = rh.makeLink(request, response, src, fullPath, secure, encode); - } else { - urlString = src; - } - } else if (urlMode != null && urlMode.equalsIgnoreCase("content")) { - if (request != null && response != null) { - StringBuilder newURL = new StringBuilder(); - ContentUrlTag.appendContentPrefix(request, newURL); - newURL.append(src); - urlString = newURL.toString(); - } - } else { - urlString = src; - } - StringWriter sr = new StringWriter(); - sr.append("<@renderImage "); - sr.append("src=\""); - sr.append(src); - sr.append("\" id=\""); - sr.append(id); - sr.append("\" style=\""); - sr.append(style); - sr.append("\" wid=\""); - sr.append(wid); - sr.append("\" hgt=\""); - sr.append(hgt); - sr.append("\" border=\""); - sr.append(border); - sr.append("\" alt=\""); - sr.append(alt); - sr.append("\" urlString=\""); - sr.append(urlString); - sr.append("\" />"); - executeMacro(writer, sr.toString()); - } - - public ScreenStringRenderer getScreenStringRenderer(Map<String, Object> context) { - ScreenRenderer screenRenderer = (ScreenRenderer)context.get("screens"); - if (screenRenderer != null) { - this.screenStringRenderer = screenRenderer.getScreenStringRenderer(); - } - return this.screenStringRenderer; - } -} +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.ofbiz.widget.tree; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.StringUtil; +import org.ofbiz.base.util.UtilGenerics; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.template.FreeMarkerWorker; +import org.ofbiz.webapp.control.RequestHandler; +import org.ofbiz.webapp.taglib.ContentUrlTag; +import org.ofbiz.widget.ModelWidget; +import org.ofbiz.widget.WidgetWorker; +import org.ofbiz.widget.screen.ScreenRenderer; +import org.ofbiz.widget.screen.ScreenStringRenderer; +import org.ofbiz.widget.tree.ModelTree; +import org.ofbiz.widget.tree.TreeStringRenderer; + +import freemarker.core.Environment; +import freemarker.template.Template; +import freemarker.template.TemplateException; + +/** + * Widget Library - Tree Renderer implementation based on Freemarker macros + * + */ +public class MacroTreeRenderer implements TreeStringRenderer { + + public static final String module = MacroTreeRenderer.class.getName(); + ScreenStringRenderer screenStringRenderer = null; + private Template macroLibrary; + private Environment environment; + protected boolean widgetCommentsEnabled = false; + + + public MacroTreeRenderer(String macroLibraryPath, Appendable writer) throws TemplateException, IOException { + this.macroLibrary = FreeMarkerWorker.getTemplate(macroLibraryPath); + Map<String, Object> input = UtilMisc.toMap("key", null); + this.environment = FreeMarkerWorker.renderTemplate(this.macroLibrary, input, writer); + } + + private void executeMacro(Appendable writer, String macro) throws IOException { + try { + Reader templateReader = new StringReader(macro); + // FIXME: I am using a Date as an hack to provide a unique name for the template... + Template template = new Template((new java.util.Date()).toString(), templateReader, FreeMarkerWorker.getDefaultOfbizConfig()); + templateReader.close(); + if (writer != null) { + Map<String, Object> input = UtilMisc.toMap("key", null); + Environment tmpEnvironment = FreeMarkerWorker.renderTemplate(this.macroLibrary, input, writer); + tmpEnvironment.include(template); + } else { + this.environment.include(template); + } + } catch (TemplateException e) { + Debug.logError(e, "Error rendering screen thru ftl", module); + } catch (IOException e) { + Debug.logError(e, "Error rendering screen thru ftl", module); + } + } + + private void executeMacro(String macro) throws IOException { + executeMacro(null, macro); + } + + /** + * Renders the beginning boundary comment string. + * @param writer The writer to write to + * @param widgetType The widget type: "Screen Widget", "Tree Widget", etc. + * @param modelWidget The widget + */ + public void renderBeginningBoundaryComment(Appendable writer, String widgetType, ModelWidget modelWidget) throws IOException { + if (this.widgetCommentsEnabled) { + StringWriter sr = new StringWriter(); + sr.append("<@formatBoundaryComment "); + sr.append(" boundaryType=\""); + sr.append("Begin"); + sr.append("\" widgetType=\""); + sr.append(widgetType); + sr.append("\" widgetName=\""); + sr.append(modelWidget.getBoundaryCommentName()); + sr.append("\" />"); + executeMacro(sr.toString()); + } + } + + /** + * Renders the ending boundary comment string. + * @param writer The writer to write to + * @param widgetType The widget type: "Screen Widget", "Tree Widget", etc. + * @param modelWidget The widget + */ + public void renderEndingBoundaryComment(Appendable writer, String widgetType, ModelWidget modelWidget) throws IOException { + if (this.widgetCommentsEnabled) { + StringWriter sr = new StringWriter(); + sr.append("<@formatBoundaryComment "); + sr.append(" boundaryType=\""); + sr.append("End"); + sr.append("\" widgetType=\""); + sr.append(widgetType); + sr.append("\" widgetName=\""); + sr.append(modelWidget.getBoundaryCommentName()); + sr.append("\" />"); + executeMacro(sr.toString()); + } + } + + public void renderNodeBegin(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node, int depth) throws IOException { + String currentNodeTrailPiped = null; + List<String> currentNodeTrail = UtilGenerics.toList(context.get("currentNodeTrail")); + + String style = ""; + if (node.isRootNode()) { + this.widgetCommentsEnabled = ModelWidget.widgetBoundaryCommentsEnabled(context); + renderBeginningBoundaryComment(writer, "Tree Widget", node.getModelTree()); + style = "basic-tree"; + } + + StringWriter sr = new StringWriter(); + sr.append("<@renderNodeBegin "); + sr.append(" style=\""); + sr.append(style); + sr.append("\" />"); + executeMacro(sr.toString()); + + String pkName = node.getPkName(); + String entityId = null; + String entryName = node.getEntryName(); + if (UtilValidate.isNotEmpty(entryName)) { + Map map = (Map)context.get(entryName); + entityId = (String)map.get(pkName); + } else { + entityId = (String) context.get(pkName); + } + boolean hasChildren = node.hasChildren(context); + + ModelTree.ModelNode.Link expandCollapseLink = new ModelTree.ModelNode.Link(); + // check to see if this node needs to be expanded. + if (hasChildren && node.isExpandCollapse()) { + String targetEntityId = null; + List<String> targetNodeTrail = UtilGenerics.toList(context.get("targetNodeTrail")); + if (depth < targetNodeTrail.size()) { + targetEntityId = targetNodeTrail.get(depth); + } + + int openDepth = node.getModelTree().getOpenDepth(); + if (depth >= openDepth && (targetEntityId == null || !targetEntityId.equals(entityId))) { + // Not on the trail + if (node.showPeers(depth, context)) { + context.put("processChildren", Boolean.FALSE); + //expandCollapseLink.setText(" + "); + currentNodeTrailPiped = StringUtil.join(currentNodeTrail, "|"); + expandCollapseLink.setStyle("collapsed"); + StringBuilder target = new StringBuilder(node.getModelTree().getExpandCollapseRequest(context)); + String trailName = node.getModelTree().getTrailName(context); + if (target.indexOf("?") < 0) { + target.append("?"); + } else { + target.append("&"); + } + target.append(trailName).append("=").append(currentNodeTrailPiped); + expandCollapseLink.setTarget(target.toString()); + } + } else { + context.put("processChildren", Boolean.TRUE); + //expandCollapseLink.setText(" - "); + String lastContentId = currentNodeTrail.remove(currentNodeTrail.size() - 1); + currentNodeTrailPiped = StringUtil.join(currentNodeTrail, "|"); + if (currentNodeTrailPiped == null) { + currentNodeTrailPiped = ""; + } + expandCollapseLink.setStyle("expanded"); + StringBuilder target = new StringBuilder(node.getModelTree().getExpandCollapseRequest(context)); + String trailName = node.getModelTree().getTrailName(context); + if (target.indexOf("?") < 0) { + target.append("?"); + } else { + target.append("&"); + } + target.append(trailName).append("=").append(currentNodeTrailPiped); + expandCollapseLink.setTarget(target.toString()); + // add it so it can be remove in renderNodeEnd + currentNodeTrail.add(lastContentId); + } + renderLink(writer, context, expandCollapseLink); + } else if (!hasChildren) { + context.put("processChildren", Boolean.FALSE); + expandCollapseLink.setStyle("leafnode"); + renderLink(writer, context, expandCollapseLink); + } + } + + public void renderNodeEnd(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node) throws IOException { + Boolean processChildren = (Boolean) context.get("processChildren"); + if (node.isRootNode()) { + renderEndingBoundaryComment(writer, "Tree Widget", node.getModelTree()); + } + + StringWriter sr = new StringWriter(); + sr.append("<@renderNodeEnd "); + sr.append(" processChildren="); + sr.append(Boolean.toString(processChildren.booleanValue())); + sr.append(" isRootNode="); + sr.append(Boolean.toString(node.isRootNode())); + sr.append(" />"); + executeMacro(sr.toString()); + } + + public void renderLastElement(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node) throws IOException { + Boolean processChildren = (Boolean) context.get("processChildren"); + if (processChildren.booleanValue()) { + StringWriter sr = new StringWriter(); + sr.append("<@renderLastElement "); + sr.append("style=\""); + sr.append("basic-tree"); + sr.append("\" />"); + executeMacro(sr.toString()); + } + } + + public void renderLabel(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Label label) throws IOException { + String id = label.getId(context); + String style = label.getStyle(context); + String labelText = label.getText(context); + + StringWriter sr = new StringWriter(); + sr.append("<@renderLabel "); + sr.append("id=\""); + sr.append(id); + sr.append("\" style=\""); + sr.append(style); + sr.append("\" labelText=\""); + sr.append(labelText); + sr.append("\" />"); + executeMacro(sr.toString()); + } + + public void renderLink(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Link link) throws IOException { + String target = link.getTarget(context); + StringBuilder linkUrl = new StringBuilder(); + HttpServletResponse response = (HttpServletResponse) context.get("response"); + HttpServletRequest request = (HttpServletRequest) context.get("request"); + + if (UtilValidate.isNotEmpty(target)) { + WidgetWorker.buildHyperlinkUrl(linkUrl, target, link.getUrlMode(), link.getParameterMap(context), link.getPrefix(context), + link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context); + } + + String id = link.getId(context); + String style = link.getStyle(context); + String name = link.getName(context); + String title = link.getTitle(context); + String targetWindow = link.getTargetWindow(context); + String linkText = link.getText(context); + + String imgStr = ""; + ModelTree.ModelNode.Image img = link.getImage(); + if (img != null) { + StringWriter sw = new StringWriter(); + renderImage(sw, context, img); + imgStr = sw.toString(); + } + + StringWriter sr = new StringWriter(); + sr.append("<@renderLink "); + sr.append("id=\""); + sr.append(id); + sr.append("\" style=\""); + sr.append(style); + sr.append("\" name=\""); + sr.append(name); + sr.append("\" title=\""); + sr.append(title); + sr.append("\" targetWindow=\""); + sr.append(targetWindow); + sr.append("\" linkUrl=\""); + sr.append(linkUrl); + sr.append("\" linkText=\""); + sr.append(linkText); + sr.append("\" imgStr=\""); + sr.append(imgStr.replaceAll("\"", "\\\\\"")); + sr.append("\" />"); + executeMacro(sr.toString()); + } + + public void renderImage(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Image image) throws IOException { + if (image == null) { + return ; + } + HttpServletResponse response = (HttpServletResponse) context.get("response"); + HttpServletRequest request = (HttpServletRequest) context.get("request"); + + String urlMode = image.getUrlMode(); + String src = image.getSrc(context); + String id = image.getId(context); + String style = image.getStyle(context); + String wid = image.getWidth(context); + String hgt = image.getHeight(context); + String border = image.getBorder(context); + String alt = ""; //TODO add alt to tree images image.getAlt(context); + + boolean fullPath = false; + boolean secure = false; + boolean encode = false; + String urlString = ""; + + if (urlMode != null && urlMode.equalsIgnoreCase("intra-app")) { + if (request != null && response != null) { + ServletContext ctx = (ServletContext) request.getAttribute("servletContext"); + RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_"); + urlString = rh.makeLink(request, response, src, fullPath, secure, encode); + } else { + urlString = src; + } + } else if (urlMode != null && urlMode.equalsIgnoreCase("content")) { + if (request != null && response != null) { + StringBuilder newURL = new StringBuilder(); + ContentUrlTag.appendContentPrefix(request, newURL); + newURL.append(src); + urlString = newURL.toString(); + } + } else { + urlString = src; + } + StringWriter sr = new StringWriter(); + sr.append("<@renderImage "); + sr.append("src=\""); + sr.append(src); + sr.append("\" id=\""); + sr.append(id); + sr.append("\" style=\""); + sr.append(style); + sr.append("\" wid=\""); + sr.append(wid); + sr.append("\" hgt=\""); + sr.append(hgt); + sr.append("\" border=\""); + sr.append(border); + sr.append("\" alt=\""); + sr.append(alt); + sr.append("\" urlString=\""); + sr.append(urlString); + sr.append("\" />"); + executeMacro(writer, sr.toString()); + } + + public ScreenStringRenderer getScreenStringRenderer(Map<String, Object> context) { + ScreenRenderer screenRenderer = (ScreenRenderer)context.get("screens"); + if (screenRenderer != null) { + this.screenStringRenderer = screenRenderer.getScreenStringRenderer(); + } + return this.screenStringRenderer; + } +} Propchange: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/MacroTreeRenderer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/authentication/ApplicationAuthenticationContext.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/authentication/AuthenticatedToken.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/authentication/PasswordCredential.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/authentication/PrincipalAuthenticationContext.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/authentication/ValidationFactor.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/ApplicationAccessDeniedException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/ApplicationPermissionException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InactiveAccountException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidAuthenticationException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidAuthorizationTokenException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidCredentialException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidGroupException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidPrincipalException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidRoleException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/InvalidTokenException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/exception/ObjectNotFoundException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SOAPAttribute.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SOAPCookieInfo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SOAPGroup.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SOAPNestableGroup.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SOAPPrincipal.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SOAPRole.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/com/atlassian/crowd/integration/soap/SearchRestriction.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/org/ofbiz/crowd/CrowdAuthenticator.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/org/ofbiz/crowd/CrowdWorker.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/crowd/src/org/ofbiz/crowd/security/SecurityServer.java ------------------------------------------------------------------------------ svn:eol-style = native |
| Free forum by Nabble | Edit this page |
