From: <san...@us...> - 2006-09-13 17:49:49
|
Revision: 8 http://svn.sourceforge.net/gatormail/?rev=8&view=rev Author: sandymac Date: 2006-09-13 10:49:24 -0700 (Wed, 13 Sep 2006) Log Message: ----------- Added standard UF favicon. Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/webapp/layouts/baseLayout.jsp GatorMail/trunk/src/webapp/layouts/defaultLayout.jsp GatorMail/trunk/src/webapp/layouts/errorLayout.jsp GatorMail/trunk/src/webapp/layouts/folderLayout.jsp GatorMail/trunk/src/webapp/layouts/folderManageLayout.jsp GatorMail/trunk/src/webapp/layouts/loginLayout.jsp GatorMail/trunk/src/webapp/layouts/messageLayout.jsp GatorMail/trunk/src/webapp/layouts/printerFriendlyLayout.jsp Added Paths: ----------- GatorMail/trunk/src/images/favicon.ico Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/build.xml 2006-09-13 17:49:24 UTC (rev 8) @@ -76,6 +76,7 @@ <include name="*.gif"/> <include name="*.jpg"/> <include name="*.png"/> + <include name="*.ico"/> </fileset> <fileset dir="${lib.servlet-api.dir}" id="fileset.servlet-api"> Added: GatorMail/trunk/src/images/favicon.ico =================================================================== (Binary files differ) Property changes on: GatorMail/trunk/src/images/favicon.ico ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: GatorMail/trunk/src/webapp/layouts/baseLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/baseLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/baseLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -9,6 +9,7 @@ <tiles:getAsString name="title"/> </title> <html:base/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="start" href="<html:rewrite forward="INBOX"/>" title="INBOX"/> <link rel="help" href="<html:rewrite forward="help"/>" title="GatorMail Help"/> <link rel="stylesheet" type="text/css" href="<html:rewrite forward="CSS"/>"/> Modified: GatorMail/trunk/src/webapp/layouts/defaultLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/defaultLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/defaultLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -9,6 +9,7 @@ <tiles:getAsString name="title"/> </title> <html:base/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="start" href="<html:rewrite forward="INBOX"/>" title="INBOX"/> <link rel="help" href="<html:rewrite forward="help"/>" title="GatorMail Help"/> <link rel="stylesheet" type="text/css" href="<html:rewrite forward="CSS"/>"/> Modified: GatorMail/trunk/src/webapp/layouts/errorLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/errorLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/errorLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -9,6 +9,7 @@ <tiles:getAsString name="title"/> </title> <html:base/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="<html:rewrite forward="CSS"/>"/> </head> <body> Modified: GatorMail/trunk/src/webapp/layouts/folderLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/folderLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/folderLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -10,6 +10,7 @@ <tiles:getAsString name="folderName"/> </title> <html:base/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="start" href="<html:rewrite forward="INBOX"/>" title="INBOX"/> <link rel="help" href="<html:rewrite forward="help"/>" title="GatorMail Help"/> <link rel="stylesheet" type="text/css" href="<html:rewrite forward="CSS"/>"/> Modified: GatorMail/trunk/src/webapp/layouts/folderManageLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/folderManageLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/folderManageLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -9,6 +9,7 @@ <tiles:getAsString name="title"/> </title> <html:base/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="start" href="<html:rewrite forward="INBOX"/>" title="INBOX"/> <link rel="help" href="<html:rewrite forward="help"/>" title="GatorMail Help"/> <link rel="stylesheet" type="text/css" href="<html:rewrite forward="CSS"/>"/> Modified: GatorMail/trunk/src/webapp/layouts/loginLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/loginLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/loginLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -9,6 +9,7 @@ <tiles:getAsString name="title"/> </title> <html:base/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="<html:rewrite forward="CSS"/>"/> <%-- // Useful for when we need to force people to connect to a new clone. <script> Modified: GatorMail/trunk/src/webapp/layouts/messageLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/messageLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/messageLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -30,6 +30,7 @@ <%-- // TODO I18N these --%> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="start" href="<html:rewrite forward="INBOX"/>" title="INBOX"/> <link rel="up" href="<html:rewrite forward="folder" paramId="folder" paramName="messageFolder" />" title="<%= mF.getFullName() %>"/> <link rel="prev" href="<html:rewrite forward="prevMessage" name="messageParams"/>" title="Previous Message"/> Modified: GatorMail/trunk/src/webapp/layouts/printerFriendlyLayout.jsp =================================================================== --- GatorMail/trunk/src/webapp/layouts/printerFriendlyLayout.jsp 2006-09-12 17:33:07 UTC (rev 7) +++ GatorMail/trunk/src/webapp/layouts/printerFriendlyLayout.jsp 2006-09-13 17:49:24 UTC (rev 8) @@ -13,6 +13,7 @@ <bean:message key="site.title"/> <bean:message key="message.title"/> </title> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="start" href="<html:rewrite forward="INBOX"/>" title="INBOX"/> <link rel="help" href="<html:rewrite forward="help"/>" title="GatorMail Help"/> <html:base/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2006-10-04 23:04:49
|
Revision: 12 http://svn.sourceforge.net/gatormail/?rev=12&view=rev Author: sandymac Date: 2006-10-04 16:04:32 -0700 (Wed, 04 Oct 2006) Log Message: ----------- Adds Vacation feature and vacation enabled alert. Fixes create folder on the bottom of the edit folders view. trims spaces off of login info. Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/Messages.properties GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LoginAction.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LogoutAction.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/LoginForm.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/PreferencesForm.java GatorMail/trunk/src/webapp/style.css.jsp GatorMail/trunk/src/webapp/tiles/common/results.jsp GatorMail/trunk/src/webapp/tiles/folderManage/folderManage.jsp GatorMail/trunk/src/webapp/tiles/preferences/preferences.jsp Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/build.xml 2006-10-04 23:04:32 UTC (rev 12) @@ -19,7 +19,7 @@ <property name="gatormail.jdbc.url" value="" description="depricated"/> <property name="gatormail.attachment.path" value="" description="Local path to hold attachments until they are sent."/> - <property name="VERSION" value="1.0.18.b"/> + <property name="VERSION" value="1.0.19"/> <tstamp/> Modified: GatorMail/trunk/src/Messages.properties =================================================================== --- GatorMail/trunk/src/Messages.properties 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/Messages.properties 2006-10-04 23:04:32 UTC (rev 12) @@ -353,6 +353,7 @@ preferences.maxInactiveMultiplier.default=default preferences.maxInactiveMultiplier.long=long preferences.junkThreahsold.invalid=The Junk Threshold must be a whole number between 0 and 15 inclusive. +preferences.vacationMessage.invalid=The vacation message must contain a message to enable the vacation auto-responder. prompt.username=Username prompt.password=Password renameFolder.result.success=Folder successfully renamed. Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LoginAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LoginAction.java 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LoginAction.java 2006-10-04 23:04:32 UTC (rev 12) @@ -195,6 +195,10 @@ session.setAttribute(Constants.LOGGING_IN, Boolean.FALSE); + if (PreferencesAction.hasActiveVacationScript(session)) { + session.setAttribute("vacationEnabled", Boolean.TRUE); + } + // if user's session timed out while composing a message if (session.getAttribute(Constants.SAVED_COMPOSE_FORM) != null) { return mapping.findForward("composeResume"); Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LogoutAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LogoutAction.java 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/LogoutAction.java 2006-10-04 23:04:32 UTC (rev 12) @@ -114,7 +114,11 @@ } } finally { // Empty the session - session.invalidate(); + try { + session.invalidate(); + } catch (IllegalStateException ise) { + // swallow + } } } Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java 2006-10-04 23:04:32 UTC (rev 12) @@ -43,6 +43,11 @@ import java.util.List; import java.util.ListIterator; import java.util.Properties; +import java.util.Date; +import java.util.regex.Pattern; +import java.util.regex.Matcher; +import java.io.BufferedReader; +import java.io.StringReader; /** * Loads and saves the peferences. @@ -67,7 +72,8 @@ final String imageUrl = prefsForm.getImageUrl(); if (prefsForm.getAction() != null) { - boolean junkThreasholdChanged = false; + boolean junkThresholdChanged = false; + boolean vacationMessageChanged = false; // Update preferences from the form bean. final String username = prefsForm.getUsername(); @@ -103,25 +109,42 @@ prefs.remove("message.junk.threshold"); } else if (junkThreshold != null && !junkThreshold.equals(prefs.getProperty("message.junk.threshold"))) { prefs.setProperty("message.junk.threshold", junkThreshold); - junkThreasholdChanged = true; + junkThresholdChanged = true; } + final String vacationMessage = prefsForm.getVacationMessage(); + if (vacationMessage == null + && prefs.getProperty("vacation.message") != null) { + prefs.remove("vacation.message"); + } else if (vacationMessage != null && !vacationMessage.equals(prefs.getProperty("vacation.message"))) { + prefs.setProperty("vacation.message", vacationMessage); + vacationMessageChanged = true; + } + { final Session sieveSession = getManageSieveSessionFor(user.getUsername()); try { - Boolean sieveEnabled = prefsForm.getSieveEnabled() != null ? prefsForm.getSieveEnabled() : Boolean.FALSE; + Boolean junkSieveEnabled = prefsForm.getJunkSieveEnabled() != null ? prefsForm.getJunkSieveEnabled() : Boolean.FALSE; + Boolean vacationSieveEnabled = prefsForm.getVacationSieveEnabled() != null ? prefsForm.getVacationSieveEnabled() : Boolean.FALSE; // Prevent scripts with silly junk threshold. if (Integer.parseInt(junkThreshold) < 1) { - sieveEnabled = Boolean.FALSE; + junkSieveEnabled = Boolean.FALSE; } - final boolean hasJunkScript = hasGatorMailJunkScript(sieveSession); - if (sieveEnabled.booleanValue()) { - if (junkThreasholdChanged || !hasJunkScript) { + final boolean hasActiveScript = hasActiveGatorMailScript(sieveSession); + //final boolean hasJunkScript = isGatorMailJunkScript(sieveSession); + //final boolean hasVacationScript = isGatorMailVacationScript(sieveSession); + + + if (junkSieveEnabled.booleanValue() && vacationSieveEnabled.booleanValue()) { + //if (junkThresholdChanged || vacationMessageChanged || !hasActiveScript || !hasJunkScript || !hasVacationScript) + { final Store store = Util.getMailStore(session); if (!store.isConnected()) { store.connect(); } - final Folder folder = store.getFolder("INBOX.Junk"); + //final Folder folder = store.getFolder("INBOX.Junk"); + Folder folder = store.getFolder("INBOX"); + folder = folder.getFolder("Junk"); try { if (!folder.exists()) { folder.create(Folder.HOLDS_MESSAGES | Folder.HOLDS_FOLDERS); @@ -131,11 +154,45 @@ } finally { Util.releaseFolder(folder); } - putNewJunkSieveScript(sieveSession, "INBOX.Junk", Integer.parseInt(junkThreshold)); + putNewComboSieveScript(sieveSession, folder.getFullName(), Integer.parseInt(junkThreshold), vacationMessage); + session.setAttribute("vacationEnabled", Boolean.TRUE); } - } else if ((!sieveEnabled.booleanValue()) && hasJunkScript) { + + } else if (junkSieveEnabled.booleanValue()) { + //if (junkThresholdChanged || !hasActiveScript || !hasJunkScript) + { + final Store store = Util.getMailStore(session); + if (!store.isConnected()) { + store.connect(); + } + //final Folder folder = store.getFolder("INBOX.Junk"); + Folder folder = store.getFolder("INBOX"); + folder = folder.getFolder("Junk"); + try { + if (!folder.exists()) { + folder.create(Folder.HOLDS_MESSAGES | Folder.HOLDS_FOLDERS); + folder.setSubscribed(true); + ActionsUtil.flushMailStoreGroupCache(session); + } + } finally { + Util.releaseFolder(folder); + } + putNewJunkSieveScript(sieveSession, folder.getFullName(), Integer.parseInt(junkThreshold)); + session.setAttribute("vacationEnabled", null); + } + + } else if (vacationSieveEnabled.booleanValue()) { + //if (vacationMessageChanged || !hasActiveScript || !hasVacationScript) + { + putNewVacationSieveScript(sieveSession, vacationMessage); + session.setAttribute("vacationEnabled", Boolean.TRUE); + } + + } else if (hasActiveScript) { sieveSession.setActive(null); + session.setAttribute("vacationEnabled", null); } + } finally { sieveSession.logout(); } @@ -186,7 +243,8 @@ prefsForm.setReplyTo(prefs.getProperty("compose.replyTo")); prefsForm.setSignature(prefs.getProperty("compose.signature")); prefsForm.setImageUrl(prefs.getProperty("compose.X-Image-Url")); - prefsForm.setJunkThreshold(prefs.getProperty("message.junk.threshold", "8")); + prefsForm.setJunkThreshold(prefs.getProperty("message.junk.threshold", "5")); + prefsForm.setVacationMessage(prefs.getProperty("vacation.message")); if (prefs.getProperty("folder.list.threading") != null) { prefsForm.setThreading(Boolean.valueOf(prefs.getProperty("folder.list.threading"))); } @@ -195,14 +253,17 @@ } { final Session sieveSession = getManageSieveSessionFor(user.getUsername()); - prefsForm.setSieveEnabled(Boolean.valueOf(hasGatorMailJunkScript(sieveSession))); + if (hasActiveGatorMailScript(sieveSession)) { + prefsForm.setJunkSieveEnabled(Boolean.valueOf(isGatorMailJunkScript(sieveSession))); + prefsForm.setVacationSieveEnabled(Boolean.valueOf(isGatorMailVacationScript(sieveSession))); + } sieveSession.logout(); } } private static Session getManageSieveSessionFor(final String username) throws Exception { - Context initCtx = new InitialContext(); - Context envCtx = (Context)initCtx.lookup("java:comp/env"); + final Context initCtx = new InitialContext(); + final Context envCtx = (Context)initCtx.lookup("java:comp/env"); Session session = (Session)envCtx.lookup("managesieve/SessionFactory"); session = session.getSessionFor(username); @@ -212,15 +273,15 @@ return session; } - private static boolean hasGatorMailJunkScript(final Session session) throws Exception { - Response response = session.listScripts(); - List tokens = response.getTokens(); - ListIterator lIter = tokens.listIterator(); + private static boolean hasActiveGatorMailScript(final Session session) throws Exception { + final Response response = session.listScripts(); + final List tokens = response.getTokens(); + final ListIterator lIter = tokens.listIterator(); while (lIter.hasNext()) { - Token token = (Token)lIter.next(); + final Token token = (Token)lIter.next(); if (token instanceof Token.ActiveToken) { lIter.previous(); // current again - Token.StringToken scriptName = (Token.StringToken)lIter.previous(); // previous + final Token.StringToken scriptName = (Token.StringToken)lIter.previous(); // previous if ("GatorMail".equals(scriptName.getValue())) { return true; } else { @@ -232,24 +293,142 @@ return false; } - private static void putNewJunkSieveScript(final Session session, final String folder, final int threashold) throws Exception { + private static final Pattern junkPattern = Pattern.compile(".*X-UFL-Spam-Level.*", Pattern.DOTALL); + private static boolean isGatorMailJunkScript(final Session session) throws Exception { + final Response response = session.getScript("GatorMail"); + + if (response.isOK()) { + final Token t = (Token)response.getTokens().get(0); + final Token.StringToken st = (Token.StringToken)t; + final Matcher junkMatcher = junkPattern.matcher(st.getValue()); + return junkMatcher.matches(); + } else { + System.err.println("repsonse was not OK: " + response); + } + + return false; + } + + private static final Pattern vacationPattern = Pattern.compile(".*vacation.*", Pattern.DOTALL); + private static boolean isGatorMailVacationScript(final Session session) throws Exception { + final Response response = session.getScript("GatorMail"); + + if (response.isOK()) { + final Token t = (Token)response.getTokens().get(0); + final Token.StringToken st = (Token.StringToken)t; + final Matcher vacationMatcher = vacationPattern.matcher(st.getValue()); + return vacationMatcher.matches(); + } else { + System.err.println("repsonse was not OK: " + response); + } + + return false; + } + + public static boolean hasActiveVacationScript(final HttpSession session) throws Exception { + final User user = Util.getUser(session); + final Session sieveSession = getManageSieveSessionFor(user.getUsername()); + + return hasActiveGatorMailScript(sieveSession) && isGatorMailVacationScript(sieveSession); + } + + private static void putNewComboSieveScript(final Session session, final String folder, final int threshold, final String message) throws Exception { if (folder == null) { throw new NullPointerException("folder must not be null."); } - if (threashold < 0) { - throw new IllegalArgumentException("threashold must be zero or larger."); + if (threshold < 0) { + throw new IllegalArgumentException("threshold must be zero or larger."); } + if (message == null) { + throw new NullPointerException("message must not be null."); + } + if (message.length() <= 0) { + throw new IllegalArgumentException("message must not be empty."); + } final StringBuffer sb = new StringBuffer(); final String CRLF = "\r\n"; - final String stars = "******************************************************".substring(0, threashold); + final String stars = "******************************************************".substring(0, threshold); - sb.append("require \"fileinto\";");//.append(CRLF); - sb.append("if header :contains \"X-UFL-Spam-Level\" \"").append(stars).append("\" {");//.append(CRLF); - sb.append("\tfileinto \"").append(folder).append("\"; ");//.append(CRLF); - sb.append("}");//.append(CRLF); + sb.append("# This script was generated by GatorMail on ").append(new Date().toString()).append(CRLF); + sb.append("require \"fileinto\";").append(CRLF); + sb.append("require \"vacation\";").append(CRLF); + sb.append("if header :contains \"X-UFL-Spam-Level\" \"").append(stars).append("\" {").append(CRLF); + sb.append("\tfileinto \"").append(folder).append("\"; ").append(CRLF); + sb.append("}").append(CRLF); + + sb.append(CRLF); + sb.append("vacation text:").append(CRLF); + + // dot stuff lines. + final BufferedReader br = new BufferedReader(new StringReader(message)); + String str; + while ((str = br.readLine()) != null) { + if (str.startsWith(".")) { + sb.append("."); + } + sb.append(str).append(CRLF); + } + + sb.append(".").append(CRLF); + sb.append(";").append(CRLF); + session.putScript("GatorMail", sb.toString()); session.setActive("GatorMail"); } + + private static void putNewJunkSieveScript(final Session session, final String folder, final int threshold) throws Exception { + if (folder == null) { + throw new NullPointerException("folder must not be null."); + } + if (threshold < 0) { + throw new IllegalArgumentException("threshold must be zero or larger."); + } + + final StringBuffer sb = new StringBuffer(); + final String CRLF = "\r\n"; + final String stars = "******************************************************".substring(0, threshold); + + sb.append("# This script was generated by GatorMail on ").append(new Date().toString()).append(CRLF); + sb.append("require \"fileinto\";").append(CRLF); + sb.append("if header :contains \"X-UFL-Spam-Level\" \"").append(stars).append("\" {").append(CRLF); + sb.append("\tfileinto \"").append(folder).append("\"; ").append(CRLF); + sb.append("}").append(CRLF); + + session.putScript("GatorMail", sb.toString()); + session.setActive("GatorMail"); + } + + private static void putNewVacationSieveScript(final Session session, final String message) throws Exception { + if (message == null) { + throw new NullPointerException("message must not be null."); + } + if (message.length() <= 0) { + throw new IllegalArgumentException("message must not be empty."); + } + + final StringBuffer sb = new StringBuffer(); + final String CRLF = "\r\n"; + + sb.append("# This script was generated by GatorMail on ").append(new Date().toString()).append(CRLF); + sb.append("require \"vacation\";").append(CRLF); + sb.append("vacation text:").append(CRLF); + + // dot stuff lines. + final BufferedReader br = new BufferedReader(new StringReader(message)); + String str; + while ((str = br.readLine()) != null) { + if (str.startsWith(".")) { + sb.append("."); + } + sb.append(str).append(CRLF); + } + + sb.append(".").append(CRLF); + sb.append(";").append(CRLF); + + session.putScript("GatorMail", sb.toString()); + session.setActive("GatorMail"); + } } Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/LoginForm.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/LoginForm.java 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/LoginForm.java 2006-10-04 23:04:32 UTC (rev 12) @@ -104,7 +104,11 @@ * @param username New value of property username. */ public void setUsername(final String username) { - this.username = username; + if (username != null) { + this.username = username.trim(); + } else { + this.username = null; + } } /** @@ -122,7 +126,11 @@ * @param password New value of property password. */ public void setPassword(final String password) { - this.password = password; + if (password != null) { + this.password = password.trim(); + } else { + this.password = null; + } } /** @@ -140,6 +148,10 @@ * @param action New value of property action. */ public void setAction(final String action) { - this.action = action; + if (action != null) { + this.action = action.trim(); + } else { + this.action = null; + } } } \ No newline at end of file Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/PreferencesForm.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/PreferencesForm.java 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/forms/PreferencesForm.java 2006-10-04 23:04:32 UTC (rev 12) @@ -50,7 +50,9 @@ private Boolean threading; private Boolean hideHeader; private String junkThreshold; - private Boolean sieveEnabled; + private Boolean junkSieveEnabled; + private String vacationMessage; + private Boolean vacationSieveEnabled; public void reset(final ActionMapping actionMapping, final HttpServletRequest request) { super.reset(actionMapping, request); @@ -61,6 +63,9 @@ setThreading(Boolean.FALSE); setHideHeader(Boolean.FALSE); setJunkThreshold(null); + setJunkSieveEnabled(null); + setVacationSieveEnabled(null); + setVacationMessage(null); } public ActionErrors validate(final ActionMapping actionMapping, final HttpServletRequest request) { @@ -99,6 +104,12 @@ } } + if (getVacationSieveEnabled() != null && getVacationSieveEnabled().booleanValue()) { + if (getVacationMessage() == null || getVacationMessage().trim().length() == 0) { + setVacationSieveEnabled(Boolean.FALSE); + errors.add("vacationMessage", new ActionError("preferences.vacationMessage.invalid")); + } + } return errors; } @@ -174,11 +185,27 @@ this.junkThreshold = junkThreshold; } - public Boolean getSieveEnabled() { - return sieveEnabled; + public Boolean getJunkSieveEnabled() { + return junkSieveEnabled; } - public void setSieveEnabled(final Boolean sieveEnabled) { - this.sieveEnabled = sieveEnabled; + public void setJunkSieveEnabled(final Boolean junkSieveEnabled) { + this.junkSieveEnabled = junkSieveEnabled; } + + public String getVacationMessage() { + return vacationMessage; + } + + public void setVacationMessage(final String vacationMessage) { + this.vacationMessage = vacationMessage; + } + + public Boolean getVacationSieveEnabled() { + return vacationSieveEnabled; + } + + public void setVacationSieveEnabled(final Boolean vacationSieveEnabled) { + this.vacationSieveEnabled = vacationSieveEnabled; + } } Modified: GatorMail/trunk/src/webapp/style.css.jsp =================================================================== --- GatorMail/trunk/src/webapp/style.css.jsp 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/webapp/style.css.jsp 2006-10-04 23:04:32 UTC (rev 12) @@ -99,6 +99,10 @@ color : red; } +.alert { + color:red; +} + <%-- Available CSS classes: loginForm: loginErrors, {username,password}{Prompt,Input,Errors}, {submit,reset}Button Modified: GatorMail/trunk/src/webapp/tiles/common/results.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/common/results.jsp 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/webapp/tiles/common/results.jsp 2006-10-04 23:04:32 UTC (rev 12) @@ -29,7 +29,20 @@ </tr> <% } + if (session.getAttribute("vacationEnabled") != null) { %> + <tr> + <td class="alert"> + <html:img page="/note.png" width="24" height="24" border="0"/> + You have a GatorLink vacation auto responder set. + Do not forget to disable this in your + <html:link forward="preferences" titleKey="link.preferences.title"><bean:message key="link.preferences"/></html:link> + when you are no longer on vacation. + </td> + </tr> +<% + } +%> <tr> <td> <html:errors/> Modified: GatorMail/trunk/src/webapp/tiles/folderManage/folderManage.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/folderManage/folderManage.jsp 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/webapp/tiles/folderManage/folderManage.jsp 2006-10-04 23:04:32 UTC (rev 12) @@ -119,7 +119,6 @@ <tr> <td> <html:form action="createFolder"> - <html:hidden property="folder" value="<%=folder.getFullName()%>"/> <table class="headerTable" cellpadding="3" cellspacing="0" width="100%"> <tr class="subheader"> <td> @@ -131,7 +130,7 @@ <bean:message key="folderManageModify.subFolder.headerFolder"/> <html:text styleId="newFolder" property="newFolder" maxlength="30"/> <bean:message key="folderManageModify.subFolder.desc"/> - <select id="folderList" name="folderList"> + <select id="folder" name="folder"> <c:forEach items="${folderBeanList}" var="folder"> <option value="${folder.fullName}"><bean:write name="folder" property="fullName"/></option> </c:forEach> Modified: GatorMail/trunk/src/webapp/tiles/preferences/preferences.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/preferences/preferences.jsp 2006-10-03 18:06:19 UTC (rev 11) +++ GatorMail/trunk/src/webapp/tiles/preferences/preferences.jsp 2006-10-04 23:04:32 UTC (rev 12) @@ -125,7 +125,7 @@ <tr class="altrow"> <th width="20%" align="right" valign="top">Auto Filter Junk Mail:</th> <td> - <html:checkbox property="sieveEnabled"/> + <html:checkbox property="junkSieveEnabled"/> <div class="tip"> If checked, move messages with a Junk score higher than the threshold above into the "Junk" folder. <p> @@ -142,6 +142,37 @@ </tr> <tr class="subheader"> + <th colspan="2" align="left">Vacation Auto-Responder</th> + </tr> + + <tr> + <th width="20%" align="right" valign="top">Vacation Message:</th> + <td> + <html:errors property="vacationMessage"/> + <html:textarea property="vacationMessage" cols="78" rows="5"/> + + <div class="tip"> + Keep the vacation message short and to the point. + It is limited to about 1,000 characters. + </div> + </td> + </tr> + + <tr class="altrow"> + <th width="20%" align="right" valign="top">Enable VacationAuto-Reponder:</th> + <td> + <html:checkbox property="vacationSieveEnabled"/> + <div class="tip"> + If checked, messages you recieve will trigger an automatic response with the message above. + </div> + </td> + </tr> + + <tr> + <td colspan="2"> </td> + </tr> + + <tr class="subheader"> <th colspan="2" align="left">View</th> </tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2007-02-06 18:36:40
|
Revision: 23 http://svn.sourceforge.net/gatormail/?rev=23&view=rev Author: sandymac Date: 2007-02-06 10:16:58 -0800 (Tue, 06 Feb 2007) Log Message: ----------- Compose autocomplete and message body search Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/Messages.properties GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/FolderAction.java GatorMail/trunk/src/webapp/tiles/compose/message.jsp Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2007-02-06 18:15:32 UTC (rev 22) +++ GatorMail/trunk/build.xml 2007-02-06 18:16:58 UTC (rev 23) @@ -274,6 +274,7 @@ <war destfile="${build.war.dir}/GatorMail.war" webxml="${build.webinf.dir}/web.xml" compress="true"> <!-- / --> <fileset dir="${build.jsp.dir}"/> + <fileset dir="${src.webapp.dir}" includes="yui/**"/> <fileset refid="fileset.gatormail.images"/> Modified: GatorMail/trunk/src/Messages.properties =================================================================== --- GatorMail/trunk/src/Messages.properties 2007-02-06 18:15:32 UTC (rev 22) +++ GatorMail/trunk/src/Messages.properties 2007-02-06 18:16:58 UTC (rev 23) @@ -174,6 +174,7 @@ folder.filter.filter.title=If the filter requires input, enter it here, otherwise this is ignored. folder.filter.filterType.title=Select the type of filter to apply to this folder. folder.filter.addressBook=From known addresses +folder.filter.body=Message Bodies: folder.filter.hasAttachment=Messages with attachments folder.filter.noAttachment=Messages without attachments folder.filter.notAddressBook=From unknown addresses Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/FolderAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/FolderAction.java 2007-02-06 18:15:32 UTC (rev 22) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/FolderAction.java 2007-02-06 18:16:58 UTC (rev 23) @@ -52,6 +52,7 @@ import javax.mail.search.RecipientStringTerm; import javax.mail.search.SearchTerm; import javax.mail.search.SubjectTerm; +import javax.mail.search.BodyTerm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -84,6 +85,7 @@ list.add("sender"); list.add("toRecipient"); list.add("allRecipients"); + list.add("body"); list.add("new"); list.add("seen"); list.add("replied"); @@ -377,6 +379,9 @@ orTerms[2] = new RecipientStringTerm(Message.RecipientType.BCC, filter); searchTerm = new OrTerm(orTerms); + } else if (type.equals("body")) { + searchTerm = new BodyTerm(filter); + } else if (type.equals("new")) { final Flags f = new Flags(); f.add(Flags.Flag.SEEN); Modified: GatorMail/trunk/src/webapp/tiles/compose/message.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/compose/message.jsp 2007-02-06 18:15:32 UTC (rev 22) +++ GatorMail/trunk/src/webapp/tiles/compose/message.jsp 2007-02-06 18:16:58 UTC (rev 23) @@ -6,9 +6,35 @@ <%@taglib uri="/tags/struts-bean" prefix="bean"%> <%@taglib uri="/tags/webmail" prefix="wm"%> +<%-- Dependencies --%> +<script type="text/javascript" src="yui/yahoo/yahoo-min.js"></script> +<script type="text/javascript" src="yui/dom/dom-min.js"></script> +<script type="text/javascript" src="yui/event/event-min.js"></script> + +<%-- OPTIONAL: Animation (required only if enabling animation) --%> +<script type="text/javascript" src="yui/animation/animation-min.js"></script> + +<%-- Source file --%> +<script type="text/javascript" src="yui/autocomplete/autocomplete-min.js"></script> + <html:form method="post" action="modifyCompose" enctype="multipart/form-data" focus="to"> <html:hidden property="composeKey"/> +<style type="text/css"> + #toAutoComplete, #ccAutoComplete, #bccAutoComplete {position:relative;width:100%;}/* set width of widget here*/ + #toAutoComplete {z-index:9000} /* for IE z-index of absolute divs inside relative divs issue */ + #ccAutoComplete {z-index:8000} /* for IE z-index of absolute divs inside relative divs issue */ + #bccAutoComplete {z-index:7000} /* for IE z-index of absolute divs inside relative divs issue */ + #toinput, #ccinput, #bccinput {_position:absolute;width:100%;Xheight:1.4em;z-index:0;} /* abs for ie quirks */ + #toCompleteContainer, #ccCompleteContainer, #bccCompleteContainer {position:absolute;top:1.7em;width:95%} + #toCompleteContainer .yui-ac-content, #ccCompleteContainer .yui-ac-content, #bccCompleteContainer .yui-ac-content {position:absolute;width:100%;border:1px solid #404040;background:#fff;overflow:hidden;z-index:9050;} + #toCompleteContainer .yui-ac-shadow, #ccCompleteContainer .yui-ac-shadow, #bccCompleteContainer .yui-ac-shadow {position:absolute;margin:.3em;width:100%;background:#a0a0a0;z-index:9049;} + #toCompleteContainer ul, #ccCompleteContainer ul, #bccCompleteContainer ul {padding:0 1px 0;width:100%; margin:0.3em;} + #toCompleteContainer li, #ccCompleteContainer li, #bccCompleteContainer li {padding:0 5px;cursor:default;white-space:nowrap;} + #toCompleteContainer li.yui-ac-highlight, #ccCompleteContainer li.yui-ac-highlight, #bccCompleteContainer li.yui-ac-highlight {background:#ff0;} + #toCompleteContainer li.yui-ac-prehighlight, #ccCompleteContainer li.yui-ac-prehighlight, #bccCompleteContainer li.yui-ac-prehighlight {background:#FFFFCC;} +</style> + <script language="JavaScript" type="text/javascript"> <!-- function populateAddress(field) { @@ -31,6 +57,69 @@ return false; } + + <c:choose> + <c:when test="${!empty addressList}"> +var addressList = [ + <c:forEach items="${addressList}" var="iAddress"> +{p:"<c:out value="${iAddress.personal}"/>", a:"<c:out value="${iAddress.address}"/>"}, + </c:forEach> +]; + </c:when> + <c:otherwise> +var addressList = []; + </c:otherwise> + </c:choose> +var addressListFunction = function (query) { + var results = []; + if (query && query.length > 0) { + var queryLower = query.toLowerCase(); + for (var i=0; i < addressList.length; i++) { + var addressItem = addressList[i]; + var personal = addressItem["p"]; + var address = addressItem["a"]; + var result = []; + var found = false; + if (address && address.toLowerCase().indexOf(queryLower) === 0) { + result[0] = address; + result[1] = personal; + results[results.length] = result; + found = true; + } + if (!found && personal && personal.toLowerCase().indexOf(queryLower) >= 0) { + var idx = personal.toLowerCase().indexOf(queryLower); + if (idx === 0 || personal.toLowerCase().indexOf(" " + queryLower) >= 0) { + result[0] = address; + result[1] = personal; + results[results.length] = result; + found = true; + } + } + } + } + return results; +} +var addressListDataSource = new YAHOO.widget.DS_JSFunction(addressListFunction); +var addressListFormatter = function (result, query) { + var markup = ""; + if (result[1]) { + markup = "\"" + result[1] + "\" "; + } + markup += "<" + result[0] + ">"; + return markup; +} +function initAutoComplete(elem, container) { + var ac = new YAHOO.widget.AutoComplete(elem, container, addressListDataSource); + ac.delimChar = ","; + ac.maxResultsDisplayed = 20; + ac.formatResult = addressListFormatter; + return ac; +} +var preventSubmit = function (e) { + if (YAHOO.util.Event.getCharCode(e) == 13) { + YAHOO.util.Event.preventDefault(e); + } +} //--> </script> <table width="100%" cellpadding="2" cellspacing="0"> @@ -55,7 +144,10 @@ <tr class="lightBlueRow"> <td width="15%" align="right" class="composeHeaderTitle"><bean:message key="message.to"/>:</td> <td colspan="3"> - <html:text property="to" size="63" style="width : 99%" tabindex="10"/> + <div id="toAutoComplete"> + <html:text property="to" styleId="toInput" size="63" style="width : 99%" tabindex="10"/> + <div id="toCompleteContainer"></div> + </div> </td> <td valign="top" rowspan="7" width="200"> <table align="center" width="100%"> @@ -102,13 +194,26 @@ <tr class="lightBlueRow"> <td width="15%" align="right" class="composeHeaderTitle"><bean:message key="message.cc"/>:</td> <td colspan="3"> - <html:text property="cc" size="63" style="width : 99%" tabindex="20"/> + <div id="ccAutoComplete"> + <html:text property="cc" styleId="ccInput" size="63" style="width : 99%" tabindex="20"/> + <div id="ccCompleteContainer"></div> + </div> </td> </tr> <tr class="lightBlueRow"> <td width="15%" align="right" class="composeHeaderTitle"><bean:message key="message.bcc"/>:</td> <td colspan="3"> - <html:text property="bcc" size="63" style="width : 99%" tabindex="30"/> + <div id="bccAutoComplete"> + <html:text property="bcc" styleId="bccInput" size="63" style="width : 99%" tabindex="30"/> + <div id="bccCompleteContainer"></div> + </div> + <script type="text/javascript"> + var toAutoComplete = initAutoComplete("toInput","toCompleteContainer"); + var ccAutoComplete = initAutoComplete("ccInput","ccCompleteContainer"); + var bccAutoComplete = initAutoComplete("bccInput","bccCompleteContainer"); + + YAHOO.util.Event.addListener(["toInput", "ccInput", "bccInput"], "keypress", preventSubmit); + </script> </td> </tr> <tr class="lightBlueRow"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2007-02-23 00:43:37
|
Revision: 27 http://svn.sourceforge.net/gatormail/?rev=27&view=rev Author: sandymac Date: 2007-02-22 16:43:38 -0800 (Thu, 22 Feb 2007) Log Message: ----------- Catch the preference change the first time and bump the version number. Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2007-02-23 00:16:15 UTC (rev 26) +++ GatorMail/trunk/build.xml 2007-02-23 00:43:38 UTC (rev 27) @@ -19,7 +19,7 @@ <property name="gatormail.jdbc.url" value="" description="depricated"/> <property name="gatormail.attachment.path" value="" description="Local path to hold attachments until they are sent."/> - <property name="VERSION" value="1.0.19"/> + <property name="VERSION" value="1.0.20"/> <tstamp/> Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java 2007-02-23 00:16:15 UTC (rev 26) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PreferencesAction.java 2007-02-23 00:43:38 UTC (rev 27) @@ -206,11 +206,7 @@ } final Boolean autocomplete = prefsForm.getAutocomplete(); - if (autocomplete == null && prefs.getProperty("compose.recipients.autocomplete") != null) { - prefs.remove("compose.recipients.autocomplete"); - } else if (autocomplete != null || prefs.getProperty("compose.recipients.autocomplete") == null) { - prefs.setProperty("compose.recipients.autocomplete", autocomplete == null ? "false" : autocomplete.toString()); - } + prefs.setProperty("compose.recipients.autocomplete", autocomplete == null ? "false" : autocomplete.toString()); final Boolean threading = prefsForm.getThreading(); if (threading == null && prefs.getProperty("folder.list.threading") != null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2007-07-05 22:37:35
|
Revision: 30 http://svn.sourceforge.net/gatormail/?rev=30&view=rev Author: sandymac Date: 2007-07-05 15:18:09 -0700 (Thu, 05 Jul 2007) Log Message: ----------- Subscribed folder fixed, I18N fixed, fixed link colors overridden via html mail css Modified Paths: -------------- GatorMail/trunk/lib/struts-1.1/struts-config_1_0.dtd GatorMail/trunk/lib/struts-1.1/tiles-config.dtd GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/util/Util.java GatorMail/trunk/src/webapp/WEB-INF/struts-config.xml GatorMail/trunk/src/webapp/WEB-INF/tiles-defs.xml GatorMail/trunk/src/webapp/WEB-INF/web.xml GatorMail/trunk/src/webapp/about.jsp GatorMail/trunk/src/webapp/addAddress.jsp GatorMail/trunk/src/webapp/addressbook.jsp GatorMail/trunk/src/webapp/compose.jsp GatorMail/trunk/src/webapp/confirmDeleteFolder.jsp GatorMail/trunk/src/webapp/confirmEmptyFolder.jsp GatorMail/trunk/src/webapp/cookiesDisabled.jsp GatorMail/trunk/src/webapp/errorBasic.jsp GatorMail/trunk/src/webapp/errorCopy.jsp GatorMail/trunk/src/webapp/errorCopyToSent.jsp GatorMail/trunk/src/webapp/errorCopyToTrash.jsp GatorMail/trunk/src/webapp/errorLogout.jsp GatorMail/trunk/src/webapp/errorUncaught.jsp GatorMail/trunk/src/webapp/feedback.jsp GatorMail/trunk/src/webapp/folder.jsp GatorMail/trunk/src/webapp/folderManage.jsp GatorMail/trunk/src/webapp/folderManageModify.jsp GatorMail/trunk/src/webapp/help.jsp GatorMail/trunk/src/webapp/index.jsp GatorMail/trunk/src/webapp/login.jsp GatorMail/trunk/src/webapp/loginMessage.jsp GatorMail/trunk/src/webapp/message.jsp GatorMail/trunk/src/webapp/noInbox.jsp GatorMail/trunk/src/webapp/overLimit.jsp GatorMail/trunk/src/webapp/preferences.jsp GatorMail/trunk/src/webapp/printerFriendly.jsp GatorMail/trunk/src/webapp/selectAddresses.jsp GatorMail/trunk/src/webapp/stats.jsp GatorMail/trunk/src/webapp/tiles/folder/folderList.jsp GatorMail/trunk/src/webapp/tiles/message/messageMenuFoot.jsp GatorMail/trunk/src/webapp/tiles/message/messageMenuHead.jsp Modified: GatorMail/trunk/lib/struts-1.1/struts-config_1_0.dtd =================================================================== --- GatorMail/trunk/lib/struts-1.1/struts-config_1_0.dtd 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/lib/struts-1.1/struts-config_1_0.dtd 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Modified: GatorMail/trunk/lib/struts-1.1/tiles-config.dtd =================================================================== --- GatorMail/trunk/lib/struts-1.1/tiles-config.dtd 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/lib/struts-1.1/tiles-config.dtd 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- DTD for the Tile Definition File, Version 1.0 Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java 2007-07-05 22:18:09 UTC (rev 30) @@ -755,7 +755,13 @@ final Folder[] subscribedFolders = folder.listSubscribed("*"); // Be careful about users with zero subscribed folders. if (subscribedFolders != null) { - list = Arrays.asList(subscribedFolders); + list = new ArrayList(subscribedFolders.length); + for (int i=0; i < subscribedFolders.length; i++) { + if (subscribedFolders[i].isSubscribed()) { + list.add(subscribedFolders[i]); + } + } + //list = Arrays.asList(subscribedFolders); } else { list = Collections.EMPTY_LIST; } Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/util/Util.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/util/Util.java 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/util/Util.java 2007-07-05 22:18:09 UTC (rev 30) @@ -258,6 +258,16 @@ return ((parentPart instanceof BodyPart) ? (getPartPath((BodyPart)parentPart) + ".") : "") + partNumber; } + public static boolean hasSubscribedSubfolder(final Folder folder) throws MessagingException { + final Folder[] subscribedFolders = folder.listSubscribed("*"); + for (int i=0; i < subscribedFolders.length; i++) { + if (subscribedFolders[i].isSubscribed()) { + return true; + } + } + return false; + } + /** * Used to sort messages newest first, this will me moving out of Util * later. Modified: GatorMail/trunk/src/webapp/WEB-INF/struts-config.xml =================================================================== --- GatorMail/trunk/src/webapp/WEB-INF/struts-config.xml 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/WEB-INF/struts-config.xml 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" Modified: GatorMail/trunk/src/webapp/WEB-INF/tiles-defs.xml =================================================================== --- GatorMail/trunk/src/webapp/WEB-INF/tiles-defs.xml 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/WEB-INF/tiles-defs.xml 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration//EN" Modified: GatorMail/trunk/src/webapp/WEB-INF/web.xml =================================================================== --- GatorMail/trunk/src/webapp/WEB-INF/web.xml 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/WEB-INF/web.xml 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> Modified: GatorMail/trunk/src/webapp/about.jsp =================================================================== --- GatorMail/trunk/src/webapp/about.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/about.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="simpleLayout"> Modified: GatorMail/trunk/src/webapp/addAddress.jsp =================================================================== --- GatorMail/trunk/src/webapp/addAddress.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/addAddress.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="defaultLayout"> Modified: GatorMail/trunk/src/webapp/addressbook.jsp =================================================================== --- GatorMail/trunk/src/webapp/addressbook.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/addressbook.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="defaultLayout"> Modified: GatorMail/trunk/src/webapp/compose.jsp =================================================================== --- GatorMail/trunk/src/webapp/compose.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/compose.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="defaultLayout"> Modified: GatorMail/trunk/src/webapp/confirmDeleteFolder.jsp =================================================================== --- GatorMail/trunk/src/webapp/confirmDeleteFolder.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/confirmDeleteFolder.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="folderManageLayout"> Modified: GatorMail/trunk/src/webapp/confirmEmptyFolder.jsp =================================================================== --- GatorMail/trunk/src/webapp/confirmEmptyFolder.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/confirmEmptyFolder.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="folderManageLayout"> Modified: GatorMail/trunk/src/webapp/cookiesDisabled.jsp =================================================================== --- GatorMail/trunk/src/webapp/cookiesDisabled.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/cookiesDisabled.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="simpleLayout"> Modified: GatorMail/trunk/src/webapp/errorBasic.jsp =================================================================== --- GatorMail/trunk/src/webapp/errorBasic.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/errorBasic.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="errorLayout"> Modified: GatorMail/trunk/src/webapp/errorCopy.jsp =================================================================== --- GatorMail/trunk/src/webapp/errorCopy.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/errorCopy.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1" +<%@page contentType="text/html; charset=utf-8" import="edu.ufl.osg.webmail.Constants" %> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> Modified: GatorMail/trunk/src/webapp/errorCopyToSent.jsp =================================================================== --- GatorMail/trunk/src/webapp/errorCopyToSent.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/errorCopyToSent.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1" +<%@page contentType="text/html; charset=utf-8" import="edu.ufl.osg.webmail.Constants" %> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> Modified: GatorMail/trunk/src/webapp/errorCopyToTrash.jsp =================================================================== --- GatorMail/trunk/src/webapp/errorCopyToTrash.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/errorCopyToTrash.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1" +<%@page contentType="text/html; charset=utf-8" import="edu.ufl.osg.webmail.Constants" %> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> Modified: GatorMail/trunk/src/webapp/errorLogout.jsp =================================================================== --- GatorMail/trunk/src/webapp/errorLogout.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/errorLogout.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="errorLayout"> Modified: GatorMail/trunk/src/webapp/errorUncaught.jsp =================================================================== --- GatorMail/trunk/src/webapp/errorUncaught.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/errorUncaught.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="errorLayout"> Modified: GatorMail/trunk/src/webapp/feedback.jsp =================================================================== --- GatorMail/trunk/src/webapp/feedback.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/feedback.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="simpleLayout"> Modified: GatorMail/trunk/src/webapp/folder.jsp =================================================================== --- GatorMail/trunk/src/webapp/folder.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/folder.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> Modified: GatorMail/trunk/src/webapp/folderManage.jsp =================================================================== --- GatorMail/trunk/src/webapp/folderManage.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/folderManage.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="folderManageLayout"> Modified: GatorMail/trunk/src/webapp/folderManageModify.jsp =================================================================== --- GatorMail/trunk/src/webapp/folderManageModify.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/folderManageModify.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="folderManageLayout"> Modified: GatorMail/trunk/src/webapp/help.jsp =================================================================== --- GatorMail/trunk/src/webapp/help.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/help.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="simpleLayout"> Modified: GatorMail/trunk/src/webapp/index.jsp =================================================================== --- GatorMail/trunk/src/webapp/index.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/index.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-logic" prefix="logic"%> <logic:redirect forward="login"/> <%-- Modified: GatorMail/trunk/src/webapp/login.jsp =================================================================== --- GatorMail/trunk/src/webapp/login.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/login.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="loginLayout"> Modified: GatorMail/trunk/src/webapp/loginMessage.jsp =================================================================== --- GatorMail/trunk/src/webapp/loginMessage.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/loginMessage.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="simpleLayout"> Modified: GatorMail/trunk/src/webapp/message.jsp =================================================================== --- GatorMail/trunk/src/webapp/message.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/message.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,6 +1,6 @@ <%@ page import="javax.mail.Message, edu.ufl.osg.webmail.util.Util"%> -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <% Util.getFolder(((Message)request.getAttribute("message")).getFolder()); Modified: GatorMail/trunk/src/webapp/noInbox.jsp =================================================================== --- GatorMail/trunk/src/webapp/noInbox.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/noInbox.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="simpleLayout"> Modified: GatorMail/trunk/src/webapp/overLimit.jsp =================================================================== --- GatorMail/trunk/src/webapp/overLimit.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/overLimit.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="loginLayout"> Modified: GatorMail/trunk/src/webapp/preferences.jsp =================================================================== --- GatorMail/trunk/src/webapp/preferences.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/preferences.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="defaultLayout"> Modified: GatorMail/trunk/src/webapp/printerFriendly.jsp =================================================================== --- GatorMail/trunk/src/webapp/printerFriendly.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/printerFriendly.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="printerFriendlyLayout"/> Modified: GatorMail/trunk/src/webapp/selectAddresses.jsp =================================================================== --- GatorMail/trunk/src/webapp/selectAddresses.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/selectAddresses.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%@taglib uri="/tags/struts-tiles" prefix="tiles"%> <%@taglib uri="/tags/struts-bean" prefix="bean"%> <tiles:insert definition="defaultLayout"> Modified: GatorMail/trunk/src/webapp/stats.jsp =================================================================== --- GatorMail/trunk/src/webapp/stats.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/stats.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -10,7 +10,7 @@ java.util.HashMap, java.util.Collection, java.util.Arrays"%> -<%@page contentType="text/html; charset=iso-8859-1"%> +<%@page contentType="text/html; charset=utf-8"%> <%! private static final Date statsStart = new Date(); Modified: GatorMail/trunk/src/webapp/tiles/folder/folderList.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/folder/folderList.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/tiles/folder/folderList.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -63,7 +63,18 @@ %> </html:link> <% + } else if (Util.hasSubscribedSubfolder(currentRootFolder)) { +%> + <span title="Unsubscribed Folder. Subscribe to this folder in Edit Folders."> + <html:img page="<%= imageName %>" alt="Folder:" border="0" align="absmiddle" hspace="5"/><bean:write name="currentRootFolder" property="name"/> +<% + if (unreadMessageCount != 0) { + out.print("(" + unreadMessageCount + ")"); } +%> + </span> +<% + } final List subFolderList; subFolderList = Arrays.asList(currentRootFolder.listSubscribed()); Modified: GatorMail/trunk/src/webapp/tiles/message/messageMenuFoot.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/message/messageMenuFoot.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/tiles/message/messageMenuFoot.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -25,7 +25,7 @@ <th width="15%"> <nobr> <%-- Priner friendly Link --%> - <html:link forward="printerFriendly" name="messageParams" scope="request" titleKey="link.printerFriendly.title" style="#ffffff"> + <html:link forward="printerFriendly" name="messageParams" scope="request" titleKey="link.printerFriendly.title" style="color:#ffffff;"> <bean:message key="link.printerFriendly"/> </html:link> </nobr> @@ -39,7 +39,7 @@ <tr> <th width="15%"> <nobr> - <html:link forward="rawMessage" name="messageParams" scope="request" titleKey="link.message.source.title" style="#ffffff"><bean:message key="link.message.source"/></html:link> + <html:link forward="rawMessage" name="messageParams" scope="request" titleKey="link.message.source.title" style="color:#ffffff;"><bean:message key="link.message.source"/></html:link> </nobr> </th> </tr> Modified: GatorMail/trunk/src/webapp/tiles/message/messageMenuHead.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/message/messageMenuHead.jsp 2007-06-29 18:13:01 UTC (rev 29) +++ GatorMail/trunk/src/webapp/tiles/message/messageMenuHead.jsp 2007-07-05 22:18:09 UTC (rev 30) @@ -78,14 +78,14 @@ if (!isJunk) { %> <%-- Report Spam Link --%> - <html:link forward="reportSpam" name="messageParams" scope="request" titleKey="link.reportSpam.title" style="#ffffff"> + <html:link forward="reportSpam" name="messageParams" scope="request" titleKey="link.reportSpam.title" style="color:#ffffff;"> <bean:message key="link.report.spam"/> </html:link> <% } else { %> <%-- Report Ham Link --%> - <html:link forward="reportHam" name="messageParams" scope="request" titleKey="link.reportHam.title" style="#ffffff"> + <html:link forward="reportHam" name="messageParams" scope="request" titleKey="link.reportHam.title" style="color:#ffffff;"> <bean:message key="link.report.ham"/> </html:link> <% This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2007-07-18 20:46:44
|
Revision: 32 http://svn.sourceforge.net/gatormail/?rev=32&view=rev Author: sandymac Date: 2007-07-18 12:55:30 -0700 (Wed, 18 Jul 2007) Log Message: ----------- Fix for create folder issue Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/Messages.properties GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/CreateFolderAction.java GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PerformDeleteFolderAction.java Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2007-07-10 18:56:07 UTC (rev 31) +++ GatorMail/trunk/build.xml 2007-07-18 19:55:30 UTC (rev 32) @@ -19,7 +19,7 @@ <property name="gatormail.jdbc.url" value="" description="depricated"/> <property name="gatormail.attachment.path" value="" description="Local path to hold attachments until they are sent."/> - <property name="VERSION" value="1.0.21"/> + <property name="VERSION" value="1.0.22"/> <tstamp/> Modified: GatorMail/trunk/src/Messages.properties =================================================================== --- GatorMail/trunk/src/Messages.properties 2007-07-10 18:56:07 UTC (rev 31) +++ GatorMail/trunk/src/Messages.properties 2007-07-18 19:55:30 UTC (rev 32) @@ -90,6 +90,7 @@ error.attachment.required=No attachment was selected. error.changeSubscription.unsubscribe.inbox=You cannot unsubscribe your INBOX. error.compose.to.required=The To: field cannot be blank. +error.createFolder.newFolder=Error creating new folder with name: {0}. error.createFolder.newFolder.required=Please enter the name of a new folder. error.createFolder.newFolder.toolong=The new folder name is too long. Please keep it to {0} or less characters. error.createFolder.parentFolder.required=Please select the name of the parent folder. Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java 2007-07-10 18:56:07 UTC (rev 31) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java 2007-07-18 19:55:30 UTC (rev 32) @@ -94,7 +94,7 @@ * @throws InvalidSessionException If the user's session is out of wack for * some reason. */ - public static void checkSession(final HttpServletRequest request) throws SessionExpiredException, InvalidSessionException, NoSuchProviderException { + public static void checkSession(final HttpServletRequest request) throws InvalidSessionException, NoSuchProviderException { final HttpSession session = request.getSession(); // Cheeze hack to let us track how long a request took. @@ -489,7 +489,7 @@ } // is this folder to be restricted from the list? - private static boolean isFolderIncluded(final Folder folder, final boolean includeReserved, HttpSession session) throws MessagingException { + private static boolean isFolderIncluded(final Folder folder, final boolean includeReserved, final HttpSession session) throws MessagingException { return (!(!includeReserved && Util.isReservedFolder(folder.getFullName(), session))); } @@ -705,7 +705,7 @@ /** * Returned folder is always open. */ - protected final static Folder createFolder(final Folder folder) throws MessagingException { + protected static Folder createFolder(final Folder folder) throws MessagingException { logger.debug("creating new folder: " + folder.getFullName()); folder.create(Folder.HOLDS_FOLDERS | Folder.HOLDS_MESSAGES); @@ -724,22 +724,8 @@ * The returned List may be smaller than the passed in array, if * one or more of the Messages is null or expunged. */ - protected final static List buildMessageList(final Message[] messages) throws MessagingException { - // Get the Messages in the folder - final List messageList = new ArrayList(Arrays.asList(messages)); - - // Remove any expunged messages, to prevent a NullPointerException - /* - final ListIterator it = messageList.listIterator(); - while (it.hasNext()) { - final Message message = (Message)it.next(); - if (message == null || message.isExpunged() || message.isSet(Flags.Flag.DELETED)) { - it.remove(); - } - } - */ - - return messageList; + protected static List buildMessageList(final Message[] messages) throws MessagingException { + return new ArrayList(Arrays.asList(messages)); } /** Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/CreateFolderAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/CreateFolderAction.java 2007-07-10 18:56:07 UTC (rev 31) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/CreateFolderAction.java 2007-07-18 19:55:30 UTC (rev 32) @@ -31,8 +31,10 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionError; import javax.mail.Folder; +import javax.mail.FolderNotFoundException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -72,10 +74,12 @@ final String parentFolderName = newFolderForm.getFolder(); final String newFolderName = newFolderForm.getNewFolder(); + /* if (!ActionsUtil.isLegalNewFolder(newFolderName, parentFolderName, errors, request)) { saveErrors(request, errors); return mapping.findForward("fail"); } + */ // OK looks good. let's create that folder Folder parentFolder = null; @@ -90,6 +94,10 @@ try { ActionsUtil.flushMailStoreGroupCache(request.getSession()); ActionsUtil.createFolder(newFolder); // creates & opens newFolder + } catch (FolderNotFoundException fnfe) { + errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.createFolder.newFolder", newFolder.getFullName())); + saveErrors(request, errors); + return mapping.findForward("fail"); } finally { Util.releaseFolder(newFolder); // clean up } Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PerformDeleteFolderAction.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PerformDeleteFolderAction.java 2007-07-10 18:56:07 UTC (rev 31) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/PerformDeleteFolderAction.java 2007-07-18 19:55:30 UTC (rev 32) @@ -32,6 +32,7 @@ import org.apache.struts.actions.LookupDispatchAction; import javax.mail.Folder; +import javax.mail.MessagingException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -131,6 +132,12 @@ // folder must be closed for delete folder.close(true); + try { + folder.setSubscribed(false); + } catch (MessagingException e) { + // swallowed + } + // recursive delete is OK - if the user didn't check "deleteChildren" and there // were children, the form validation would have caught that. folder.delete(true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2007-09-27 22:08:23
|
Revision: 33 http://gatormail.svn.sourceforge.net/gatormail/?rev=33&view=rev Author: sandymac Date: 2007-09-27 13:51:18 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Fix for rename folder issue Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2007-07-18 19:55:30 UTC (rev 32) +++ GatorMail/trunk/build.xml 2007-09-27 20:51:18 UTC (rev 33) @@ -19,7 +19,7 @@ <property name="gatormail.jdbc.url" value="" description="depricated"/> <property name="gatormail.attachment.path" value="" description="Local path to hold attachments until they are sent."/> - <property name="VERSION" value="1.0.22"/> + <property name="VERSION" value="1.0.23"/> <tstamp/> Modified: GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java =================================================================== --- GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java 2007-07-18 19:55:30 UTC (rev 32) +++ GatorMail/trunk/src/java/edu/ufl/osg/webmail/actions/ActionsUtil.java 2007-09-27 20:51:18 UTC (rev 33) @@ -85,6 +85,7 @@ private static final String MAIL_STORE_GROUP = "mailStore"; private static final String[] MAIL_STORE_CACHE_GROUP = new String[] {MAIL_STORE_GROUP}; + private static final Folder[] NO_FOLDERS = new Folder[0]; /** * Checks the users session and throws an exception if a problem is found. @@ -473,7 +474,11 @@ list.add(rootFolder); } - folders = getFolderList(rootFolder, includeUnsubscribed); + try { + folders = getFolderList(rootFolder, includeUnsubscribed); + } catch (FolderNotFoundException fnfe) { + folders = NO_FOLDERS; + } } finally { Util.releaseFolder(rootFolder); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <san...@us...> - 2008-04-29 21:18:26
|
Revision: 36 http://gatormail.svn.sourceforge.net/gatormail/?rev=36&view=rev Author: sandymac Date: 2008-04-29 14:13:24 -0700 (Tue, 29 Apr 2008) Log Message: ----------- New easy header message code. Modified Paths: -------------- GatorMail/trunk/build.xml GatorMail/trunk/src/webapp/tiles/common/header.jsp GatorMail/trunk/src/webapp/tiles/login/loginHeader.jsp Added Paths: ----------- GatorMail/trunk/src/webapp/alertMessage.js Modified: GatorMail/trunk/build.xml =================================================================== --- GatorMail/trunk/build.xml 2008-03-27 21:49:26 UTC (rev 35) +++ GatorMail/trunk/build.xml 2008-04-29 21:13:24 UTC (rev 36) @@ -275,6 +275,7 @@ <!-- / --> <fileset dir="${build.jsp.dir}"/> <fileset dir="${src.webapp.dir}" includes="yui/**"/> + <fileset dir="${src.webapp.dir}" includes="alertMessage.js"/> <fileset refid="fileset.gatormail.images"/> Added: GatorMail/trunk/src/webapp/alertMessage.js =================================================================== --- GatorMail/trunk/src/webapp/alertMessage.js (rev 0) +++ GatorMail/trunk/src/webapp/alertMessage.js 2008-04-29 21:13:24 UTC (rev 36) @@ -0,0 +1,7 @@ +// You can: +// document.write("A message"); +// for something easy. +// +// either use document.getElementByID("headerAlertMessage") for the top of each page +// or use document.getElementByID("loginAlertMessage") for the login page and +// test for what type of page you are on and customize out put there. \ No newline at end of file Modified: GatorMail/trunk/src/webapp/tiles/common/header.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/common/header.jsp 2008-03-27 21:49:26 UTC (rev 35) +++ GatorMail/trunk/src/webapp/tiles/common/header.jsp 2008-04-29 21:13:24 UTC (rev 36) @@ -25,6 +25,10 @@ <%-- Don't fotget to bump the version number in the feedback forward of struts-config.xml --%> <td height="75" valign="bottom" class="version">v@VERSION@</td> + <td rowspan="2" height="75" width="100%" valign="bottom" class="alertMessage" id="headerAlertMessage"> + <script type="text/javascript" src="alertMessage.js"></script> + + </td> <td rowspan="2" valign="middle" align="right"> <table border="0" cellpadding="2"> Modified: GatorMail/trunk/src/webapp/tiles/login/loginHeader.jsp =================================================================== --- GatorMail/trunk/src/webapp/tiles/login/loginHeader.jsp 2008-03-27 21:49:26 UTC (rev 35) +++ GatorMail/trunk/src/webapp/tiles/login/loginHeader.jsp 2008-04-29 21:13:24 UTC (rev 36) @@ -1,3 +1,11 @@ <%@page contentType="text/html"%> <%@taglib uri="/tags/struts-html" prefix="html"%> <html:img page="/webMail-logo.jpg" border="0"/> +<table border="0" width="600" id="announcement"> + <tr> + <td class="alertMessage" id="loginAlertMessage"> + <script type="text/javascript" src="alertMessage.js"></script> + + </td> + </tr> +</table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |