r1551 - in trunk/src: main/java/cc/kune/chat/client main/java/cc/kune/core/client/auth main/java/cc/kune/core/client/errors main/java/cc/kune/core/client/i18n main/java/cc/kune/core/client/resources main/java/cc/kune/core/client/rpcservices main/java/cc/kune/core/client/sitebar main/java/cc/kune/core/client/state main/java/cc/kune/core/server/manager/impl main/java/cc/kune/core/server/rpc main/java/cc/kune/core/shared/dto main/java/cc/kune/gspace/client main/java/cc/kune/gspace/client/options
Author: vjrj_ Date: 2011-10-10 01:53:17 +0200 (Mon, 10 Oct 2011) New Revision: 1551 Added: trunk/src/main/java/cc/kune/core/client/errors/WrongCurrentPasswordException.java trunk/src/main/java/cc/kune/core/client/resources/lock.png trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPass.java trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPanel.java trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassView.java Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java trunk/src/main/java/cc/kune/core/client/state/Session.java trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java trunk/src/main/java/cc/kune/gspace/client/options/EntityOptionsView.java trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPanel.java trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java trunk/src/main/resources/db/liquibase_changelog.xml trunk/src/main/resources/kune.properties trunk/src/main/webapp/ws.html trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java Log: CLOSED - # 138: Add change password functionality to the User Interface http://kune.ourproject.org/issues/ticket/138 Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -104,7 +104,7 @@ public void run() { setBlink(false); } - }.schedule(10000); + }.schedule(20000); } }); } Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -19,8 +19,6 @@ \*/ package cc.kune.core.client.auth; -import cc.kune.common.client.utils.TextUtils; -import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.state.Session; import cc.kune.core.client.ui.DefaultForm; import cc.kune.core.shared.i18n.I18nTranslationService; @@ -60,32 +58,12 @@ longNameRegField.setTabIndex(2); add(longNameRegField); - passwdRegField = new TextField<String>(); + passwdRegField = userFieldFactory.createUserPasswd(PASSWORD_FIELD, i18n.t("Password")); passwdRegField.setTabIndex(3); - passwdRegField.setFieldLabel(i18n.t("Password")); - passwdRegField.setName(PASSWORD_FIELD); - passwdRegField.setPassword(true); - passwdRegField.setAllowBlank(false); - passwdRegField.setMinLength(6); - passwdRegField.setMaxLength(40); - passwdRegField.getMessages().setMinLengthText(i18n.t(CoreMessages.PASSWD_MUST_BE_BETWEEN_6_AND_40)); - passwdRegField.getMessages().setMaxLengthText(i18n.t(CoreMessages.PASSWD_MUST_BE_BETWEEN_6_AND_40)); - passwdRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH); - passwdRegField.setValidationDelay(1000); - passwdRegField.setId(PASSWORD_FIELD); add(passwdRegField); - // http://www.sencha.com/forum/showthread.php?49702-GXT-Form-Validation - emailRegField = new TextField<String>(); + emailRegField = userFieldFactory.createUserEmail(EMAIL_FIELD); emailRegField.setTabIndex(5); - emailRegField.setFieldLabel(i18n.t("Email")); - emailRegField.setName(EMAIL_FIELD); - emailRegField.setRegex(TextUtils.EMAIL_REGEXP); - emailRegField.getMessages().setRegexText(i18n.t("This is not a valid email")); - emailRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH); - emailRegField.setAllowBlank(false); - emailRegField.setValidationDelay(1000); - emailRegField.setId(EMAIL_FIELD); add(emailRegField); } Modified: trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/auth/UserFieldFactory.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -1,5 +1,6 @@ package cc.kune.core.client.auth; +import cc.kune.common.client.utils.TextUtils; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.ui.DefaultForm; import cc.kune.core.shared.i18n.I18nTranslationService; @@ -18,6 +19,20 @@ this.i18n = i18n; } + public TextField<String> createUserEmail(final String fieldId) { + // http://www.sencha.com/forum/showthread.php?49702-GXT-Form-Validation + final TextField<String> emailRegField = new TextField<String>(); + emailRegField.setFieldLabel(i18n.t("Email")); + emailRegField.setName(fieldId); + emailRegField.setRegex(TextUtils.EMAIL_REGEXP); + emailRegField.getMessages().setRegexText(i18n.t("This is not a valid email")); + emailRegField.setWidth(DefaultForm.DEF_MEDIUM_FIELD_WIDTH); + emailRegField.setAllowBlank(false); + emailRegField.setValidationDelay(1000); + emailRegField.setId(fieldId); + return emailRegField; + } + public TextField<String> createUserLongName(final String fieldId) { final TextField<String> longNameRegField = new TextField<String>(); longNameRegField.setFieldLabel(i18n.t("Name")); @@ -30,6 +45,22 @@ return longNameRegField; } + public TextField<String> createUserPasswd(final String fieldId, final String fieldText) { + final TextField<String> passwdRegField = new TextField<String>(); + passwdRegField.setFieldLabel(fieldText); + passwdRegField.setName(fieldId); + passwdRegField.setPassword(true); + passwdRegField.setAllowBlank(false); + passwdRegField.setMinLength(6); + passwdRegField.setMaxLength(40); + passwdRegField.getMessages().setMinLengthText(i18n.t(CoreMessages.PASSWD_MUST_BE_BETWEEN_6_AND_40)); + passwdRegField.getMessages().setMaxLengthText(i18n.t(CoreMessages.PASSWD_MUST_BE_BETWEEN_6_AND_40)); + passwdRegField.setWidth(DefaultForm.DEF_MEDIUM_FIELD_WIDTH); + passwdRegField.setValidationDelay(1000); + passwdRegField.setId(fieldId); + return passwdRegField; + } + public TextField<String> createUserShortName(final String fieldId) { final String minMaxText = i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15); final TextField<String> field = new TextField<String>(); Added: trunk/src/main/java/cc/kune/core/client/errors/WrongCurrentPasswordException.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/WrongCurrentPasswordException.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/errors/WrongCurrentPasswordException.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -0,0 +1,26 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.errors; + +public class WrongCurrentPasswordException extends DefaultException { + + private static final long serialVersionUID = 1019305526843055648L; + +} Property changes on: trunk/src/main/java/cc/kune/core/client/errors/WrongCurrentPasswordException.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -32,6 +32,7 @@ import cc.kune.core.shared.dto.I18nLanguageDTO; import cc.kune.core.shared.i18n.I18nTranslationService; +import com.calclab.emite.browser.client.PageAssist; import com.calclab.suco.client.events.Listener0; import com.google.gwt.event.shared.EventBus; import com.google.gwt.i18n.client.DateTimeFormat; @@ -108,32 +109,32 @@ */ private native void changeLocale(String newLocale) /*-{ - // Uncomment the "debugger;" line to see how to set debug statements in JSNI code - // When in web mode, if your browser has a JavaScript debugger attached, it will - // launch at this point in the code (when the user changes locale through the menu system). - // debugger; + // Uncomment the "debugger;" line to see how to set debug statements in JSNI code + // When in web mode, if your browser has a JavaScript debugger attached, it will + // launch at this point in the code (when the user changes locale through the menu system). + // debugger; - // Get the current location - var currLocation = $wnd.location.toString(); - // Get rid of any GWT History tokens that might be present - var noHistoryCurrLocArray = currLocation.split("#"); - var noHistoryCurrLoc = noHistoryCurrLocArray[0]; - var currHistory = noHistoryCurrLocArray[1]; - // Get rid of any locale string - var locArray = noHistoryCurrLoc.split("?"); - // Build the new href location and then send the browser there. - // $wnd.location.href = locArray[0]+"?locale="+newLocale+"#"+currHistory; - $wnd.location.href = locArray[0] + "?locale=" + newLocale + // Get the current location + var currLocation = $wnd.location.toString(); + // Get rid of any GWT History tokens that might be present + var noHistoryCurrLocArray = currLocation.split("#"); + var noHistoryCurrLoc = noHistoryCurrLocArray[0]; + var currHistory = noHistoryCurrLocArray[1]; + // Get rid of any locale string + var locArray = noHistoryCurrLoc.split("?"); + // Build the new href location and then send the browser there. + // $wnd.location.href = locArray[0]+"?locale="+newLocale+"#"+currHistory; + $wnd.location.href = locArray[0] + "?locale=" + newLocale - // extjs part: - // commented because the error: "Ext is not defined" - // we have to try other way - // var head = document.getElementsByTagName("head")[0]; - // var script = document.createElement('script'); - // script.id = 'localScript'; - // script.type = 'text/javascript'; - // script.src = "js/ext/locale/ext-lang-"+newLocale+".js"; - // head.appendChild(script); + // extjs part: + // commented because the error: "Ext is not defined" + // we have to try other way + // var head = document.getElementsByTagName("head")[0]; + // var script = document.createElement('script'); + // script.id = 'localScript'; + // script.type = 'text/javascript'; + // script.src = "js/ext/locale/ext-lang-"+newLocale+".js"; + // head.appendChild(script); }-*/; public String formatDateWithLocale(final Date date) { @@ -170,7 +171,9 @@ public String getSiteCommonName() { if (siteCommonName == null) { - siteCommonName = t(session.getSiteCommonName()); + // FIXME: remove this dependency with PageAssist (emite) + final String meta = PageAssist.getMeta("kune.default.site.commonname"); + siteCommonName = (meta == null ? t("this site") : t(meta)); } return siteCommonName; } Modified: trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -433,6 +433,9 @@ @Source("loading-spiner.gif") ImageResource loadingSpiner(); + @Source("lock.png") + ImageResource lock(); + @Source("arrow_out.png") ImageResource maximize(); Added: trunk/src/main/java/cc/kune/core/client/resources/lock.png =================================================================== (Binary files differ) Property changes on: trunk/src/main/java/cc/kune/core/client/resources/lock.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/UserService.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -34,7 +34,7 @@ @RemoteServiceRelativePath("UserService") public interface UserService extends RemoteService { - void changePasswd(String userHash, String oldPassword, String newPassword); + void changePasswd(String userHash, String oldPassword, String newPassword) throws DefaultException;; void createUser(UserDTO user, boolean wantPersonalHomepage) throws DefaultException; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -23,6 +23,7 @@ import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; @@ -30,7 +31,6 @@ import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.state.UserSignOutEvent; import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; -import cc.kune.core.shared.i18n.I18nTranslationService; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; @@ -42,14 +42,15 @@ private final StateManager stateManager; @Inject - public SitebarSignInAction(final StateManager stateManager, final I18nTranslationService i18n, + public SitebarSignInAction(final StateManager stateManager, final I18nUITranslationService i18n, final Session session) { super(); - final String siteCommonName = i18n.t(session.getSiteCommonName()); this.stateManager = stateManager; putValue(Action.NAME, i18n.t("Sign in to collaborate")); - putValue(Action.TOOLTIP, i18n.t( - "Please sign in or register to get full access to [%s] tools and contents", siteCommonName)); + putValue( + Action.TOOLTIP, + i18n.t("Please sign in or register to get full access to [%s] tools and contents", + i18n.getSiteCommonName())); } @Override Modified: trunk/src/main/java/cc/kune/core/client/state/Session.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/Session.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/state/Session.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -117,8 +117,6 @@ boolean getShowDeletedContent(); - String getSiteCommonName(); - String getSiteUrl(); Object[][] getTimezones(); Modified: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -215,10 +215,6 @@ return currentUserInfo == null ? false : currentUserInfo.getShowDeletedContent(); } - public String getSiteCommonName() { - return getInitData().getSiteCommonName(); - } - @Override public String getSiteUrl() { final String baseURL = GWT.getModuleBaseURL(); Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -61,10 +61,11 @@ } @Override - public HashMap<String, String> getLexicon(final String language) { - HashMap<String, String> map = langCache.get(language); + public HashMap<String, String> getLexicon(final String languageId) { + getLanguage(languageId); + HashMap<String, String> map = langCache.get(languageId); if (map == null) { - map = getLexiconFromDb(language); + map = getLexiconFromDb(languageId); } return map; } @@ -75,6 +76,7 @@ // 1) Generate English // 2) Don't permit to translate English HashMap<String, String> map = new HashMap<String, String>(); + final List<I18nTranslation> set = finder.findByLanguage(language); if (!language.equals(I18nTranslation.DEFAULT_LANG)) { map = (HashMap<String, String>) getLexicon(I18nTranslation.DEFAULT_LANG).clone(); Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -44,13 +44,13 @@ import org.waveprotocol.wave.model.waveref.WaveRef; import cc.kune.common.client.utils.TextUtils; -import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.DefaultException; import cc.kune.core.client.errors.EmailAddressInUseException; import cc.kune.core.client.errors.GroupLongNameInUseException; import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.I18nNotFoundException; import cc.kune.core.client.errors.UserRegistrationException; +import cc.kune.core.client.errors.WrongCurrentPasswordException; import cc.kune.core.server.mail.MailService; import cc.kune.core.server.mail.MailServiceDefault.FormatedString; import cc.kune.core.server.manager.GroupManager; @@ -130,7 +130,7 @@ final AccountData account = waveAccountStore.getAccount(participantId); if (TextUtils.notEmpty(oldPassword) && account != null && !account.asHuman().getPasswordDigest().verify(oldPassword.toCharArray())) { - throw new AccessViolationException("You cannot change passwd"); + throw new WrongCurrentPasswordException(); } // Wave change passwd RobotAgentUtil.changeUserPassword(newPassword, participantId, waveAccountStore); Modified: trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -90,7 +90,8 @@ @Override @Authenticated @Transactional - public void changePasswd(final String userHash, final String oldPassword, final String newPassword) { + public void changePasswd(final String userHash, final String oldPassword, final String newPassword) + throws DefaultException { final Long userId = userSessionManager.getUser().getId(); userManager.changePasswd(userId, oldPassword, newPassword); } Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -50,7 +50,6 @@ private String mp3EmbedObject; private String oggEmbedObject; private ReservedWordsRegistryDTO reservedWords; - private String siteCommonName; private String siteDomain; private String siteLogoUrl; private String siteShortName; @@ -154,10 +153,6 @@ return this.reservedWords; } - public String getSiteCommonName() { - return siteCommonName; - } - @Deprecated public String getSiteDomain() { return siteDomain; @@ -291,10 +286,6 @@ this.reservedWords = reservedWords; } - public void setSiteCommonName(final String siteCommonName) { - this.siteCommonName = siteCommonName; - } - @Deprecated public void setSiteDomain(final String siteDomain) { this.siteDomain = siteDomain; Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -63,6 +63,10 @@ import cc.kune.gspace.client.options.general.UserOptGeneralPanel; import cc.kune.gspace.client.options.general.UserOptGeneralPresenter; import cc.kune.gspace.client.options.general.UserOptGeneralView; +import cc.kune.gspace.client.options.general.UserOptPass; +import cc.kune.gspace.client.options.general.UserOptPassPanel; +import cc.kune.gspace.client.options.general.UserOptPassPresenter; +import cc.kune.gspace.client.options.general.UserOptPassView; import cc.kune.gspace.client.options.license.GroupOptDefLicense; import cc.kune.gspace.client.options.license.GroupOptDefLicensePanel; import cc.kune.gspace.client.options.license.GroupOptDefLicensePresenter; @@ -170,6 +174,8 @@ s(UserOptGeneral.class, UserOptGeneralPresenter.class); s(UserOptGeneralView.class, UserOptGeneralPanel.class); + s(UserOptPass.class, UserOptPassPresenter.class); + s(UserOptPassView.class, UserOptPassPanel.class); s(UserOptDefLicense.class, UserOptDefLicensePresenter.class); s(UserOptDefLicenseView.class, UserOptDefLicensePanel.class); s(UserOptStyle.class, UserOptStylePresenter.class); Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -34,6 +34,7 @@ import cc.kune.gspace.client.options.UserOptionsCollection; import cc.kune.gspace.client.options.general.GroupOptGeneral; import cc.kune.gspace.client.options.general.UserOptGeneral; +import cc.kune.gspace.client.options.general.UserOptPass; import cc.kune.gspace.client.options.license.GroupOptDefLicense; import cc.kune.gspace.client.options.license.UserOptDefLicense; import cc.kune.gspace.client.options.logo.GroupOptLogo; @@ -65,9 +66,10 @@ final Provider<UserOptionsCollection> uocProv, final Provider<GroupOptGeneral> gg, final Provider<GroupOptDefLicense> gdl, final Provider<GroupOptStyle> gps, final Provider<GroupOptLogo> gl, final Provider<GroupOptTools> gtc, - final Provider<UserOptGeneral> ug, final Provider<UserOptDefLicense> udl, - final Provider<UserOptStyle> ups, final Provider<UserOptLogo> ul, - final Provider<UserOptTools> utc, final Provider<SitebarSearchPresenter> siteSearch, + final Provider<UserOptGeneral> ug, final Provider<UserOptPass> up, + final Provider<UserOptDefLicense> udl, final Provider<UserOptStyle> ups, + final Provider<UserOptLogo> ul, final Provider<UserOptTools> utc, + final Provider<SitebarSearchPresenter> siteSearch, final Provider<SiteOptionsI18nTranslatorAction> transAction, final Provider<GiveUsFeedbackBtn> giveUsFeedback, final Provider<I18nToTranslateGridPanel> toTrans, @@ -94,6 +96,7 @@ goc.add(gps); goc.add(gdl); uoc.add(ug); + uoc.add(up); uoc.add(utc); uoc.add(ul); uoc.add(ups); Modified: trunk/src/main/java/cc/kune/gspace/client/options/EntityOptionsView.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/EntityOptionsView.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/options/EntityOptionsView.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -24,6 +24,6 @@ public interface EntityOptionsView extends AbstractTabbedDialogView { int HEIGHT = 270; - int WIDTH = 400; + int WIDTH = 500; } Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPanel.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPanel.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -21,9 +21,7 @@ import cc.kune.common.client.ui.IconLabel; import cc.kune.common.client.ui.MaskWidget; -import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.ui.DefaultForm; -import cc.kune.core.shared.i18n.I18nTranslationService; import cc.kune.gspace.client.options.EntityOptionsView; import com.extjs.gxt.ui.client.event.BaseEvent; @@ -32,6 +30,7 @@ import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.widget.form.Field; import com.google.gwt.event.dom.client.ChangeHandler; +import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; @@ -40,16 +39,16 @@ private final MaskWidget maskWidget; private final IconLabel tabTitle; - public EntityOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res, - final MaskWidget maskWidget) { + public EntityOptGeneralPanel(final MaskWidget maskWidget, final ImageResource img, final String title, + final String introMessage) { this.maskWidget = maskWidget; - tabTitle = new IconLabel(res.emblemSystem(), i18n.t("General")); + tabTitle = new IconLabel(img, title); super.setWidth(EntityOptionsView.WIDTH); super.setFrame(true); super.getFormPanel().setLabelWidth(100); super.addStyleName("k-overflow-y-auto"); final Label label = new Label(); - label.setText(i18n.t("Change this values:")); + label.setText(introMessage); label.addStyleName("kune-Margin-10-tb"); super.add(label); } Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -32,7 +32,7 @@ public abstract class EntityOptGeneralPresenter { - private final EntityOptions entityOptions; + protected final EntityOptions entityOptions; private final EventBus eventBus; protected final I18nTranslationService i18n; protected final Session session; Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPanel.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -37,7 +37,7 @@ @Inject public GroupOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res, final MaskWidget maskWidget, final GroupFieldFactory groupFieldFactory) { - super(i18n, res, maskWidget); + super(maskWidget, res.emblemSystem(), i18n.t("General"), i18n.t("Change this values:")); shortName = groupFieldFactory.createUserShortName(SHORT_NAME_FIELD); longName = groupFieldFactory.createUserLongName(LONG_NAME_FIELD); add(shortName); Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -40,7 +40,7 @@ public UserOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res, final MaskWidget maskWidget, final LanguageSelectorPanel langSelector, final UserFieldFactory userFieldFactory) { - super(i18n, res, maskWidget); + super(maskWidget, res.emblemSystem(), i18n.t("General"), i18n.t("Change this values:")); this.langSelector = langSelector; longName = userFieldFactory.createUserLongName(LONG_NAME_FIELD); add(longName); Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -91,8 +91,10 @@ NotifyUser.hideProgress(); stateManager.setRetrievedStateAndGo(result); sendChangeEntityEvent(); - } - }); + }; + } + + ); } } } Added: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPass.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPass.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPass.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -0,0 +1,24 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.options.general; + +public interface UserOptPass { + +} Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPass.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPanel.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPanel.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -0,0 +1,76 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.options.general; + +import cc.kune.common.client.ui.MaskWidget; +import cc.kune.core.client.auth.UserFieldFactory; +import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.shared.i18n.I18nTranslationService; + +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.google.gwt.event.dom.client.HasClickHandlers; +import com.google.gwt.user.client.ui.Button; +import com.google.inject.Inject; + +public class UserOptPassPanel extends EntityOptGeneralPanel implements UserOptPassView { + + public static final String CURRENT_PASSWD_FIELD = "k-uopp-currentPass"; + public static final String NEW_PASSWD_FIELD = "k-uopp-newPass"; + public static final String NEW_PASSWD_REPEATED_FIELD = "k-uopp-newPassRepeated"; + private final Button changeBtn; + private final TextField<String> currentPasswd; + private final TextField<String> newPasswd; + private final TextField<String> newPasswdRepeated; + + @Inject + public UserOptPassPanel(final I18nTranslationService i18n, final CoreResources res, + final MaskWidget maskWidget, final UserFieldFactory userFieldFactory) { + super(maskWidget, res.lock(), i18n.t("Security"), i18n.t("Change your password:")); + currentPasswd = userFieldFactory.createUserPasswd(CURRENT_PASSWD_FIELD, i18n.t("Current password")); + newPasswd = userFieldFactory.createUserPasswd(NEW_PASSWD_FIELD, i18n.t("New password")); + newPasswdRepeated = userFieldFactory.createUserPasswd(NEW_PASSWD_REPEATED_FIELD, + i18n.t("New password (repeat it)")); + changeBtn = new Button(i18n.t("Change it")); + add(currentPasswd); + add(newPasswd); + add(newPasswdRepeated); + add(changeBtn); + } + + @Override + public HasClickHandlers getChangeBtn() { + return changeBtn; + } + + @Override + public String getCurrentPasswd() { + return currentPasswd.getValue(); + } + + @Override + public String getNewPasswd() { + return newPasswd.getValue(); + } + + @Override + public String getNewPasswdRepeated() { + return newPasswdRepeated.getValue(); + } +} Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPanel.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPresenter.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPresenter.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -0,0 +1,107 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.options.general; + +import cc.kune.common.client.notify.NotifyUser; +import cc.kune.core.client.errors.WrongCurrentPasswordException; +import cc.kune.core.client.rpcservices.UserServiceAsync; +import cc.kune.core.client.state.Session; +import cc.kune.core.shared.i18n.I18nTranslationService; +import cc.kune.gspace.client.options.UserOptions; + +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class UserOptPassPresenter implements UserOptPass { + + private final UserOptions entityOptions; + private final I18nTranslationService i18n; + private final Session session; + private final Provider<UserServiceAsync> userService; + private UserOptPassView view; + + @Inject + public UserOptPassPresenter(final Session session, final EventBus eventBus, + final I18nTranslationService i18n, final UserOptions entityOptions, + final Provider<UserServiceAsync> userService, final UserOptPassView view) { + this.session = session; + this.i18n = i18n; + this.entityOptions = entityOptions; + this.userService = userService; + init(view); + } + + public void init(final UserOptPassView view) { + this.view = view; + entityOptions.addTab(view, view.getTabTitle()); + view.getChangeBtn().addClickHandler(new ClickHandler() { + + @Override + public void onClick(final ClickEvent event) { + updateInServer(); + } + }); + } + + protected void updateInServer() { + if (view.isValid()) { + final String currentPasswd = view.getCurrentPasswd(); + final String newPasswd = view.getNewPasswd(); + final String newPasswdRepeated = view.getNewPasswdRepeated(); + NotifyUser.showProgress(); + if (!newPasswd.equals(newPasswdRepeated)) { + NotifyUser.error(i18n.t("Passwords don't match")); + } else { + if (newPasswd.equals(currentPasswd)) { + NotifyUser.error(i18n.t("Please provide a different new password")); + } else { + view.mask(); + userService.get().changePasswd(session.getUserHash(), currentPasswd, newPasswd, + new AsyncCallback<Void>() { + + @Override + public void onFailure(final Throwable caught) { + view.unmask(); + if (caught instanceof WrongCurrentPasswordException) { + NotifyUser.error(i18n.t("The current password is incorrect")); + } else { + NotifyUser.error(i18n.t("Sorry, something was wrong and we cannot change your password")); + } + } + + @Override + public void onSuccess(final Void result) { + NotifyUser.hideProgress(); + view.unmask(); + NotifyUser.info(i18n.t("Password changed successfully")); + view.reset(); + } + + }); + } + + } + } + } +} Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassPresenter.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassView.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassView.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassView.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -0,0 +1,35 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.options.general; + +import com.google.gwt.event.dom.client.HasClickHandlers; + +public interface UserOptPassView extends EntityOptGeneralView { + + HasClickHandlers getChangeBtn(); + + String getCurrentPasswd(); + + String getNewPasswd(); + + String getNewPasswdRepeated(); + + void reset(); +} Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptPassView.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/main/resources/db/liquibase_changelog.xml =================================================================== --- trunk/src/main/resources/db/liquibase_changelog.xml 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/resources/db/liquibase_changelog.xml 2011-10-09 23:53:17 UTC (rev 1551) @@ -28,13 +28,14 @@ <sqlFile path="src/main/resources/db/init-data-countries.sql" encoding="utf8" stripComments="1" /> <rollback>DELETE FROM globalize_countries;</rollback> - </changeSet> + </changeSet> <changeSet id="3" author="vjrj"> <comment>Languages insert</comment> <sqlFile path="src/main/resources/db/init-data-languages.sql" encoding="utf8" stripComments="1" /> <rollback>DELETE FROM globalize_languages;</rollback> </changeSet> +<!-- <changeSet id="4" author="vjrj"> <comment>Languages insert</comment> <sqlFile path="src/main/resources/db/init-data-translations.sql" @@ -119,6 +120,7 @@ encoding="utf8" stripComments="1" /> <rollback>SELECT * FROM globalize_countries;</rollback> </changeSet> + --> <changeSet id="18" author="vjrj"> <comment>Initial External Media Descriptors</comment> <sqlFile path="src/main/resources/db/update-0014-extmedia.sql" @@ -137,12 +139,14 @@ encoding="utf8" stripComments="1" /> <rollback>SELECT * FROM globalize_countries;</rollback> </changeSet> +<!-- <changeSet id="21" author="vjrj"> <comment>I18n translations cleanup</comment> <sqlFile path="src/main/resources/db/update-0017-i18nclean1.sql" encoding="utf8" stripComments="1" /> <rollback>SELECT * FROM globalize_countries;</rollback> </changeSet> + --> <changeSet id="22" author="vjrj"> <comment>I18n translations cleanup</comment> <sqlFile path="src/main/resources/db/update-0017-i18nclean2.sql" Modified: trunk/src/main/resources/kune.properties =================================================================== --- trunk/src/main/resources/kune.properties 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/resources/kune.properties 2011-10-09 23:53:17 UTC (rev 1551) @@ -12,9 +12,10 @@ kune.default.site.shortName = site kune.site.domain = localhost -# In the client UI we will use this string for mention this site in messages +# In the server side we will use this string for mention this site in messages # like: "Thanks for joining this site" # Your can use another string and the message will looks like "Thanks for joining example.org" +# ws.html has a similar value for UI client kune.default.site.commonname = this site # Email Modified: trunk/src/main/webapp/ws.html =================================================================== --- trunk/src/main/webapp/ws.html 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/main/webapp/ws.html 2011-10-09 23:53:17 UTC (rev 1551) @@ -3,8 +3,14 @@ <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Kune</title> + <script type="text/javascript" language="javascript" src="ws/ws.nocache.js"></script> +<!-- +We will use this string for mention this site in messages like: "Thanks for joining this site" +Your can use another string and the message will looks like "Thanks for joining example.org" + --> +<meta name="kune.default.site.commonname" content="this site" /> <meta name="emite.httpBase" content="/http-bind/" /> <meta name="emite.host" content="localhost" /> <meta name="emite.searchHost" content="search.localhost" /> Modified: trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-10-09 11:31:10 UTC (rev 1550) +++ trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-10-09 23:53:17 UTC (rev 1551) @@ -37,6 +37,7 @@ import cc.kune.core.client.errors.GroupLongNameInUseException; import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.SessionExpiredException; +import cc.kune.core.client.errors.WrongCurrentPasswordException; import cc.kune.core.client.rpcservices.ContentService; import cc.kune.core.client.rpcservices.UserService; import cc.kune.core.server.integration.IntegrationTest; @@ -173,7 +174,7 @@ } } - @Test(expected = AccessViolationException.class) + @Test(expected = WrongCurrentPasswordException.class) public void testSiteChangeIncorrectPasswdMustFail() throws Exception { assertNull(session.getUser().getId()); doLogin(properties.getAdminShortName(), properties.getAdminPassword());
participants (1)
-
Vicente J. Ruiz Jurado