Author: vbriand Date: 2011-01-21 12:22:45 +0100 (Fri, 21 Jan 2011) New Revision: 174 Url: http://chorem.org/repositories/revision/bow/174 Log: We can't change our email address to the address of someone else anymore Modified: trunk/src/main/java/org/chorem/bow/BowInit.java trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java trunk/src/main/resources/i18n/bow_en_GB.properties trunk/src/main/resources/i18n/bow_fr_FR.properties trunk/src/main/resources/struts.xml trunk/src/main/webapp/WEB-INF/decorators/main.jsp trunk/src/main/webapp/css/bookmark.css trunk/src/main/webapp/css/connexion.css trunk/src/main/webapp/jsp/inc/footer.jsp trunk/src/main/webapp/jsp/inc/header.jsp trunk/src/main/webapp/jsp/inc/rightMenu.jsp trunk/src/main/webapp/jsp/login.jsp trunk/src/main/webapp/jsp/preferences.jsp Modified: trunk/src/main/java/org/chorem/bow/BowInit.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowInit.java 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/java/org/chorem/bow/BowInit.java 2011-01-21 11:22:45 UTC (rev 174) @@ -64,6 +64,7 @@ static public void initHomePage(HttpServletRequest request, User user) { WikittyProxy proxy = BowProxy.getInstance(); Criteria criteria = BowBookmark.getBookmarkListCriteriaByUser(user, null); + if (criteria != null) { Criteria sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, sortCriteria); //Selects all bookmarks by user Modified: trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-01-21 11:22:45 UTC (rev 174) @@ -13,8 +13,10 @@ import org.chorem.bow.Preference; import org.chorem.bow.User; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.Criteria; import org.nuiton.wikitty.FacetTopic; import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Search; public class PreferencesAction extends BowBaseAction implements SessionAware, ServletRequestAware { private static final long serialVersionUID = -58341106356599721L; @@ -236,26 +238,32 @@ if (user != null) { setBookmarksImportDate(BowBookmark.getBookmarksByImportDate(request, user)); - if (update != null) { + if (update != null) { //If the user submitted the form WikittyProxy proxy = BowProxy.getInstance(); Preference preference = changePreference(); proxy.store(preference); - User newUser = proxy.restore(User.class, (user).getWikittyId()); + User newUser = proxy.restore(User.class, user.getWikittyId()); + Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email).criteria(); - try { - newUser = changeUser(newUser); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + if (proxy.findByCriteria(User.class, criteria) == null) { //If this email address isn't already used by someone else + try { + newUser = changeUser(newUser); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + newUser = proxy.store(newUser); + session.put("user", newUser); + + preference = proxy.restore(Preference.class, newUser.getWikittyId()); + session.put("preference", preference); + return "update"; } - newUser = proxy.store(newUser); - session.put("user", newUser); - - preference = proxy.restore(Preference.class, newUser.getWikittyId()); - session.put("preference", preference); - return "update"; - } else { + setEmail(user.getEmail()); + addActionError(getText("bow.preferences.emailAldyExists")); + return ERROR; + } else { //If the user didn't submit the form, the fields are filled with the current preferences values Preference preference = (Preference)session.get("preference"); setEmail(user.getEmail()); Modified: trunk/src/main/resources/i18n/bow_en_GB.properties =================================================================== --- trunk/src/main/resources/i18n/bow_en_GB.properties 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/resources/i18n/bow_en_GB.properties 2011-01-21 11:22:45 UTC (rev 174) @@ -32,21 +32,22 @@ bow.login.repeatPassword.required=Please repeat your password bow.login.submit=Login bow.login.title=Login -bow.preferences.bookmarksHomePage= -bow.preferences.colors= -bow.preferences.confirmNewPassword= -bow.preferences.currentPassword= -bow.preferences.importedBookmarks= -bow.preferences.newPassword= -bow.preferences.noImportedBookmarks= -bow.preferences.regenPermToken= -bow.preferences.searchEngineUrlResults= -bow.preferences.searchEngineUrlSuggestions= -bow.preferences.siteLook= -bow.preferences.submit= -bow.preferences.tagsNb= +bow.preferences.bookmarksHomePage=Number of bookmarks displayed on the home page +bow.preferences.colors=Site color +bow.preferences.confirmNewPassword=Confirm new password +bow.preferences.currentPassword=Current password +bow.preferences.emailAldyExists=This email address is already linked with another account +bow.preferences.importedBookmarks=Imported bookmarks +bow.preferences.newPassword=New password +bow.preferences.noImportedBookmarks=No imported bookmarks +bow.preferences.regenPermToken=Regenerate permanent token +bow.preferences.searchEngineUrlResults=Search Engine URL Results ({searchTerms} will be replaced by your text) +bow.preferences.searchEngineUrlSuggestions=Search Engine URL Suggestions +bow.preferences.siteLook=Site look +bow.preferences.submit=Change +bow.preferences.tagsNb=Number of tags displayed in the tag cloud bow.preferences.title=Preferences -bow.preferences.userInfo= +bow.preferences.userInfo=User information bow.register.emailAldyUsed=This email address is already used bow.register.invalidLogin= bow.register.mailEmail= @@ -70,10 +71,13 @@ bow.rightMenu.extensions=Extensions bow.rightMenu.find.submit=Find bow.rightMenu.fullTextSearch=Full text search +bow.rightMenu.help=Help bow.rightMenu.import.submit=Import bow.rightMenu.importBookmarks=Import bookmarks bow.rightMenu.logout=Logout bow.rightMenu.search=Search bow.rightMenu.token.permanent=Permanent token id bow.rightMenu.token.temporary=Session token id +bow.search.orderby=Order by +bow.search.submit=Search bow.search.title=Search Modified: trunk/src/main/resources/i18n/bow_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/bow_fr_FR.properties 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/resources/i18n/bow_fr_FR.properties 2011-01-21 11:22:45 UTC (rev 174) @@ -32,18 +32,19 @@ bow.login.repeatPassword.required=Veuillez retaper votre mot de passe bow.login.submit=Connexion bow.login.title=Connexion -bow.preferences.bookmarksHomePage= -bow.preferences.colors= -bow.preferences.confirmNewPassword= -bow.preferences.currentPassword= -bow.preferences.importedBookmarks= -bow.preferences.newPassword= -bow.preferences.noImportedBookmarks= -bow.preferences.regenPermToken= +bow.preferences.bookmarksHomePage=Nombre de marque-pages affich\u00E9s +bow.preferences.colors=Couleur du site +bow.preferences.confirmNewPassword=Confirmez votre mot de passe +bow.preferences.currentPassword=Mot de passe actuel +bow.preferences.emailAldyExists=Cette addresse email est d\u00E9j\u00E0 utilis\u00E9e par un autre compte +bow.preferences.importedBookmarks=Marque-pages import\u00E9s +bow.preferences.newPassword=Nouveau mot de passe +bow.preferences.noImportedBookmarks=Aucun marque-page import\u00E9 +bow.preferences.regenPermToken=Reg\u00E9n\u00E9rer le token permanent bow.preferences.searchEngineUrlResults= bow.preferences.searchEngineUrlSuggestions= bow.preferences.siteLook= -bow.preferences.submit= +bow.preferences.submit=Changer bow.preferences.tagsNb= bow.preferences.title=Pr\u00E9f\u00E9rences bow.preferences.userInfo= @@ -70,10 +71,13 @@ bow.rightMenu.extensions=Extensions bow.rightMenu.find.submit=Rechercher bow.rightMenu.fullTextSearch=Recherche full text +bow.rightMenu.help=Aide bow.rightMenu.import.submit=Importer bow.rightMenu.importBookmarks=Importer des marque-pages bow.rightMenu.logout=D\u00E9connexion bow.rightMenu.search=Recherche bow.rightMenu.token.permanent=Token permanent bow.rightMenu.token.temporary=Token session +bow.search.orderby=Trier par +bow.search.submit=Rechercher bow.search.title=Recherche Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/resources/struts.xml 2011-01-21 11:22:45 UTC (rev 174) @@ -98,6 +98,7 @@ <action name="preferences" class="org.chorem.bow.action.PreferencesAction"> <result name="login" type="redirectAction">login_input</result> <result name="update" type="redirectAction">preferences</result> + <result name="error">/jsp/preferences.jsp</result> <result>/jsp/preferences.jsp</result> </action> <action name="admin"> Modified: trunk/src/main/webapp/WEB-INF/decorators/main.jsp =================================================================== --- trunk/src/main/webapp/WEB-INF/decorators/main.jsp 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/WEB-INF/decorators/main.jsp 2011-01-21 11:22:45 UTC (rev 174) @@ -12,6 +12,8 @@ <meta name="description" content="Bookmarks on the web" /> <s:url id="temporaryXml" action="temporaryXml" /> <s:url id="permanentXml" action="permanentXml" /> + <s:url id="favicon" value="/img/favicon.png" /> + <link rel="icon" type="image/png" href="${favicon}" /> <link rel="search" type="application/opensearchdescription+xml" title="bowTemporarySearchEngine" href="${temporaryXml}" /> <link rel="search" type="application/opensearchdescription+xml" title="bowPermanentSearchEngine" href="${permanentXml}" /> <s:url id="globalCSS" value="/css/global.css" /> Modified: trunk/src/main/webapp/css/bookmark.css =================================================================== --- trunk/src/main/webapp/css/bookmark.css 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/css/bookmark.css 2011-01-21 11:22:45 UTC (rev 174) @@ -393,8 +393,8 @@ padding:15px 0; } -.formFrame p input[type="text"], -.formFrame p input[type="password"]{ +.formFrame p input[type="text"], td input[type="text"], +.formFrame p input[type="password"], td input[type="password"]{ width:225px; } @@ -427,7 +427,7 @@ font-size:10px; } -.formFrame p input{ +.formFrame p input, td input{ margin-bottom:2px; } Modified: trunk/src/main/webapp/css/connexion.css =================================================================== --- trunk/src/main/webapp/css/connexion.css 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/css/connexion.css 2011-01-21 11:22:45 UTC (rev 174) @@ -81,7 +81,7 @@ margin:15px auto; } -#formFrame form div{ +#formFrame form p{ color:#804561; font-size:16px; font-weight:bold; Modified: trunk/src/main/webapp/jsp/inc/footer.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/footer.jsp 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/jsp/inc/footer.jsp 2011-01-21 11:22:45 UTC (rev 174) @@ -1,3 +1,6 @@ +<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@taglib prefix="s" uri="/struts-tags" %> + <div id="footer"> <p> <a shape="rect" href="">bow</a> @@ -6,6 +9,14 @@ <span title="Copyright">©2010</span> <a shape="rect" href="http://www.codelutin.com">Code Lutin</a> - <a shape="rect" href="http://www.chorem.org/projects/bow/issues">Rapport de bug</a> - - <a shape="rect" href="http://list.chorem.org/cgi-bin/mailman/listinfo/bow-users">Support utilisateur</a> + <a shape="rect" href="http://list.chorem.org/cgi-bin/mailman/listinfo/bow-users">Support utilisateur</a> - + <s:url id="localeEN"> + <s:param name="request_locale">en_GB</s:param> + </s:url> + <s:url id="localeFR"> + <s:param name="request_locale">fr_FR</s:param> + </s:url> + <s:a href="%{localeEN}"><s:text name="bow.action.locale.english" /></s:a> - + <s:a href="%{localeFR}"><s:text name="bow.action.locale.french" /></s:a> </p> </div> \ No newline at end of file Modified: trunk/src/main/webapp/jsp/inc/header.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/header.jsp 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/jsp/inc/header.jsp 2011-01-21 11:22:45 UTC (rev 174) @@ -1,4 +1,10 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@taglib prefix="s" uri="/struts-tags"%> <div id="header"> - <a class="logo" href="/bow/">bow</a> + <s:if test="#session.user"> + <a class="logo" href="<s:property value='%{#session.bowUrl}' />home.action?token=<s:property value='%{#session.tokenActions.getPermanentToken()}' />">bow</a> + </s:if> + <s:else> + <a class="logo" href="">bow</a> + </s:else> </div> \ No newline at end of file Modified: trunk/src/main/webapp/jsp/inc/rightMenu.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/rightMenu.jsp 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/jsp/inc/rightMenu.jsp 2011-01-21 11:22:45 UTC (rev 174) @@ -25,13 +25,7 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BookmarkActions" %> -<%@page import="java.text.SimpleDateFormat" %> -<%@page import="java.util.Iterator" %> -<%@page import="java.util.Set" %> -<%@page import="java.util.ArrayList" %> -<%@page import="java.util.List" %> <%@page import="org.chorem.bow.TokenActions" %> -<%@page import="org.nuiton.wikitty.FacetTopic" %> <%@page import="org.chorem.bow.Bookmark" %> <%@page import="org.chorem.bow.BowConfig" %> <%@page import="org.chorem.bow.Preference" %> @@ -43,9 +37,6 @@ admin = false; } -String temporaryToken = tokenActions.getTemporaryToken(); -String permanentToken = tokenActions.getPermanentToken(); - int nbTags = 100; Preference preference = (Preference)session.getAttribute("preference"); if (preference != null) { @@ -61,23 +52,8 @@ fullText = bookmarkActions.getFullTextLine(); } -String formLink = (String)request.getAttribute("link"); -String formName = (String)request.getAttribute("name"); -String formTags = (String)request.getAttribute("tags"); -String formAlias = (String)request.getAttribute("alias"); -String formAction = (String)request.getAttribute("formAction"); - -if (formLink == null) - formLink = "URL"; -if (formName == null) - formName = "name"; -if (formTags == null) - formTags = "tag1 tag2..."; -if (formAlias == null) - formAlias = "alias"; -if (formAction == null) +if ((String)request.getAttribute("formAction") == null) request.setAttribute("formAction", "/bow/addUrl.action"); - //formAction = "/bow/addUrl.action"; %> <div id="logout" xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" @@ -135,17 +111,13 @@ <div class="recherche"> <h2><s:text name="bow.rightMenu.fullTextSearch" /></h2> <s:form action="fullText"> - <% if (fullText != null) { %> - <s:textfield name="fullTextLine" value="" /> <!-- <%=fullText%> --> - <% } else { %> - <s:textfield name="fullTextLine" /> - <% } %> + <s:textfield name="fullTextLine" /> <s:submit key="bow.rightMenu.find.submit" /> </s:form> </div> <div id="import"> <h2><s:text name="bow.rightMenu.importBookmarks" /></h2> - <s:form action="importBookmarks" enctype="multipart/form-data"> + <s:form action="importBookmarks" method="post" enctype="multipart/form-data"> <s:file name="upfile" size="15%" /><br /> <s:submit key="bow.rightMenu.import.submit" /> </s:form> Modified: trunk/src/main/webapp/jsp/login.jsp =================================================================== --- trunk/src/main/webapp/jsp/login.jsp 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/jsp/login.jsp 2011-01-21 11:22:45 UTC (rev 174) @@ -17,22 +17,18 @@ <div id="formFrame"> <h1><s:text name="bow.login.title" /></h1> <s:form action="login"> - <p> + <p> + <!-- <label for="login_email" class="label"><s:text name="bow.login.email" /> :</label> + <input type="text" name="email" value="" id="login_email" /><br /><br /> + <label for="login_password" class="label"><s:text name="bow.login.password" /> :</label> + <input type="password" name="password" id="login_password" /></td> + <s:submit key="bow.login.submit" /> --> + <s:textfield key="bow.login.email" name="email" /><br /><br /> <s:password key="bow.login.password" name="password" /><br /><br /> <s:submit key="bow.login.submit" /> </p> </s:form> - <s:url id="localeEN" action="login_input"> - <s:param name="request_locale">en_GB</s:param> - </s:url> - <s:url id="localeFR" action="login_input"> - <s:param name="request_locale">fr_FR</s:param> - </s:url> - - <s:a href="%{localeEN}">English</s:a><br /> - <s:a href="%{localeFR}">French</s:a><br /> - <s:a action="register_input"><s:text name="bow.register.title" /></s:a><br /> <s:a action="forgotPassword_input"><s:text name="bow.forgotpwd.title" /></s:a> </div> Modified: trunk/src/main/webapp/jsp/preferences.jsp =================================================================== --- trunk/src/main/webapp/jsp/preferences.jsp 2011-01-14 14:25:43 UTC (rev 173) +++ trunk/src/main/webapp/jsp/preferences.jsp 2011-01-21 11:22:45 UTC (rev 174) @@ -46,11 +46,12 @@ <s:url id="changePreferences" action="preferences"> <s:param name="update">1</s:param> </s:url> + <s:actionerror /> <s:form action="%{changePreferences}"> <div class="formFrame"> <h3><s:text name="bow.preferences.userInfo" /></h3> <p> - <s:textfield key="bow.login.email" name="email" /><br /><br /> + <s:textfield key="bow.login.email" name="email" cssStyle="margin-bottom: 2px" /><br /><br /> <s:password key="bow.preferences.currentPassword" name="currentPassword" /> <s:password key="bow.preferences.newPassword" name="newPassword" /> <s:password key="bow.preferences.confirmNewPassword" name="confirmNewPassword" />