package au.com.nmcgroup.jspwiki.plugin; import java.util.*; import com.ecyrd.jspwiki.*; import com.ecyrd.jspwiki.plugin.WikiPlugin; import com.ecyrd.jspwiki.plugin.PluginException; import com.ecyrd.jspwiki.attachment.AttachmentManager; import com.ecyrd.jspwiki.attachment.Attachment; import com.ecyrd.jspwiki.providers.ProviderException; /** * Provides an image plugin for better control than is possible with * a standard image plugin. *
* We wanted to put in a horizontal row of images, and they weren't * rendering well with Image, so this plugin solves it. * * @author kdavidson * Date: 24/08/2004 * Time: 10:42:17 * To change this template use File | Settings | File Templates. */ public class ImageRow implements WikiPlugin { public static final String PARAM_SRC = "src"; public static final String PARAM_ALIGN = "align"; public static final String PARAM_HEIGHT = "height"; public static final String PARAM_WIDTH = "width"; public static final String PARAM_CELL_WIDTH = "cellwidth"; public static final String PARAM_ALT = "alt"; public static final String PARAM_CAPTION = "caption"; public static final String PARAM_LINK = "link"; public static final String PARAM_STYLE = "style"; public static final String PARAM_CLASS = "class"; // public static final String PARAM_MAP = "map"; public static final String PARAM_BORDER = "border"; /** * This method is used to clean away things like quotation marks which * a malicious user could use to stop processing and insert javascript. */ private static final String getCleanParameter( Map params, String paramId ) { return TextUtil.replaceEntities( (String) params.get( paramId ) ); } public String execute( WikiContext context, Map params ) throws PluginException { WikiEngine engine = context.getEngine(); String srcList = getCleanParameter( params, PARAM_SRC ); String align = getCleanParameter( params, PARAM_ALIGN ); String ht = getCleanParameter( params, PARAM_HEIGHT ); String wt = getCleanParameter( params, PARAM_WIDTH ); String cellwt = getCleanParameter( params, PARAM_CELL_WIDTH ); String alt = getCleanParameter( params, PARAM_ALT ); String captionList = getCleanParameter( params, PARAM_CAPTION ); String link = getCleanParameter( params, PARAM_LINK ); String style = getCleanParameter( params, PARAM_STYLE ); // String cssclass= getCleanParameter( params, PARAM_CLASS ); // String map = getCleanParameter( params, PARAM_MAP ); String border = getCleanParameter( params, PARAM_BORDER ); System.out.println("srcList = " + srcList); System.out.println("captionList = " + captionList); if( srcList == null ) { throw new PluginException("Parameter 'src' is required for ImageRow plugin"); } // if( cssclass == null ) cssclass = "imageplugin"; String[] srcs = srcList.split(","); String[] captions = captionList.split(","); for (int i = 0; i < srcs.length; i++) { String s = srcs[i].trim(); try { AttachmentManager mgr = engine.getAttachmentManager(); Attachment att = mgr.getAttachmentInfo( context, srcList ); if( att != null ) { srcList = engine.getAttachmentURL(att.getName()); } } catch( ProviderException e ) { throw new PluginException( "Attachment info failed: "+e.getMessage() ); } } StringBuffer result = new StringBuffer(); result.append( "
| " );
if( link != null )
{
result.append("");
}
result.append( " | \n");
}
result.append("
| " ); if(i < captions.length){ result.append(TextUtil.replaceEntities(captions[i].trim())); } result.append(" | \n"); } result.append("