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");
         


Reply via email to