[jboss-svn-commits] JBL Code SVN: r26788 - labs/jbossforums/branches/forums120P26/forums/src/main/org/jboss/portlet/forums/ui.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat May 30 11:52:03 EDT 2009


Author: sviluppatorefico
Date: 2009-05-30 11:52:02 -0400 (Sat, 30 May 2009)
New Revision: 26788

Modified:
   labs/jbossforums/branches/forums120P26/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java
Log:


Modified: labs/jbossforums/branches/forums120P26/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java
===================================================================
--- labs/jbossforums/branches/forums120P26/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java	2009-05-29 21:51:38 UTC (rev 26787)
+++ labs/jbossforums/branches/forums120P26/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java	2009-05-30 15:52:02 UTC (rev 26788)
@@ -22,16 +22,19 @@
  ******************************************************************************/
 package org.jboss.portlet.forums.ui;
 
+import java.io.StringWriter;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
+import java.util.ResourceBundle;
 
 import javax.faces.FactoryFinder;
 import javax.faces.application.Application;
 import javax.faces.application.ApplicationFactory;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.naming.InitialContext;
@@ -41,6 +44,7 @@
 import javax.portlet.PortletURL;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
+import javax.servlet.http.HttpServletRequest;
 
 import org.apache.log4j.Logger;
 import org.jboss.portal.core.modules.ModuleConstants;
@@ -50,6 +54,9 @@
 import org.jboss.portal.identity.UserProfileModule;
 import org.jboss.portlet.forums.ForumsConstants;
 import org.jboss.portlet.forums.feeds.FeedConstants;
+import org.jboss.portlet.forums.format.render.bbcodehtml.ToHTMLConfig;
+import org.jboss.portlet.forums.format.render.bbcodehtml.ToHTMLRenderer;
+import org.jboss.portlet.forums.format.util.CLLoader;
 import org.jboss.portlet.forums.helper.TempFileBinding;
 import org.jboss.portlet.forums.impl.MessageImpl;
 import org.jboss.portlet.forums.impl.PollImpl;
@@ -69,11 +76,34 @@
  */
 public class PortalUtil
 {
+    private static CLLoader loader = new CLLoader("template");
 
     private static Logger log = Logger.getLogger(PortalUtil.class);
     
     private static SimpleDateFormat sdfForLastLoginDate;
 
+    private static User user = new User()
+    {
+        public Object getId()
+        {
+            return null;
+        }
+
+        public void updatePassword(String string)
+        {
+        }
+
+        public boolean validatePassword(String string)
+        {
+            return false;
+        }
+
+        public String getUserName()
+        {
+            return null;
+        }
+    };
+
     private static User userNA = new User() 
     {
         {
@@ -614,11 +644,112 @@
         
         return poster;
     }
+    
+    /**
+     * Method used for parsing bbcode and return properly formated text of
+     * message.
+     * 
+     * @return
+     */
+    public static String formatMessage(String text, boolean allowHTML)
+    {
 
+        try
+        {
+            Object req = FacesContext.getCurrentInstance().getExternalContext()
+                    .getRequest();
+
+            if (allowHTML)
+            {
+                getToHTMLRenderer(req).getConfig().setFilterMode(
+                        ToHTMLConfig.FILTER_MODE_ALWAYS_PRINT);
+                getToHTMLRenderer(req).getConfig().setOuputMode(
+                        ToHTMLConfig.OUTPUT_MODE_REMOVE);
+                getToHTMLRenderer(req).getConfig().setMaxTextWidth(
+                        Integer.MAX_VALUE);
+            } else
+            {
+                getToHTMLRenderer(req).getConfig().setFilterMode(
+                        ToHTMLConfig.FILTER_MODE_NEVER_PRINT);
+                getToHTMLRenderer(req).getConfig().setOuputMode(
+                        ToHTMLConfig.OUTPUT_MODE_REMOVE);
+                getToHTMLRenderer(req).getConfig().setMaxTextWidth(
+                        Integer.MAX_VALUE);
+            }
+            return formatTitle(req, text);
+        } catch (Exception e)
+        {
+            // Now if something goes wrong it just returns message with bbcode.
+            return text;
+        }
+
+    }
+
     /**
      * 
+     * @param text
      * @return
      */
+    public static String formatTitle(Object req, String text)
+    {
+
+        StringWriter stringWriter = new StringWriter();
+        getToHTMLRenderer(req).setWriter(stringWriter);
+        getToHTMLRenderer(req).render(text.toCharArray(), 0, text.length());
+        getToHTMLRenderer(req).getConfig().setMaxTextWidth(Integer.MAX_VALUE);
+        return stringWriter.toString();
+
+    }
+
+    /**
+     * 
+     * @return
+     */
+    private static ToHTMLRenderer getToHTMLRenderer(Object req)
+    {
+        ToHTMLRenderer renderer = null;
+        PortletRequest porReq = null;
+        HttpServletRequest serReq = null;
+        if (req instanceof PortletRequest)
+        {
+            porReq = (PortletRequest) req;
+            renderer = (ToHTMLRenderer) porReq.getPortletSession()
+                    .getAttribute("RENDERER");
+        } else
+        {
+            serReq = (HttpServletRequest) req;
+            // TODO: GETTING RENDERER FROM APPLICATION SCOPE ATTRIBUTE
+        }
+        if (renderer == null)
+        {
+
+            // Getting ResourceBundle with current Locale
+            FacesContext ctx = FacesContext.getCurrentInstance();
+            UIViewRoot uiRoot = ctx.getViewRoot();
+            Locale locale = uiRoot.getLocale();
+            ClassLoader ldr = Thread.currentThread().getContextClassLoader();
+            ResourceBundle bundle = ResourceBundle.getBundle("ResourceJSF",
+                    locale, ldr);
+
+            // Create the HTMLRenderer for BBCode
+            ToHTMLConfig config = new ToHTMLConfig();
+            config.setLoader(loader);
+            renderer = new ToHTMLRenderer(config, bundle);
+            if (porReq != null)
+            {
+                porReq.getPortletSession().setAttribute("RENDERER", renderer);
+            } else if (serReq != null)
+            {
+                // TODO: SETTING RENDERER IN APPLICATION SCOPE ATTRIBUTE
+            }
+        }
+        return renderer;
+    }
+
+    /**
+     * 
+     * @return
+     */
     public static Poll createPoll()
     {
         Poll poll = new PollImpl();




More information about the jboss-svn-commits mailing list