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 2006/10/11 18:01:57 UTC
svn commit: r462836 - in
/incubator/roller/trunk/src/org/apache/roller/ui/rendering:
model/PreviewPageModel.java pagers/WeblogEntriesPermalinkPager.java
pagers/WeblogEntriesPreviewPager.java util/WeblogPreviewRequest.java
Author: agilliland
Date: Wed Oct 11 09:01:55 2006
New Revision: 462836
URL: http://svn.apache.org/viewvc?view=rev&rev=462836
Log:
make it possible to do a fully rendered entry preview.
- add a special preview pager which doesn't enforce things like status=PUBLISHED
- modify preview request to accept a 'previewEntry' parameter defining what entry to preview.
- update PreviewPageModel to use new preview pager.
Added:
incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PreviewPageModel.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPreviewPager.java
Modified:
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java
Added: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PreviewPageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PreviewPageModel.java?view=auto&rev=462836
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PreviewPageModel.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PreviewPageModel.java Wed Oct 11 09:01:55 2006
@@ -0,0 +1,101 @@
+/*
+ * 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.ui.rendering.model;
+
+import java.util.Map;
+import org.apache.roller.RollerException;
+import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
+import org.apache.roller.ui.rendering.pagers.WeblogEntriesPager;
+import org.apache.roller.ui.rendering.pagers.WeblogEntriesPreviewPager;
+import org.apache.roller.ui.rendering.util.WeblogPreviewRequest;
+import org.apache.roller.ui.rendering.util.WeblogRequest;
+
+
+/**
+ * An extension of the PageModel to make some adjustments for previewing.
+ */
+public class PreviewPageModel extends PageModel {
+
+ private WeblogPreviewRequest previewRequest = null;
+
+
+ /**
+ * Init model.
+ */
+ public void init(Map initData) throws RollerException {
+
+ // we expect the init data to contain a weblogRequest object
+ WeblogRequest weblogRequest = (WeblogRequest) initData.get("weblogRequest");
+ if(weblogRequest == null) {
+ throw new RollerException("expected weblogRequest from init data");
+ }
+
+ // PreviewPageModel only works on preview requests, so cast weblogRequest
+ // into a WeblogPreviewRequest and if it fails then throw exception
+ if(weblogRequest instanceof WeblogPreviewRequest) {
+ this.previewRequest = (WeblogPreviewRequest) weblogRequest;
+ } else {
+ throw new RollerException("weblogRequest is not a WeblogPreviewRequest."+
+ " PreviewPageModel only supports preview requests.");
+ }
+
+ super.init(initData);
+ }
+
+
+ public boolean isPermalink() {
+ return (previewRequest.getPreviewEntry() != null ||
+ previewRequest.getWeblogAnchor() != null);
+ }
+
+
+ public WeblogEntryDataWrapper getWeblogEntry() {
+
+ if(previewRequest.getPreviewEntry() != null ||
+ previewRequest.getWeblogAnchor() != null) {
+ return WeblogEntryDataWrapper.wrap(previewRequest.getWeblogEntry());
+ }
+ return null;
+ }
+
+
+ /**
+ * Override method that returns pager so that we can introduce a custom
+ * pager for preview pages which can display things that we don't want
+ * available on the "live" weblog, like DRAFT entries.
+ */
+ public WeblogEntriesPager getWeblogEntriesPager(String catArgument) {
+
+ String anchor = previewRequest.getPreviewEntry();
+ if(anchor == null) {
+ anchor = previewRequest.getWeblogAnchor();
+ }
+
+ return new WeblogEntriesPreviewPager(
+ previewRequest.getWeblog(),
+ previewRequest.getLocale(),
+ previewRequest.getWeblogPageName(),
+ anchor,
+ previewRequest.getWeblogDate(),
+ null,
+ previewRequest.getTags(),
+ previewRequest.getPageNum());
+ }
+
+}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java?view=diff&rev=462836&r1=462835&r2=462836
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java Wed Oct 11 09:01:55 2006
@@ -49,7 +49,7 @@
WeblogEntryData prevEntry = null;
// collection for the pager
- private Map entries = null;
+ Map entries = null;
public WeblogEntriesPermalinkPager(
Added: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPreviewPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPreviewPager.java?view=auto&rev=462836
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPreviewPager.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPreviewPager.java Wed Oct 11 09:01:55 2006
@@ -0,0 +1,85 @@
+/*
+ * 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.ui.rendering.pagers;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.model.Roller;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.WeblogManager;
+import org.apache.roller.pojos.WebsiteData;
+import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
+
+
+/**
+ * A special pager for showing entries in preview mode.
+ *
+ * This pager is different from the other pagers because it allows access to
+ * data we don't normally provide to templates working on the "live" weblog,
+ * like entries in DRAFT mode.
+ */
+public class WeblogEntriesPreviewPager extends WeblogEntriesPermalinkPager {
+
+ private static Log log = LogFactory.getLog(WeblogEntriesPreviewPager.class);
+
+
+ public WeblogEntriesPreviewPager(
+ WebsiteData weblog,
+ String locale,
+ String pageLink,
+ String entryAnchor,
+ String dateString,
+ String catPath,
+ List tags,
+ int page) {
+
+ super(weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
+ }
+
+
+ public Map getEntries() {
+ if (entries == null) try {
+ Roller roller = RollerFactory.getRoller();
+ WeblogManager wmgr = roller.getWeblogManager();
+ currEntry = wmgr.getWeblogEntryByAnchor(weblog, entryAnchor);
+ if (currEntry != null) {
+ entries = new TreeMap();
+
+ // if entry is not published then pubtime may be null
+ Date pubtime = currEntry.getPubTime();
+ if(pubtime == null) {
+ pubtime = new Date();
+ }
+
+ entries.put(pubtime,
+ Collections.singletonList(WeblogEntryDataWrapper.wrap(currEntry)));
+ }
+ } catch (Exception e) {
+ log.error("ERROR: fetching entry", e);
+ }
+
+ return entries;
+ }
+
+}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java?view=diff&rev=462836&r1=462835&r2=462836
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPreviewRequest.java Wed Oct 11 09:01:55 2006
@@ -25,7 +25,10 @@
import org.apache.roller.ThemeNotFoundException;
import org.apache.roller.model.RollerFactory;
import org.apache.roller.model.ThemeManager;
+import org.apache.roller.model.WeblogManager;
import org.apache.roller.pojos.Theme;
+import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.util.URLUtilities;
/**
@@ -39,10 +42,11 @@
// lightweight attributes
private String themeName = null;
+ private String previewEntry = null;
// heavyweight attributes
private Theme theme = null;
-
+ private WeblogEntryData weblogEntry = null;
public WeblogPreviewRequest(HttpServletRequest request)
throws InvalidRequestException {
@@ -50,12 +54,16 @@
// let parent go first
super(request);
- // all we need to worry about is the query params
- // the only param we expect is "theme"
+ // we may have a specific theme to preview
if(request.getParameter("theme") != null) {
this.themeName = request.getParameter("theme");
}
+ // we may also have a specific entry to preview
+ if(request.getParameter("previewEntry") != null) {
+ this.previewEntry = URLUtilities.decode(request.getParameter("previewEntry"));
+ }
+
if(log.isDebugEnabled()) {
log.debug("theme = "+this.themeName);
}
@@ -103,6 +111,40 @@
public void setTheme(Theme theme) {
this.theme = theme;
+ }
+
+ public String getPreviewEntry() {
+ return previewEntry;
+ }
+
+ public void setPreviewEntry(String previewEntry) {
+ this.previewEntry = previewEntry;
+ }
+
+ // if we have a preview entry we would prefer to return that
+ public WeblogEntryData getWeblogEntry() {
+
+ if(weblogEntry == null &&
+ (previewEntry != null || super.getWeblogAnchor() != null)) {
+
+ String anchor = previewEntry;
+ if(previewEntry == null) {
+ anchor = super.getWeblogAnchor();
+ }
+
+ try {
+ WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+ weblogEntry = wmgr.getWeblogEntryByAnchor(getWeblog(), anchor);
+ } catch (RollerException ex) {
+ log.error("Error getting weblog entry "+anchor, ex);
+ }
+ }
+
+ return weblogEntry;
+ }
+
+ public void setWeblogEntry(WeblogEntryData weblogEntry) {
+ this.weblogEntry = weblogEntry;
}
}