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/06/05 01:39:10 UTC

svn commit: r544327 - in /roller/trunk/apps/weblogger: src/java/org/apache/roller/weblogger/ui/struts2/editor/ src/java/org/apache/roller/weblogger/ui/struts2/pagers/ web/WEB-INF/jsps/editor/

Author: agilliland
Date: Mon Jun  4 16:39:09 2007
New Revision: 544327

URL: http://svn.apache.org/viewvc?view=rev&rev=544327
Log:
adding back paging controls on entry management action which went missing during struts2 migration.


Added:
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/EntriesPager.java
Modified:
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
    roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntriesBean.java
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/Entries.jsp

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java?view=diff&rev=544327&r1=544326&r2=544327
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java Mon Jun  4 16:39:09 2007
@@ -18,9 +18,12 @@
 
 package org.apache.roller.weblogger.ui.struts2.editor;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
@@ -29,8 +32,10 @@
 import org.apache.roller.weblogger.pojos.WeblogCategory;
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
+import org.apache.roller.weblogger.ui.struts2.pagers.EntriesPager;
 import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.roller.weblogger.util.URLUtilities;
 
 
 /**
@@ -40,11 +45,14 @@
     
     private static Log log = LogFactory.getLog(Entries.class);
     
+    // number of comments to show per page
+    private static final int COUNT = 30;
+    
     // bean for managing submitted data
     private EntriesBean bean = new EntriesBean();
     
-    // list of entries to display
-    private List<WeblogEntry> entries = Collections.EMPTY_LIST;
+    // pager for the entries we are viewing
+    private EntriesPager pager = null;
     
     // first entry in the list
     private WeblogEntry firstEntry = null;
@@ -52,9 +60,6 @@
     // last entry in the list
     private WeblogEntry lastEntry = null;
     
-    // are there more results for the query?
-    private boolean moreResults = false;
-    
     
     public Entries() {
         this.actionName = "entries";
@@ -75,11 +80,13 @@
             log.debug("entries bean is ...\n"+getBean().toString());
         }
         
+        List<WeblogEntry> entries = null;
+        boolean hasMore = false;
         try {
             String status = getBean().getStatus();
             
             WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
-            List<WeblogEntry> entries = wmgr.getWeblogEntries(
+            entries = wmgr.getWeblogEntries(
                     getActionWeblog(),
                     null,
                     getBean().getStartDate(),
@@ -91,18 +98,17 @@
                     getBean().getSortBy(),
                     null,
                     null,
-                    getBean().getOffset(),
-                    getBean().getCount() + 1);
+                    getBean().getPage() * COUNT,
+                    COUNT + 1);
             
             if(entries != null && entries.size() > 0) {
                 log.debug("query found "+entries.size()+" results");
                 
-                if(entries.size() > getBean().getCount()) {
+                if(entries.size() > COUNT) {
                     entries.remove(entries.size()-1);
-                    setMoreResults(true);
+                    hasMore = true;
                 }
                 
-                setEntries(entries);
                 setFirstEntry((WeblogEntry)entries.get(0));
                 setLastEntry((WeblogEntry)entries.get(entries.size()-1));
             }
@@ -112,10 +118,51 @@
             addError("Error looking up entries");
         }
         
+        // build entries pager
+        String baseUrl = buildBaseUrl();
+        setPager(new EntriesPager(baseUrl, getBean().getPage(), entries, hasMore));
+                
         return LIST;
     }
     
     
+    // use the action data to build a url representing this action, including query data
+    private String buildBaseUrl() {
+        
+        Map<String, String> params = new HashMap();
+        
+        SimpleDateFormat dojoFormat = new SimpleDateFormat("yyyy-MM-dd", getLocale());
+        SimpleDateFormat stdFormat = new SimpleDateFormat("MM/dd/yy", getLocale());
+        
+        if(!StringUtils.isEmpty(getBean().getCategoryPath())) {
+            params.put("bean.categoryPath", getBean().getCategoryPath());
+        }
+        if(!StringUtils.isEmpty(getBean().getTagsAsString())) {
+            params.put("bean.tagsAsString", getBean().getTagsAsString());
+        }
+        if(!StringUtils.isEmpty(getBean().getText())) {
+            params.put("bean.text", getBean().getText());
+        }
+        if(getBean().getStartDate() != null) {
+            params.put("bean.startDate", stdFormat.format(getBean().getStartDate()));
+            params.put("dojo.bean.startDate", dojoFormat.format(getBean().getStartDate()));
+        }
+        if(getBean().getEndDate() != null) {
+            params.put("bean.endDate", stdFormat.format(getBean().getEndDate()));
+            params.put("dojo.bean.endDate", dojoFormat.format(getBean().getEndDate()));
+        }
+        if(!StringUtils.isEmpty(getBean().getStatus())) {
+            params.put("bean.status", getBean().getStatus());
+        }
+        if(!StringUtils.isEmpty(getBean().getSortBy())) {
+            params.put("bean.sortBy", getBean().getSortBy());
+        }
+        
+        return URLUtilities.getActionURL("entries", "/roller-ui/authoring", 
+                getActionWeblog().getHandle(), params, false);
+    }
+    
+    
     public List<WeblogCategory> getCategories() {
         // make list of categories with first option being being a transient
         // category just meant to represent the default option of any category
@@ -162,14 +209,6 @@
         this.bean = bean;
     }
 
-    public List<WeblogEntry> getEntries() {
-        return entries;
-    }
-
-    public void setEntries(List<WeblogEntry> entries) {
-        this.entries = entries;
-    }
-
     public WeblogEntry getFirstEntry() {
         return firstEntry;
     }
@@ -186,12 +225,12 @@
         this.lastEntry = lastEntry;
     }
 
-    public boolean isMoreResults() {
-        return moreResults;
+    public EntriesPager getPager() {
+        return pager;
     }
 
-    public void setMoreResults(boolean moreResults) {
-        this.moreResults = moreResults;
+    public void setPager(EntriesPager pager) {
+        this.pager = pager;
     }
     
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntriesBean.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntriesBean.java?view=diff&rev=544327&r1=544326&r2=544327
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntriesBean.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntriesBean.java Mon Jun  4 16:39:09 2007
@@ -35,12 +35,7 @@
     private String text = null;
     private String status = "ALL";
     private String sortBy = "updateTime";
-    
-    /** max entries displayed per page */
-    private int count = 30;
-    
-    /** offset into current query results */
-    private int offset = 0;
+    private int page = 0;
     
     
     public EntriesBean() {
@@ -112,20 +107,12 @@
         this.sortBy = sortBy;
     }
     
-    public int getCount() {
-        return count;
-    }
-    
-    public void setCount(int count) {
-        this.count = count;
+    public int getPage() {
+        return page;
     }
-    
-    public int getOffset() {
-        return offset;
-    }
-    
-    public void setOffset(int offset) {
-        this.offset = offset;
+
+    public void setPage(int page) {
+        this.page = page;
     }
     
     
@@ -139,8 +126,7 @@
         buf.append("catPath = ").append(getCategoryPath()).append("\n");
         buf.append("tags = ").append(getTagsAsString()).append("\n");
         buf.append("text = ").append(getText()).append("\n");
-        buf.append("offset = ").append(getOffset()).append("\n");
-        buf.append("count = ").append(getCount()).append("\n");
+        buf.append("page = ").append(getPage()).append("\n");
         
         return buf.toString();
     }

Added: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/EntriesPager.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/EntriesPager.java?view=auto&rev=544327
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/EntriesPager.java (added)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/pagers/EntriesPager.java Mon Jun  4 16:39:09 2007
@@ -0,0 +1,100 @@
+/*
+ * 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.ui.struts2.pagers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.weblogger.pojos.WeblogEntry;
+import org.apache.roller.weblogger.util.URLUtilities;
+
+
+/**
+ * Paging through a collection of entries.
+ */
+public class EntriesPager {
+    
+    private static final Log log = LogFactory.getLog(EntriesPager.class);
+    
+    // the collection for the pager
+    private final List<WeblogEntry> items;
+    
+    // base url for the pager
+    private final String baseUrl;
+    
+    // what page we are on
+    private final int pageNum;
+    
+    // are there more items?
+    private final boolean moreItems;
+    
+    
+    public EntriesPager(String url, int page, List<WeblogEntry> entries, boolean hasMore) {
+        this.baseUrl = url;
+        this.pageNum = page;
+        this.items = entries;
+        this.moreItems = hasMore;
+    }
+    
+    
+    public String getNextLink() {
+        if(isMoreItems()) {
+            int nextPage = pageNum + 1;
+            Map<String, String> params = new HashMap();
+            params.put("bean.page", ""+nextPage);
+            return createURL(baseUrl, params);
+        }
+        return null;
+    }
+    
+    
+    public String getPrevLink() {
+        if (pageNum > 0) {
+            int prevPage = pageNum - 1;
+            Map<String, String> params = new HashMap();
+            params.put("bean.page", ""+prevPage);
+            return createURL(baseUrl, params);
+        }
+        return null;
+    }
+    
+    
+    private String createURL(String base, Map<String, String> params) {
+        String qString = URLUtilities.getQueryString(params);
+        
+        if(base.indexOf("?") != -1) {
+            // if base url already has params them just append our query string
+            return base + "&" + qString.substring(1);
+        } else {
+            return base + qString;
+        }
+    }
+    
+    
+    public List<WeblogEntry> getItems() {
+        return items;
+    }
+
+    public boolean isMoreItems() {
+        return moreItems;
+    }
+    
+}

Modified: roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/Entries.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/Entries.jsp?view=diff&rev=544327&r1=544326&r2=544327
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/Entries.jsp (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/editor/Entries.jsp Mon Jun  4 16:39:09 2007
@@ -35,7 +35,7 @@
     
     <div style="float:left;">
         <s:text name="weblogEntryQuery.nowShowing">
-            <s:param value="entries.size()" />
+            <s:param value="pager.items.size()" />
         </s:text>
     </div>
     <div style="float:right;">
@@ -50,39 +50,36 @@
     <%-- Next / previous links --%>
     <%-- ============================================================= --%>
     
-    <%--
-    <c:choose>
-        <c:when test="${!empty model.prevLink && !empty model.nextLink}">
-            <br /><center>
-                &laquo;
-                <a href='<s:property value="${model.prevLink}" />'>
-                <s:text name="weblogEntryQuery.prev" /></a>
-                | <a href='<s:property value="${model.nextLink}" />'>
-                <s:text name="weblogEntryQuery.next" /></a>
-                &raquo;
-            </center><br />
-        </c:when>
-        <c:when test="${!empty model.prevLink}">
-            <br /><center>
-                &laquo;
-                <a href='<s:property value="${model.prevLink}" />'>
-                <s:text name="weblogEntryQuery.prev" /></a>
-                | <s:text name="weblogEntryQuery.next" />
-                &raquo;
-            </center><br />
-        </c:when>
-        <c:when test="${!empty model.nextLink}">
-            <br /><center>
-                &laquo;
-                <s:text name="weblogEntryQuery.prev" />
-                | <a class="" href='<s:property value="${model.nextLink}" />'>
-                <s:text name="weblogEntryQuery.next" /></a>
-                &raquo;
-            </center><br />
-        </c:when>
-        <c:otherwise><br /></c:otherwise>
-    </c:choose>
-    --%>
+    <s:if test="pager.prevLink != null && pager.nextLink != null">
+        <br /><center>
+            &laquo;
+            <a href='<s:property value="pager.prevLink" />'>
+            <s:text name="weblogEntryQuery.prev" /></a>
+            | <a href='<s:property value="pager.nextLink" />'>
+            <s:text name="weblogEntryQuery.next" /></a>
+            &raquo;
+        </center><br />
+    </s:if>
+    <s:elseif test="pager.prevLink != null">
+        <br /><center>
+            &laquo;
+            <a href='<s:property value="pager.prevLink" />'>
+            <s:text name="weblogEntryQuery.prev" /></a>
+            | <s:text name="weblogEntryQuery.next" />
+            &raquo;
+        </center><br />
+    </s:elseif>
+    <s:elseif test="pager.nextLink != null">
+        <br /><center>
+            &laquo;
+            <s:text name="weblogEntryQuery.prev" />
+            | <a class="" href='<s:property value="pager.nextLink" />'>
+            <s:text name="weblogEntryQuery.next" /></a>
+            &raquo;
+        </center><br />
+    </s:elseif>
+    <s:else><br /></s:else>
+    
 </div> <%-- class="tablenav" --%>
 
 
@@ -118,7 +115,7 @@
     </th>
 </tr>
 
-<s:iterator id="post" value="entries">
+<s:iterator id="post" value="pager.items">
     <%-- <td> with style if comment is spam or pending --%>               
     <s:if test="#post.status == 'DRAFT'">
         <tr class="draftentry"> 
@@ -131,11 +128,11 @@
     </s:else>
     
     <td>
-        <s:property value="#post.pubTime" />
+        <s:date name="#post.pubTime" format="MM/dd/yy hh:mm a" />
     </td>
     
     <td>
-        <s:property value="#post.updateTime" />
+        <s:date name="#post.updateTime" format="MM/dd/yy hh:mm a" />
     </td>
     
     <td>
@@ -165,7 +162,7 @@
 
 </table>
 
-<s:if test="entries.isEmpty">
+<s:if test="pager.items.isEmpty">
     <s:text name="weblogEntryQuery.noneFound" />
     <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
 </s:if>