⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pagehelper.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.roller.presentation.velocity;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.struts.Globals;import org.apache.struts.util.RequestUtils;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.Velocity;import org.apache.velocity.context.Context;import org.roller.RollerException;import org.roller.pojos.RefererData;import org.roller.pojos.UserData;import org.roller.pojos.WeblogEntryData;import org.roller.presentation.LanguageUtil;import org.roller.presentation.RollerContext;import org.roller.presentation.RollerRequest;import org.roller.presentation.tags.calendar.CalendarModel;import org.roller.presentation.tags.calendar.CalendarTag;import org.roller.presentation.tags.menu.EditorNavigationBarTag;import org.roller.presentation.tags.menu.MenuTag;import org.roller.presentation.weblog.tags.BigWeblogCalendarModel;import org.roller.presentation.weblog.tags.WeblogCalendarModel;import org.roller.util.StringUtils;import java.io.StringWriter;import java.net.MalformedURLException;import java.util.ArrayList;import java.util.Collection;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import java.util.Locale;import java.util.Vector;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.PageContext;/** * Provides assistance to VelociMacros, filling in where Velocity falls. *  * @author llavandowska * @author David M Johnson *  */public class PageHelper{    private static Log mLogger =        LogFactory.getFactory().getInstance(PageHelper.class);        private Context              mVelocityContext = null;    private PageContext          mPageContext = null;    private HttpServletResponse  mResponse = null;         private RollerRequest        mRollerReq = null;    private String               mUsername = null;    private Collection           mPagePlugins = new ArrayList();    private boolean              mSkipFlag = false;        //------------------------------------------------------------------------        /**     * Initialize VelocityHelper, setting the variables it will be hiding from     * the Velocimacros.     */    public PageHelper(            RollerRequest rreq, HttpServletResponse response, Context ctx)    {        mVelocityContext = ctx;        mRollerReq = rreq;        mResponse = response;        if (rreq != null)         {            mPageContext = rreq.getPageContext();            UserData user = null;            if ( rreq.getRequest().getAttribute(RollerRequest.OWNING_USER) != null)            {                user = (UserData)                    rreq.getRequest().getAttribute(RollerRequest.OWNING_USER);            }            else if ( rreq.getUser() != null )            {                user = rreq.getUser();            }            if ( user != null )            {                       mUsername = user.getUserName();                   }        }                if (mVelocityContext == null) mVelocityContext = new VelocityContext();    }        //------------------------------------------------------------------------        /**     * Initialized VelocityHelper without a Velocity Context.     */    public PageHelper(RollerRequest rreq, HttpServletResponse response)    {        this(rreq, response, null);    }    //------------------------------------------------------------------------    /**     * Return a PageHelper with a new VelocityContext.     */    public static PageHelper createPageHelper(        HttpServletRequest request, HttpServletResponse response)    {        Context ctx = (Context)(new VelocityContext());        RollerRequest rreq = RollerRequest.getRollerRequest(request);        PageHelper pageHelper = new PageHelper(rreq, response, ctx);        pageHelper.initializePlugins(ContextLoader.getPagePlugins());        return pageHelper;    }    //------------------------------------------------------------------------    /**     * Create individual instances of the PagePlugins for use by this PageHelper.     */    protected void initializePlugins(Collection pluginClasses)     {        Iterator it = pluginClasses.iterator();        while (it.hasNext())         {            try            {                PagePlugin plugin = (PagePlugin)it.next();                plugin.init(mRollerReq, mVelocityContext);                mPagePlugins.add(plugin);            }            catch (RollerException e)            {                mLogger.warn("Unable to init() PagePlugin: ", e    );            }        }    }    //------------------------------------------------------------------------    /**     * This is a quasi-hack: there are places we don't want to render the     * ReadMore Plugin in particular (I cannot think of other plugins     * which warrant this treatment).  The "skip flag" will be made     * available to the Plugin if it wants to check to see if it should     * be skipped.     */    public void setSkipFlag(boolean skip)     {        mSkipFlag = skip;    }        //------------------------------------------------------------------------        /**     * Another stupid helper method to make up for the shortcomings of Velocity.     * @return HashMap     */    public Hashtable addParam(String key, String value, Hashtable map)    {        if (map == null) map = new Hashtable();        if (key != null && value != null)            map.put(key, value);        return map;    }            //------------------------------------------------------------------------        /**     * Evaluates the String as a Velocimacro, returning the results.     *      * @param str String     * @return String     */    public String evaluateString(String str)    {        if (mVelocityContext == null) return str;                StringWriter sw = new StringWriter();        try        {            Velocity.evaluate( mVelocityContext, sw, "evalStr", str );            return sw.toString();        }        catch (Exception e)        {            mLogger.warn("VelocityHelper.evaluateString()", e);        }        return "";    }       /** Build the URL for editing an WeblogEntry **/    public String getEntryEditUrl(WeblogEntryData entry)    {        Hashtable params = new Hashtable();        params.put( RollerRequest.WEBLOGENTRYID_KEY, entry.getId());        params.put( RollerRequest.ANCHOR_KEY,        entry.getAnchor());        if (mUsername != null)        {                params.put( RollerRequest.USERNAME_KEY,  mUsername);        }        try        {            return RequestUtils.computeURL( mPageContext,                "weblogEdit", null, null, null, params, null, false);        }        catch (MalformedURLException mue)        {            mLogger.warn("RollerRequest.editEntryUrl exception: ", mue);        }        return            mRollerReq.getRequest().getContextPath() + "edtior/weblog.do?method=edit";    }        //-------------------------------------------------------------------------    public String getToggleLinkbackDisplayHTML(RefererData referer)    {        String ret = "";        String link = null;        try        {            if ( mRollerReq.isUserAuthorizedToEdit() )            {                Hashtable params = new Hashtable();                params.put( RollerRequest.REFERERID_KEY, referer.getId());                params.put( RollerRequest.USERNAME_KEY, mUsername);                link = RequestUtils.computeURL( mPageContext,                    "toggleLinkback", null, null, null, params,null,false);                                    StringBuffer sb = new StringBuffer();                sb.append("[<a href=\"");                sb.append(link);                if ( referer.getVisible().booleanValue() )                {                    sb.append("\">Visible</a>] ");                }                else                {                    sb.append("\">Hidden</a>] ");                }                ret = sb.toString();            }        }        catch (Exception e)        {           // should never happen, but if it does:           mLogger.error("ERROR creating toggle-linkback URL",e);        }                return ret;    }        //------------------------------------------------------------------------        public boolean isUserAuthorizedToEdit()    {        try        {            return mRollerReq.isUserAuthorizedToEdit();        }        catch (Exception e)        {            mLogger.warn("PageHelper.isUserAuthorizedToEdit)", e);        }        return false;    }        //------------------------------------------------------------------------    public void setContentType( String type )    {        mResponse.setContentType(type);    }    //------------------------------------------------------------------------    /**      * Display big weblog calendar, well suited for an archive page.     * @return HTML for calendar.     */    public String showBigWeblogCalendar()    {        return showWeblogCalendar(true, null);    }            //------------------------------------------------------------------------        /**      * Call hybrid EditorNavBarTag to render editor navbar.     * @param vertical True for vertical navbar.     * @return String HTML for navbar.     */    public String showEditorNavBar(boolean vertical)    {        EditorNavigationBarTag editorTag = new EditorNavigationBarTag();        editorTag.setPageContext(mPageContext);        if ( vertical )        {            editorTag.setView("/navbar-vertical.vm");        }        else        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -