You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/06/08 17:32:54 UTC

svn commit: r412777 - in /incubator/roller/branches/roller_3.0: src/org/apache/roller/ui/rendering/velocity/ web/WEB-INF/classes/

Author: snoopdave
Date: Thu Jun  8 08:32:53 2006
New Revision: 412777

URL: http://svn.apache.org/viewvc?rev=412777&view=rev
Log:
Introducing PageModel interface

Added:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/WeblogPageModel.java
      - copied, changed from r412622, incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/ContextLoader.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/FlavorServlet.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/ContextLoader.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/ContextLoader.java?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/ContextLoader.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/ContextLoader.java Thu Jun  8 08:32:53 2006
@@ -101,17 +101,18 @@
                 RollerConfig.getProperty("velocity.pagemodel.classname");
             Class pageModelClass = Class.forName(pageModelClassName);
             PageModel pageModel = (PageModel)pageModelClass.newInstance();
-            pageModel.init(rreq);            
-            ctx.put("pageModel", pageModel );
+            pageModel.init(rreq.getRequest());            
+            ctx.put(pageModel.getModelName(), pageModel);
             
             // Add other page models
-            // TODO: ATLAS make page models configurable
-            SitePageModel sitePageModel = new SitePageModel();
-            ctx.put("sitePageModel", sitePageModel);
-            PlanetPageModel planetPageModel = new PlanetPageModel();
-            ctx.put("planetPageModel", planetPageModel);
+            // TODO: ATLAS make page models configurable            
+            PageModel sitePageModel = new SitePageModel();
+            ctx.put(sitePageModel.getModelName(), sitePageModel);            
+            PageModel planetPageModel = new PlanetPageModel();
+            ctx.put(planetPageModel.getModelName(), planetPageModel);
             
-            ctx.put("pages", pageModel.getPages());
+            // TODO: ATLAS: figure out another way to do this:
+            //ctx.put("pages", pageModel.getPages());
             
         } catch (Exception e) {
             throw new RollerException("ERROR creating Page Model",e);

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/FlavorServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/FlavorServlet.java?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/FlavorServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/FlavorServlet.java Thu Jun  8 08:32:53 2006
@@ -114,7 +114,7 @@
             ContextLoader.setupContext(ctx, rreq, response);
             
             String useTemplate;
-            PageModel pageModel = (PageModel)ctx.get("pageModel");
+            WeblogPageModel pageModel = (WeblogPageModel)ctx.get("pageModel");
             if (request.getServletPath().endsWith("rss")) {
                 if (pageModel.getPageByName("_rss") != null)
                     // If the request specified the "/rss" mapping and the

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageHelper.java Thu Jun  8 08:32:53 2006
@@ -301,7 +301,7 @@
      */
     public String showWeblogCalendar( boolean big, String cat )
     {
-        if (PageModel.VELOCITY_NULL.equals(cat)) cat = null;
+        if (WeblogPageModel.VELOCITY_NULL.equals(cat)) cat = null;
         String ret = null;
         try
         {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java Thu Jun  8 08:32:53 2006
@@ -17,815 +17,19 @@
 */
 package org.apache.roller.ui.rendering.velocity;
 
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.RollerException;
-import org.apache.roller.config.RollerRuntimeConfig;
-import org.apache.roller.model.BookmarkManager;
-import org.apache.roller.model.RefererManager;
-import org.apache.roller.model.RollerFactory;
-import org.apache.roller.pojos.Template;
-import org.apache.roller.model.UserManager;
-import org.apache.roller.model.WeblogManager;
-import org.apache.roller.pojos.CommentData;
-import org.apache.roller.pojos.FolderData;
-import org.apache.roller.pojos.RefererData;
-import org.apache.roller.pojos.WeblogCategoryData;
-import org.apache.roller.pojos.WeblogEntryData;
-import org.apache.roller.pojos.WebsiteData;
-import org.apache.roller.pojos.wrapper.CommentDataWrapper;
-import org.apache.roller.pojos.wrapper.FolderDataWrapper;
-import org.apache.roller.pojos.wrapper.RefererDataWrapper;
-import org.apache.roller.pojos.wrapper.TemplateWrapper;
-import org.apache.roller.pojos.wrapper.WeblogCategoryDataWrapper;
-import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
-import org.apache.roller.pojos.wrapper.WebsiteDataWrapper;
-import org.apache.roller.ui.core.RollerRequest;
-import org.apache.roller.ui.core.RollerSession;
-import org.apache.roller.util.DateUtil;
-import org.apache.roller.util.StringUtils;
+import javax.servlet.http.HttpServletRequest;
 
 /**
- * Provides Roller page templates with access to Roller domain model objects.
- *
- * @author llavandowska
- * @author David M Johnson
+ * Represents a page model to be used in the blog/feed templates.
  */
-public class PageModel {
-    public final static String VELOCITY_NULL = "nil";
-    
-    protected static Log mLogger =
-            LogFactory.getFactory().getInstance(PageModel.class);
-    
-    private BookmarkManager      mBookmarkMgr = null;
-    private WeblogManager        mWeblogMgr = null;
-    private UserManager          mUserMgr = null;
-    private RefererManager       mRefererMgr = null;
-    
-    private Map                  mCategories = new HashMap();
-    private HashMap              mPageMap = new HashMap();
-    private RollerRequest        mRollerReq = null;
-    private String               mHandle = null;
-    private WebsiteData          mWebsite = null;
-    private WeblogEntryDataWrapper      mNextEntry = null;
-    private WeblogEntryDataWrapper      mPreviousEntry = null;
-    private WeblogEntryDataWrapper      mLastEntry = null;
-    private WeblogEntryDataWrapper      mFirstEntry = null;
-    
-    //------------------------------------------------------------------------
-    
-    /** init() must be called to complete construction */
-    public PageModel() {}
-    
-    /**
-     * Initialize PageModel and allow PageModel to initialized VelocityContext.
-     * @param rreq
-     * @param ctx
-     */
-    public void init(RollerRequest rreq) {
-        mRollerReq = rreq;
-        if ( rreq.getRequest().getAttribute(RollerRequest.OWNING_WEBSITE) != null) {
-            mWebsite = (WebsiteData)
-            rreq.getRequest().getAttribute(RollerRequest.OWNING_WEBSITE);
-            mHandle = mWebsite.getHandle();
-        } else if ( rreq.getWebsite() != null ) {
-            mWebsite = rreq.getWebsite();
-            mHandle = mWebsite.getHandle();
-        }
-        
-        try {
-            mBookmarkMgr = RollerFactory.getRoller().getBookmarkManager();
-            mRefererMgr  = RollerFactory.getRoller().getRefererManager();
-            mUserMgr     = RollerFactory.getRoller().getUserManager();
-            mWeblogMgr   = RollerFactory.getRoller().getWeblogManager();
-            
-            // Preload what we can for encapsulation.  What we cannot preload we
-            // will use the Managers later to fetch.
-            
-            // Get the pages, put into context & load map
-            if (mWebsite != null) {
-                // if we have website from RollerRequest, use it
-                mWebsite = rreq.getWebsite();
-                
-                // Get the pages, put into context & load map
-                List pages = mWebsite.getPages();
-                Iterator pageIter = pages.iterator();
-                while (pageIter.hasNext()) {
-                    Template page = (Template) pageIter.next();
-                    mPageMap.put(page.getName(), TemplateWrapper.wrap(page));
-                }
-            }
-        } catch (RollerException e) {
-            mLogger.error("PageModel Roller get*Manager Exception", e);
-        }
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates folder.getBookmarks() & sorting */
-    public Collection getBookmarks(FolderDataWrapper folder) {
-        Collection bookmarks = null;
-        if (folder != null) {
-            mLogger.debug("Getting bookmarks for folder : "+folder.getName());
-
-            // since we already have a wrapped pojo we know the output
-            // will be wrapped as well :)
-            bookmarks = folder.getBookmarks();
-
-            // TODO: need to setup new BookmarkWrapperComparator
-            //List mBookmarks = new ArrayList(bookmarks);
-            //Collections.sort( mBookmarks, new BookmarkComparator() );
-        }
-        return bookmarks;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Get top level bookmark folders. */
-    public Collection getTopLevelFolders() {
-        List tops = null;
-        try {
-            Collection mTops = mBookmarkMgr.getRootFolder(
-                    mUserMgr.getWebsiteByHandle(mHandle)).getFolders();
-            
-            // wrap pojos
-            tops = new ArrayList(mTops.size());
-            Iterator it = mTops.iterator();
-            int i=0;
-            while(it.hasNext()) {
-                tops.add(i, FolderDataWrapper.wrap((FolderData) it.next()));
-                i++;
-            }
-        } catch (RollerException e) {
-            tops = new ArrayList();
-        }
-        return tops;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Get number of approved non-spam comments for entry */
-    public int getCommentCount(String entryId) {
-        return getCommentCount(entryId, true, true);
-    }
-    
-    /** Get number of approved non-spam comments for entry */
-    public int getCommentCount(String entryId, boolean noSpam, boolean approvedOnly) {
-        try {
-            WeblogEntryData entry = mWeblogMgr.getWeblogEntry(entryId);
-            return entry.getComments(noSpam, approvedOnly).size();
-        } catch (RollerException alreadyLogged) {}
-        return 0;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Get comments for weblog entry specified by request */
-    public List getComments(WeblogEntryDataWrapper entry) {
-        return getComments(entry, true, true);
-    }
-    
-    /** Get comments for weblog entry specified by request */
-    public List getComments(WeblogEntryDataWrapper wrapper, boolean noSpam, boolean approvedOnly) {
-        WeblogEntryData entry = wrapper.getPojo();
-        List comments = new ArrayList();
-        List unwrappped = entry.getComments(noSpam, approvedOnly);
-        comments = new ArrayList(unwrappped.size());
-        Iterator it = unwrappped.iterator();
-        while(it.hasNext()) {
-            comments.add(CommentDataWrapper.wrap((CommentData)it.next()));
-        }
-        return comments;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates RefererManager */
-    public int getDayHits() {
-        try {
-            return mRefererMgr.getDayHits(mRollerReq.getWebsite());
-        } catch (RollerException e) {
-            mLogger.error("PageModel getDayHits()", e);
-        }
-        return 0;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates BookmarkManager.getFolder() */
-    public FolderDataWrapper getFolder(String folderPath) {
-        try {
-            return FolderDataWrapper.wrap(
-                    mBookmarkMgr.getFolder(
-                    mUserMgr.getWebsiteByHandle(mHandle), folderPath));
-        } catch (RollerException e) {
-            mLogger.error("PageModel getFolder()", e);
-        }
-        return null;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates UserManager.getPageByName() */
-    public TemplateWrapper getUsersPageByName(WebsiteDataWrapper wrapper, String pageName) {
-        WebsiteData website = wrapper.getPojo();
-        TemplateWrapper page = null;
-        try {
-            if (website == null)
-                throw new NullPointerException("website is null");
-            
-            if (pageName == null)
-                throw new NullPointerException("pageName is null");
-            
-            page = TemplateWrapper.wrap(website.getPageByName(pageName));
-        } catch (NullPointerException npe) {
-            mLogger.warn(npe.getMessage());
-        } catch (RollerException e) {
-            mLogger.error("ERROR getting user's page by name: " + e.getMessage(),e);
-        }
-        return page;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates UserManager.getPageByName() */
-    public TemplateWrapper getPageByName(String pageName) {
-        return (TemplateWrapper) mPageMap.get(pageName);
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates UserManager.getPageByName() */
-    public String getPageIdByName(String pageName) {
-        mLogger.debug("looking up page ["+pageName+"]");
-        
-        String template_id = null;
-        
-        try {
-            Template pd = mWebsite.getPageByName(pageName);
-            if(pd != null) {
-                template_id = pd.getId();
-            }
-        } catch(Exception e) {
-            mLogger.error(e);
-        }
-        
-        mLogger.debug("returning template id ["+template_id+"]");
-        
-        return template_id;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /**
-     * Get collection of user pages.
-     * @return
-     */
-    public Object getPages() {
-        return mPageMap.values();
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /**
-     * Returns a map of up to 100 recent weblog entries for the user and day
-     * specified in the request, filtered by the category specified by the
-     * request, limited by the 'maxEntries' argument, and sorted by reverse
-     * chronological order.
-     *
-     * <p>This method will look for a category name in the following places
-     * and in the following order:</p>
-     * <ul>
-     * <li>The request via RollerRequest.getWeblogCategory().</li>
-     * <li>The categoryName argument to this method.</li>
-     * <li>The default category for the website specified by the request via
-     *     RollerRequest.getWebsite().getDefaultCategory().</li>
-     * <li></li>
-     * </ul>
-     *
-     * @param maxEntries Maximum number of entries to be returned (only applies 
-     *                   if specific day not specified).
-     * @param catName    Only return entries from this category and it's
-     *                   subcategories. If null, returns all categories of entry
-     * @return           Map of Lists of WeblogEntryData, keyed by 8-char date 
-     *                   strings.
-     */
-    public Map getRecentWeblogEntries(int maxEntries, String catName) {
-        if (VELOCITY_NULL.equals(catName)) catName = null;
-        Map ret = new HashMap();
-        try {            
-            // If request specifies a category, then use that
-            String catParam = null;
-            if (mRollerReq.getWeblogCategory() != null) {
-                catParam = mRollerReq.getWeblogCategory().getPath();
-            } else if (catName != null) {
-                // use category argument instead
-                catParam = catName;
-            } else if (mRollerReq.getWebsite() != null) // MAIN
-            {
-                catParam = mRollerReq.getWebsite().getDefaultCategory().getPath();
-                if (catParam.equals("/")) {
-                    catParam = null;
-                }
-            }
-            
-            Calendar cal = null;
-            if (mRollerReq.getWebsite() != null) {
-                TimeZone tz = mRollerReq.getWebsite().getTimeZoneInstance();
-                cal = Calendar.getInstance(tz);
-            } else {
-                cal = Calendar.getInstance();
-            }
-            int limit = maxEntries;
-            Date startDate = null;
-            Date endDate = mRollerReq.getDate();
-            if (endDate == null) endDate = new Date();
-            if (mRollerReq.isDaySpecified()) { 
-                // URL specified a specific day
-                // so get entries for that day
-                endDate = DateUtil.getEndOfDay(endDate, cal);
-                startDate = DateUtil.getStartOfDay(endDate, cal); 
-                // and get them ALL, no limit
-                limit = Integer.MAX_VALUE;                  
-            } else if (mRollerReq.isMonthSpecified()) {
-                endDate = DateUtil.getEndOfMonth(endDate, cal);
-            }
-            Map mRet = RollerFactory.getRoller().getWeblogManager().getWeblogEntryObjectMap(
-                    mRollerReq.getWebsite(),
-                    startDate,                    // startDate
-                    endDate,                      // endDate
-                    catParam,                     // catName
-                    WeblogEntryData.PUBLISHED);    // status
-            
-            // need to wrap pojos
-            java.util.Date key = null;
-            Iterator days = mRet.keySet().iterator();
-            while(days.hasNext()) {
-                key = (java.util.Date)days.next();
-                
-                // now we need to go through each entry in a day and wrap
-                List wrappedEntries = new ArrayList();
-                List entries = (List) mRet.get(key);
-                for(int i=0; i < entries.size(); i++) {
-                    wrappedEntries.add(i,
-                         WeblogEntryDataWrapper.wrap((WeblogEntryData)entries.get(i)));
-                }
-                mRet.put(key, wrappedEntries);
-            }
-            
-            ret = mRet;
-            
-            setFirstAndLastEntries( ret );
-        } catch (Exception e) {
-            mLogger.error("PageModel getRecentWeblogEntries()", e);
-        }
-        return ret;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /**
-     * Pull the last WeblogEntryData out of the Map.
-     * @param ret
-     */
-    private void setFirstAndLastEntries(Map days) {
-        int numDays = days.keySet().size();
-        if (numDays > 0) // there is at least one day
-        {
-            // get first entry in map
-            Object[] keys = days.keySet().toArray(new Object[numDays]);
-            List vals = (List)days.get( keys[0] );
-            int valSize = vals.size();
-            if (valSize > 0) {
-                mFirstEntry = (WeblogEntryDataWrapper)vals.get(0);
-            }
-            
-            // get last entry in map
-            vals = (List)days.get( keys[--numDays] );
-            valSize = vals.size();
-            if (valSize > 0) {
-                mLastEntry = (WeblogEntryDataWrapper)vals.get(--valSize);
-            }
-        }
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /**
-     * Returns list of recent weblog entries for the user and day specified in
-     * the request, filtered by the category specified by the request, limited
-     * by the 'maxEntries' argument, and sorted by reverse chronological order.
-     *
-     * <p>This method will look for a category name in the same places and
-     * same order as does the getRecentWeblogEntries() method.</p>
-     *
-     * @param maxEntries   Maximum number of entries to be returned.
-     * @param categoryName Only return entries from this category and it's
-     *         subcategories. If null, returns all categories of entry.
-     * @return List of WeblogEntryData objects in revese chronological order.
-     */
-    public List getRecentWeblogEntriesArray(int maxEntries, String categoryName) {
-        if (VELOCITY_NULL.equals(categoryName)) categoryName = null;
-        List ret = new ArrayList();
-        try {
-            Date day = mRollerReq.getDate();
-            if (day == null) day = new Date();
-            
-            // If request specifies a category, then use that
-            String catParam = null;
-            if (mRollerReq.getWeblogCategory() != null) {
-                catParam = mRollerReq.getWeblogCategory().getPath();
-            } else if (categoryName != null) {
-                // use category argument instead
-                catParam = categoryName;
-            } else if (mRollerReq.getWebsite() != null) // MAIN
-            {
-                catParam = mRollerReq.getWebsite().getDefaultCategory().getPath();
-                if (catParam.equals("/")) {
-                    catParam = null;
-                }
-            }
-            WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
-            
-            //ret = mgr.getRecentWeblogEntriesArray(
-            //name, day, catParam, maxEntries, true );
-            
-            List mEntries = mgr.getWeblogEntries(
-                    mRollerReq.getWebsite(),
-                    null,
-                    null,                        // startDate
-                    day,                         // endDate
-                    catParam,                    // catName
-                    WeblogEntryData.PUBLISHED,   // status
-                    null,                        // sortby (null for pubTime)
-                    0, maxEntries);    // maxEntries
-            
-            // wrap pojos
-            ret = new ArrayList(mEntries.size());
-            Iterator it = mEntries.iterator();
-            int i=0;
-            while(it.hasNext()) {
-                ret.add(i, WeblogEntryDataWrapper.wrap((WeblogEntryData) it.next()));
-                i++;
-            }
-        } catch (Exception e) {
-            mLogger.error("PageModel getRecentWeblogEntries()", e);
-        }
-        return ret;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates RefererManager **/
-    public List getReferers(String date) {
-        date = date.trim();
-        ArrayList referers = new ArrayList();
-        try {
-            List refs =
-                    mRefererMgr.getReferersToDate(mRollerReq.getWebsite(), date);
-            RollerSession rses =
-                    RollerSession.getRollerSession(mRollerReq.getRequest());
-            
-            for (Iterator rdItr = refs.iterator(); rdItr.hasNext();) {
-                RefererData referer = (RefererData) rdItr.next();
-                String title =referer.getTitle();
-                String excerpt = referer.getExcerpt();
-                if (   StringUtils.isNotEmpty(title)
-                && StringUtils.isNotEmpty(excerpt) ) {
-                    if (   referer.getVisible().booleanValue()
-                    || rses.isUserAuthorizedToAdmin(referer.getWebsite()) ) {
-                        referers.add(RefererDataWrapper.wrap(referer));
-                    }
-                }
-            }
-            
-        } catch (Exception e) {
-            mLogger.error("PageModel getReferersToDate() fails with URL"
-                    + mRollerReq.getRequestURL(), e);
-        }
-        return referers;
-    }
-    
-    /** Encapsulates RefererManager **/
-    public List getEntryReferers(WeblogEntryDataWrapper entry) {
-        ArrayList referers = new ArrayList();
-        try {
-            List refs = mRefererMgr.getReferersToEntry(entry.getId());
-            RollerSession rses =
-               RollerSession.getRollerSession(mRollerReq.getRequest());
-            
-            for (Iterator rdItr = refs.iterator(); rdItr.hasNext();) {
-                RefererData referer = (RefererData) rdItr.next();
-                String title =referer.getTitle();
-                String excerpt = referer.getExcerpt();
-                if (   StringUtils.isNotEmpty(title)
-                && StringUtils.isNotEmpty(excerpt) ) {
-                    if (referer.getVisible().booleanValue()
-                    || rses.isUserAuthorizedToAdmin(referer.getWebsite()) ) {
-                        referers.add(RefererDataWrapper.wrap(referer));
-                    }
-                }
-            }
-            
-        } catch (Exception e) {
-            mLogger.error("PageModel getReferersToDate() fails with URL"
-                    + mRollerReq.getRequestURL(), e);
-        }
-        return referers;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates RefererManager */
-    public List getTodaysReferers() {
-        List referers = null;
-        try {
-            List mReferers = mRefererMgr.getTodaysReferers(mRollerReq.getWebsite());
-            
-            // wrap pojos
-            referers = new ArrayList(mReferers.size());
-            Iterator it = mReferers.iterator();
-            int i=0;
-            while(it.hasNext()) {
-                referers.add(i, RefererDataWrapper.wrap((RefererData) it.next()));
-                i++;
-            }
-            
-        } catch (RollerException e) {
-            mLogger.error("PageModel getTodaysReferers()", e);
-        }
-        return (referers == null ? Collections.EMPTY_LIST : referers);
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates RefererManager */
-    public int getTotalHits() {
-        try {
-            return mRefererMgr.getTotalHits(mRollerReq.getWebsite());
-        } catch (RollerException e) {
-            mLogger.error("PageModel getTotalHits()", e);
-        }
-        return 0;
-    }
-    
-    //------------------------------------------------------------------------
-    /**
-     * Returns most recent update time of collection of weblog entries.
-     * @param weblogEntries Collection of weblog entries.
-     * @return Most recent update time.
-     */
-    public static Date getUpdateTime( ArrayList weblogEntries ) {
-        Date updateTime = null;
-        Iterator iter = weblogEntries.iterator();
-        while (iter.hasNext()) {
-            // NOTE: this will need to be WeblogEntryDataWrapper
-            WeblogEntryData wd = (WeblogEntryData)iter.next();
-            if ( updateTime == null ) {
-                updateTime = wd.getUpdateTime();
-            }
-            //else if ( updateTime.compareTo(wd.getUpdateTime()) < 0 )
-            else if (updateTime.before( wd.getUpdateTime() )) {
-                updateTime = wd.getUpdateTime();
-            }
-        }
-        return updateTime;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates WeblogManager.getWeblogCategories() */
-    public List getWeblogCategories(String categoryName) {
-        List ret = null;
-        if (VELOCITY_NULL.equals(categoryName)) categoryName = null;
-        
-        // Make sure we have not already fetched this category.
-        if (categoryName != null) {
-            ret = (List)mCategories.get(categoryName);
-        } else {
-            ret = (List)mCategories.get("zzz_null_zzz");
-        }
-        
-        if (null == ret) {
-            try {
-                WeblogCategoryData category = null;
-                if (categoryName != null) {
-                    category = mWeblogMgr.getWeblogCategoryByPath(
-                            mRollerReq.getWebsite(), null, categoryName);
-                } else {
-                    category = mRollerReq.getWebsite().getDefaultCategory();
-                }
-                
-                List mRet = category.getWeblogCategories();
-                
-                // wrap pojos
-                ret = new ArrayList(mRet.size());
-                Iterator it = mRet.iterator();
-                int i=0;
-                while(it.hasNext()) {
-                    ret.add(i, WeblogCategoryDataWrapper.wrap((WeblogCategoryData)it.next()));
-                    i++;
-                }
-                if (categoryName != null) {
-                    mCategories.put(categoryName, ret);
-                } else {
-                    mCategories.put("zzz_null_zzz", ret);
-                }
-            } catch (RollerException e) {
-                mLogger.error(e);
-            }
-        }
-        return ret;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /** Encapsulates RollerRequest.getWeblogEntry() */
-    public WeblogEntryDataWrapper getWeblogEntry() {
-        WeblogEntryData entry = mRollerReq.getWeblogEntry();
-        
-        if(entry != null && entry.getStatus().equals(WeblogEntryData.PUBLISHED))
-            return WeblogEntryDataWrapper.wrap(entry);
-        else
-            return null;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /**
-     * Get the next occurring Entry.
+public interface PageModel {    
+    /** 
+     * Name to be used for the model in template context. 
      */
-    public WeblogEntryDataWrapper getNextEntry() {
-        WeblogEntryDataWrapper currentEntry = getWeblogEntry();
-        if (mFirstEntry != null) currentEntry = mFirstEntry;
-        if (mNextEntry == null && currentEntry != null) {
-            String catName = null;
-            if (mRollerReq.getWeblogCategory() != null) {
-                catName = mRollerReq.getWeblogCategory().getName();
-            }
-            try {
-                WeblogEntryData nextEntry =
-                        mWeblogMgr.getNextEntry(currentEntry.getPojo(), catName);
-                
-                if(nextEntry != null)
-                    mNextEntry = WeblogEntryDataWrapper.wrap(nextEntry);
-                
-                // make sure that mNextEntry is not published to future
-                if (mNextEntry != null &&
-                        mNextEntry.getPubTime().after( new Date() )) {
-                    mNextEntry = null;
-                }
-            } catch (RollerException e) {
-                mLogger.error("PageModel.getNextEntry)", e);
-            }
-        }
-        return mNextEntry;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    /**
-     * Get the previous occurring Entry.
-     */
-    public WeblogEntryDataWrapper getPreviousEntry() {
-        WeblogEntryDataWrapper currentEntry = getWeblogEntry();
-        if (mLastEntry != null) currentEntry = mLastEntry;
-        if (mPreviousEntry == null && currentEntry != null ) {
-            String catName = null;
-            if (mRollerReq.getWeblogCategory() != null) {
-                catName = mRollerReq.getWeblogCategory().getName();
-            }
-            try {
-                WeblogEntryData prevEntry =
-                        mWeblogMgr.getPreviousEntry(currentEntry.getPojo(), catName);
-                
-                if(prevEntry != null)
-                    mPreviousEntry = WeblogEntryDataWrapper.wrap(prevEntry);
-            } catch (RollerException e) {
-                mLogger.error("PageModel.getPreviousEntry)", e);
-            }
-        }
-        return mPreviousEntry;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    public boolean isUserAuthorizedToEdit() {
-        try {
-            RollerSession rses =
-                    RollerSession.getRollerSession(mRollerReq.getRequest());
-            if (rses.getAuthenticatedUser() != null
-                    && mRollerReq.getWebsite() != null) {
-                return rses.isUserAuthorizedToAuthor(mRollerReq.getWebsite());
-            }
-        } catch (Exception e) {
-            mLogger.warn("PageModel.isUserAuthorizedToEdit()", e);
-        }
-        return false;
-    }
-    
-    //------------------------------------------------------------------------
+    public String getModelName();
     
-    public boolean isUserAuthorizedToAdmin() {
-        try {
-            RollerSession rses =
-                    RollerSession.getRollerSession(mRollerReq.getRequest());
-            if (rses.getAuthenticatedUser() != null
-                    && mRollerReq.getWebsite() != null) {
-                return rses.isUserAuthorizedToAdmin(mRollerReq.getWebsite());
-            }
-        } catch (Exception e) {
-            mLogger.warn("PageModel.isUserAuthorizedToAdmin()", e);
-        }
-        return false;
-    }
-    
-    //------------------------------------------------------------------------
-    
-    public boolean isUserAuthenticated() {
-        return (mRollerReq.getRequest().getUserPrincipal() != null);
-    }
-    
-    //------------------------------------------------------------------------
-    
-    public String getRequestParameter(String key) {
-        return mRollerReq.getRequest().getParameter(key);
-    }
-    
-    public int getIntRequestParameter(String key) {
-        return Integer.parseInt(mRollerReq.getRequest().getParameter(key));
-    }
-    
-    //------------------------------------------------------------------------
-    
-    public FolderDataWrapper getFolderByPath(String path) {
-        try {
-            FolderData folder = mBookmarkMgr.getFolderByPath(
-                    mWebsite, null, path);
-            
-            if(folder != null)
-                return FolderDataWrapper.wrap(folder);
-        } catch (RollerException e) {
-            mLogger.error(e);
-        }
-        
-        return null;
-    }
-    
-    /**
-     * Facade for WeblogManager.getRecentComments().
-     * Get the most recent (chronologically) posted Comments
-     * for this website, limited to maxCount.
-     * @return List of Comments.
+    /** 
+     * Initialize via request and Velocity Context.
      */
-    public List getRecentComments(int maxCount) {
-        List recentComments = new ArrayList();
-        try {
-            WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
-            List recent = wmgr.getComments(
-                    mWebsite,
-                    null,  // weblog entry
-                    null,  // search String
-                    null,  // startDate
-                    null,  // endDate
-                    null,  // pending
-                    Boolean.TRUE,  // approved only
-                    Boolean.FALSE, // no spam
-                    true,          // we want reverse chrono order
-                    0,             // offset
-                    maxCount);     // no limit
-            
-            // wrap pojos
-            recentComments = new ArrayList(recent.size());
-            Iterator it = recent.iterator();
-            while(it.hasNext()) {
-                recentComments.add(CommentDataWrapper.wrap((CommentData) it.next()));
-            }
-        } catch (RollerException e) {
-            mLogger.error(e);
-        }
-        return recentComments;
-    }
-    
-    public boolean getEmailComments() {
-        if (mRollerReq != null) {
-            WebsiteData website = mRollerReq.getWebsite();
-            if (website != null) {
-                boolean emailComments = RollerRuntimeConfig.getBooleanProperty("users.comments.emailnotify");        
-                return (website.getEmailComments().booleanValue() && emailComments);
-            }
-        }
-        return false;
-    }
+    public void init(HttpServletRequest request);
 }

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PlanetPageModel.java Thu Jun  8 08:32:53 2006
@@ -22,6 +22,7 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
+import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.model.PlanetManager;
@@ -37,9 +38,17 @@
  * Page model that provides access to planet aggregations, feeds and 
  * subscriptions for display on a frontpage weblog.
  */
-public class PlanetPageModel {
+public class PlanetPageModel implements PageModel {
     protected static Log log = 
             LogFactory.getFactory().getInstance(PlanetPageModel.class);
+    
+    public String getModelName() {
+        return "planetPageModel";
+    }
+    
+    public void init(HttpServletRequest request) {
+        // no-op for now
+    } 
     
     /**
      * Get move recent PlanetEntry objects from 'all' and

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/SitePageModel.java Thu Jun  8 08:32:53 2006
@@ -24,6 +24,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.model.RefererManager;
@@ -46,10 +47,18 @@
  * Page model that provides access to site-wide users, weblogs and entries for
  * display on a frontpage weblog.
  */
-public class SitePageModel {
+public class SitePageModel implements PageModel {
     protected static Log log = 
             LogFactory.getFactory().getInstance(SitePageModel.class);
     
+    public String getModelName() {
+        return "sitePageModel";
+    }
+        
+    public void init(HttpServletRequest request) {
+        // no-op for now
+    }
+    
     /**
      * Get most collection of Website objects,
      * in reverse chrono order by creationDate.
@@ -178,9 +187,9 @@
      */
     public List getWeblogEntries(String handle, String userName, String cat, int sinceDays, int offset, int length) {
         List results = new ArrayList();
-        if (handle.equals(PageModel.VELOCITY_NULL)) handle = null;
-        if (userName.equals(PageModel.VELOCITY_NULL)) userName = null;
-        if (cat.equals(PageModel.VELOCITY_NULL)) cat = null;
+        if (handle.equals(WeblogPageModel.VELOCITY_NULL)) handle = null;
+        if (userName.equals(WeblogPageModel.VELOCITY_NULL)) userName = null;
+        if (cat.equals(WeblogPageModel.VELOCITY_NULL)) cat = null;
         Calendar cal = Calendar.getInstance();
         cal.setTime(new Date());
         cal.add(Calendar.DATE, -1 * sinceDays);

Copied: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/WeblogPageModel.java (from r412622, incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java)
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/WeblogPageModel.java?p2=incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/WeblogPageModel.java&p1=incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java&r1=412622&r2=412777&rev=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/PageModel.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/velocity/WeblogPageModel.java Thu Jun  8 08:32:53 2006
@@ -27,6 +27,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
+import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -55,18 +56,16 @@
 import org.apache.roller.ui.core.RollerSession;
 import org.apache.roller.util.DateUtil;
 import org.apache.roller.util.StringUtils;
+import org.apache.velocity.context.Context;
 
 /**
  * Provides Roller page templates with access to Roller domain model objects.
- *
- * @author llavandowska
- * @author David M Johnson
  */
-public class PageModel {
+public class WeblogPageModel implements PageModel {
     public final static String VELOCITY_NULL = "nil";
     
     protected static Log mLogger =
-            LogFactory.getFactory().getInstance(PageModel.class);
+            LogFactory.getFactory().getInstance(WeblogPageModel.class);
     
     private BookmarkManager      mBookmarkMgr = null;
     private WeblogManager        mWeblogMgr = null;
@@ -86,21 +85,23 @@
     //------------------------------------------------------------------------
     
     /** init() must be called to complete construction */
-    public PageModel() {}
+    public WeblogPageModel() {}
+    
+    public String getModelName() {
+        return "pageModel";
+    }
     
     /**
      * Initialize PageModel and allow PageModel to initialized VelocityContext.
-     * @param rreq
-     * @param ctx
      */
-    public void init(RollerRequest rreq) {
-        mRollerReq = rreq;
-        if ( rreq.getRequest().getAttribute(RollerRequest.OWNING_WEBSITE) != null) {
+    public void init(HttpServletRequest request) {
+        mRollerReq = RollerRequest.getRollerRequest(request);
+        if ( request.getAttribute(RollerRequest.OWNING_WEBSITE) != null) {
             mWebsite = (WebsiteData)
-            rreq.getRequest().getAttribute(RollerRequest.OWNING_WEBSITE);
+            request.getAttribute(RollerRequest.OWNING_WEBSITE);
             mHandle = mWebsite.getHandle();
-        } else if ( rreq.getWebsite() != null ) {
-            mWebsite = rreq.getWebsite();
+        } else if ( mRollerReq.getWebsite() != null ) {
+            mWebsite = mRollerReq.getWebsite();
             mHandle = mWebsite.getHandle();
         }
         
@@ -116,7 +117,7 @@
             // Get the pages, put into context & load map
             if (mWebsite != null) {
                 // if we have website from RollerRequest, use it
-                mWebsite = rreq.getWebsite();
+                mWebsite = mRollerReq.getWebsite();
                 
                 // Get the pages, put into context & load map
                 List pages = mWebsite.getPages();
@@ -126,6 +127,9 @@
                     mPageMap.put(page.getName(), TemplateWrapper.wrap(page));
                 }
             }
+            
+            
+            
         } catch (RollerException e) {
             mLogger.error("PageModel Roller get*Manager Exception", e);
         }

Modified: incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties?rev=412777&r1=412776&r2=412777&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties Thu Jun  8 08:32:53 2006
@@ -186,10 +186,9 @@
 velocity.properties=/WEB-INF/velocity.properties
 velocity.toolbox.file=/WEB-INF/toolbox.xml
 
-# Page model implementation
-velocity.pagemodel.classname=org.apache.roller.ui.rendering.velocity.PageModel
-# Experimental page model that allows user's access to Planet aggregations
-#velocity.pagemodel.classname=org.apache.roller.presentation.velocity.planet.PlanetPageModel
+# Page model implementation. You can plugin your own but it must 
+# must implement org.apache.roller.ui.rendering.velocity.PageModel
+velocity.pagemodel.classname=org.apache.roller.ui.rendering.velocity.WeblogPageModel
 
 #----------------------------------
 # Persistence settings