You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2007/04/03 22:07:50 UTC
svn commit: r525260 [2/3] - in
/incubator/roller/branches/roller_4.0_newbackend: ./ docs/devguide/
docs/examples/ docs/examples/configs/ docs/examples/configs/resin/
docs/examples/configs/tomcat/ docs/examples/configs/wbloggar/
metadata/database/tmpls/...
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Theme.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Theme.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Theme.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/Theme.java Tue Apr 3 13:07:41 2007
@@ -35,46 +35,49 @@
* is used mostly to contain all the templates for a theme, but does contain
* other theme related attributes such as name, last modifed date, etc.
*/
-public class Theme implements Serializable {
+public class Theme implements Serializable, Comparable {
// this is the name that will be used to identify a user customized theme
public static final String CUSTOM = "custom";
- private String id;
- private String name;
- private String description;
- private String author;
- private String lastEditor; // user id value of last editor
- private Date lastModified;
- private boolean enabled;
+ private String id = null;
+ private String name = null;
+ private String description = null;
+ private String author = null;
+ private String customStylesheet = null;
+ private Date lastModified = null;
+ private boolean enabled = false;
// we keep templates in a Map for faster lookups by name
// the Map contains ... (template name, ThemeTemplate)
- private Map templates;
+ private Map templatesByName = new HashMap();
+
+ // we keep templates in a Map for faster lookups by link
+ // the Map contains ... (template link, ThemeTemplate)
+ private Map templatesByLink = new HashMap();
+
+ // we keep templates in a Map for faster lookups by action
+ // the Map contains ... (template action, ThemeTemplate)
+ private Map templatesByAction = new HashMap();
// we keep resources in a Map for faster lookups by path
// the Map contains ... (resource path, File)
- private Map resources;
+ private Map resources = new HashMap();
- public Theme() {
- this.id = null;
- this.name = null;
- this.description = null;
- this.author = null;
- this.lastEditor = null;
- this.lastModified = null;
- this.enabled = false;
- this.templates = new HashMap();
- this.resources = new HashMap();
- }
+ public Theme() {}
/**
* Get the collection of all templates associated with this Theme.
*/
- public Collection getTemplates() {
- return this.templates.values();
+ public List getTemplates() {
+ return new ArrayList(this.templatesByName.values());
+ }
+
+
+ public Template getDefaultTemplate() {
+ return (ThemeTemplate) this.templatesByAction.get(Template.ACTION_WEBLOG);
}
@@ -83,38 +86,35 @@
* Returns null if the template cannot be found.
*/
public ThemeTemplate getTemplate(String name) {
- return (ThemeTemplate) this.templates.get(name);
+ return (ThemeTemplate) this.templatesByName.get(name);
}
/**
* Lookup the specified template by link.
* Returns null if the template cannot be found.
- *
- * NOTE: for themes we enforce the rule that
- * Theme.link == Theme.name
- *
- * So this lookup is basically the same as lookup by name.
*/
- public ThemeTemplate getTemplateByLink(String link) {
- return (ThemeTemplate) this.templates.get(link);
+ public Template getTemplateByLink(String link) {
+ return (ThemeTemplate) this.templatesByLink.get(link);
}
/**
- * Set the value for a given template name.
+ * Lookup the specified template by action.
+ * Returns null if the template cannot be found.
*/
- public void setTemplate(String name, ThemeTemplate template) {
- this.templates.put(name, template);
+ public Template getTemplateByAction(String action) {
+ return (ThemeTemplate) this.templatesByAction.get(action);
}
/**
- * Check if this Theme contains the named template.
- * Returns true if the template exists, false otherwise.
+ * Set the value for a given template name.
*/
- public boolean hasTemplate(String name) {
- return this.templates.containsKey(name);
+ public void addTemplate(ThemeTemplate template) {
+ this.templatesByName.put(template.getName(), template);
+ this.templatesByLink.put(template.getLink(), template);
+ this.templatesByAction.put(template.getAction(), template);
}
@@ -150,22 +150,11 @@
}
- /**
- * Check if this Theme contains the named resource.
- * Returns true if the resource exists, false otherwise.
- */
- public boolean hasResource(String path) {
- return this.resources.containsKey(path);
- }
-
-
public String getId() {
return id;
}
public void setId(String id) {
- // Form bean workaround: empty string is never a valid id
- if (id != null && id.trim().length() == 0) return;
this.id = id;
}
@@ -193,14 +182,14 @@
this.author = author;
}
- public String getLastEditor() {
- return lastEditor;
+ public String getCustomStylesheet() {
+ return customStylesheet;
}
- public void setLastEditor(String lastEditor) {
- this.lastEditor = lastEditor;
+ public void setCustomStylesheet(String customStylesheet) {
+ this.customStylesheet = customStylesheet;
}
-
+
public Date getLastModified() {
return lastModified;
}
@@ -222,7 +211,7 @@
sb.append(name);
sb.append("\n");
- Iterator it = this.templates.values().iterator();
+ Iterator it = this.templatesByName.values().iterator();
while(it.hasNext()) {
sb.append(it.next());
sb.append("\n");
@@ -230,6 +219,15 @@
return sb.toString();
+ }
+
+
+ /**
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ public int compareTo(Object o) {
+ Theme other = (Theme) o;
+ return getName().compareTo(other.getName());
}
}
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/ThemeTemplate.java Tue Apr 3 13:07:41 2007
@@ -30,6 +30,7 @@
public class ThemeTemplate implements Template, Serializable {
private String id = null;
+ private String action = null;
private String name = null;
private String description = null;
private String contents = null;
@@ -46,12 +47,13 @@
public ThemeTemplate() {}
- public ThemeTemplate(Theme theme, String id, String name, String desc,
- String contents, String link, Date date, String tempLang,
- boolean hid, boolean navbar, String decor) {
+ public ThemeTemplate(Theme theme, String id, String action, String name,
+ String desc, String contents, String link, Date date,
+ String tempLang, boolean hid, boolean navbar, String decor) {
this.myTheme = theme;
this.id = id;
+ this.action = action;
this.name = name;
this.description = desc;
this.contents = contents;
@@ -164,6 +166,14 @@
public String toString() {
return (id + "," + name + "," + description + "," + link + "," +
lastModified + "\n\n" + contents + "\n");
+ }
+
+ public String getAction() {
+ return action;
+ }
+
+ public void setAction(String action) {
+ this.action = action;
}
}
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml Tue Apr 3 13:07:41 2007
@@ -27,16 +27,16 @@
<query>SELECT w.name FROM WeblogEntryTagAggregateData w WHERE w.name IN (?1) AND w.weblog IS NULL</query>
</named-query>
<named-query name="WeblogEntryTagAggregateData.getPopularTagsByWebsite&StartDate">
- <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog = ?1 AND w.lastUsed >= ?2</query>
+ <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog = ?1 AND w.lastUsed >= ?2 GROUP BY w.name, w.total ORDER BY w.total DESC</query>
</named-query>
<named-query name="WeblogEntryTagAggregateData.getPopularTagsByWebsite">
- <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog = ?1</query>
+ <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog = ?1 GROUP BY w.name, w.total ORDER BY w.total DESC</query>
</named-query>
<named-query name="WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull&StartDate">
- <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog IS NULL AND w.lastUsed >= ?2</query>
+ <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog IS NULL AND w.lastUsed >= ?2 GROUP BY w.name, w.total ORDER BY w.total DESC</query>
</named-query>
<named-query name="WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull">
- <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog IS NULL</query>
+ <query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog IS NULL GROUP BY w.name, w.total ORDER BY w.total DESC</query>
</named-query>
<named-query name="WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWith">
<query>SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregateData w WHERE w.weblog = ?1 AND w.name LIKE ?2 GROUP BY w.name, w.total </query>
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.java Tue Apr 3 13:07:41 2007
@@ -29,6 +29,7 @@
import org.apache.roller.RollerException;
import org.apache.roller.util.UUIDGenerator;
+
/**
* POJO that represents a single user defined template page.
*
@@ -49,6 +50,7 @@
private static Set requiredTemplates = null;
private String id = UUIDGenerator.generateUUID();
+ private String action = null;
private String name = null;
private String description = null;
private String link = null;
@@ -71,32 +73,9 @@
requiredTemplates.add("_decorator");
}
+
public WeblogTemplate() {}
- public WeblogTemplate(
- java.lang.String id,
- WebsiteData website,
- java.lang.String name,
- java.lang.String description,
- java.lang.String link,
- java.lang.String template,
- java.util.Date updateTime,
- String tempLang,
- boolean hid,
- boolean navbar,
- String decorator) {
- //this.id = id;
- this.weblog = website;
- this.name = name;
- this.description = description;
- this.link = link;
- this.contents = template;
- this.lastModified = (Date)updateTime.clone();
- this.templateLanguage = tempLang;
- this.hidden = hid;
- this.navbar = navbar;
- this.decoratorName = decorator;
- }
public WeblogTemplate( WeblogTemplate otherData ) {
setData(otherData);
@@ -149,6 +128,19 @@
/**
* @ejb:persistent-field
+ * @hibernate.property column="action" non-null="true" unique="false"
+ */
+ public String getAction() {
+ return action;
+ }
+
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+
+ /**
+ * @ejb:persistent-field
* @hibernate.property column="name" non-null="true" unique="false"
*/
public java.lang.String getName() {
@@ -209,16 +201,19 @@
* @hibernate.property column="updatetime" non-null="true" unique="false"
*/
public java.util.Date getLastModified() {
- return (Date)this.lastModified.clone();
+ // don't modify fields directly
+ //return (Date)this.lastModified.clone();
+ return lastModified;
}
/** @ejb:persistent-field */
public void setLastModified(final java.util.Date newtime ) {
- if (newtime != null) {
- lastModified = (Date)newtime.clone();
- } else {
- lastModified = null;
- }
+ //if (newtime != null) {
+ // lastModified = (Date)newtime.clone();
+ //} else {
+ // lastModified = null;
+ //}
+ lastModified = newtime;
}
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.orm.xml?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.orm.xml (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WeblogTemplate.orm.xml Tue Apr 3 13:07:41 2007
@@ -13,16 +13,19 @@
class="org.apache.roller.pojos.WeblogTemplate">
<table name="webpage"/>
<named-query name="WeblogTemplate.getByWebsite">
- <query>SELECT w FROM WeblogTemplate w Where w.website = ?1</query>
+ <query>SELECT w FROM WeblogTemplate w WHERE w.website = ?1</query>
</named-query>
<named-query name="WeblogTemplate.getByWebsiteOrderByName">
- <query>SELECT w FROM WeblogTemplate w Where w.website = ?1 ORDER BY w.name</query>
+ <query>SELECT w FROM WeblogTemplate w WHERE w.website = ?1 ORDER BY w.name</query>
</named-query>
<named-query name="WeblogTemplate.getByWebsite&Link">
- <query>SELECT w FROM WeblogTemplate w Where w.website = ?1 AND w.link = ?2</query>
+ <query>SELECT w FROM WeblogTemplate w WHERE w.website = ?1 AND w.link = ?2</query>
+ </named-query>
+ <named-query name="WeblogTemplate.getByAction">
+ <query>SELECT w FROM WeblogTemplate w WHERE w.website = ?1 AND w.action = ?2</query>
</named-query>
<named-query name="WeblogTemplate.getByWebsite&Name">
- <query>SELECT w FROM WeblogTemplate w Where w.website = ?1 AND w.name= ?2</query>
+ <query>SELECT w FROM WeblogTemplate w WHERE w.website = ?1 AND w.name= ?2</query>
</named-query>
<attributes>
@@ -34,6 +37,9 @@
</basic>
<basic name="description">
<column name="description" insertable="true" updatable="true" unique="false"/>
+ </basic>
+ <basic name="action">
+ <column name="action" insertable="true" updatable="true" unique="false"/>
</basic>
<basic name="link">
<column name="link" insertable="true" updatable="true" unique="false"/>
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.java Tue Apr 3 13:07:41 2007
@@ -39,12 +39,12 @@
import org.apache.roller.business.RollerFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.roller.business.ThemeNotFoundException;
+import org.apache.roller.business.themes.ThemeNotFoundException;
import org.apache.roller.config.RollerRuntimeConfig;
import org.apache.roller.business.BookmarkManager;
import org.apache.roller.business.PluginManager;
import org.apache.roller.business.Roller;
-import org.apache.roller.business.ThemeManager;
+import org.apache.roller.business.themes.ThemeManager;
import org.apache.roller.business.UserManager;
import org.apache.roller.business.WeblogManager;
import org.apache.roller.util.UUIDGenerator;
@@ -95,6 +95,7 @@
private String pageModels = new String();
private boolean enableMultiLang = false;
private boolean showAllLangs = true;
+ private String customStylesheetPath = null;
// Associated objects
@@ -183,6 +184,28 @@
permissions.remove(perms);
}
+
+ /**
+ * Get the Theme object in use by this weblog, or null if no theme selected.
+ */
+ public Theme getTheme() throws RollerException {
+
+ // if theme is custom or null then just return null
+ if(getEditorTheme() == null || Theme.CUSTOM.equals(getEditorTheme())) {
+ return null;
+ } else {
+ try {
+ ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
+ return themeMgr.getTheme(getEditorTheme());
+ } catch(ThemeNotFoundException tnfe) {
+ // i sure hope not!
+ log.error("Unable to find theme = "+getEditorTheme(), tnfe);
+ return null;
+ }
+ }
+ }
+
+
/**
* Lookup the default page for this website.
*/
@@ -192,19 +215,9 @@
// first check if this user has selected a theme
// if so then return the themes Weblog template
- if(this.editorTheme != null && !this.editorTheme.equals(Theme.CUSTOM)) {
- try {
- ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
- Theme usersTheme = themeMgr.getTheme(this.editorTheme);
-
- // this is a bit iffy :/
- // we assume that all theme use "Weblog" for a default template
- template = usersTheme.getTemplate("Weblog");
-
- } catch(ThemeNotFoundException tnfe) {
- // i sure hope not!
- log.error(tnfe);
- }
+ Theme weblogTheme = getTheme();
+ if(weblogTheme != null) {
+ template = weblogTheme.getTemplateByAction(Template.ACTION_WEBLOG);
}
// if we didn't get the Template from a theme then look in the db
@@ -221,44 +234,35 @@
/**
- * Lookup a Template for this website by id.
+ * Lookup a Template for this website by action.
+ *
+ * @roller.wrapPojoMethod type="pojo"
*/
- public Template getPageById(String id) throws RollerException {
+ public Template getPageByAction(String action) throws RollerException {
- if(id == null)
+ if(action == null)
return null;
+ log.debug("looking up template for action ["+action+"]");
+
Template template = null;
// first check if this user has selected a theme
// if so then return the proper theme template
- if(this.editorTheme != null && !this.editorTheme.equals(Theme.CUSTOM)) {
-
- // we don't actually expect to get lookups for theme pages by id
- // but we have to be thorough and check anyways
- String[] split = id.split(":", 2);
-
- // only continue if this looks like a theme id
- // and the theme name matches this users current theme
- if(split.length == 2 && split[0].equals(this.editorTheme)) {
- try {
- ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
- Theme usersTheme = themeMgr.getTheme(this.editorTheme);
- template = usersTheme.getTemplate(split[1]);
-
- } catch(ThemeNotFoundException tnfe) {
- // i sure hope not!
- log.error(tnfe);
- }
- }
-
- }
+ Theme weblogTheme = getTheme();
+ if(weblogTheme != null) {
+ template = weblogTheme.getTemplateByAction(action);
+ } else {
- // if we didn't get the Template from a theme then look in the db
- if(template == null) {
+ // NOTE: we specifically do *NOT* return templates by action from the
+ // weblog's custom templates if the weblog is using a theme because we
+ // don't want old templates to take effect when using a specific theme
UserManager userMgr = RollerFactory.getRoller().getUserManager();
- template = userMgr.getPageByName(this, name);
+ template = userMgr.getPageByAction(this, action);
}
+
+ if(template != null)
+ log.debug("returning template ["+template.getId()+"]");
return template;
}
@@ -279,18 +283,9 @@
// first check if this user has selected a theme
// if so then return the proper theme template
- if(this.editorTheme != null && !this.editorTheme.equals(Theme.CUSTOM)) {
-
- try {
- ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
- Theme usersTheme = themeMgr.getTheme(this.editorTheme);
- template = usersTheme.getTemplate(name);
-
- } catch(ThemeNotFoundException tnfe) {
- // i sure hope not!
- log.error(tnfe);
- }
-
+ Theme weblogTheme = getTheme();
+ if(weblogTheme != null) {
+ template = weblogTheme.getTemplate(name);
}
// if we didn't get the Template from a theme then look in the db
@@ -321,18 +316,9 @@
// first check if this user has selected a theme
// if so then return the proper theme template
- if(this.editorTheme != null && !this.editorTheme.equals(Theme.CUSTOM)) {
-
- try {
- ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
- Theme usersTheme = themeMgr.getTheme(this.editorTheme);
- template = usersTheme.getTemplateByLink(link);
-
- } catch(ThemeNotFoundException tnfe) {
- // i sure hope not!
- log.error(tnfe);
- }
-
+ Theme weblogTheme = getTheme();
+ if(weblogTheme != null) {
+ template = weblogTheme.getTemplateByLink(link);
}
// if we didn't get the Template from a theme then look in the db
@@ -372,12 +358,11 @@
// now get theme pages if needed and put them in place of db pages
- if (this.editorTheme != null && !this.editorTheme.equals(Theme.CUSTOM)) {
- try {
+ try {
+ Theme weblogTheme = getTheme();
+ if(weblogTheme != null) {
Template template = null;
- ThemeManager themeMgr = RollerFactory.getRoller().getThemeManager();
- Theme usersTheme = themeMgr.getTheme(this.editorTheme);
- Iterator themePages = usersTheme.getTemplates().iterator();
+ Iterator themePages = weblogTheme.getTemplates().iterator();
while(themePages.hasNext()) {
template = (Template) themePages.next();
@@ -385,10 +370,10 @@
// pages in the pages list, which is what we want
pages.put(template.getName(), template);
}
- } catch(Exception e) {
- // how??
- log.error(e);
}
+ } catch(Exception e) {
+ // how??
+ log.error(e);
}
return new ArrayList(pages.values());
@@ -1066,6 +1051,37 @@
/**
+ * The path under the weblog's resources to a stylesheet override.
+ *
+ * @hibernate.property column="customstylesheet" not-null="false"
+ */
+ public String getCustomStylesheetPath() {
+ return customStylesheetPath;
+ }
+
+ public void setCustomStylesheetPath(String customStylesheetPath) {
+ this.customStylesheetPath = customStylesheetPath;
+ }
+
+
+ public String getCustomStylesheet() {
+ try {
+ Theme weblogTheme = getTheme();
+ if(weblogTheme != null) {
+ return weblogTheme.getCustomStylesheet();
+ } else {
+ return getCustomStylesheetPath();
+ }
+ } catch(RollerException re) {
+ // hmmm, some exception getting theme
+ return null;
+ }
+ }
+
+ // no-op to please xdoclet
+ public void setCustomStylesheet(String noop) {}
+
+ /**
* Get initialized plugins for use during rendering process.
*/
public Map getInitializedPlugins() {
@@ -1392,8 +1408,3 @@
public void setEntryCount(int ignored) {}
}
-
-
-
-
-
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.orm.xml?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.orm.xml (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/pojos/WebsiteData.orm.xml Tue Apr 3 13:07:41 2007
@@ -218,6 +218,9 @@
<basic name="pageModels">
<column name="pagemodels" insertable="true" updatable="true" unique="false"/>
</basic>
+ <basic name="customStylesheetPath">
+ <column name="customstylesheet" insertable="true" updatable="true" unique="false"/>
+ </basic>
<many-to-one name="creator" target-entity="org.apache.roller.pojos.UserData">
<join-column name="userid" insertable="true" updatable="true" nullable="false"/>
</many-to-one>
@@ -233,18 +236,18 @@
<transient name="adminUserCount"/>
<transient name="commentCount"/>
<transient name="commentModerationRequired"/>
+ <transient name="customStylesheet" />
<transient name="todaysHits"/>
<transient name="todaysReferrers"/>
<transient name="uRL"/>
<transient name="userCount"/>
-
- <transient name="defaultPage"/>
+ <transient name="defaultPage"/>
<transient name="entryCount"/>
- <transient name="initializedPlugins"/>
+ <transient name="initializedPlugins"/>
<transient name="pages"/>
- <transient name="weblogCategories"/>
- <transient name="localeInstance"/>
- <transient name="timeZoneInstance" />
+ <transient name="weblogCategories"/>
+ <transient name="localeInstance"/>
+ <transient name="timeZoneInstance" />
</attributes>
</entity>
</entity-mappings>
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/CommentManagementAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/CommentManagementAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/CommentManagementAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/CommentManagementAction.java Tue Apr 3 13:07:41 2007
@@ -45,7 +45,6 @@
import org.apache.roller.pojos.CommentData;
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.ui.core.BasePageModel;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.util.cache.CacheManager;
@@ -266,7 +265,6 @@
private void sendCommentNotifications(
HttpServletRequest req, List comments) throws RollerException {
- RollerContext rc = RollerContext.getRollerContext();
String rootURL = RollerRuntimeConfig.getAbsoluteContextURL();
try {
if (rootURL == null || rootURL.trim().length()==0) {
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InvitationsAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InvitationsAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InvitationsAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InvitationsAction.java Tue Apr 3 13:07:41 2007
@@ -47,7 +47,6 @@
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.authoring.struts.formbeans.InvitationsForm;
import org.apache.roller.ui.core.BasePageModel;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.util.MailUtil;
@@ -163,7 +162,6 @@
String content;
// Figure URL to entry edit page
- RollerContext rc = RollerContext.getRollerContext();
String rootURL = RollerRuntimeConfig.getAbsoluteContextURL();
if (rootURL == null || rootURL.trim().length()==0) {
rootURL = RequestUtils.serverURL(request)
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/InviteMemberAction.java Tue Apr 3 13:07:41 2007
@@ -49,7 +49,6 @@
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.core.BasePageModel;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.ui.authoring.struts.formbeans.InviteMemberForm;
@@ -209,7 +208,6 @@
String content;
// Figure URL to entry edit page
- RollerContext rc = RollerContext.getRollerContext();
String rootURL = RollerRuntimeConfig.getAbsoluteContextURL();
if (rootURL == null || rootURL.trim().length()==0) {
rootURL = RequestUtils.serverURL(request)
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ThemeEditorAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ThemeEditorAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ThemeEditorAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ThemeEditorAction.java Tue Apr 3 13:07:41 2007
@@ -33,11 +33,11 @@
import org.apache.struts.action.ActionMessage;
import org.apache.struts.actions.DispatchAction;
import org.apache.roller.RollerException;
-import org.apache.roller.business.ThemeNotFoundException;
+import org.apache.roller.business.themes.ThemeNotFoundException;
import org.apache.roller.config.RollerRuntimeConfig;
import org.apache.roller.business.Roller;
import org.apache.roller.business.RollerFactory;
-import org.apache.roller.business.ThemeManager;
+import org.apache.roller.business.themes.ThemeManager;
import org.apache.roller.business.UserManager;
import org.apache.roller.pojos.Theme;
import org.apache.roller.pojos.WebsiteData;
@@ -107,9 +107,19 @@
ThemeManager themeMgr = roller.getThemeManager();
String username = rses.getAuthenticatedUser().getUserName();
- String currentTheme = website.getEditorTheme();
List themes = themeMgr.getEnabledThemesList();
+ // TODO: hack to make 'custom' an actual Theme object
+ // maybe there should be an actual Theme representing custom themes?
+ Theme currentTheme = null;
+ if(Theme.CUSTOM.equals(website.getEditorTheme())) {
+ currentTheme = new Theme();
+ currentTheme.setId(Theme.CUSTOM);
+ currentTheme.setName(Theme.CUSTOM);
+ } else {
+ currentTheme = website.getTheme();
+ }
+
// this checks if the website has a default page template
// if not then we don't allow for a custom theme
boolean allowCustomTheme = true;
@@ -121,14 +131,14 @@
// if we allow custom themes then add it to the end of the list
if(RollerRuntimeConfig.getBooleanProperty("themes.customtheme.allowed")
&& allowCustomTheme)
- themes.add(Theme.CUSTOM);
+ request.setAttribute("allowCustomOption", Boolean.TRUE);
// on the first pass just show a preview of the current theme
request.setAttribute("previewTheme", currentTheme);
request.setAttribute("currentTheme", currentTheme);
request.setAttribute("themesList", themes);
- mLogger.debug("Previewing theme "+currentTheme+" to "+username);
+ mLogger.debug("Previewing theme "+currentTheme.getName()+" to "+username);
} else {
forward = mapping.findForward("access-denied");
@@ -174,9 +184,19 @@
request.setAttribute("model",pageModel);
String username = rses.getAuthenticatedUser().getUserName();
- String currentTheme = website.getEditorTheme();
List themes = themeMgr.getEnabledThemesList();
+ // TODO: hack to make 'custom' an actual Theme object
+ // maybe there should be an actual Theme representing custom themes?
+ Theme currentTheme = null;
+ if(Theme.CUSTOM.equals(website.getEditorTheme())) {
+ currentTheme = new Theme();
+ currentTheme.setId(Theme.CUSTOM);
+ currentTheme.setName(Theme.CUSTOM);
+ } else {
+ currentTheme = website.getTheme();
+ }
+
// this checks if the website has a default page template
// if not then we don't allow for a custom theme
boolean allowCustomTheme = true;
@@ -188,7 +208,7 @@
// if we allow custom themes then add it to the end of the list
if(RollerRuntimeConfig.getBooleanProperty("themes.customtheme.allowed")
&& allowCustomTheme)
- themes.add(Theme.CUSTOM);
+ request.setAttribute("allowCustomOption", Boolean.TRUE);
// set the current theme in the request
request.setAttribute("currentTheme", currentTheme);
@@ -200,7 +220,7 @@
if(previewTheme.isEnabled()) {
// make sure the view knows what theme to preview
- request.setAttribute("previewTheme", previewTheme.getName());
+ request.setAttribute("previewTheme", previewTheme);
mLogger.debug("Previewing theme "+previewTheme.getName()+
" to "+username);
@@ -213,7 +233,11 @@
} catch(ThemeNotFoundException tnfe) {
// hmm ... maybe they chose "custom"?
if(theme != null && theme.equals(Theme.CUSTOM)) {
- request.setAttribute("previewTheme", Theme.CUSTOM);
+ // TODO: total hack, this needs fixing
+ Theme customTheme = new Theme();
+ customTheme.setId(Theme.CUSTOM);
+ customTheme.setName(Theme.CUSTOM);
+ request.setAttribute("previewTheme", customTheme);
} else {
// we should never get here
request.setAttribute("previewTheme", currentTheme);
@@ -271,7 +295,7 @@
Theme previewTheme = themeMgr.getTheme(theme);
if(previewTheme.isEnabled()) {
- newTheme = previewTheme.getName();
+ newTheme = previewTheme.getId();
} else {
errors.add(null, new ActionMessage("Theme not enabled"));
saveErrors(request, errors);
@@ -364,7 +388,7 @@
String username = rses.getAuthenticatedUser().getUserName();
try {
- Theme usersTheme = themeMgr.getTheme(website.getEditorTheme());
+ Theme usersTheme = website.getTheme();
// only if custom themes are allowed
if(RollerRuntimeConfig.getBooleanProperty("themes.customtheme.allowed")) {
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ToggleLinkbackDisplayAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ToggleLinkbackDisplayAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ToggleLinkbackDisplayAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/ToggleLinkbackDisplayAction.java Tue Apr 3 13:07:41 2007
@@ -32,7 +32,6 @@
import org.apache.roller.pojos.RefererData;
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.ui.core.RequestConstants;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.util.cache.CacheManager;
@@ -91,7 +90,6 @@
String url = null;
try
{
- RollerContext rctx = RollerContext.getRollerContext();
if (entry != null) {
url = entry.getPermalink();
} else {
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryFormAction.java Tue Apr 3 13:07:41 2007
@@ -59,7 +59,6 @@
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.pojos.WebsiteData;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.util.cache.CacheManager;
@@ -402,7 +401,6 @@
to = (String[])reviewers.toArray(new String[reviewers.size()]);
// Figure URL to entry edit page
- RollerContext rc = RollerContext.getRollerContext();
String rootURL = RollerRuntimeConfig.getAbsoluteContextURL();
if (rootURL == null || rootURL.trim().length()==0) {
rootURL = RequestUtils.serverURL(request)
@@ -616,7 +614,6 @@
entryid = request.getParameter(RequestConstants.WEBLOGENTRY_ID);
}
Roller roller = RollerFactory.getRoller();
- RollerContext rctx= RollerContext.getRollerContext();
WeblogManager wmgr= roller.getWeblogManager();
entry = wmgr.getWeblogEntry(entryid);
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java Tue Apr 3 13:07:41 2007
@@ -20,7 +20,10 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
+import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;
@@ -36,12 +39,12 @@
import org.apache.roller.business.RollerFactory;
import org.apache.roller.business.UserManager;
import org.apache.roller.config.RollerConfig;
+import org.apache.roller.pojos.Theme;
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WeblogTemplate;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.authoring.struts.formbeans.WeblogTemplateFormEx;
import org.apache.roller.ui.core.BasePageModel;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.util.Utilities;
@@ -105,12 +108,17 @@
}
WeblogTemplate page = new WeblogTemplate();
- form.copyTo(page, request.getLocale());
+ page.setName(form.getName());
page.setWebsite(website);
page.setLastModified( new Date() );
page.setDescription(page.getName());
page.setContents(bundle.getString("pageForm.newTemplateContent"));
+ // if no action specified then it's a custom page
+ if(page.getAction() == null) {
+ page.setAction(WeblogTemplate.ACTION_CUSTOM);
+ }
+
validateLink(page);
// all templates start out as velocity templates
@@ -145,6 +153,9 @@
request.setAttribute("model",
new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, page));
+ // TODO: when a new template is successfully added then we should
+ // take the user directly to edit that new page
+
} else {
forward = mapping.findForward("access-denied");
}
@@ -217,8 +228,32 @@
website = template.getWebsite();
}
- request.setAttribute("model",
- new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null));
+ WeblogTemplateFormModel model =
+ new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null);
+ request.setAttribute("model", model);
+
+ List availableActions = new ArrayList();
+ availableActions.add(WeblogTemplate.ACTION_CUSTOM);
+
+ if(Theme.CUSTOM.equals(website.getEditorTheme())) {
+ // if the weblog is using a custom theme then determine which
+ // action templates are still available to be created
+ availableActions.add(WeblogTemplate.ACTION_PERMALINK);
+ availableActions.add(WeblogTemplate.ACTION_SEARCH);
+ availableActions.add(WeblogTemplate.ACTION_WEBLOG);
+ availableActions.add(WeblogTemplate.ACTION_TAGSINDEX);
+
+ WeblogTemplate tmpPage = null;
+ Iterator pagesIter = model.getPages().iterator();
+ while(pagesIter.hasNext()) {
+ tmpPage = (WeblogTemplate) pagesIter.next();
+
+ if(!WeblogTemplate.ACTION_CUSTOM.equals(tmpPage.getAction())) {
+ availableActions.remove(tmpPage.getAction());
+ }
+ }
+ }
+ request.setAttribute("availableActions", availableActions);
if (!rses.isUserAuthorizedToAdmin(website)) {
forward = mapping.findForward("access-denied");
@@ -433,7 +468,7 @@
private WeblogTemplate page;
private List pages;
private List languages = new ArrayList();
-
+
public WeblogTemplateFormModel(
String titleKey,
HttpServletRequest request,
@@ -455,7 +490,7 @@
this.setUser(rses.getAuthenticatedUser());
this.setPages(mgr.getPages(getWebsite()));
- this.setPage(page);
+ this.setPage(page);
if (page != null) {
String langs = RollerConfig.getProperty("rendering.templateLanguages","velocity");
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java Tue Apr 3 13:07:41 2007
@@ -22,7 +22,6 @@
import org.apache.roller.RollerException;
import org.apache.roller.pojos.WeblogTemplate;
import org.apache.roller.ui.authoring.struts.forms.WeblogTemplateForm;
-import org.apache.roller.ui.core.RollerContext;
/**
* @struts.form name="weblogTemplateFormEx"
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryContentTag.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryContentTag.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryContentTag.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryContentTag.java Tue Apr 3 13:07:41 2007
@@ -32,7 +32,6 @@
import org.apache.roller.business.Roller;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.pojos.WeblogEntryData;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.util.Utilities;
import org.apache.struts.util.RequestUtils;
@@ -64,8 +63,6 @@
String xformed = entry.getText();;
try {
if (entry.getPlugins() != null) {
- RollerContext rctx =
- RollerContext.getRollerContext();
try {
PluginManager ppmgr = roller.getPagePluginManager();
Map plugins = ppmgr.getWeblogEntryPlugins(
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntrySummaryTag.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntrySummaryTag.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntrySummaryTag.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntrySummaryTag.java Tue Apr 3 13:07:41 2007
@@ -32,7 +32,6 @@
import org.apache.roller.business.PluginManager;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.pojos.WeblogEntryData;
-import org.apache.roller.ui.core.RollerContext;
/**
* Shows entry summary with plugins applied.
@@ -59,8 +58,6 @@
String xformed = entry.getSummary();
try {
if (entry.getPlugins() != null) {
- RollerContext rctx =
- RollerContext.getRollerContext();
PluginManager ppmgr = roller.getPagePluginManager();
Map plugins = ppmgr.getWeblogEntryPlugins(
entry.getWebsite());
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryTextTag.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryTextTag.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryTextTag.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/authoring/tags/ShowEntryTextTag.java Tue Apr 3 13:07:41 2007
@@ -31,7 +31,6 @@
import org.apache.roller.business.PluginManager;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.pojos.WeblogEntryData;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.util.Utilities;
/**
@@ -73,8 +72,6 @@
try {
String xformed = sourceText;
if (entry.getPlugins() != null) {
- RollerContext rctx =
- RollerContext.getRollerContext();
try {
PluginManager ppmgr = roller.getPagePluginManager();
Map plugins = ppmgr.getWeblogEntryPlugins(
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerContext.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerContext.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerContext.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerContext.java Tue Apr 3 13:07:41 2007
@@ -18,9 +18,7 @@
package org.apache.roller.ui.core;
-import EDU.oswego.cs.dl.util.concurrent.SynchronizedInt;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
@@ -31,7 +29,6 @@
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
-import javax.servlet.http.HttpSessionEvent;
import javax.sql.DataSource;
import org.acegisecurity.providers.ProviderManager;
import org.acegisecurity.providers.dao.DaoAuthenticationProvider;
@@ -65,63 +62,35 @@
*
* @web.listener
*/
-public class RollerContext extends ContextLoaderListener implements ServletContextListener {
+public class RollerContext extends ContextLoaderListener
+ implements ServletContextListener {
- private static Log mLogger = LogFactory.getLog(RollerContext.class);
+ private static Log log = LogFactory.getLog(RollerContext.class);
- public static final String ROLLER_CONTEXT = "roller.context";
+ private static ServletContext servletContext = null;
- private static ServletContext mContext = null;
- private final SynchronizedInt mSessionCount = new SynchronizedInt(0);
-
- /**
- * Constructor for RollerContext.
- */
public RollerContext() {
super();
}
- /* Returns Roller instance for specified app */
- public static RollerContext getRollerContext() {
- // get roller from servlet context
- ServletContext sc = RollerContext.getServletContext();
- return (RollerContext) sc.getAttribute(ROLLER_CONTEXT);
- }
-
-
- /** Responds to app-destroy by saving the indexManager's information */
- public void contextDestroyed(ServletContextEvent sce) {
- RollerFactory.getRoller().shutdown();
-
- // do we need a more generic mechanism for presentation layer shutdown?
- CacheManager.shutdown();
- }
-
-
/**
- * Responds to context initialization event by processing context
- * paramters for easy access by the rest of the application.
+ * Responds to app-init event and triggers startup procedures.
*/
public void contextInitialized(ServletContextEvent sce) {
- try {
- Class.forName("org.hibernate.Session");
- } catch (Throwable t) {
- // if Hibernate is not available, we're hosed
- throw new RuntimeException(
- "FATAL ERROR: Hibernate not found, please refer to the Roller Installation Guide for instructions on how to install the required Hibernate jars");
- }
-
- mLogger.debug("RollerContext initializing");
-
- // Save context in self and self in context
- mContext = sce.getServletContext();
- mContext.setAttribute(ROLLER_CONTEXT, this);
+ // keep a reverence to ServletContext object
+ this.servletContext = sce.getServletContext();
+ // call Spring's context ContextLoaderListener to initialize
+ // all the context files specified in web.xml. This is necessary
+ // because listeners don't initialize in the order specified in
+ // 2.3 containers
+ super.contextInitialized(sce);
+
// get the *real* path to <context>/resources
- String ctxPath = mContext.getRealPath("/");
+ String ctxPath = servletContext.getRealPath("/");
if(!ctxPath.endsWith(File.separator))
ctxPath += File.separator + "resources";
else
@@ -145,7 +114,7 @@
// also, the RollerConfig.setThemesDir() method is smart
// enough to disregard this call unless the themes.dir
// is set to ${webapp.context}
- RollerConfig.setThemesDir(mContext.getRealPath("/")+File.separator+"themes");
+ RollerConfig.setThemesDir(servletContext.getRealPath("/")+File.separator+"themes");
try {
// always upgrade database first
@@ -153,42 +122,69 @@
Roller roller = RollerFactory.getRoller();
- setupRollerProperties();
-
- // call Spring's context ContextLoaderListener to initialize
- // all the context files specified in web.xml. This is necessary
- // because listeners don't initialize in the order specified in
- // 2.3 containers
- super.contextInitialized(sce);
-
- initializeSecurityFeatures(mContext);
-
+ setupRuntimeProperties();
+ initializeSecurityFeatures(servletContext);
+ setupSearch();
+ initializePingFeatures();
+ setupThemeLibrary();
+ setupScheduledTasks();
setupVelocity();
- roller.getThemeManager();
- setupIndexManager(roller);
- initializePingFeatures(roller);
- setupTasks();
roller.flush();
roller.release();
} catch (Throwable t) {
- mLogger.fatal("RollerContext initialization failed", t);
+ log.fatal("Roller Weblogger initialization failed", t);
+ throw new RuntimeException(t);
}
- mLogger.debug("RollerContext initialization complete");
+ log.info("Roller Weblogger Initialization Complete");
}
- private void setupVelocity() throws RollerException {
+ /**
+ * Responds to app-destroy event and triggers shutdown sequence.
+ */
+ public void contextDestroyed(ServletContextEvent sce) {
+
+ RollerFactory.getRoller().shutdown();
- mLogger.info("Initializing Velocity");
+ // do we need a more generic mechanism for presentation layer shutdown?
+ CacheManager.shutdown();
+ }
+
+
+ /**
+ * Trigger any database upgrade work that needs to be done.
+ */
+ private void upgradeDatabaseIfNeeded() throws Exception {
+
+ try {
+ InitialContext ic = new InitialContext();
+ DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/rollerdb");
+ Connection con = ds.getConnection();
+ UpgradeDatabase.upgradeDatabase(con, RollerFactory.getRoller().getVersion());
+ con.close();
+ } catch (NamingException e) {
+ log.warn("Unable to access DataSource", e);
+ } catch (SQLException e) {
+ log.warn(e);
+ }
+ }
+
+
+ /**
+ * Initialize the Velocity rendering engine.
+ */
+ private void setupVelocity() throws Exception {
+
+ log.info("Initializing Velocity");
// initialize the Velocity engine
Properties velocityProps = new Properties();
try {
- InputStream instream = mContext.getResourceAsStream("/WEB-INF/velocity.properties");
+ InputStream instream = servletContext.getResourceAsStream("/WEB-INF/velocity.properties");
velocityProps.load(instream);
@@ -201,7 +197,7 @@
velocityProps.setProperty("velocimacro.library", oldLibraries+","+macroLibraries);
}
- mLogger.debug("Velocity props = "+velocityProps);
+ log.debug("Velocity props = "+velocityProps);
// init velocity
RuntimeSingleton.init(velocityProps);
@@ -213,14 +209,37 @@
}
- private void setupRollerProperties() throws RollerException {
- // init property manager by creating it
- Roller mRoller = RollerFactory.getRoller();
- mRoller.getPropertiesManager();
+ /**
+ * Initialize the runtime configuration.
+ */
+ private void setupRuntimeProperties() throws Exception {
+ // PropertiesManager initializes itself
+ RollerFactory.getRoller().getPropertiesManager();
+ }
+
+
+ /**
+ * Initialize the built-in search engine.
+ */
+ private void setupSearch() throws Exception {
+ // IndexManager initializes itself
+ RollerFactory.getRoller().getIndexManager();
}
- private void setupTasks() throws RollerException {
+ /**
+ * Initialize the Theme Library.
+ */
+ private void setupThemeLibrary() throws Exception {
+ // theme manager initializes itself
+ RollerFactory.getRoller().getThemeManager();
+ }
+
+
+ /**
+ * Start up any scheduled background jobs.
+ */
+ private void setupScheduledTasks() throws Exception {
ThreadManager tmgr = RollerFactory.getRoller().getThreadManager();
@@ -233,7 +252,7 @@
String taskClassName = RollerConfig.getProperty("tasks."+tasks[i]+".class");
if(taskClassName != null) {
- mLogger.info("Initializing task: "+tasks[i]);
+ log.info("Initializing task: "+tasks[i]);
try {
Class taskClass = Class.forName(taskClassName);
@@ -249,11 +268,11 @@
tmgr.scheduleFixedRateTimerTask(task, startTime, task.getInterval());
} catch (ClassCastException ex) {
- mLogger.warn("Task does not extend RollerTask class", ex);
+ log.warn("Task does not extend RollerTask class", ex);
} catch (RollerException ex) {
- mLogger.error("Error scheduling task", ex);
+ log.error("Error scheduling task", ex);
} catch (Exception ex) {
- mLogger.error("Error instantiating task", ex);
+ log.error("Error instantiating task", ex);
}
}
}
@@ -261,7 +280,7 @@
// Initialize ping features
- private void initializePingFeatures(Roller roller) throws RollerException {
+ private void initializePingFeatures() throws RollerException {
// Initialize common targets from the configuration
PingConfig.initializeCommonTargets();
@@ -269,17 +288,20 @@
PingConfig.initializePingVariants();
// Remove custom ping targets if they have been disallowed
if (PingConfig.getDisallowCustomTargets()) {
- mLogger.info("Custom ping targets have been disallowed. Removing any existing custom targets.");
- roller.getPingTargetManager().removeAllCustomPingTargets();
+ log.info("Custom ping targets have been disallowed. Removing any existing custom targets.");
+ RollerFactory.getRoller().getPingTargetManager().removeAllCustomPingTargets();
}
// Remove all autoping configurations if ping usage has been disabled.
if (PingConfig.getDisablePingUsage()) {
- mLogger.info("Ping usage has been disabled. Removing any existing auto ping configurations.");
- roller.getAutopingManager().removeAllAutoPings();
+ log.info("Ping usage has been disabled. Removing any existing auto ping configurations.");
+ RollerFactory.getRoller().getAutopingManager().removeAllAutoPings();
}
}
+ /**
+ * Setup Acegi security features.
+ */
protected void initializeSecurityFeatures(ServletContext context) {
ApplicationContext ctx =
@@ -288,7 +310,7 @@
String rememberMe = RollerConfig.getProperty("rememberme.enabled");
boolean rememberMeEnabled = Boolean.valueOf(rememberMe).booleanValue();
- mLogger.info("Remember Me enabled: " + rememberMeEnabled);
+ log.info("Remember Me enabled: " + rememberMeEnabled);
context.setAttribute("rememberMeEnabled", rememberMe);
@@ -310,12 +332,12 @@
} else if (algorithm.equalsIgnoreCase("MD5")) {
encoder = new Md5PasswordEncoder();
} else {
- mLogger.error("Encryption algorithm '" + algorithm +
+ log.error("Encryption algorithm '" + algorithm +
"' not supported, disabling encryption.");
}
if (encoder != null) {
provider.setPasswordEncoder(encoder);
- mLogger.info("Password Encryption Algorithm set to '" + algorithm + "'");
+ log.info("Password Encryption Algorithm set to '" + algorithm + "'");
}
}
@@ -351,54 +373,16 @@
}
- protected void upgradeDatabaseIfNeeded() throws RollerException {
-
- try {
- InitialContext ic = new InitialContext();
- DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/rollerdb");
- Connection con = ds.getConnection();
- UpgradeDatabase.upgradeDatabase(con, RollerFactory.getRoller().getVersion());
- con.close();
- } catch (NamingException e) {
- mLogger.warn("Unable to access DataSource", e);
- } catch (SQLException e) {
- mLogger.warn(e);
- }
- }
-
-
- private void setupIndexManager(Roller roller) throws RollerException {
- roller.getIndexManager();
- }
-
-
- public void sessionCreated(HttpSessionEvent se) {
- mSessionCount.increment();
-
- mLogger.debug("sessions="+ mSessionCount
- + ":freemem=" + Runtime.getRuntime().freeMemory()
- + ":totmem=" + Runtime.getRuntime().totalMemory());
- }
-
-
- public void sessionDestroyed(HttpSessionEvent se) {
- mSessionCount.decrement();
-
- mLogger.debug("sessions=" + mSessionCount
- + ":freemem=" + Runtime.getRuntime().freeMemory()
- + ":totalmem=" + Runtime.getRuntime().totalMemory());
- }
-
-
/**
* Get the ServletContext.
*
* @return ServletContext
*/
public static ServletContext getServletContext() {
- return mContext;
+ return servletContext;
}
-
+
+
/**
* Get an instance of AutoProvision, if available in roller.properties
*
@@ -416,7 +400,7 @@
try {
clazz = Class.forName(clazzName);
} catch (ClassNotFoundException e) {
- mLogger.warn("Unable to found specified Auto Provision class.", e);
+ log.warn("Unable to found specified Auto Provision class.", e);
return null;
}
@@ -431,9 +415,9 @@
try {
return (AutoProvision) clazz.newInstance();
} catch (InstantiationException e) {
- mLogger.warn("InstantiationException while creating: " + clazzName, e);
+ log.warn("InstantiationException while creating: " + clazzName, e);
} catch (IllegalAccessException e) {
- mLogger.warn("IllegalAccessException while creating: " + clazzName, e);
+ log.warn("IllegalAccessException while creating: " + clazzName, e);
}
}
}
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerSession.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerSession.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerSession.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/RollerSession.java Tue Apr 3 13:07:41 2007
@@ -26,8 +26,6 @@
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
-
-import org.apache.commons.collections.ArrayStack;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
@@ -111,14 +109,10 @@
public void sessionCreated(HttpSessionEvent se) {
RollerSession rollerSession = new RollerSession();
se.getSession().setAttribute(ROLLER_SESSION, rollerSession);
- RollerContext rctx = RollerContext.getRollerContext();
- rctx.sessionCreated(se);
}
public void sessionDestroyed(HttpSessionEvent se) {
- RollerContext rctx = RollerContext.getRollerContext();
- rctx.sessionDestroyed(se);
clearSession(se);
}
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/filters/RequestFilter.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/filters/RequestFilter.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/filters/RequestFilter.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/filters/RequestFilter.java Tue Apr 3 13:07:41 2007
@@ -18,9 +18,6 @@
package org.apache.roller.ui.core.filters;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.Date;
-import java.util.Locale;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -31,20 +28,12 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import javax.servlet.jsp.jstl.core.Config;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.struts.Globals;
-import org.apache.roller.RollerException;
-import org.apache.roller.config.RollerConfig;
import org.apache.roller.business.Roller;
import org.apache.roller.business.RollerFactory;
-import org.apache.roller.business.UserManager;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
-import org.apache.roller.ui.core.util.RequestUtil;
-
/**
* Entry point filter for Weblog page and Editor UI, this filter
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/CreateWebsiteAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/CreateWebsiteAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/CreateWebsiteAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/CreateWebsiteAction.java Tue Apr 3 13:07:41 2007
@@ -37,12 +37,11 @@
import org.apache.roller.config.RollerRuntimeConfig;
import org.apache.roller.business.Roller;
import org.apache.roller.business.RollerFactory;
-import org.apache.roller.business.ThemeManager;
+import org.apache.roller.business.themes.ThemeManager;
import org.apache.roller.business.UserManager;
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.core.BasePageModel;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerSession;
import org.apache.roller.ui.authoring.struts.formbeans.CreateWebsiteForm;
import org.apache.roller.util.Utilities;
@@ -140,7 +139,6 @@
saveErrors(request, errors);
forward = mapping.findForward("createWebsite.page");
} else try {
- RollerContext rollerContext = RollerContext.getRollerContext();
UserData user =
RollerSession.getRollerSession(request).getAuthenticatedUser();
UserManager mgr = roller.getUserManager();
@@ -237,7 +235,6 @@
HttpServletResponse response, ActionMapping mapping, WebsiteData wd)
throws RollerException {
super("createWebsite.title", request, response, mapping);
- RollerContext rollerContext = RollerContext.getRollerContext();
Roller roller = RollerFactory.getRoller();
ThemeManager themeMgr = roller.getThemeManager();
themes = themeMgr.getEnabledThemesList();
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/UserNewAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/UserNewAction.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/UserNewAction.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/struts/actions/UserNewAction.java Tue Apr 3 13:07:41 2007
@@ -44,7 +44,6 @@
import org.apache.roller.business.UserManager;
import org.apache.roller.pojos.UserData;
import org.apache.roller.ui.core.BasePageModel;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.security.CustomUserRegistry;
import org.apache.roller.ui.authoring.struts.formbeans.UserFormEx;
@@ -139,7 +138,6 @@
UserFormEx form = (UserFormEx)actionForm;
RollerRequest rreq = RollerRequest.getRollerRequest(request);
ServletContext ctx = rreq.getServletContext();
- RollerContext rollerContext = RollerContext.getRollerContext();
boolean reg_allowed =
RollerRuntimeConfig.getBooleanProperty("users.registration.enabled");
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java Tue Apr 3 13:07:41 2007
@@ -28,7 +28,6 @@
import org.apache.roller.business.RollerFactory;
import org.apache.roller.business.WeblogManager;
import org.apache.roller.pojos.WeblogEntryData;
-import org.apache.roller.ui.core.RollerContext;
import org.apache.roller.ui.rendering.util.WeblogPageRequest;
import org.apache.roller.util.DateUtil;
import org.apache.roller.util.URLUtilities;
@@ -75,7 +74,6 @@
public String getContent(Date day) {
String content = null;
try {
- RollerContext rctx = RollerContext.getRollerContext();
StringBuffer sb = new StringBuffer();
// get the 8 char YYYYMMDD datestring for day, returns null
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java Tue Apr 3 13:07:41 2007
@@ -193,6 +193,15 @@
response.sendRedirect(redirectUrl);
return true;
+ } else if(weblogRequestContext != null &&
+ "tags".equals(weblogRequestContext)) {
+ // tags section can have an index page at /<weblog>/tags/ and
+ // a tags query at /<weblog>/tags/tag1+tag2, buth that's it
+ if((weblogRequestData == null && !trailingSlash) ||
+ (weblogRequestData != null && trailingSlash)) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return true;
+ }
} else if(weblogRequestContext != null && trailingSlash) {
// this means that someone has accessed a weblog url and included
// a trailing slash, like /<weblog>/entry/<anchor>/ which is not
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/FeedModel.java Tue Apr 3 13:07:41 2007
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -51,6 +52,8 @@
private static Log log = LogFactory.getLog(FeedModel.class);
+ private static int DEFAULT_ENTRIES = RollerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
+
private WeblogFeedRequest feedRequest = null;
private WebsiteData weblog = null;
@@ -114,29 +117,12 @@
return feedRequest.getWeblogCategoryName();
}
-
/**
* Gets most recent entries limited by: weblog and category specified in
* request plus the weblog.entryDisplayCount.
*/
public Pager getWeblogEntriesPager() {
-
- // all feeds get the site-wide default # of entries
- int entryCount =
- RollerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
-
- String pagerUrl = URLUtilities.getWeblogFeedURL(weblog,
- feedRequest.getLocale(), feedRequest.getType(),
- feedRequest.getFormat(), feedRequest.getWeblogCategoryName(),
- null, feedRequest.getTags(), feedRequest.isExcerpts(), true);
-
- return new WeblogEntriesListPager(
- pagerUrl, weblog, null, feedRequest.getWeblogCategoryName(),
- feedRequest.getTags(),
- feedRequest.getLocale(),
- -1,
- feedRequest.getPage(),
- entryCount);
+ return new FeedEntriesPager(feedRequest);
}
@@ -145,24 +131,9 @@
* the weblog.entryDisplayCount.
*/
public Pager getCommentsPager() {
-
- // all feeds get the site-wide default # of entries
- int entryCount =
- RollerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
-
- String pagerUrl = URLUtilities.getWeblogFeedURL(weblog,
- feedRequest.getLocale(), feedRequest.getType(),
- feedRequest.getFormat(), null, null, null,
- feedRequest.isExcerpts(), true);
+ return new FeedCommentsPager(feedRequest);
+ }
- return new CommentsPager(
- pagerUrl,
- feedRequest.getLocale(),
- -1,
- feedRequest.getPage(),
- entryCount);
- }
-
/**
* Returns the list of tags specified in the request /?tags=foo+bar
* @return
@@ -170,5 +141,69 @@
public List getTags() {
return feedRequest.getTags();
}
+
+ public static class FeedEntriesPager extends WeblogEntriesListPager {
+
+ private WeblogFeedRequest feedRequest;
+
+ public FeedEntriesPager(WeblogFeedRequest feedRequest) {
+ super(URLUtilities.getWeblogFeedURL(feedRequest.getWeblog(),
+ feedRequest.getLocale(), feedRequest.getType(),
+ feedRequest.getFormat(), null, null, null, false, true),
+ feedRequest.getWeblog(), null, null, feedRequest.getTags(),
+ feedRequest.getLocale(), -1, feedRequest.getPage(), DEFAULT_ENTRIES);
+ this.feedRequest = feedRequest;
+ }
+
+ protected String createURL(String url, Map params) {
+ List tags = feedRequest.getTags();
+ if(tags != null && tags.size() > 0) {
+ params.put("tags", URLUtilities.getEncodedTagsString(tags));
+ }
+ String category = feedRequest.getWeblogCategoryName();
+ if(category != null && category.trim().length() > 0) {
+ params.put("cat", URLUtilities.encode(category));
+ }
+ if(feedRequest.isExcerpts()) {
+ params.put("excerpts", "true");
+ }
+ return super.createURL(url, params);
+ }
+
+ public String getUrl() {
+ return createURL(super.getUrl(), new HashMap());
+ }
+ }
+ public static class FeedCommentsPager extends CommentsPager {
+
+ private WeblogFeedRequest feedRequest;
+
+ public FeedCommentsPager(WeblogFeedRequest feedRequest) {
+ super(URLUtilities.getWeblogFeedURL(feedRequest.getWeblog(),
+ feedRequest.getLocale(), feedRequest.getType(),
+ feedRequest.getFormat(), null, null,
+ null, false, true), feedRequest.getLocale(), -1, feedRequest.getPage(), DEFAULT_ENTRIES);
+ this.feedRequest = feedRequest;
+ }
+
+ protected String createURL(String url, Map params) {
+ List tags = feedRequest.getTags();
+ if(tags != null && tags.size() > 0) {
+ params.put("tags", URLUtilities.getEncodedTagsString(tags));
+ }
+ String category = feedRequest.getWeblogCategoryName();
+ if(category != null && category.trim().length() > 0) {
+ params.put("cat", URLUtilities.encode(category));
+ }
+ if(feedRequest.isExcerpts()) {
+ params.put("excerpts", "true");
+ }
+ return super.createURL(url, params);
+ }
+
+ public String getUrl() {
+ return createURL(super.getUrl(), new HashMap());
+ }
+ }
}
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/SearchResultsFeedModel.java Tue Apr 3 13:07:41 2007
@@ -111,7 +111,7 @@
String pagerUrl = URLUtilities.getWeblogFeedURL(weblog,
feedRequest.getLocale(), feedRequest.getType(),
feedRequest.getFormat(), null, null, /* cat and term are null but added to the url in the pager */
- feedRequest.getTags(), feedRequest.isExcerpts(), true);
+ null, false, true);
// if there is no query, then we are done
if(feedRequest.getTerm() == null) {
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/model/URLModel.java Tue Apr 3 13:07:41 2007
@@ -350,7 +350,7 @@
}
public String search(String term, String catPath) {
- return URLUtilities.getWeblogFeedURL(weblog, locale, "search", "atom", catPath, term, null, false, true);
+ return URLUtilities.getWeblogFeedURL(weblog, locale, "entries", "atom", catPath, term, null, false, true);
}
public String atomByTags(List tags, boolean excerpts) {
Modified: incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java?view=diff&rev=525260&r1=525259&r2=525260
==============================================================================
--- incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java (original)
+++ incubator/roller/branches/roller_4.0_newbackend/src/org/apache/roller/ui/rendering/pagers/SearchResultsFeedPager.java Tue Apr 3 13:07:41 2007
@@ -89,6 +89,13 @@
String term = feedRequest.getTerm();
if(term != null && term.trim().length() > 0) {
params.put("q", URLUtilities.encode(term.trim()));
+ }
+ List tags = feedRequest.getTags();
+ if(tags != null && tags.size() > 0) {
+ params.put("tags", URLUtilities.getEncodedTagsString(tags));
+ }
+ if(feedRequest.isExcerpts()) {
+ params.put("excerpts", "true");
}
return super.createURL(url, params);
}