Author: agilliland
Date: Thu Jul 5 19:47:26 2007
New Revision: 553702
URL: http://svn.apache.org/viewvc?view=rev&rev=553702
Log:
fixing theme previewing issue caused by the use of the new stylesheet feature.
theme previewing had become effectively broken because the new stylesheet
feature was building urls to stylesheets using public urls and not preview
urls, so themes were looking unstyled. the previous couple of commits
regarding url strategy work in the rendering system layed the groundwork for
this commit, which fixes the problem.
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
URL:
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java?view=diff&rev=553702&r1=553701&r2=553702
==============================================================================
---
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
(original)
+++
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
Thu Jul 5 19:47:26 2007
@@ -19,6 +19,7 @@
package org.apache.roller.weblogger.business;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.Weblog;
@@ -102,11 +103,76 @@
}
Map params = new HashMap();
+ if(previewTheme != null) {
+ params.put("theme", URLUtilities.encode(previewTheme));
+ }
if(previewAnchor != null) {
params.put("previewEntry", URLUtilities.encode(previewAnchor));
}
return url.toString() + URLUtilities.getQueryString(params);
+ }
+
+
+ /**
+ * Get url for a custom page on a given weblog.
+ */
+ @Override
+ public String getWeblogPageURL(Weblog weblog,
+ String locale,
+ String pageLink,
+ String entryAnchor,
+ String category,
+ String dateString,
+ List tags,
+ int pageNum,
+ boolean absolute) {
+
+ if(weblog == null) {
+ return null;
+ }
+
+ StringBuffer pathinfo = new StringBuffer();
+ Map params = new HashMap();
+
+ if(absolute) {
+ pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
+ } else {
+ pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
+ }
+
+
pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
+
+ if(locale != null) {
+ pathinfo.append(locale).append("/");
+ }
+
+ if(previewTheme != null) {
+ params.put("theme", URLUtilities.encode(previewTheme));
+ }
+
+ if(pageLink != null) {
+ pathinfo.append("page/").append(pageLink);
+
+ // for custom pages we only allow query params
+ if(dateString != null) {
+ params.put("date", dateString);
+ }
+ if(category != null) {
+ params.put("cat", URLUtilities.encode(category));
+ }
+ if(tags != null && tags.size() > 0) {
+ params.put("tags", URLUtilities.getEncodedTagsString(tags));
+ }
+ if(pageNum > 0) {
+ params.put("page", Integer.toString(pageNum));
+ }
+ } else {
+ // if there is no page link then this is just a typical collection
url
+ return getWeblogCollectionURL(weblog, locale, category,
dateString, tags, pageNum, absolute);
+ }
+
+ return pathinfo.toString() + URLUtilities.getQueryString(params);
}
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java
URL:
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java?view=diff&rev=553702&r1=553701&r2=553702
==============================================================================
---
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java
(original)
+++
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java
Thu Jul 5 19:47:26 2007
@@ -264,7 +264,7 @@
public String getStylesheet() throws WebloggerException {
// custom stylesheet comes from the weblog theme
if(this.pojo.getTheme().getStylesheet() != null) {
- return
WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogPageURL(this.pojo,
null, this.pojo.getTheme().getStylesheet().getLink(), null, null, null, null,
0, false);
+ return urlStrategy.getWeblogPageURL(this.pojo, null,
this.pojo.getTheme().getStylesheet().getLink(), null, null, null, null, 0,
false);
}
return null;
}
@@ -290,7 +290,7 @@
return iconPath;
} else {
// otherwise it's just a plain old url
- return
WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogResourceURL(this.pojo,
iconPath, false);
+ return urlStrategy.getWeblogResourceURL(this.pojo, iconPath,
false);
}
}
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
URL:
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java?view=diff&rev=553702&r1=553701&r2=553702
==============================================================================
---
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
(original)
+++
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
Thu Jul 5 19:47:26 2007
@@ -36,6 +36,7 @@
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.Template;
import org.apache.roller.weblogger.pojos.Theme;
+import org.apache.roller.weblogger.pojos.ThemeTemplate;
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.core.RollerContext;
@@ -127,19 +128,50 @@
}
Template page = null;
- try {
- // we just want to show the default view
- page = tmpWebsite.getTheme().getDefaultTemplate();
+ if("page".equals(previewRequest.getContext())) {
+ page = previewRequest.getWeblogPage();
+
+ // If request specified tags section index, then look for custom
template
+ } else if("tags".equals(previewRequest.getContext()) &&
+ previewRequest.getTags() == null) {
+ try {
+ page =
weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_TAGSINDEX);
+ } catch(Exception e) {
+ log.error("Error getting weblog page for action 'tagsIndex'",
e);
+ }
+ // if we don't have a custom tags page then 404, we don't let
+ // this one fall through to the default template
if(page == null) {
- throw new WebloggerException("No default page for weblog:
"+tmpWebsite.getHandle());
+ if(!response.isCommitted()) response.reset();
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ // If this is a permalink then look for a permalink template
+ } else if(previewRequest.getWeblogAnchor() != null) {
+ try {
+ page =
weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_PERMALINK);
+ } catch(Exception e) {
+ log.error("Error getting weblog page for action 'permalink'",
e);
+ }
+ }
+
+ if(page == null) {
+ try {
+ page = tmpWebsite.getTheme().getDefaultTemplate();
+ } catch(WebloggerException re) {
+ log.error("Error getting default page for preview", re);
}
- } catch(WebloggerException re) {
- // couldn't get page
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- log.error("Error getting default page for preview", re);
+ }
+
+ // Still no page? Then that is a 404
+ if (page == null) {
+ if(!response.isCommitted()) response.reset();
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
+
log.debug("preview page found, dealing with it");