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>
- «
- <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>
- »
- </center><br />
- </c:when>
- <c:when test="${!empty model.prevLink}">
- <br /><center>
- «
- <a href='<s:property value="${model.prevLink}" />'>
- <s:text name="weblogEntryQuery.prev" /></a>
- | <s:text name="weblogEntryQuery.next" />
- »
- </center><br />
- </c:when>
- <c:when test="${!empty model.nextLink}">
- <br /><center>
- «
- <s:text name="weblogEntryQuery.prev" />
- | <a class="" href='<s:property value="${model.nextLink}" />'>
- <s:text name="weblogEntryQuery.next" /></a>
- »
- </center><br />
- </c:when>
- <c:otherwise><br /></c:otherwise>
- </c:choose>
- --%>
+ <s:if test="pager.prevLink != null && pager.nextLink != null">
+ <br /><center>
+ «
+ <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>
+ »
+ </center><br />
+ </s:if>
+ <s:elseif test="pager.prevLink != null">
+ <br /><center>
+ «
+ <a href='<s:property value="pager.prevLink" />'>
+ <s:text name="weblogEntryQuery.prev" /></a>
+ | <s:text name="weblogEntryQuery.next" />
+ »
+ </center><br />
+ </s:elseif>
+ <s:elseif test="pager.nextLink != null">
+ <br /><center>
+ «
+ <s:text name="weblogEntryQuery.prev" />
+ | <a class="" href='<s:property value="pager.nextLink" />'>
+ <s:text name="weblogEntryQuery.next" /></a>
+ »
+ </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>