Author: szimano Date: 2005-11-30 17:12:16 -0500 (Wed, 30 Nov 2005) New Revision: 1674 Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ImagePlugin.java Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java Log: ImagePlugin http://jira.jboss.com/jira/browse/JBWIKI-72 and bugs... and logs Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiInsidePlugins.xml 2005-11-30 22:12:16 UTC (rev 1674) @@ -7,4 +7,5 @@ <entry key="IndexPlugin">org.jboss.wiki.plugins.IndexInsidePlugin</entry> <entry key="CurrentTimePlugin">com.ecyrd.jspwiki.plugin.CurrentTimePlugin</entry> <entry key="Counter">com.ecyrd.jspwiki.plugin.CounterPlugin</entry> +<entry key="Image">com.ecyrd.jspwiki.plugin.ImagePlugin</entry> </properties> \ No newline at end of file Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ImagePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ImagePlugin.java 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/com/ecyrd/jspwiki/plugin/ImagePlugin.java 2005-11-30 22:12:16 UTC (rev 1674) @@ -0,0 +1,81 @@ +package com.ecyrd.jspwiki.plugin; + +import java.util.HashMap; + +import org.jboss.wiki.WikiInsidePlugin; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiSession; +import org.jboss.wiki.plugins.HTMLTranslatorParts; + +public class ImagePlugin extends WikiInsidePlugin { + + @Override + public String process(WikiPage wikiPage, WikiSession wikiSession, + HashMap<String, String> attributes) { + /* + * src = Image source. This can either be a full URL (http://...) or a WikiAttachment? name. Required. + * align = left|right|center. The image alignment. + * height = integer. Force the height of the image. + * width = integer. Force the width of the image. + * alt = alt text. The alt text of an image. This is very useful when doing + * pages that can be navigated with text-only browsers + * caption = caption text. The text that should be shown as a caption under the image. + * link = hyperlink. A hyperlink (http://...). In the future, you can also use WikiPages?. + * border = integer. Size of the image border. + * style = style info. Any style markup you would like to apply to the table surrounding the image. + * class = class name. Redefine the default class for this image, which is "imageplugin". + */ + + String src = attributes.get("src"); + + if (src == null) { + return "<i>Image Plugin Error: \"src\" value has to be set !</i>"; + } + + if (!HTMLTranslatorParts.isExternalLink(src)) { + src = wikiSession.getAttribute("hostURL") + "/wiki/" + src; + } + + String align = attributes.get("align"); + String height = attributes.get("height"); + String width = attributes.get("width"); + String alt = attributes.get("alt"); + String caption = attributes.get("caption"); + String link = attributes.get("link"); + String border = attributes.get("border"); + String style = attributes.get("style"); + String classAtr = attributes.get("class"); + + StringBuffer imageLink = new StringBuffer(); + + imageLink.append((caption != null) ? "<table><tr><td>" : "") + .append((link != null) ? "<a href=\""+link+"\">" : "") + .append("<img ") + .append("src=\"") + .append(src) + .append("\" ") + .append((align != null) ? "align"+align+"\" " : "") + .append((height != null) ? "height=\""+height+"\" " : "") + .append((width != null) ? "width=\""+width+"\" " : "") + .append((alt != null) ? "alt=\""+alt+"\" " : "") + .append((border != null) ? "border=\""+border+"\" " : "") + .append((style != null) ? "style=\""+style+"\" " : "") + .append("class=\""+((classAtr != null) ? classAtr : "imageplugin") + "\" ") + .append((link != null) ? "</a>" : "") + .append((caption != null) ? "</td></tr><tr><td style=\"text-align: center\">"+caption+"</td></tr></table>" : ""); + + return imageLink.toString(); + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + + @Override + public boolean processContent() { + return false; + } + +} Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java 2005-11-30 22:12:16 UTC (rev 1674) @@ -9,6 +9,7 @@ import java.util.regex.Pattern; import org.jboss.logging.Logger; +import org.jboss.wiki.plugins.HTMLTranslatorParts; public class InsidePluginExcecutor { @@ -110,8 +111,8 @@ if (plugin != null) { HashMap<String, String> attributes = extractAttribs(localPluginLink); - return plugin.process(wikiPage, wikiSession, - attributes); + return (plugin.processContent() ? HTMLTranslatorParts.pagePartRegexStart : "") + plugin.process(wikiPage, wikiSession, + attributes) + (plugin.processContent() ? HTMLTranslatorParts.pagePartRegexEnd : ""); } else return "''INSIDE PLUGIN ERROR: There is no plugin: " + pluginLink Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiInsidePlugin.java 2005-11-30 22:12:16 UTC (rev 1674) @@ -122,6 +122,13 @@ this.name = name; } + /**Wheather to postprocess what WikiInsidePlugin producess. + * @return True if yes false if not + */ + public boolean processContent() { + return true; + } + protected Integer getNumericValue(HashMap<String, String> attributes, String valName) { String val = attributes.get(valName); Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-11-30 22:12:16 UTC (rev 1674) @@ -375,6 +375,9 @@ clonedPage.setViewRoles(viewRoles); clonedPage.setEditRoles(editRoles); + clonedPage.setTempVariables(tempVariables); + clonedPage.setPermVariables(permVariables); + clonedPage.setLength(getLength()); return clonedPage; @@ -476,7 +479,7 @@ } public boolean isEditable(Credentials user) { - log.info("Editable: "+user.isAdmin() + " " + editable + " " + checkRoles(user, editRoles)); + log.debug("Editable: "+user.isAdmin() + " " + editable + " " + checkRoles(user, editRoles)); return user.isAdmin() || (editable && checkRoles(user, editRoles)); } @@ -489,7 +492,7 @@ public boolean isViewable(Credentials user) { - log.info("Viewable: "+ user.isAdmin() + " " + viewable + " " + checkRoles(user, viewRoles)); + log.debug("Viewable: "+ user.isAdmin() + " " + viewable + " " + checkRoles(user, viewRoles)); return user.isAdmin() || (viewable && checkRoles(user, viewRoles)); } @@ -610,4 +613,12 @@ } } + + public void setPermVariables(HashMap<String, Object> permVariables) { + this.permVariables = permVariables; + } + + public void setTempVariables(HashMap<String, Object> tempVariables) { + this.tempVariables = tempVariables; + } } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2005-11-30 22:12:16 UTC (rev 1674) @@ -811,7 +811,7 @@ if (isPluginLink(link)) { //return null; // we do not include plugin links for now if (executePlugins ) { - return HTMLTranslatorParts.pagePartRegexStart+wikiEngine.executeInsidePlugin(link, wPage, wikiSession)+HTMLTranslatorParts.pagePartRegexEnd; + return wikiEngine.executeInsidePlugin(link, wPage, wikiSession); } else { return link; Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java 2005-11-30 21:25:45 UTC (rev 1673) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RefsManipulatingInsidePlugin.java 2005-11-30 22:12:16 UTC (rev 1674) @@ -5,6 +5,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.jboss.logging.Logger; import org.jboss.wiki.Credentials; import org.jboss.wiki.SimpleCredentials; import org.jboss.wiki.WikiContext; @@ -12,14 +13,16 @@ import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiSession; +public abstract class RefsManipulatingInsidePlugin extends WikiInsidePlugin { -public abstract class RefsManipulatingInsidePlugin extends WikiInsidePlugin { - private static final String pattern1 = "\\[.+\\]"; + private static final String pattern2 = "\\[[\\w\\d]+\\|.+\\]"; - + private static final String refsWikiType = "refs"; + private Logger log = Logger.getLogger(this.getClass()); + protected String getLink(String pageName, Integer maxwidth) { if ((maxwidth != null) && (pageName.length() > maxwidth)) { return "[" + pageName.substring(0, maxwidth - 3) + "...|" @@ -28,46 +31,51 @@ return "[" + pageName + "]\\\\"; } } - - protected Set<String> getAllRefs(Credentials credentials, WikiSession wikiSession) { - + + protected Set<String> getAllRefs(Credentials credentials, + WikiSession wikiSession) { + Set<String> pageNames = wikiEngine.getAllPageNames(); - + Set<String> allRefs = new TreeSet<String>(); - WikiContext wikiContext = new WikiContext(credentials, wikiEngine.getWikiType("refs"), wikiSession); - + WikiContext wikiContext = new WikiContext(credentials, wikiEngine + .getWikiType("refs"), wikiSession); + for (String pageName : pageNames) { WikiPage page = wikiEngine.getByName(pageName, wikiContext); - Set<String> refs = (Set<String>)page.getPermVariable("refs"); - - allRefs.addAll(refs); + Set<String> refs = (Set<String>) page.getPermVariable("refs"); + + if (refs != null) + allRefs.addAll(refs); } return allRefs; } - - protected Set<String> getRefsFor(String uid, Integer max, Credentials credentials, WikiSession wikiSession) { - + + protected Set<String> getRefsFor(String uid, Integer max, + Credentials credentials, WikiSession wikiSession) { + Set<String> refsFor = new TreeSet<String>(); - + Set<String> pageNames = wikiEngine.getAllPageNames(); - - WikiContext wikiContext = new WikiContext(credentials, wikiEngine.getWikiType("refs"), wikiSession); - + + WikiContext wikiContext = new WikiContext(credentials, wikiEngine + .getWikiType("refs"), wikiSession); + for (String pageName : pageNames) { - + WikiPage page = wikiEngine.getByName(pageName, wikiContext); - - Set<String> refs = (Set<String>)page.getPermVariable("refs"); - - if (refs.contains(uid)) { + + Set<String> refs = (Set<String>) page.getPermVariable("refs"); + + if (refs != null && refs.contains(uid)) refsFor.add(page.getName()); - } + } - + return refsFor; } |