package com.ecyrd.jspwiki.plugin.i3g; import java.util.Map; import javax.servlet.jsp.JspWriter; import org.apache.log4j.Logger; import com.ecyrd.jspwiki.TextUtil; import com.ecyrd.jspwiki.WikiContext; import com.ecyrd.jspwiki.WikiEngine; import com.ecyrd.jspwiki.WikiPage; import com.ecyrd.jspwiki.attachment.Attachment; import com.ecyrd.jspwiki.plugin.PluginException; import com.ecyrd.jspwiki.plugin.WikiPlugin; /** * Base class for i3g plugins, provides basic services and is a place where * utility methods should go * * @author Christoph Sauer */ public abstract class I3gWikiPlugin implements WikiPlugin { private static Logger log = Logger.getLogger(I3gWikiPlugin.class); /** * This method is used to clean away things like quotation marks which a * malicious user could use to stop processing and insert javascript. Sets * defval if parameter is not present. (corresponds to getCleanParameter in other plugins) */ static final String getParameter(Map params, String paramId, String defval, boolean reqired) throws PluginException { String paramString = (String) params.get(paramId); if (paramString == null) { paramString = defval; } else { TextUtil.replaceEntities(paramString); } if( paramString == null ) { throw new PluginException("Parameter '"+paramId+"' is required for plugin"); } return paramString; } static final String getParameter(Map params, String paramId, String defval) throws PluginException { return getParameter(params, paramId, defval, false); } static final String getLink(String pageName, String title, WikiContext context) { return getLink(pageName, title, context, WikiContext.VIEW); } // Sourcode is directly copied and adapted from LinkToTag.java static final String getLink(String pageName, String title, WikiContext context, String mode) { WikiEngine engine = context.getEngine(); boolean isattachment = false; String version = null; // TODO: find out what parameter does, pass as parameter String template = null; // TODO: find out what parameter does, pass as parameter int format = 0; //ANCHOR TODO: pass as parameter if( pageName == null ) { WikiPage p = context.getPage(); if( p != null ) { pageName = p.getName(); isattachment = (p instanceof Attachment); } else { return ""; } } String url; String linkclass; if( isattachment ) { url = context.getURL(WikiContext.ATTACH,pageName, (version != null) ? "version="+version : null ); linkclass = "attachment"; } else { StringBuffer params = new StringBuffer(); if( version != null ) params.append( "version="+version ); if( template != null ) params.append( (params.length()>0?"&":"") + "skin="+template ); url = context.getURL( mode, pageName, params.toString() ); linkclass = "wikipage"; } String out = ""; switch( format ) { case 0: out += "" + title + ""; break; case 1: out += url ; break; } return out; } }