You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2007/07/31 21:28:48 UTC

svn commit: r561454 - in /roller/trunk/apps/weblogger: src/java/org/apache/roller/weblogger/business/plugins/ src/java/org/apache/roller/weblogger/business/plugins/comment/ src/java/org/apache/roller/weblogger/config/ src/java/org/apache/roller/weblogg...

Author: agilliland
Date: Tue Jul 31 12:28:47 2007
New Revision: 561454

URL: http://svn.apache.org/viewvc?view=rev&rev=561454
Log:
Adding a new comment plugin for converting plain text links into html anchors and updating comment plugins to use an id field for tracking plugin usage rather than just using the plugin name.

Added:
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.java
Modified:
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/PluginManagerImpl.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/admin/GlobalConfig.jsp

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/PluginManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/PluginManagerImpl.java?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/PluginManagerImpl.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/PluginManagerImpl.java Tue Jul 31 12:28:47 2007
@@ -128,8 +128,8 @@
         if (commentPlugins.size() > 0) {
             for( WeblogEntryCommentPlugin plugin : commentPlugins ) {
                 if(comment.getPlugins() != null &&
-                        comment.getPlugins().indexOf(plugin.getName()) != -1) {
-                    log.debug("Invoking comment plugin "+plugin.getName());
+                        comment.getPlugins().indexOf(plugin.getId()) != -1) {
+                    log.debug("Invoking comment plugin "+plugin.getId());
                     content = plugin.render(comment, content);
                 }
             }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.java?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.java Tue Jul 31 12:28:47 2007
@@ -39,8 +39,16 @@
     }
     
     
-    public String getName() {
+    /**
+     * Unique identifier.  This should never change. 
+     */
+    public String getId() {
         return "AutoFormat";
+    }
+    
+    
+    public String getName() {
+        return "Auto Format";
     }
     
     

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.java?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.java Tue Jul 31 12:28:47 2007
@@ -37,8 +37,16 @@
     }
     
     
-    public String getName() {
+    /**
+     * Unique identifier.  This should never change. 
+     */
+    public String getId() {
         return "HTMLSubset";
+    }
+    
+    
+    public String getName() {
+        return "HTML Subset Restriction";
     }
     
     

Added: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.java?view=auto&rev=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.java (added)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.java Tue Jul 31 12:28:47 2007
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+package org.apache.roller.weblogger.business.plugins.comment;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.roller.weblogger.pojos.WeblogEntryComment;
+import org.apache.roller.weblogger.util.Utilities;
+
+
+/**
+ * Comment plugin which turns plain text URLs into hyperlinks using
+ * the html anchor (<a>) tag.
+ * 
+ * Contributed by Matthew Montgomery.
+ */
+public class LinkMarkupPlugin implements WeblogEntryCommentPlugin {
+
+    private static final Pattern pattern = Pattern.compile(
+            "http[s]?://[^/][\\S]+", Pattern.CASE_INSENSITIVE);
+    
+    
+    /**
+     * Unique identifier.  This should never change. 
+     */
+    public String getId() {
+        return "LinkMarkup";
+    }
+    
+    
+    /** Returns the display name of this Plugin. */
+    public String getName() {
+        return "Link Markup";
+    }
+    
+    
+    /** Briefly describes the function of the Plugin.  May contain HTML. */
+    public String getDescription() {
+        return "Automatically creates hyperlinks out of embedded URLs.";
+    }
+    
+    
+    /**
+     * Apply plugin to the specified text.
+     *
+     * @param comment The comment being rendered.
+     * @param text String to which plugin should be applied.
+     *
+     * @return Results of applying plugin to string.
+     */
+    public String render(final WeblogEntryComment comment, String text) {
+        StringBuilder result;
+        result = new StringBuilder();
+        
+        if (text != null) {
+            Matcher matcher;
+            matcher = pattern.matcher(text);
+
+            int start = 0;
+            int end = text.length();
+            
+            while (start < end) {
+                if (matcher.find()) {
+                    // Copy up to the match
+                    result.append(text.substring(start, (matcher.start())));
+
+                    // Copy the URL and create the hyperlink
+                    // Unescape HTML as we don't know if that setting is on
+                    String url;
+                    url = Utilities.unescapeHTML(text.substring(
+                            matcher.start(), matcher.end()));
+
+                    // Build the anchor tag and escape HTML in the URL output
+                    result.append("<a href=\"");
+                    result.append(Utilities.escapeHTML(url));
+                    result.append("\">");
+                    result.append(Utilities.escapeHTML(url));
+                    result.append("</a>");
+
+                    // Increment the starting index
+                    start = matcher.end();
+                }
+                else {
+                    // Copy the remainder
+                    result.append(text.substring(start, end));
+
+                    // Increment the starting index to exit the loop
+                    start = end;
+                }
+            }
+        }
+        else {
+            result.append(text);    
+        }
+
+        return result.toString();
+    }
+    
+}

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.java?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.java Tue Jul 31 12:28:47 2007
@@ -29,6 +29,12 @@
 public interface WeblogEntryCommentPlugin {
     
     /**
+     * A unique identifier for the plugin.
+     */
+    public String getId();
+    
+    
+    /**
      * Returns the display name of this Plugin.
      */
     public String getName();

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties Tue Jul 31 12:28:47 2007
@@ -170,6 +170,7 @@
 # pluggable comment formatters
 comment.formatter.classnames=\
 org.apache.roller.weblogger.business.plugins.comment.AutoformatPlugin,\
+org.apache.roller.weblogger.business.plugins.comment.LinkMarkupPlugin,\
 org.apache.roller.weblogger.business.plugins.comment.HTMLSubsetPlugin
 
 # enables site full blacklist check on comment posts (default: true)

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java Tue Jul 31 12:28:47 2007
@@ -113,6 +113,7 @@
     /**
      * Display global properties editor form.
      */
+    @Override
     public String execute() {
         
         // setup array of configured plugins

Modified: roller/trunk/apps/weblogger/web/WEB-INF/jsps/admin/GlobalConfig.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/admin/GlobalConfig.jsp?view=diff&rev=561454&r1=561453&r2=561454
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/jsps/admin/GlobalConfig.jsp (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/admin/GlobalConfig.jsp Tue Jul 31 12:28:47 2007
@@ -37,7 +37,7 @@
                 
                   <%-- special condition for comment plugins --%>
                   <s:if test="#pd.name == 'users.comments.plugins'">
-                      <td class="field"><s:checkboxlist theme="roller" list="pluginsList" name="commentPlugins" listKey="name" listValue="name" /></td>
+                      <td class="field"><s:checkboxlist theme="roller" list="pluginsList" name="commentPlugins" listKey="id" listValue="name" /></td>
                   </s:if>
                   
                   <%-- "string" type means use a simple textbox --%>