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/03/20 03:23:16 UTC
svn commit: r520228 - in /incubator/roller/trunk: metadata/database/tmpls/
src/org/apache/roller/pojos/
src/org/apache/roller/ui/authoring/struts/actions/
src/org/apache/roller/ui/authoring/struts/formbeans/
src/org/apache/roller/ui/rendering/servlets/...
Author: snoopdave
Date: Mon Mar 19 19:23:13 2007
New Revision: 520228
URL: http://svn.apache.org/viewvc?view=rev&rev=520228
Log:
Added outputContentType property to to WeblogTemplate class and made UI improvements to Template Editor pages
Added:
incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java
incubator/roller/trunk/web/images/launch-link.png (with props)
incubator/roller/trunk/web/images/lock.png (with props)
incubator/roller/trunk/web/images/page_white.png (with props)
incubator/roller/trunk/web/images/page_white_delete.png (with props)
incubator/roller/trunk/web/images/page_white_gear.png (with props)
Modified:
incubator/roller/trunk/metadata/database/tmpls/3xx-to-400-migration.vm
incubator/roller/trunk/metadata/database/tmpls/createdb.vm
incubator/roller/trunk/src/org/apache/roller/pojos/StaticTemplate.java
incubator/roller/trunk/src/org/apache/roller/pojos/Template.java
incubator/roller/trunk/src/org/apache/roller/pojos/ThemeTemplate.java
incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTemplate.java
incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties
incubator/roller/trunk/web/WEB-INF/classes/roller.properties
incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-page.jsp
incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-pages.jsp
incubator/roller/trunk/web/WEB-INF/jsps/authoring/remove-page.jsp
incubator/roller/trunk/web/WEB-INF/jsps/tiles/footer.jsp
incubator/roller/trunk/web/roller-ui/theme/tan/colors.css
Modified: incubator/roller/trunk/metadata/database/tmpls/3xx-to-400-migration.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/metadata/database/tmpls/3xx-to-400-migration.vm?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/metadata/database/tmpls/3xx-to-400-migration.vm (original)
+++ incubator/roller/trunk/metadata/database/tmpls/3xx-to-400-migration.vm Mon Mar 19 19:23:13 2007
@@ -4,6 +4,9 @@
DON'T RUN THIS, IT'S NOT A DATABASE CREATION SCRIPT!!!
**#
+#addColumnNull("webpage" "outputtype" "varchar(48)")
+
+
-- remove old id column of group subscription table
alter table rag_group_subscription drop column id;
Modified: incubator/roller/trunk/metadata/database/tmpls/createdb.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/metadata/database/tmpls/createdb.vm?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/metadata/database/tmpls/createdb.vm (original)
+++ incubator/roller/trunk/metadata/database/tmpls/createdb.vm Mon Mar 19 19:23:13 2007
@@ -77,7 +77,8 @@
hidden $db.BOOLEAN_SQL_TYPE_FALSE not null,
navbar $db.BOOLEAN_SQL_TYPE_FALSE not null,
templatelang varchar(20) not null,
- decorator varchar(255) default null
+ decorator varchar(255) default null,
+ outputtype varchar(48) default null
);
create index wp_name_idx on webpage( name$!db.INDEXSIZE );
create index wp_link_idx on webpage( link$!db.INDEXSIZE );
Modified: incubator/roller/trunk/src/org/apache/roller/pojos/StaticTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/StaticTemplate.java?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/StaticTemplate.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/StaticTemplate.java Mon Mar 19 19:23:13 2007
@@ -40,6 +40,7 @@
private String templateLanguage = null;
private boolean hidden = false;
private boolean navbar = false;
+ private String outputContentType = null;
public StaticTemplate() {}
@@ -132,5 +133,11 @@
return navbar;
}
-
+ public String getOutputContentType() {
+ return outputContentType;
+ }
+
+ public void setOutputContentType(String outputContentType) {
+ this.outputContentType = outputContentType;
+ }
}
Modified: incubator/roller/trunk/src/org/apache/roller/pojos/Template.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/Template.java?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/Template.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/Template.java Mon Mar 19 19:23:13 2007
@@ -98,4 +98,9 @@
*/
public Template getDecorator();
+ /**
+ * Content-type of output or null if none defined.
+ */
+ public String getOutputContentType();
+
}
Modified: incubator/roller/trunk/src/org/apache/roller/pojos/ThemeTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/ThemeTemplate.java?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/ThemeTemplate.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/ThemeTemplate.java Mon Mar 19 19:23:13 2007
@@ -39,6 +39,7 @@
private boolean hidden = false;
private boolean navbar = false;
private String decoratorName = null;
+ private String outputContentType = null;
private Theme myTheme = null;
@@ -150,6 +151,14 @@
public void setDecoratorName(String decorator) {
this.decoratorName = decorator;
+ }
+
+ public String getOutputContentType() {
+ return outputContentType;
+ }
+
+ public void setOutputContentType(String outputContentType) {
+ this.outputContentType = outputContentType;
}
public String toString() {
Modified: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTemplate.java?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTemplate.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTemplate.java Mon Mar 19 19:23:13 2007
@@ -29,7 +29,7 @@
import org.apache.roller.RollerException;
/**
- * Pojo that represents a single user defined template page.
+ * POJO that represents a single user defined template page.
*
* This template is different from the generic template because it also
* contains a reference to the website it is part of.
@@ -39,8 +39,7 @@
* @hibernate.class lazy="true" table="webpage"
* @hibernate.cache usage="read-write"
*/
-public class WeblogTemplate
- implements Serializable, Template {
+public class WeblogTemplate implements Serializable, Template {
public static final long serialVersionUID = -613737191638263428L;
public static final String DEFAULT_PAGE = "Weblog";
@@ -48,16 +47,17 @@
private static Log log = LogFactory.getLog(WeblogTemplate.class);
private static Set requiredTemplates = null;
- private String id = null;
- private String name = null;
- private String description = null;
- private String link = null;
- private String contents = null;
- private Date lastModified = null;
- private String templateLanguage = null;
+ private String id = null;
+ private String name = null;
+ private String description = null;
+ private String link = null;
+ private String contents = null;
+ private Date lastModified = null;
+ private String templateLanguage = null;
private boolean hidden = false;
private boolean navbar = false;
- private String decoratorName = null;
+ private String decoratorName = null;
+ private String outputContentType = null;
private WebsiteData weblog = null;
@@ -272,6 +272,20 @@
/** @ejb:persistent-field */
public void setDecoratorName(String decorator) {
this.decoratorName = decorator;
+ }
+
+ /**
+ * Content-type rendered by template or null for auto-detection by link extension.
+ * @ejb:persistent-field
+ * @hibernate.property column="outputtype" non-null="false" unique="false"
+ */
+ public String getOutputContentType() {
+ return outputContentType;
+ }
+
+ /** @ejb:persistent-field */
+ public void setOutputContentType(String outputContentType) {
+ this.outputContentType = outputContentType;
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java Mon Mar 19 19:23:13 2007
@@ -19,6 +19,7 @@
package org.apache.roller.ui.authoring.struts.actions;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.ResourceBundle;
@@ -34,11 +35,13 @@
import org.apache.roller.RollerPermissionsException;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.business.UserManager;
+import org.apache.roller.config.RollerConfig;
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.forms.WeblogTemplateForm;
+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;
@@ -51,12 +54,13 @@
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;
+import org.apache.struts.util.LabelValueBean;
/**
* Handles actions for weblog template management.
*
- * @struts.action name="weblogTemplateForm" path="/roller-ui/authoring/page"
+ * @struts.action name="weblogTemplateFormEx" path="/roller-ui/authoring/page"
* scope="session" parameter="method"
*
* @struts.action-forward name="removePage.page" path=".remove-page"
@@ -79,15 +83,14 @@
throws IOException, ServletException {
ActionForward forward = mapping.findForward("editPages.page");
- WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+ WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
try {
- request.setAttribute("model", new BasePageModel(
- "pagesForm.title", request, response, mapping));
RollerRequest rreq = RollerRequest.getRollerRequest(request);
RollerSession rses = RollerSession.getRollerSession(request);
WebsiteData website = rreq.getWebsite();
if ( rses.isUserAuthorizedToAdmin(website) ) {
+
UserManager mgr = RollerFactory.getRoller().getUserManager();
// first off, check if template already exists
@@ -96,33 +99,35 @@
ActionErrors errors = new ActionErrors();
errors.add(null, new ActionError("pagesForm.error.alreadyExists", form.getName()));
saveErrors(request, errors);
- addModelObjects(request, response, mapping, website, null);
+ request.setAttribute("model",
+ new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null));
return forward;
}
- WeblogTemplate data = new WeblogTemplate();
- form.copyTo(data, request.getLocale());
- data.setWebsite(website);
- data.setLastModified( new Date() );
- data.setDescription(data.getName());
- data.setContents(bundle.getString("pageForm.newTemplateContent"));
- validateLink( data );
+ WeblogTemplate page = new WeblogTemplate();
+ form.copyTo(page, request.getLocale());
+ page.setWebsite(website);
+ page.setLastModified( new Date() );
+ page.setDescription(page.getName());
+ page.setContents(bundle.getString("pageForm.newTemplateContent"));
+
+ validateLink(page);
// all templates start out as velocity templates
- data.setTemplateLanguage("velocity");
+ page.setTemplateLanguage("velocity");
// for now, all templates just use _decorator
- if(!"_decorator".equals(data.getName())) {
- data.setDecoratorName("_decorator");
+ if(!"_decorator".equals(page.getName())) {
+ page.setDecoratorName("_decorator");
}
// save the page
- mgr.savePage( data );
+ mgr.savePage( page );
// if this person happened to create a Weblog template from
// scratch then make sure and set the defaultPageId
- if(WeblogTemplate.DEFAULT_PAGE.equals(data.getName())) {
- website.setDefaultPageId(data.getId());
+ if(WeblogTemplate.DEFAULT_PAGE.equals(page.getName())) {
+ website.setDefaultPageId(page.getId());
mgr.saveWebsite(website);
}
@@ -132,12 +137,14 @@
ActionMessages uiMessages = new ActionMessages();
uiMessages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("pagesForm.addNewPage.success",
- data.getName()));
+ page.getName()));
saveMessages(request, uiMessages);
actionForm.reset(mapping,request);
- addModelObjects(request, response, mapping, website, data);
+ request.setAttribute("model",
+ new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, page));
+
} else {
forward = mapping.findForward("access-denied");
}
@@ -160,19 +167,25 @@
ActionForward forward = mapping.findForward("editPage.page");
try {
RollerRequest rreq = RollerRequest.getRollerRequest(request);
- WeblogTemplate pd = (WeblogTemplate)rreq.getPage();
+ WeblogTemplate page = (WeblogTemplate)rreq.getPage();
RollerSession rses = RollerSession.getRollerSession(request);
- if ( rses.isUserAuthorizedToAdmin(pd.getWebsite()) ) {
- BasePageModel pageModel = new BasePageModel(
- "pageForm.title", request, response, mapping);
- pageModel.setWebsite(pd.getWebsite());
- request.setAttribute("model", pageModel);
+ if ( rses.isUserAuthorizedToAdmin(page.getWebsite()) ) {
- WeblogTemplateForm pf = (WeblogTemplateForm)actionForm;
- pf.copyFrom(pd, request.getLocale());
+ WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
+ form.copyFrom(page, request.getLocale());
- addModelObjects(request, response, mapping, pd.getWebsite(), pd);
+ // empty content-type indicates that page uses auto content-type detection
+ if (StringUtils.isEmpty(page.getOutputContentType())) {
+ form.setAutoContentType(Boolean.TRUE);
+ } else {
+ form.setAutoContentType(Boolean.FALSE);
+ form.setManualContentType(page.getOutputContentType());
+ }
+
+ request.setAttribute("model",
+ new WeblogTemplateFormModel("pageForm.title", request, response, mapping, page));
+
} else {
forward = mapping.findForward("access-denied");
}
@@ -193,12 +206,10 @@
ActionForward forward = mapping.findForward("editPages.page");
try {
- WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+ WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
RollerRequest rreq = RollerRequest.getRollerRequest(request);
RollerSession rses = RollerSession.getRollerSession(request);
- request.setAttribute("model", new BasePageModel(
- "pagesForm.title", request, response, mapping));
-
+
WebsiteData website = rreq.getWebsite();
if (website == null && form.getId()!=null) {
UserManager mgr = RollerFactory.getRoller().getUserManager();
@@ -206,11 +217,13 @@
website = template.getWebsite();
}
- if ( rses.isUserAuthorizedToAdmin(website)) {
- addModelObjects(request, response, mapping, website, null);
- } else {
+ request.setAttribute("model",
+ new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null));
+
+ if (!rses.isUserAuthorizedToAdmin(website)) {
forward = mapping.findForward("access-denied");
}
+
} catch (Exception e) {
log.error("ERROR in action",e);
throw new ServletException(e);
@@ -227,14 +240,16 @@
throws IOException, ServletException {
ActionForward forward = mapping.findForward("editPages");
- request.setAttribute("model", new BasePageModel(
- "pagesForm.title", request, response, mapping));
try {
UserManager mgr = RollerFactory.getRoller().getUserManager();
- WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+ WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
WeblogTemplate template = mgr.getPage(form.getId());
WebsiteData website = template.getWebsite();
+ WeblogTemplateFormModel pageModel =
+ new WeblogTemplateFormModel("pagesForm.title", request, response, mapping, null);
+ request.setAttribute("model", pageModel);
+
RollerSession rses = RollerSession.getRollerSession(request);
if ( rses.isUserAuthorizedToAdmin(website) ) {
if(!template.isRequired()) {
@@ -250,8 +265,6 @@
throw new RollerException("Cannot remove required page");
}
- addModelObjects(
- request, response, mapping, template.getWebsite(), template);
actionForm.reset(mapping, request);
} else {
forward = mapping.findForward("access-denied");
@@ -284,18 +297,13 @@
WeblogTemplate page = (WeblogTemplate) rreq.getPage();
WebsiteData website = page.getWebsite();
if ( rses.isUserAuthorizedToAdmin(website) ) {
- WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
+ WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
form.copyFrom(page, request.getLocale());
- addModelObjects(request, response, mapping, page.getWebsite(), page);
-
- BasePageModel pageModel = new BasePageModel(
- "editPages.title.removeOK", request, response, mapping);
- pageModel.setWebsite(website);
+ WeblogTemplateFormModel pageModel =
+ new WeblogTemplateFormModel("editPages.title.removeOK", request, response, mapping, page);
request.setAttribute("model", pageModel);
- UserData ud = rses.getAuthenticatedUser();
- request.setAttribute("user",ud);
} else {
forward = mapping.findForward("access-denied");
}
@@ -316,38 +324,46 @@
ActionForward forward = mapping.findForward("editPage.page");
try {
- RollerRequest rreq = RollerRequest.getRollerRequest(request);
- WeblogTemplateForm form = (WeblogTemplateForm)actionForm;
- UserManager mgr = RollerFactory.getRoller().getUserManager();
- WeblogTemplate data = mgr.getPage(form.getId());
- WebsiteData website = data.getWebsite();
+ WeblogTemplateFormEx form = (WeblogTemplateFormEx)actionForm;
+
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ UserManager mgr = RollerFactory.getRoller().getUserManager();
+ WeblogTemplate page = mgr.getPage(form.getId());
+ WebsiteData website = page.getWebsite();
+
RollerSession rses = RollerSession.getRollerSession(request);
if (rses.isUserAuthorizedToAdmin(website)) {
- form.copyTo(data, request.getLocale());
- data.setLastModified( new Date() );
- validateLink( data );
+
+ form.copyTo(page, request.getLocale());
+ page.setLastModified( new Date() );
- mgr.savePage( data );
+ if (form.getAutoContentType() == null || !form.getAutoContentType().booleanValue()) {
+ page.setOutputContentType(form.getManualContentType());
+ } else {
+ // empty content-type indicates that page uses auto content-type detection
+ page.setOutputContentType(null);
+ }
+
+ validateLink(page);
+
+ mgr.savePage( page );
RollerFactory.getRoller().flush();
// set the (possibly) new link back into the Form bean
- ((WeblogTemplateForm)actionForm).setLink( data.getLink() );
+ ((WeblogTemplateFormEx)actionForm).setLink( page.getLink() );
ActionMessages uiMessages = new ActionMessages();
uiMessages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("pageForm.save.success",
- data.getName()));
+ page.getName()));
saveMessages(request, uiMessages);
- CacheManager.invalidate(data);
+ CacheManager.invalidate(page);
- addModelObjects(request, response, mapping, data.getWebsite(), data);
-
- BasePageModel pageModel = new BasePageModel(
- "pageForm.title", request, response, mapping);
- pageModel.setWebsite(website);
+ WeblogTemplateFormModel pageModel =
+ new WeblogTemplateFormModel("pageForm.title", request, response, mapping, page);
request.setAttribute("model", pageModel);
} else {
@@ -377,21 +393,21 @@
* characters that are web-safe), this is a much easier
* test-and-correct. Otherwise we would need a RegEx package.
*/
- private void validateLink( WeblogTemplate data ) {
- // if data.getLink() is null or empty
- // use the title ( data.getName() )
- if ( StringUtils.isEmpty( data.getLink() ) ) {
- data.setLink( data.getName() );
+ private void validateLink( WeblogTemplate page ) {
+ // if page.getLink() is null or empty
+ // use the title ( page.getName() )
+ if ( StringUtils.isEmpty( page.getLink() ) ) {
+ page.setLink( page.getName() );
}
// if link contains any nonAlphanumeric, strip them
// first we must remove any html, as this is
// non-instructional markup. Then do a straight
// removeNonAlphanumeric.
- if ( !StringUtils.isAlphanumeric( data.getLink() ) ) {
- String link = Utilities.removeHTML( data.getLink() );
+ if ( !StringUtils.isAlphanumeric( page.getLink() ) ) {
+ String link = Utilities.removeHTML( page.getLink() );
link = Utilities.removeNonAlphanumeric( link );
- data.setLink( link );
+ page.setLink( link );
}
}
@@ -402,33 +418,88 @@
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
- request.setAttribute("model", new BasePageModel(
- "pagesForm.title", request, response, mapping));
- return (mapping.findForward("editPages"));
+ try {
+ request.setAttribute("model", new WeblogTemplateFormModel(
+ "pagesForm.title", request, response, mapping, null));
+ return (mapping.findForward("editPages"));
+ } catch (Exception e) {
+ log.error("ERROR in action",e);
+ throw new ServletException(e);
+ }
}
-
- private void addModelObjects(
- HttpServletRequest request,
- HttpServletResponse response,
- ActionMapping mapping,
- WebsiteData website,
- WeblogTemplate page)
- throws RollerException {
- UserManager mgr = RollerFactory.getRoller().getUserManager();
- RollerSession rses = RollerSession.getRollerSession(request);
- RollerRequest rreq = RollerRequest.getRollerRequest(request);
-
- UserData user = rses.getAuthenticatedUser();
- request.setAttribute("user", user);
-
- WebsiteData wd = rreq.getWebsite();
- request.setAttribute("website", website);
-
- List pages = mgr.getPages(website);
- request.setAttribute("pages", pages);
-
- if (page != null) request.setAttribute("page", page);
+ public class WeblogTemplateFormModel extends BasePageModel {
+ private UserData user;
+ private WeblogTemplate page;
+ private List pages;
+ private List languages = new ArrayList();
+
+ public WeblogTemplateFormModel(
+ String titleKey,
+ HttpServletRequest request,
+ HttpServletResponse response,
+ ActionMapping mapping,
+ WeblogTemplate page) throws RollerException {
+
+ super(titleKey, request, response, mapping);
+
+ UserManager mgr = RollerFactory.getRoller().getUserManager();
+ RollerSession rses = RollerSession.getRollerSession(request);
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+
+ if (page != null) {
+ this.setWebsite(page.getWebsite());
+ } else {
+ this.setWebsite(rreq.getWebsite());
+ }
+
+ this.setUser(rses.getAuthenticatedUser());
+ this.setPages(mgr.getPages(getWebsite()));
+ this.setPage(page);
+
+ if (page != null) {
+ String langs = RollerConfig.getProperty("rendering.templateLanguages","velocity");
+ String[] langsArray = Utilities.stringToStringArray(langs, ",");
+ for (int i = 0; i < langsArray.length; i++) {
+ getLanguages().add(new LabelValueBean(langsArray[i], langsArray[i]));
+ }
+ }
+ }
+
+ public UserData getUser() {
+ return user;
+ }
+
+ public void setUser(UserData user) {
+ this.user = user;
+ }
+
+ public WeblogTemplate getPage() {
+ return page;
+ }
+
+ public void setPage(WeblogTemplate page) {
+ this.page = page;
+ }
+
+ public List getPages() {
+ return pages;
+ }
+
+ public void setPages(List pages) {
+ this.pages = pages;
+ }
+
+ public List getLanguages() {
+ return languages;
+ }
+
+ public void setLanguages(List languages) {
+ this.languages = languages;
+ }
}
-
+
}
+
+
+
Added: incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java?view=auto&rev=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogTemplateFormEx.java Mon Mar 19 19:23:13 2007
@@ -0,0 +1,65 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License. For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+
+package org.apache.roller.ui.authoring.struts.formbeans;
+
+import java.util.Locale;
+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"
+ */
+public class WeblogTemplateFormEx extends WeblogTemplateForm {
+ private Boolean autoContentType = Boolean.TRUE;
+ private String manualContentType = null;
+
+ public void reset(
+ org.apache.struts.action.ActionMapping mapping,
+ javax.servlet.ServletRequest request) {
+ doReset(mapping, request);
+ setAutoContentType(Boolean.TRUE);
+ manualContentType = null;
+ }
+
+ public void reset(
+ org.apache.struts.action.ActionMapping mapping,
+ javax.servlet.http.HttpServletRequest request) {
+ doReset(mapping, request);
+ setAutoContentType(Boolean.TRUE);
+ manualContentType = null;
+ }
+
+ public Boolean getAutoContentType() {
+ return autoContentType;
+ }
+
+ public void setAutoContentType(Boolean autoContentType) {
+ this.autoContentType = autoContentType;
+ }
+
+ public String getManualContentType() {
+ return manualContentType;
+ }
+
+ public void setManualContentType(String manualContentType) {
+ this.manualContentType = manualContentType;
+ }
+}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/servlets/PageServlet.java?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/servlets/PageServlet.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/servlets/PageServlet.java Mon Mar 19 19:23:13 2007
@@ -30,6 +30,7 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
@@ -329,11 +330,17 @@
// looks like we need to render content
// set the content type
- String mimeType = RollerContext.getServletContext().getMimeType(page.getLink());
String contentType = "text/html; charset=utf-8";
- if(mimeType != null) {
- // we found a match ... set the content type
- contentType = mimeType+"; charset=utf-8";
+ if (StringUtils.isNotEmpty(page.getOutputContentType())) {
+ contentType = page.getOutputContentType() + "; charset=utf-8";
+ } else {
+ String mimeType = RollerContext.getServletContext().getMimeType(page.getLink());
+ if (mimeType != null) {
+ // we found a match ... set the content type
+ contentType = mimeType + "; charset=utf-8";
+ } else {
+ contentType = "text/html; charset=utf-8";
+ }
}
HashMap model = new HashMap();
Modified: incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties Mon Mar 19 19:23:13 2007
@@ -882,9 +882,10 @@
pagesForm.subtitle=Manage templates that define weblog <span>{0}</span>
pagesForm.tip=You can edit the templates that define the layout, colors and \
fonts of your weblog. You can also create new templates to define entirely \
-new pages. This is for advanced users only, if you're not comfortable with \
-HTML, you might want to leave your templates alone.
+new pages. This is for advanced users only, if you're not comfortable \
+with HTML, you might want to leave your templates alone.
+pageForm.advancedSettings=Advanced Settings
pagesForm.name=Name
pagesForm.link=Link
pagesForm.description=Description
@@ -901,6 +902,11 @@
theme, so some template edits may not effect how your blog looks.
editPages.title.removeOK=Confirm remove of template
+pagesForm.launch=launch
+pagesForm.outputContentType=Type
+pagesForm.column.navbar=Navbar
+pagesForm.column.hidden=Hidden page
+
pageCache.flushed=Page cache has been successfully flushed.
pagesForm.error.alreadyExists=The template {0} already exists.
@@ -908,11 +914,22 @@
# -------------------------------------------------------------------- Page edit
pageForm.title=Edit Template
-pageForm.editPage=Edit Template
+pageForm.subtitle=Edit template <span>{0}</span> in weblog <span>{1}</span>
+pageForm.tip=You can edit this template to change what it generates.\
+Refer the the Roller Template Guide for information about the objects \
+and code you are allowed to use in a template. This is for advanced \
+users only, if you're not comfortable with HTML, you might want to leave \
+your templates alone.
+pageForm.tip.required=You can edit this template to change what it generates.\
+Refer the the Roller Template Guide for information about the objects \
+and code you are allowed to use in a template. This is for advanced \
+users only, if you're not comfortable with HTML, you might want to leave \
+your templates alone. NOTE: this is a required weblog template, you cannot \
+change the name, link or description.
pageForm.name=Name
pageForm.link=Link
pageForm.hidden=Hidden
-pageForm.hidden.tip=Hidden templates cannot be accessed via a weblog URL
+pageForm.hidden.tip=Hidden pages cannot be accessed via a weblog URL
pageForm.navbar=Include in page menu
pageForm.navbar.tip=Include in menu produced by showPageMenu() macro
pageForm.description=Description
@@ -920,8 +937,18 @@
pageForm.save=Save
pageForm.newTemplateContent=<html><body></body></html>
pageForm.save.success=Template updated successfully.
-pagesForm.column.navbar=Navbar
-pagesForm.column.hidden=Hidden
+pageForm.launch=launch
+pageForm.useAutoContentType=Automatically set content type
+pageForm.useManualContentType=Use manually specified content-type
+
+pageForm.templateLanguage=Template Language
+
+pageForm.outputContentType=Content-Type
+pageForm.outputContentTypeHTML=HTML (text/html)
+pageForm.outputContentTypeXHTML=XHTML (application/xhtml+xml)
+pageForm.outputContentTypeJavaScript=JavaScript (text/script)
+pageForm.outputContentTypeStyle=CSS (test/style)
+pageForm.outputContentTypeCustom=Custom...
pageRemove.subtitle=Confirm removal of page
pageRemove.youSure=Are you sure you want to remove this page?
Modified: incubator/roller/trunk/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/classes/roller.properties?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/trunk/web/WEB-INF/classes/roller.properties Mon Mar 19 19:23:13 2007
@@ -99,6 +99,9 @@
rendering.rollerRendererFactories=\
org.apache.roller.ui.rendering.velocity.VelocityRendererFactory
+# List of available template languages
+rendering.templateLanguages=velocity,groovlet,gsp,javascript
+
# The set of user defined renderer factories. These are prepended to the list above.
rendering.userRendererFactories=
Modified: incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-page.jsp
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-page.jsp?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-page.jsp (original)
+++ incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-page.jsp Mon Mar 19 19:23:13 2007
@@ -16,29 +16,40 @@
directory of this distribution.
--%>
<%@ include file="/WEB-INF/jsps/taglibs.jsp" %>
-<script type="text/javascript">
-<!--
-function cancel() {
- document.weblogTemplateForm.method.value="cancel";
- document.weblogTemplateForm.submit();
-}
--->
-</script>
<roller:StatusMessage/>
+<p class="subtitle">
+ <fmt:message key="pageForm.subtitle" >
+ <fmt:param value="${model.page.name}" />
+ <fmt:param value="${model.website.handle}" />
+ </fmt:message>
+</p>
+<c:choose>
+ <c:when test="${model.page.required}">
+ <p class="pagetip"><fmt:message key="pageForm.tip.required" /></p>
+ </c:when>
+ <c:otherwise>
+ <p class="pagetip"><fmt:message key="pageForm.tip" /></p>
+ </c:otherwise>
+</c:choose>
+
<html:form action="/roller-ui/authoring/page" method="post">
-
- <p class="subtitle">
- <fmt:message key="pageForm.editPage" />:
- <bean:write name="weblogTemplateForm" property="name" />
- </p>
+ <html:hidden property="id"/>
+ <html:hidden property="decoratorName" />
+ <html:hidden property="required" />
+ <input type="hidden" name="method" value="update" />
+ <input type="hidden" name="weblog" value='<c:out value="${model.website.handle}" />' />
+
+ <%-- ================================================================== --%>
+ <%-- Name, link and desription: disabled when page is a required page --%>
+
<table cellspacing="5">
<tr>
<td class="label"><fmt:message key="pageForm.name" /> </td>
<td class="field">
<c:choose>
- <c:when test="${page.required}">
+ <c:when test="${model.page.required}">
<html:text style="background: #e5e5e5" property="name" size="50" readonly="true"/>
</c:when>
<c:otherwise>
@@ -49,17 +60,57 @@
<td class="description"></td>
</tr>
+ <script type="text/javascript">
+ <!--
+ var weblogURL = '<c:out value="${model.website.absoluteURL}" />';
+ var originalLink = '<c:out value="${model.page.link}" />';
+
+ // Update page URL when user changes link
+ function updatePageURLDisplay() {
+ var previewSpan = document.getElementById("handlePreview");
+ var n1 = previewSpan.firstChild;
+ var n2 = document.createTextNode(document.weblogTemplateFormEx.link.value);
+ if (n1 == null) {
+ previewSpan.appendChild(n2);
+ } else {
+ previewSpan.replaceChild(n2, n1);
+ }
+ }
+ // Don't launch page if user has changed link, it'll be a 404
+ function launchPage() {
+ if (originalLink != document.weblogTemplateFormEx.link.value) {
+ window.alert("Link changed, not launching page");
+ } else {
+ window.open(weblogURL + '/page/' + originalLink, '_blank');
+ }
+ }
+ // Only highlight launch link user hasn't changed link
+ function highlightLaunchLink() {
+ if (originalLink == document.weblogTemplateFormEx.link.value) {
+ document.getElementById('launchLink').style.textDecoration = 'underline';
+ }
+ }
+ function unhighlightLaunchLink() {
+ document.getElementById('launchLink').style.textDecoration = 'none';
+ }
+ -->
+ </script>
+
<tr>
- <td class="label"><fmt:message key="pageForm.link" /> </td>
+ <td class="label" valign="top"><fmt:message key="pageForm.link" /> </td>
<td class="field">
<c:choose>
- <c:when test="${page.required}">
+ <c:when test="${model.page.required}">
<html:text style="background: #e5e5e5" property="link" size="50" readonly="true"/>
</c:when>
<c:otherwise>
- <html:text property="link" size="50"/>
+ <html:text property="link" size="50" onkeyup="updatePageURLDisplay()" />
</c:otherwise>
</c:choose>
+ <br />
+ <c:out value="${model.website.absoluteURL}" />/page/<span id="handlePreview" style="color:red"><c:out value="${model.page.link}" /></span>
+ [<span id="launchLink" class="fakelink"
+ onClick="launchPage()" onMouseOver="highlightLaunchLink()" onMouseOut="unhighlightLaunchLink()"><fmt:message key="pageForm.launch" /></span>]
</td>
<td class="description"></td>
</tr>
@@ -68,60 +119,184 @@
<td class="label" valign="top" style="padding-top: 4px"><fmt:message key="pageForm.description" /> </td>
<td class="field">
<c:choose>
- <c:when test="${page.required}">
+ <c:when test="${model.page.required}">
<html:textarea style="background: #e5e5e5" property="description" cols="50" rows="2" readonly="true"/>
</c:when>
<c:otherwise>
- <html:textarea property="link" cols="50" rows="2" />
+ <html:textarea property="description" cols="50" rows="2" />
</c:otherwise>
</c:choose>
</td>
<td class="description"></td>
</tr>
- <c:choose>
- <c:when test="${page.required}">
- <html:hidden property="navbar" />
- </c:when>
- <c:otherwise>
+ </table>
+
+ <%-- ================================================================== --%>
+ <%-- Template editing area w/resize buttons --%>
+
+ <br />
+ <html:textarea property="contents" cols="80" rows="30" style="width: 100%" />
+
+ <script type="text/javascript"><!--
+ if (getCookie("editorSize1") != null) {
+ document.weblogTemplateFormEx.contents.rows = getCookie("editorSize1");
+ }
+ function changeSize(e, num) {
+ a = e.rows + num;
+ if (a > 0) e.rows = a;
+ var expires = new Date();
+ expires.setTime(expires.getTime() + 24 * 90 * 60 * 60 * 1000); // sets it for approx 90 days.
+ setCookie("editorSize",e.rows,expires);
+ }
+ function changeSize1(e, num) {
+ a = e.rows + num;
+ if (a > 0) e.rows = a;
+ var expires = new Date();
+ expires.setTime(expires.getTime() + 24 * 90 * 60 * 60 * 1000); // sets it for approx 90 days.
+ setCookie("editorSize1",e.rows,expires);
+ }
+ // --></script>
+ <table style="width:100%"><tr><td align="right">
+ <!-- Add buttons to make this textarea taller or shorter -->
+ <input type="button" name="taller" value=" ↓ "
+ onclick="changeSize1(document.weblogTemplateFormEx.contents, 5)" />
+ <input type="button" name="shorter" value=" ↑ "
+ onclick="changeSize1(document.weblogTemplateFormEx.contents, -5)" />
+ </td></tr></table>
+
+
+ <%-- ================================================================== --%>
+ <%-- Advanced settings inside a control toggle --%>
+
+ <br />
+ <div id="advancedControlToggle" class="controlToggle">
+ <span id="iadvancedControl">+</span>
+ <a class="controlToggle" onclick="javascript:toggleControl('advancedControlToggle','advancedControl')">
+ <fmt:message key="pageForm.advancedSettings" /></a>
+ </div>
+ <div id="advancedControl" class="advancedControl" style="display:none">
+
+ <table cellspacing="0">
+
<tr>
- <td class="label"><fmt:message key="pageForm.navbar" /> </td>
- <td class="field"><html:checkbox property="navbar" /> <fmt:message key="pageForm.navbar.tip" /></td>
+ <script type="text/javascript"><!--
+ function showContentTypeField() {
+ if (document.weblogTemplateFormEx.autoContentType[0].checked) {
+ document.weblogTemplateFormEx.manualContentType.readOnly = true;
+ document.weblogTemplateFormEx.manualContentType.style.background = '#e5e5e5';
+ } else {
+ document.weblogTemplateFormEx.manualContentType.readOnly = false;
+ document.weblogTemplateFormEx.manualContentType.style.background = '#ffffff';
+ }
+ }
+ // --></script>
+ <td class="field">
+ <tr>
+ <td class="label" valign="top"><fmt:message key="pageForm.outputContentType" /> </td>
+ <td class="field">
+
+ <html:radio property="autoContentType" value="true" onchange="showContentTypeField()" />
+ <fmt:message key="pageForm.useAutoContentType" /><br />
+
+ <html:radio property="autoContentType" value="false" onchange="showContentTypeField()" />
+ <fmt:message key="pageForm.useManualContentType" />
+ <html:text property="manualContentType" />
+
+ <br />
+ <br />
+
+ </td>
+ <td class="description"></td>
+ </tr>
+ </td>
<td class="description"></td>
+ <script type="text/javascript"><!--
+ showContentTypeField();
+ // --></script>
</tr>
- </c:otherwise>
- </c:choose>
-
- <c:choose>
- <c:when test="${page.required}">
- <html:hidden property="hidden" />
- </c:when>
- <c:otherwise>
+
<tr>
- <td class="label"><fmt:message key="pageForm.hidden" /> </td>
- <td class="field"><html:checkbox property="hidden" /> <fmt:message key="pageForm.hidden.tip" /></td>
+ <td class="field">
+ <c:choose>
+ <c:when test="${model.page.required}">
+ <html:hidden property="navbar" />
+ </c:when>
+ <c:otherwise>
+ <tr>
+ <td class="label"><fmt:message key="pageForm.navbar" /> </td>
+ <td class="field"><html:checkbox property="navbar" />
+ <fmt:message key="pageForm.navbar.tip" />
+ </td>
+ <td class="description"></td>
+ </tr>
+ </c:otherwise>
+ </c:choose>
+ </td>
<td class="description"></td>
</tr>
- </c:otherwise>
- </c:choose>
- </table>
-
- <br />
- <html:textarea property="contents" cols="80" rows="30" style="width: 100%" />
- <html:hidden property="id"/>
- <html:hidden property="name"/>
- <html:hidden property="templateLanguage" />
- <html:hidden property="decoratorName" />
- <html:hidden property="required" />
-
- <input type="hidden" name="method" value="update" />
- <input type="hidden" name="weblog" value='<c:out value="${model.website.handle}" />' />
+ <td class="field">
+ <c:choose>
+ <c:when test="${model.page.required}">
+ <html:hidden property="hidden" />
+ </c:when>
+ <c:otherwise>
+ <tr>
+ <td class="label"><fmt:message key="pageForm.hidden" /> </td>
+ <td class="field"><html:checkbox property="hidden" />
+ <fmt:message key="pageForm.hidden.tip" />
+ </td>
+ <td class="description"></td>
+ </tr>
+ </c:otherwise>
+ </c:choose>
+ <br />
+ <br />
+ </td>
+ <td class="description"></td>
+ </tr>
+
+ <tr>
+ <td class="field">
+ <c:choose>
+ <c:when test="${model.page.required || !model.rollerSession.globalAdminUser}">
+ <html:hidden property="templateLanguage" />
+ </c:when>
+ <c:otherwise>
+ <tr>
+ <td class="label"><fmt:message key="pageForm.templateLanguage" /> </td>
+ <td class="field">
+ <html:select property="templateLanguage" size="1" >
+ <html:optionsCollection name="model" property="languages" value="value" label="label" />
+ </html:select>
+ </td>
+ <td class="description"></td>
+ </tr>
+ </c:otherwise>
+ </c:choose>
+ </td>
+ <td class="description"></td>
+ </tr>
+
+ </table>
+ <br />
+
+ </div>
+
+ <script type="text/javascript">
+ <!--
+ function cancel() {
+ document.weblogTemplateFormEx.method.value="cancel";
+ document.weblogTemplateFormEx.submit();
+ }
+ -->
+ </script>
<br />
<input type="submit" value='<fmt:message key="pageForm.save" />' /></input>
<input type="button" value='<fmt:message key="application.done" />' onclick="cancel()" /></input>
-
+
</html:form>
<%--
Modified: incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-pages.jsp
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-pages.jsp?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-pages.jsp (original)
+++ incubator/roller/trunk/web/WEB-INF/jsps/authoring/edit-pages.jsp Mon Mar 19 19:23:13 2007
@@ -29,63 +29,59 @@
<fmt:message key="pagesForm.tip" />
</p>
-<c:if test="${website.editorTheme ne customTheme}">
-<p><fmt:message key="pagesForm.themesReminder"><fmt:param value="${website.editorTheme}"/></fmt:message></p>
+<c:if test="${model.website.editorTheme ne customTheme}">
+<p><fmt:message key="pagesForm.themesReminder"><fmt:param value="${model.website.editorTheme}"/></fmt:message></p>
</c:if>
<%-- table of pages --%>
<table class="rollertable">
<tr>
- <th width="10%"><fmt:message key="pagesForm.name" /></th>
+ <th width="30%"><fmt:message key="pagesForm.name" /></th>
<th width="60%"><fmt:message key="pagesForm.description" /></th>
- <th width="10%"><fmt:message key="pagesForm.link" /></th>
- <th width="5%"><fmt:message key="pagesForm.column.navbar" /></th>
- <th width="5%"><fmt:message key="pagesForm.column.hidden" /></th>
- <th width="5%"><fmt:message key="pagesForm.edit" /></th>
- <th width="5%"><fmt:message key="pagesForm.remove" /></th>
+ <th width="10"><fmt:message key="pagesForm.remove" /></th>
</tr>
- <logic:iterate id="p" name="pages" >
+ <c:forEach var="p" items="${model.pages}" >
<roller:row oddStyleClass="rollertable_odd" evenStyleClass="rollertable_even">
- <td><bean:write name="p" property="name" /></td>
- <td><bean:write name="p" property="description" /></td>
- <td><bean:write name="p" property="link" /></td>
- <td class="center">
- <logic:equal name="p" property="navbar" value="true">
- <fmt:message key="application.true" />
- </logic:equal>
+ <td style="vertical-align:middle">
+ <c:choose>
+ <c:when test="${!p.hidden}">
+ <img src='<c:url value="/images/page_white.png"/>' border="0" alt="icon" />
+ <roller:link forward="editPage">
+ <roller:linkparam id="pageId" name="p" property="id" />
+ <c:out value="${p.name}" />
+ </roller:link>
+ </c:when>
+ <c:otherwise>
+ <img src='<c:url value="/images/page_white_gear.png"/>' border="0" alt="icon" />
+ <roller:link forward="editPage">
+ <roller:linkparam id="pageId" name="p" property="id" />
+ <c:out value="${p.name}" />
+ </roller:link>
+ </c:otherwise>
+ </c:choose>
</td>
- <td class="center">
- <logic:equal name="p" property="hidden" value="true">
- <fmt:message key="application.true" />
- </logic:equal>
- </td>
-
- <td class="center">
- <roller:link forward="editPage">
- <roller:linkparam id="username" name="user" property="userName" />
- <roller:linkparam id="pageId" name="p" property="id" />
- <img src='<c:url value="/images/page_edit.png"/>' border="0" alt="icon" />
- </roller:link>
- </td>
-
- <td class="center">
+
+ <td style="vertical-align:middle"><c:out value="${p.description}" /></td>
+
+ <td class="center" style="vertical-align:middle">
<c:choose>
<c:when test="${!p.required}">
<roller:link forward="removePage.ok">
- <roller:linkparam id="username" name="user" property="userName" />
<roller:linkparam id="pageId" name="p" property="id" />
- <img src='<c:url value="/images/delete.png"/>' border="0" alt="icon" />
+ <img src='<c:url value="/images/delete.png"/>' border="0" alt="icon"
+ title'<fmt:message key="pagesForm.remove" />' />
</roller:link>
</c:when>
<c:otherwise>
- <fmt:message key="pagesForm.required"/>
+ <img src='<c:url value="/images/lock.png"/>' border="0" alt="icon"
+ title='<fmt:message key="pagesForm.required"/>' />
</c:otherwise>
</c:choose>
</td>
</roller:row>
- </logic:iterate>
+ </c:forEach>
</table>
Modified: incubator/roller/trunk/web/WEB-INF/jsps/authoring/remove-page.jsp
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/jsps/authoring/remove-page.jsp?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/jsps/authoring/remove-page.jsp (original)
+++ incubator/roller/trunk/web/WEB-INF/jsps/authoring/remove-page.jsp Mon Mar 19 19:23:13 2007
@@ -24,15 +24,15 @@
<p>
<fmt:message key="pageRemove.youSure">
- <fmt:param value="${page.name}" />
+ <fmt:param value="${model.page.name}" />
</fmt:message>
</p>
<p>
-<fmt:message key="pageRemove.pageId" /> = [<c:out value="${page.id}" />]
+<fmt:message key="pageRemove.pageId" /> = [<c:out value="${model.page.id}" />]
<br />
-<fmt:message key="pageRemove.pageName" /> = [<c:out value="${page.name}" />]
+<fmt:message key="pageRemove.pageName" /> = [<c:out value="${model.page.name}" />]
</p>
<table>
Modified: incubator/roller/trunk/web/WEB-INF/jsps/tiles/footer.jsp
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/jsps/tiles/footer.jsp?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/jsps/tiles/footer.jsp (original)
+++ incubator/roller/trunk/web/WEB-INF/jsps/tiles/footer.jsp Mon Mar 19 19:23:13 2007
@@ -17,16 +17,16 @@
--%>
<%@ include file="/WEB-INF/jsps/taglibs.jsp" %>
-Powered by <a href="http://www.rollerweblogger.org">Apache Roller (incubating)</a>
+Powered by <a href="http://www.rollerweblogger.org">Apache Roller</a>
<%= RollerFactory.getRoller().getVersion() %> |
<a href="http://opensource2.atlassian.com/projects/roller/">
<fmt:message key="footer.reportIssue" /></a> |
-<a href="http://www.rollerweblogger.org/wiki/Wiki.jsp?page=UserGuide">
+<a href="http://cwiki.apache.org/confluence/display/ROLLER/Roller+User+Documentation">
<fmt:message key="footer.userGuide" /></a> |
-<a href="http://rollerweblogger.org/wiki/Wiki.jsp?page=RollerMailingLists">
+<a href="http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists">
<fmt:message key="footer.mailingLists" /></a>
Added: incubator/roller/trunk/web/images/launch-link.png
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/images/launch-link.png?view=auto&rev=520228
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/web/images/launch-link.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/web/images/lock.png
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/images/lock.png?view=auto&rev=520228
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/web/images/lock.png
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/roller/trunk/web/images/lock.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/web/images/page_white.png
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/images/page_white.png?view=auto&rev=520228
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/web/images/page_white.png
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/roller/trunk/web/images/page_white.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/web/images/page_white_delete.png
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/images/page_white_delete.png?view=auto&rev=520228
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/web/images/page_white_delete.png
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/roller/trunk/web/images/page_white_delete.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/web/images/page_white_gear.png
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/images/page_white_gear.png?view=auto&rev=520228
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/web/images/page_white_gear.png
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/roller/trunk/web/images/page_white_gear.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: incubator/roller/trunk/web/roller-ui/theme/tan/colors.css
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/theme/tan/colors.css?view=diff&rev=520228&r1=520227&r2=520228
==============================================================================
--- incubator/roller/trunk/web/roller-ui/theme/tan/colors.css (original)
+++ incubator/roller/trunk/web/roller-ui/theme/tan/colors.css Mon Mar 19 19:23:13 2007
@@ -51,6 +51,9 @@
color: #ad3537;
font-weight: bold;
}
+.fakelink {
+ color: #ad3537;
+}
a:link {
color: #ad3537;
}