From 4f77fa419eadb0752c1f7cc5703631c8bb6c6c52 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Wed, 19 May 2010 21:08:48 +0000 Subject: [PATCH] Changed class Router to Routes to clarify its purpose. Decode the referrer url in the contact form email. --- webapp/config/web.xml | 2 +- .../freemarker/ContactMailController.java | 55 +++++-------------- .../freemarker/FreeMarkerHttpServlet.java | 25 ++++++--- .../freemarker/IndividualListController.java | 2 +- .../freemarker/{Router.java => Routes.java} | 5 +- .../vitro/webapp/view/IndividualView.java | 4 +- .../mannlib/vitro/webapp/view/VClassView.java | 4 +- .../freemarker/body/commentForm/email.ftl | 21 ++++++- .../freemarker/body/commentForm/form.ftl | 2 +- 9 files changed, 61 insertions(+), 59 deletions(-) rename webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/{Router.java => Routes.java} (84%) diff --git a/webapp/config/web.xml b/webapp/config/web.xml index cc1cdcef0..6148b1e90 100644 --- a/webapp/config/web.xml +++ b/webapp/config/web.xml @@ -980,7 +980,7 @@ sendMail - /sendMail + /submitFeedback diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ContactMailController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ContactMailController.java index f35632baf..729c61511 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ContactMailController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ContactMailController.java @@ -20,14 +20,10 @@ import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import edu.cornell.mannlib.vitro.webapp.ConfigurationProperties; -import edu.cornell.mannlib.vitro.webapp.beans.Portal; public class ContactMailController extends FreeMarkerHttpServlet { private static final Logger LOG = Logger.getLogger(ContactMailController.class); @@ -239,45 +235,20 @@ public class ContactMailController extends FreeMarkerHttpServlet { private String composeEmail(String webusername, String webuseremail, String comments, String deliveryfrom, String originalReferer, String ipAddr) { + + Map email = new HashMap(); + String template = "commentForm/email.ftl"; + + email.put("subject", deliveryfrom); + email.put("name", webusername); + email.put("emailAddress", webuseremail); + email.put("comments", comments); + email.put("ip", ipAddr); + if ( !(originalReferer == null || originalReferer.equals("none")) ) { + email.put("referrer", urlDecode(originalReferer)); + } - StringBuffer msgBuf = new StringBuffer(); - // contains the intro copy for the body of the email message - - String lineSeparator = System.getProperty("line.separator"); - // \r\n on windows, \n on unix - - // from MyLibrary - msgBuf.setLength(0); - msgBuf.append("Content-Type: text/html; charset='us-ascii'" + lineSeparator); - msgBuf.append("" + lineSeparator ); - msgBuf.append("" + lineSeparator ); - msgBuf.append("" + lineSeparator ); - msgBuf.append("" + deliveryfrom + "" + lineSeparator ); - msgBuf.append("" + lineSeparator ); - msgBuf.append("" + lineSeparator ); - msgBuf.append("

" + deliveryfrom + "

" + lineSeparator ); - msgBuf.append("

From: "+webusername +" (" + webuseremail + ")" + - " at IP address " + ipAddr + "

"+lineSeparator); - - if (!(originalReferer == null || originalReferer.equals("none"))){ - //The spam filter that is being used by the listsrv is rejecting likely viewing page " + stripProtocol(originalReferer) ); - msgBuf.append("

likely viewing page " + originalReferer ); - } - - msgBuf.append(lineSeparator + "

Comments:

" + lineSeparator ); - if (comments==null || comments.equals("")) { - msgBuf.append("

BLANK MESSAGE

"); - } else { - msgBuf.append("

"+comments+"

"); - } - msgBuf.append("" + lineSeparator ); - msgBuf.append("" + lineSeparator ); - - return msgBuf.toString(); - + return mergeBodyToTemplate(template, email); } private void writeBackupCopy(PrintWriter outFile, String msgText, diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreeMarkerHttpServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreeMarkerHttpServlet.java index 6f9dbca0d..255eeac6b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreeMarkerHttpServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreeMarkerHttpServlet.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Calendar; @@ -250,15 +251,15 @@ public class FreeMarkerHttpServlet extends VitroHttpServlet { Map portalParam = new HashMap(); portalParam.put("home", "" + portalId); - urls.put("about", getUrl(Router.ABOUT, portalParam)); + urls.put("about", getUrl(Routes.ABOUT, portalParam)); if (ContactMailServlet.getSmtpHostFromProperties() != null) { - urls.put("contact", getUrl(Router.COMMENT_FORM, portalParam)); + urls.put("contact", getUrl(Routes.COMMENT_FORM, portalParam)); } - urls.put("search", getUrl(Router.SEARCH)); - urls.put("termsOfUse", getUrl(Router.TERMS_OF_USE, portalParam)); - urls.put("login", getUrl(Router.LOGIN)); - urls.put("logout", getUrl(Router.LOGOUT)); - urls.put("siteAdmin", getUrl(Router.SITE_ADMIN)); + urls.put("search", getUrl(Routes.SEARCH)); + urls.put("termsOfUse", getUrl(Routes.TERMS_OF_USE, portalParam)); + urls.put("login", getUrl(Routes.LOGIN)); + urls.put("logout", getUrl(Routes.LOGOUT)); + urls.put("siteAdmin", getUrl(Routes.SITE_ADMIN)); setSharedVariable("urls", urls); } @@ -392,5 +393,15 @@ public class FreeMarkerHttpServlet extends VitroHttpServlet { return encodedUrl; } + public static String urlDecode(String url) { + String encoding = "ISO-8859-1"; + String decodedUrl = null; + try { + decodedUrl = URLDecoder.decode(url, encoding); + } catch (UnsupportedEncodingException e) { + log.error("Error decoding url " + url + " with encoding " + encoding + ": Unsupported encoding."); + } + return decodedUrl; + } } \ No newline at end of file diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java index 1563ad82e..d1875bed1 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java @@ -59,7 +59,7 @@ public class IndividualListController extends FreeMarkerHttpServlet { vclass = vreq.getWebappDaoFactory().getVClassDao().getVClassByURI(vitroClassIdStr); if (vclass == null) { log.error("Couldn't retrieve vclass "+vitroClassIdStr); - response.sendRedirect(Router.BROWSE + "?"+vreq.getQueryString()); + response.sendRedirect(Routes.BROWSE + "?"+vreq.getQueryString()); } } catch (Exception ex) { throw new HelpException("EntityListControllerFM: request parameter 'vclassId' must be a URI string"); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/Router.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/Routes.java similarity index 84% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/Router.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/Routes.java index 15bb2a31b..aa284cdd3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/Router.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/Routes.java @@ -3,8 +3,9 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker; // For now this class just holds constants for creating links. Could later be used to implement custom routing, -// if we go that route. -public class Router { +// if we go that route. Separating from Controllers to keep track of which ones are being used with FreeMarker +// Controllers; can recombine later if desired. +public class Routes { public static final String ABOUT = "/about"; public static final String BROWSE = "/browse"; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/view/IndividualView.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/view/IndividualView.java index 47843ee87..013bb9890 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/view/IndividualView.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/view/IndividualView.java @@ -8,13 +8,13 @@ import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.Portal; import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.Router; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.Routes; public class IndividualView extends ViewObject { private static final Log log = LogFactory.getLog(IndividualView.class.getName()); - private static final String URL = Router.INDIVIDUAL; + private static final String URL = Routes.INDIVIDUAL; private Individual individual; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/view/VClassView.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/view/VClassView.java index 8cc5f37db..29872e389 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/view/VClassView.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/view/VClassView.java @@ -9,12 +9,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.beans.VClass; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.Router; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.Routes; public class VClassView extends ViewObject { private static final Log log = LogFactory.getLog(VClassView.class.getName()); - private static final String URL = Router.INDIVIDUAL_LIST; + private static final String URL = Routes.INDIVIDUAL_LIST; private VClass vclass; diff --git a/webapp/web/templates/freemarker/body/commentForm/email.ftl b/webapp/web/templates/freemarker/body/commentForm/email.ftl index 6a17b13ca..304fb8f5c 100644 --- a/webapp/web/templates/freemarker/body/commentForm/email.ftl +++ b/webapp/web/templates/freemarker/body/commentForm/email.ftl @@ -1,3 +1,22 @@ <#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> -<#-- Comment form email response --> \ No newline at end of file +<#-- Comment form email response --> + +<#-- Only inline styles seem to work in email. Can't get styles for margin to work, though. --> + + + + ${subject} + + +

${subject}

+

+ From: ${name}
+ Email address: ${emailAddress}
+ IP address: ${ip}
+ <#if referrer??> + Likely viewing page: ${referrer}
+ + Comments: ${comments} + + \ No newline at end of file diff --git a/webapp/web/templates/freemarker/body/commentForm/form.ftl b/webapp/web/templates/freemarker/body/commentForm/form.ftl index ef3c762f5..1d603eb96 100644 --- a/webapp/web/templates/freemarker/body/commentForm/form.ftl +++ b/webapp/web/templates/freemarker/body/commentForm/form.ftl @@ -27,7 +27,7 @@

-
+