001 /*
002 Copyright (C) 2007 JSPWiki Developer Group
003
004 Licensed to the Apache Software Foundation (ASF) under one
005 or more contributor license agreements. See the NOTICE file
006 distributed with this work for additional information
007 regarding copyright ownership. The ASF licenses this file
008 to you under the Apache License, Version 2.0 (the
009 "License"); you may not use this file except in compliance
010 with the License. You may obtain a copy of the License at
011
012 http://www.apache.org/licenses/LICENSE-2.0
013
014 Unless required by applicable law or agreed to in writing,
015 software distributed under the License is distributed on an
016 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 KIND, either express or implied. See the License for the
018 specific language governing permissions and limitations
019 under the License.
020 */
021 package org.apache.wiki.plugin;
022
023 import java.util.Map;
024
025 import org.apache.wiki.WikiContext;
026 import org.apache.wiki.WikiEngine;
027 import org.apache.wiki.api.exceptions.PluginException;
028 import org.apache.wiki.api.plugin.WikiPlugin;
029 import org.apache.wiki.util.TextUtil;
030
031 /**
032 * Outputs an image with the supplied text as the <tt>title</tt> which is shown as a tooltip by
033 * most browsers. This is intended for short one line comments.
034 * <p>
035 * See http://www.456bereastreet.com/archive/200412/the_alt_and_title_attributes/ for discussion on
036 * alt and title attributes.
037 * <p>
038 * Adaption of the CommentPlugin written by Scott Hulbert, cleaned up and generalized, but basically
039 * his concept.
040 * <p>
041 *
042 * <p>Parameters : </p>
043 * <ul>
044 * <li><b>_cmdline</b> - the commentText</li>
045 * </ul>
046 *
047 */
048 public class Note implements WikiPlugin
049 {
050 /**
051 * Property name for setting the image for the note. Value is <tt>{@value}</tt>.
052 */
053 public static final String PROP_NOTE_IMAGE = "notePlugin.imageName";
054
055 /**
056 * The default name for the note. Value is <tt>{@value}</tt>.
057 */
058 public static final String DEFAULT_NOTE_IMAGE = "note.png";
059
060 /**
061 * {@inheritDoc}
062 */
063 public String execute(WikiContext context, Map<String, String> params) throws PluginException
064 {
065 String commandline = params.get(DefaultPluginManager.PARAM_CMDLINE);
066 if (commandline == null || commandline.length() == 0)
067 {
068 return "Unable to obtain plugin command line from parameter'" + DefaultPluginManager.PARAM_CMDLINE + "'"; // I18N
069 }
070
071 String commentImage = imageUrl(context);
072
073 String commentText = clean(commandline);
074
075 return "<img src='" + commentImage + "' alt=\"Comment: " +
076 commentText + "\" title=\"" + commentText + "\"/>";
077 }
078
079 private String imageUrl( WikiContext ctx )
080 {
081 WikiEngine engine = ctx.getEngine();
082 String commentImage = engine.getWikiProperties().getProperty(PROP_NOTE_IMAGE,
083 DEFAULT_NOTE_IMAGE);
084
085 commentImage = "images/"+commentImage;
086
087 String resource = engine.getTemplateManager().findResource( ctx,
088 engine.getTemplateDir(),
089 commentImage );
090
091 return ctx.getURL( WikiContext.NONE, resource );
092 }
093
094
095 /**
096 * Cleans the side.
097 *
098 * @param commandline
099 */
100 private String clean(String commandline)
101 {
102 return TextUtil.replaceEntities( commandline );
103 }
104
105 }
106