📄 traversesubcontenttransform.java
字号:
/* * $Id: TraverseSubContentTransform.java 5462 2005-08-05 18:35:48Z jonesde $ * * Copyright (c) 2001-2003 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */package org.ofbiz.content.webapp.ftl;import java.io.IOException;import java.io.Writer;import java.sql.Timestamp;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Locale;import java.util.Map;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.GeneralException;import org.ofbiz.base.util.UtilDateTime;import org.ofbiz.base.util.UtilMisc;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.base.util.template.FreeMarkerWorker;import org.ofbiz.content.content.ContentWorker;import org.ofbiz.entity.GenericDelegator;import org.ofbiz.entity.GenericEntityException;import org.ofbiz.entity.GenericValue;import org.ofbiz.webapp.ftl.LoopWriter;import freemarker.core.Environment;import freemarker.template.TemplateModelException;import freemarker.template.TemplateTransformModel;import freemarker.template.TransformControl;/** * TraverseSubContentTransform - Freemarker Transform for URLs (links) * * @author <a href="mailto:byersa@automationgroups.com">Al Byers</a> * @version $Rev: 5462 $ * @since 3.0 */public class TraverseSubContentTransform implements TemplateTransformModel { public static final String module = TraverseSubContentTransform.class.getName(); public static final String [] saveKeyNames = {"contentId", "subContentId", "mimeType", "subContentDataResourceView", "wrapTemplateId", "templateContentId", "pickWhen", "followWhen", "returnAfterPickWhen", "returnBeforePickWhen", "indent"}; public static final String [] removeKeyNames = {"templateContentId", "subDataResourceTypeId", "mapKey", "wrappedFTL", "nodeTrail"}; /** * A wrapper for the FreeMarkerWorker version. */ public static Object getWrappedObject(String varName, Environment env) { return FreeMarkerWorker.getWrappedObject(varName, env); } public static String getArg(Map args, String key, Environment env) { return FreeMarkerWorker.getArg(args, key, env); } public static String getArg(Map args, String key, Map ctx) { return FreeMarkerWorker.getArg(args, key, ctx); } public Writer getWriter(final Writer out, Map args) { final StringBuffer buf = new StringBuffer(); final Environment env = Environment.getCurrentEnvironment(); final Map templateCtx = (Map) FreeMarkerWorker.getWrappedObject("context", env); //FreeMarkerWorker.convertContext(templateCtx); final Map savedValues = FreeMarkerWorker.saveValues(templateCtx, saveKeyNames); FreeMarkerWorker.overrideWithArgs(templateCtx, args); final GenericDelegator delegator = (GenericDelegator) FreeMarkerWorker.getWrappedObject("delegator", env);/* final String editTemplate = getArg(args, "editTemplate", ctx); final String wrapTemplateId = getArg(args, "wrapTemplateId", ctx); //final String mapKey = getArg(args, "mapKey", ctx); final String templateContentId = getArg(args, "templateContentId", ctx); final String subDataResourceTypeId = getArg(args, "subDataResourceTypeId", ctx); final String contentId = getArg(args, "contentId", ctx); final String subContentId = getArg(args, "subContentId", ctx); final String rootDir = getArg(args, "rootDir", ctx); final String webSiteId = getArg(args, "webSiteId", ctx); final String https = getArg(args, "https", ctx); final String viewSize = getArg(args, "viewSize", ctx); final String viewIndex = getArg(args, "viewIndex", ctx); final String listSize = getArg(args, "listSize", ctx); final String highIndex = getArg(args, "highIndex", ctx); final String lowIndex = getArg(args, "lowIndex", ctx); final String queryString = getArg(args, "queryString", ctx); final Locale locale = (Locale) FreeMarkerWorker.getWrappedObject("locale", env); final String mimeTypeId = getArg(args, "mimeTypeId", ctx);*/ //final LocalDispatcher dispatcher = (LocalDispatcher) FreeMarkerWorker.getWrappedObject("dispatcher", env); //final GenericValue userLogin = (GenericValue) FreeMarkerWorker.getWrappedObject("userLogin", env); GenericValue view = (GenericValue) FreeMarkerWorker.getWrappedObject("subContentDataResourceView", env); final Integer indent = (templateCtx.get("indent") == null) ? new Integer(0) : (Integer)templateCtx.get("indent"); String contentId = (String)templateCtx.get("contentId"); String subContentId = (String)templateCtx.get("subContentId"); if (view == null) { String thisContentId = subContentId; if (UtilValidate.isEmpty(thisContentId)) thisContentId = contentId; if (UtilValidate.isNotEmpty(thisContentId)) { try { view = delegator.findByPrimaryKey("Content", UtilMisc.toMap("contentId", thisContentId)); } catch (GenericEntityException e) { Debug.logError(e, "Error getting sub-content", module); throw new RuntimeException(e.getMessage()); } } } final GenericValue subContentDataResourceView = view; final Map traverseContext = new HashMap(); traverseContext.put("delegator", delegator); Map whenMap = new HashMap(); whenMap.put("followWhen", (String)templateCtx.get( "followWhen")); whenMap.put("pickWhen", (String)templateCtx.get( "pickWhen")); whenMap.put("returnBeforePickWhen", (String)templateCtx.get( "returnBeforePickWhen")); whenMap.put("returnAfterPickWhen", (String)templateCtx.get( "returnAfterPickWhen")); traverseContext.put("whenMap", whenMap); String fromDateStr = (String)templateCtx.get( "fromDateStr"); String thruDateStr = (String)templateCtx.get( "thruDateStr"); Timestamp fromDate = null; if (fromDateStr != null && fromDateStr.length() > 0) { fromDate = UtilDateTime.toTimestamp(fromDateStr); } traverseContext.put("fromDate", fromDate); Timestamp thruDate = null; if (thruDateStr != null && thruDateStr.length() > 0) { thruDate = UtilDateTime.toTimestamp(thruDateStr); } traverseContext.put("thruDate", thruDate); String startContentAssocTypeId = (String)templateCtx.get( "contentAssocTypeId"); if (startContentAssocTypeId != null) startContentAssocTypeId = "SUB_CONTENT"; traverseContext.put("contentAssocTypeId", startContentAssocTypeId); String direction = (String)templateCtx.get( "direction"); if (UtilValidate.isEmpty(direction)) direction = "From"; traverseContext.put("direction", direction); return new LoopWriter(out) { public void write(char cbuf[], int off, int len) { //StringBuffer ctxBuf = (StringBuffer) templateContext.get("buf"); //ctxBuf.append(cbuf, off, len); buf.append(cbuf, off, len); } public void flush() throws IOException { out.flush(); } public int onStart() throws TemplateModelException, IOException { //templateContext.put("buf", new StringBuffer()); List nodeTrail = new ArrayList(); traverseContext.put("nodeTrail", nodeTrail); GenericValue content = null;/* if (UtilValidate.isNotEmpty(contentId)) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -