r1805 - in trunk/src: main/java/cc/kune/common/public main/java/cc/kune/core/client main/java/cc/kune/core/client/auth main/java/cc/kune/core/client/groups/newgroup main/java/cc/kune/core/client/resources main/java/cc/kune/core/client/sitebar main/java/cc/kune/core/client/sitebar/auth main/java/cc/kune/core/client/sitebar/spaces main/java/cc/kune/core/client/sn/actions/registry main/java/cc/kune/core/client/state main/java/cc/kune/core/client/state/impl main/java/cc/kune/core/public main/java
Author: vjrj_ Date: 2012-03-29 01:23:29 +0200 (Thu, 29 Mar 2012) New Revision: 1805 Added: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java trunk/src/main/java/cc/kune/hspace/client/HSpace.java Removed: trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.java trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.ui.xml trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css trunk/src/main/java/cc/kune/core/client/CoreGinModule.java trunk/src/main/java/cc/kune/core/client/CoreParts.java trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java trunk/src/main/java/cc/kune/core/client/sitebar/auth/VerifyEmailClientManager.java trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java trunk/src/main/java/cc/kune/core/client/state/HistoryTokenAuthNotNeededCallback.java trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java trunk/src/main/java/cc/kune/core/client/state/HistoryTokenMustBeAuthCallback.java trunk/src/main/java/cc/kune/core/client/state/StateManager.java trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java trunk/src/main/java/cc/kune/core/public/ws.css trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java trunk/src/main/webapp/ws.html trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java trunk/src/test/java/cc/kune/core/shared/utils/SharedFileDownloadUtilsTest.java trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java Log: Several minor fixes Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css =================================================================== --- trunk/src/main/java/cc/kune/common/public/kune-common.css 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2012-03-28 23:23:29 UTC (rev 1805) @@ -503,6 +503,14 @@ /* margin-left: 5px; */ } +img.k-iconlabel-left { + margin-top: -2px; +} + +div.k-iconlabel { + margin-top: -2px; +} + .k-menuimtem-title { color: white; font-size: 15px; Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -78,7 +78,7 @@ import cc.kune.core.client.sitebar.SitebarActions; import cc.kune.core.client.sitebar.SitebarActionsPanel; import cc.kune.core.client.sitebar.SitebarActionsPresenter; -import cc.kune.core.client.sitebar.SitebarGroupsLink; +import cc.kune.core.client.sitebar.SitebarNewGroupLink; import cc.kune.core.client.sitebar.SitebarSignInLink; import cc.kune.core.client.sitebar.SitebarSignOutLink; import cc.kune.core.client.sitebar.SitebarSignOutLink.BeforeSignOut; @@ -252,7 +252,7 @@ s(MyGroupsMenu.class); s(SiteUserOptionsPresenter.class); s(SiteUserOptions.class, SiteUserOptionsPresenter.class); - s(SitebarGroupsLink.class); + s(SitebarNewGroupLink.class); s(SitebarSignInLink.class); s(SitebarSignOutLink.class); Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -20,12 +20,14 @@ package cc.kune.core.client; import cc.kune.common.client.shortcuts.GlobalShortcuts; +import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.auth.AnonUsersManager; import cc.kune.core.client.auth.Register; import cc.kune.core.client.auth.SignIn; import cc.kune.core.client.events.AppStartEvent; import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.groups.newgroup.NewGroup; +import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.sitebar.AboutKuneDialog; import cc.kune.core.client.sitebar.SiteUserOptionsPresenter; import cc.kune.core.client.sitebar.auth.AskForPasswordResetPanel; @@ -68,7 +70,7 @@ final Provider<VerifyEmailClientManager> verifyManager, final Provider<UserOptions> userOptionsDialog, final Provider<GroupOptions> groupOptionsDialog, final Provider<PasswordResetPanel> passReset, final Provider<AskForPasswordResetPanel> askForPass, - final GlobalShortcuts shortcuts) { + final GlobalShortcuts shortcuts, final I18nTranslationService i18n) { session.onAppStart(true, new AppStartHandler() { @Override public void onAppStart(final AppStartEvent event) { @@ -105,17 +107,18 @@ register.get().doRegister(); } }); - tokenListener.put(SiteTokens.NEW_GROUP, new HistoryTokenMustBeAuthCallback() { - @Override - public void onHistoryToken(final String token) { - Scheduler.get().scheduleFinally(new ScheduledCommand() { + tokenListener.put(SiteTokens.NEW_GROUP, + new HistoryTokenMustBeAuthCallback(i18n.t(CoreMessages.REGISTER_TO_CREATE_A_GROUP)) { @Override - public void execute() { - newGroup.get().doNewGroup(); + public void onHistoryToken(final String token) { + Scheduler.get().scheduleFinally(new ScheduledCommand() { + @Override + public void execute() { + newGroup.get().doNewGroup(); + } + }); } }); - } - }); tokenListener.put(SiteTokens.SUBTITLES, new HistoryTokenAuthNotNeededCallback() { @Override public void onHistoryToken(final String token) { @@ -128,15 +131,16 @@ SpaceSelectEvent.fire(eventBus, Space.homeSpace); } }); - tokenListener.put(SiteTokens.WAVE_INBOX, new HistoryTokenMustBeAuthCallback() { + tokenListener.put(SiteTokens.WAVE_INBOX, + new HistoryTokenMustBeAuthCallback(i18n.t(CoreMessages.SIGN_IN_TO_ACCESS_INBOX)) { + @Override + public void onHistoryToken(final String token) { + SpaceSelectEvent.fire(eventBus, Space.userSpace); + } + }); + tokenListener.put(SiteTokens.PREFS, new HistoryTokenMustBeAuthCallback("") { @Override public void onHistoryToken(final String token) { - SpaceSelectEvent.fire(eventBus, Space.userSpace); - } - }); - tokenListener.put(SiteTokens.PREFS, new HistoryTokenMustBeAuthCallback() { - @Override - public void onHistoryToken(final String token) { Scheduler.get().scheduleFinally(new ScheduledCommand() { @Override public void execute() { @@ -146,7 +150,7 @@ }); } }); - tokenListener.put(SiteTokens.GROUP_PREFS, new HistoryTokenMustBeAuthCallback() { + tokenListener.put(SiteTokens.GROUP_PREFS, new HistoryTokenMustBeAuthCallback("") { @Override public void onHistoryToken(final String token) { Scheduler.get().scheduleFinally(new ScheduledCommand() { Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -23,6 +23,7 @@ import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.i18n.I18nUITranslationService.I18nLanguageChangeNeeded; import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.I18nLanguageDTO; @@ -65,12 +66,12 @@ public void hide() { getView().hide(); + getView().reset(); + getView().hideMessages(); } public void onCancel() { - getView().reset(); - getView().hideMessages(); - getView().hide(); + hide(); } public void onClose() { @@ -78,7 +79,9 @@ getView().hideMessages(); if (!session.isLogged()) { if (gotoTokenOnCancel != null) { - stateManager.gotoHistoryToken(gotoTokenOnCancel); + if (!gotoTokenOnCancel.equals(SiteTokens.NEW_GROUP)) { + stateManager.gotoHistoryToken(gotoTokenOnCancel); + } gotoTokenOnCancel = null; } else { stateManager.redirectOrRestorePreviousToken(false); Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -28,26 +28,26 @@ public interface SignInAbstractView extends View { - HasCloseHandlers<PopupPanel> getClose(); + HasCloseHandlers<PopupPanel> getClose(); - HasClickHandlers getFirstBtn(); + HasClickHandlers getFirstBtn(); - HasClickHandlers getSecondBtn(); + HasClickHandlers getSecondBtn(); - void hide(); + void hide(); - void hideMessages(); + void hideMessages(); - void mask(final String message); + void mask(final String message); - void maskProcessing(); + void maskProcessing(); - void reset(); + void reset(); - void setErrorMessage(final String message, final NotifyLevel level); + void setErrorMessage(final String message, final NotifyLevel level); - void show(); + void show(); - void unMask(); + void unMask(); } Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -68,6 +68,10 @@ } super.onRender(target, index); } + + @Override + protected void setAriaState(final String stateName, final String stateValue) { + } }; loginNickOrEmailField.setFieldLabel(i18n.t("Username")); loginNickOrEmailField.setName(USER_FIELD_ID); @@ -90,6 +94,10 @@ } super.onRender(target, index); } + + @Override + protected void setAriaState(final String stateName, final String stateValue) { + } }; loginPassField.setFieldLabel(i18n.t("Password")); loginPassField.setName(PASSWORD_FIELD_ID); Deleted: trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -1,51 +0,0 @@ -/* - * - * 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.auth; - -import cc.kune.common.shared.i18n.I18nTranslationService; - -import com.extjs.gxt.ui.client.widget.form.FormPanel; -import com.extjs.gxt.ui.client.widget.form.TextField; -import com.google.gwt.core.client.GWT; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; - -public class SignInNewForm extends Composite { - - interface SignInNewFormUiBinder extends UiBinder<Widget, SignInNewForm> { - } - private static SignInNewFormUiBinder uiBinder = GWT.create(SignInNewFormUiBinder.class); - - @UiField - FormPanel form; - @UiField - TextField<String> nick; - @UiField - TextField<String> password; - - public SignInNewForm(final I18nTranslationService i18n) { - initWidget(uiBinder.createAndBindUi(this)); - nick.setFieldLabel(i18n.t("Your nickname")); - password.setFieldLabel(i18n.t("Password")); - } - -} Deleted: trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.ui.xml =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.ui.xml 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInNewForm.ui.xml 2012-03-28 23:23:29 UTC (rev 1805) @@ -1,17 +0,0 @@ -<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> -<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" - xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:gxt="urn:import:com.extjs.gxt.ui.client.widget" - xmlns:form="urn:import:com.extjs.gxt.ui.client.widget.form"> - <ui:style> - - </ui:style> - - <form:FormPanel ui:field="form" heading="Simple Form" frame="true" width="370" - padding="10" borders="false" labelWidth="75" headerVisible="false"> - <form:TextField ui:field="nick" allowBlank="false" validationDelay="1000" - width="100" tabIndex="100" /> - <form:TextField ui:field="password" allowBlank="false" validationDelay="1000" - width="150" tabIndex="101" password="true" /> - </form:FormPanel> - -</ui:UiBinder> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -210,7 +210,7 @@ } @Override - public void focusOnShorName() { + public void focusOnShortName() { shortNameField.focus(); } Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -31,7 +31,9 @@ import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.GroupServiceAsync; import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; +import cc.kune.core.client.state.TokenUtils; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.GroupType; import cc.kune.core.shared.dto.LicenseDTO; @@ -95,11 +97,13 @@ if (session.isLogged()) { NotifyUser.showProgress(); getView().show(); - getView().focusOnShorName(); + getView().focusOnShortName(); NotifyUser.hideProgress(); } else { + // signIn.get().showSignInDialog(); signIn.get().setErrorMessage(i18n.t(CoreMessages.REGISTER_TO_CREATE_A_GROUP), NotifyLevel.info); - signIn.get().showSignInDialog(); + stateManager.gotoHistoryToken(TokenUtils.addRedirect(SiteTokens.SIGN_IN, + session.getCurrentStateToken().toString())); } } }); @@ -205,7 +209,6 @@ public void execute() { groupOptions.showTooltip(); new Timer() { - @Override public void run() { ShowHelpContainerEvent.fire(getEventBus(), state.getStateToken().getTool()); Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -30,7 +30,7 @@ void clearData(); - void focusOnShorName(); + void focusOnShortName(); HasCloseHandlers<PopupPanel> getClose(); Modified: trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -35,11 +35,12 @@ public final static String NAME_IN_ALREADY_IN_USE = "This name is already in use. Please try with a different name"; public final static String NAME_IN_USE = "This name in already in use. Please try with a different name"; public final static String NAME_RESTRICTED = "This user name can not be used. Please try with a different name"; + public final static String NEW_GROUP_TITLE = "Create New Group"; public final static String PASSWD_MUST_BE_BETWEEN_6_AND_40 = "The password must be between 6 and 40 characters"; - public final static String REGISTER_A_NEW_GROUP_TITLE = "Register a new Group"; public final static String REGISTER_TITLE = "Register"; public final static String REGISTER_TO_CREATE_A_GROUP = "Please, sign in or register to create a group"; public final static String SIGN_IN_TITLE = "Sign in"; + public final static String SIGN_IN_TO_ACCESS_INBOX = "Sign in or create an account to access to your inbox"; public final static String USER_DOESN_T_HAVE_A_HOMEPAGE = "This user does not have a homepage"; public final static String USER_OPTIONS_DIALOG_TITLE = "User options"; public final static String YOUR_HOMEPAGE = "Your " + "homepage"; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -32,7 +32,7 @@ import cc.kune.core.client.i18n.I18n; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.services.ClientFileDownloadUtils; -import cc.kune.core.client.sitebar.SitebarGroupsLink.SitebarNewGroupAction; +import cc.kune.core.client.sitebar.SitebarNewGroupLink.SitebarNewGroupAction; import cc.kune.core.client.sn.actions.GotoGroupAction; import cc.kune.core.client.state.Session; import cc.kune.core.shared.dto.GroupDTO; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -71,7 +71,7 @@ private final CommonResources commonRes; private final I18nTranslationService i18n; private final Provider<MyGroupsMenu> myGroupsMenu; - private final Provider<SitebarGroupsLink> newGroupLink; + private final Provider<SitebarNewGroupLink> newGroupLink; private final CoreResources res; private final Provider<SitebarSignInLink> signInLink; private final Provider<SitebarSignOutLink> signOutLink; @@ -79,7 +79,7 @@ @Inject public SitebarActionsPresenter(final EventBus eventBus, final SitebarActionsView view, final SitebarActionsProxy proxy, final I18nTranslationService i18n, - final Provider<SitebarGroupsLink> newGroupLink, final Provider<SitebarSignOutLink> signOutLink, + final Provider<SitebarNewGroupLink> newGroupLink, final Provider<SitebarSignOutLink> signOutLink, final Provider<SitebarSignInLink> signInLink, final CoreResources res, final CommonResources commonRes, final Provider<MyGroupsMenu> myGroupsMenu) { super(eventBus, view, proxy); Deleted: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -1,93 +0,0 @@ -/* - * - * 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.sitebar; - -import cc.kune.common.client.actions.AbstractExtendedAction; -import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; -import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.events.MyGroupsChangedEvent; -import cc.kune.core.client.events.UserSignInOrSignOutEvent; -import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; -import cc.kune.core.client.resources.CoreResources; -import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.SiteTokens; -import cc.kune.core.client.state.StateManager; - -import com.google.gwt.event.shared.EventBus; -import com.google.inject.Inject; - -public class SitebarGroupsLink extends ButtonDescriptor { - public static class SitebarNewGroupAction extends AbstractExtendedAction { - - private final StateManager stateManager; - - @Inject - public SitebarNewGroupAction(final StateManager stateManager, final I18nTranslationService i18n) { - super(); - this.stateManager = stateManager; - withText(i18n.t("Create New Group")); - withToolTip(i18n.t("Create a new group for your initiative or organization " - + "(NGO, collective, academic group...)")); - } - - @Override - public void actionPerformed(final ActionEvent event) { - stateManager.gotoHistoryToken(SiteTokens.NEW_GROUP); - } - } - - public static final String NEW_GROUP_BTN_ID = "k-site-newgroup-btn"; - private final Session session; - - @Inject - public SitebarGroupsLink(final SitebarNewGroupAction newGroupAction, - final SitebarActions sitebarActions, final I18nTranslationService i18n, final EventBus eventBus, - final CoreResources coreResources, final Session session) { - super(newGroupAction); - this.session = session; - withId(NEW_GROUP_BTN_ID).withStyles("k-no-backimage, k-btn-sitebar, k-fl, k-noborder, k-nobackcolor"); - withParent(sitebarActions.getRightToolbar()); - eventBus.addHandler(MyGroupsChangedEvent.getType(), - new MyGroupsChangedEvent.MyGroupsChangedHandler() { - @Override - public void onMyGroupsChanged(final MyGroupsChangedEvent event) { - recalculate(session.isNotLogged()); - } - }); - session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { - @Override - public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { - final boolean notLogged = !event.isLogged(); - recalculate(notLogged); - } - }); - - } - - private void recalculate(final boolean notLogged) { - if (notLogged) { - setVisible(true); - } else { - setVisible(!session.userIsJoiningGroups()); - } - } - -} Copied: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java (from rev 1797, trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -0,0 +1,94 @@ +/* + * + * 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.sitebar; + +import cc.kune.common.client.actions.AbstractExtendedAction; +import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.MyGroupsChangedEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; +import cc.kune.core.client.resources.CoreMessages; +import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.StateManager; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class SitebarNewGroupLink extends ButtonDescriptor { + public static class SitebarNewGroupAction extends AbstractExtendedAction { + + private final StateManager stateManager; + + @Inject + public SitebarNewGroupAction(final StateManager stateManager, final I18nTranslationService i18n) { + super(); + this.stateManager = stateManager; + withText(i18n.t(CoreMessages.NEW_GROUP_TITLE)); + withToolTip(i18n.t("Create a new group for your initiative or organization " + + "(NGO, collective, academic group...)")); + } + + @Override + public void actionPerformed(final ActionEvent event) { + stateManager.gotoHistoryToken(SiteTokens.NEW_GROUP); + } + } + + public static final String NEW_GROUP_BTN_ID = "k-site-newgroup-btn"; + private final Session session; + + @Inject + public SitebarNewGroupLink(final SitebarNewGroupAction newGroupAction, + final SitebarActions sitebarActions, final I18nTranslationService i18n, final EventBus eventBus, + final CoreResources coreResources, final Session session) { + super(newGroupAction); + this.session = session; + withId(NEW_GROUP_BTN_ID).withStyles("k-no-backimage, k-btn-sitebar, k-fl, k-noborder, k-nobackcolor"); + withParent(sitebarActions.getRightToolbar()); + eventBus.addHandler(MyGroupsChangedEvent.getType(), + new MyGroupsChangedEvent.MyGroupsChangedHandler() { + @Override + public void onMyGroupsChanged(final MyGroupsChangedEvent event) { + recalculate(session.isNotLogged()); + } + }); + session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { + @Override + public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { + final boolean notLogged = !event.isLogged(); + recalculate(notLogged); + } + }); + + } + + private void recalculate(final boolean notLogged) { + if (notLogged) { + setVisible(true); + } else { + setVisible(!session.userIsJoiningGroups()); + } + } + +} Modified: trunk/src/main/java/cc/kune/core/client/sitebar/auth/VerifyEmailClientManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/auth/VerifyEmailClientManager.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/sitebar/auth/VerifyEmailClientManager.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -42,33 +42,35 @@ VerifyEmailClientManager(final Session session, final SiteTokenListeners tokens, final Provider<UserOptGeneral> optGeneral, final I18nTranslationService i18n, final Provider<UserServiceAsync> userService) { - tokens.put(SiteTokens.VERIFY_EMAIL, new HistoryTokenMustBeAuthCallback() { - @Override - public void onHistoryToken(final String token) { - userService.get().verifyPasswordHash(session.getUserHash(), token, new AsyncCallback<Void>() { + tokens.put(SiteTokens.VERIFY_EMAIL, + new HistoryTokenMustBeAuthCallback(i18n.t("Sign in to verify your email")) { @Override - public void onFailure(final Throwable caught) { - if (caught instanceof EmailHashExpiredException) { - NotifyUser.error(i18n.t("Email confirmation code expired"), true); - } else if (caught instanceof EmailHashInvalidException) { - NotifyUser.error(i18n.t("Invalid confirmation code"), true); - } else { - NotifyUser.error(i18n.t("Other error trying to verify your password"), true); - } - } + public void onHistoryToken(final String token) { + userService.get().verifyPasswordHash(session.getUserHash(), token, + new AsyncCallback<Void>() { + @Override + public void onFailure(final Throwable caught) { + if (caught instanceof EmailHashExpiredException) { + NotifyUser.error(i18n.t("Email confirmation code expired"), true); + } else if (caught instanceof EmailHashInvalidException) { + NotifyUser.error(i18n.t("Invalid confirmation code"), true); + } else { + NotifyUser.error(i18n.t("Other error trying to verify your password"), true); + } + } - @Override - public void onSuccess(final Void result) { - NotifyUser.info("Great. Your email is now verified"); - session.getCurrentUser().setEmailVerified(true); - // This get NPE - // if (optGeneral.get().isVisible()) { - // optGeneral.get().update(); - // } + @Override + public void onSuccess(final Void result) { + NotifyUser.info("Great. Your email is now verified"); + session.getCurrentUser().setEmailVerified(true); + // This get NPE + // if (optGeneral.get().isVisible()) { + // optGeneral.get().update(); + // } + } + }); } }); - } - }); } } Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -31,6 +31,7 @@ import cc.kune.core.client.events.AppStartEvent; import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; @@ -332,8 +333,7 @@ currentSpace = Space.userSpace; getView().setWindowTitle(i18n.t("Inbox")); } else { - signIn.get().setErrorMessage(i18n.t("Sign in or create an account to access to your inbox"), - NotifyLevel.info); + signIn.get().setErrorMessage(i18n.t(CoreMessages.SIGN_IN_TO_ACCESS_INBOX), NotifyLevel.info); stateManager.gotoHistoryToken(TokenUtils.addRedirect(SiteTokens.SIGN_IN, inboxToken)); getView().setUserBtnDown(false); } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -62,7 +62,7 @@ @SuppressWarnings("serial") public class GroupSNConfActions extends AbstractSNActionsRegistry { - public static final String OPTIONS_STYLES = "k-sn-options-menu, k-noborder, k-nobackcolor, k-no-backimage, k-btn-min"; + public static final String OPTIONS_STYLES = "k-sn-options-menu, k-noborder, k-optionsborder, k-nobackcolor, k-no-backimage, k-btn-min"; @Inject public GroupSNConfActions(final SessionConstants session, final StateManager stateManager, Modified: trunk/src/main/java/cc/kune/core/client/state/HistoryTokenAuthNotNeededCallback.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/HistoryTokenAuthNotNeededCallback.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/state/HistoryTokenAuthNotNeededCallback.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -25,13 +25,19 @@ */ public abstract class HistoryTokenAuthNotNeededCallback implements HistoryTokenCallback { - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see cc.kune.core.client.state.HistoryTokenCallback#authMandatory() */ @Override public boolean authMandatory() { return false; + } + @Override + public String getInfoMessage() { + return ""; } } Modified: trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -33,6 +33,14 @@ boolean authMandatory(); /** + * Info message used to show some message to the user (like + * "sign-in to create a new group"); + * + * @return the string + */ + String getInfoMessage(); + + /** * On history token do some action (Example #inbox, #newgroup) * * @param token Modified: trunk/src/main/java/cc/kune/core/client/state/HistoryTokenMustBeAuthCallback.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/HistoryTokenMustBeAuthCallback.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/state/HistoryTokenMustBeAuthCallback.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -25,6 +25,12 @@ */ public abstract class HistoryTokenMustBeAuthCallback implements HistoryTokenCallback { + private final String infoMessage; + + public HistoryTokenMustBeAuthCallback(final String signInMessage) { + this.infoMessage = signInMessage; + } + /* * (non-Javadoc) * @@ -35,4 +41,9 @@ return true; } + @Override + public String getInfoMessage() { + return infoMessage; + } + } Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -97,7 +97,7 @@ void resumeTokenChange(); - void setHistoryStateToken(StateToken newToken); + void setHistoryStateToken(String token); void setRetrievedState(StateAbstractDTO state); Modified: trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -28,8 +28,11 @@ import cc.kune.common.client.actions.BeforeActionCollection; import cc.kune.common.client.actions.BeforeActionListener; import cc.kune.common.client.log.Log; +import cc.kune.common.client.notify.NotifyLevel; import cc.kune.common.client.notify.ProgressHideEvent; import cc.kune.common.shared.utils.Pair; +import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.client.auth.SignIn; import cc.kune.core.client.events.AppStartEvent; import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.events.GoHomeEvent; @@ -64,6 +67,7 @@ import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; +import com.google.inject.Provider; public class StateManagerDefault implements StateManager, ValueChangeHandler<String> { public interface OnFinishGetContent { @@ -74,25 +78,29 @@ private final EventBus eventBus; private final HistoryWrapper history; private StateToken previousGroupToken; + private String previousHash; /** * When a historyChanged is interrupted (for instance because you are editing * something), the new history token is stored here */ private String resumedHistoryToken; private final Session session; + private final Provider<SignIn> signIn; private final SiteTokenListeners siteTokens; private final TokenMatcher tokenMatcher; @Inject public StateManagerDefault(final ContentCache contentProvider, final Session session, final HistoryWrapper history, final TokenMatcher tokenMatcher, final EventBus eventBus, - final SiteTokenListeners siteTokens) { + final SiteTokenListeners siteTokens, final Provider<SignIn> signIn) { this.tokenMatcher = tokenMatcher; this.eventBus = eventBus; this.contentCache = contentProvider; this.session = session; this.history = history; + this.signIn = signIn; this.previousGroupToken = null; + this.previousHash = null; this.resumedHistoryToken = null; tokenMatcher.init(GwtWaverefEncoder.INSTANCE); this.siteTokens = siteTokens; @@ -177,6 +185,10 @@ Log.debug("login mandatory for " + currentToken); // Ok, we have to redirect because this token (for instance // #translate) needs the user authenticated + final String infoMessage = tokenListener.getInfoMessage(); + if (TextUtils.notEmpty(infoMessage)) { + signIn.get().setErrorMessage(infoMessage, NotifyLevel.info); + } redirectButSignInBefore(currentToken); } else { // The auth is not mandatory, go ahead with the token action @@ -213,6 +225,7 @@ SpaceConfEvent.fire(eventBus, Space.groupSpace, currentToken); SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(currentToken)); if (setBrowserHistory) { + previousHash = history.getToken(); history.newItem(currentToken, false); SpaceSelectEvent.fire(eventBus, Space.groupSpace); } @@ -245,18 +258,19 @@ @Override public void gotoHistoryToken(final String token) { Log.debug("StateManager: history goto-string-token: " + token); + previousHash = history.getToken(); history.newItem(token); } @Override public void gotoHistoryTokenButRedirectToCurrent(final String token) { gotoHistoryToken(TokenUtils.addRedirect(token, history.getToken())); - } @Override public void gotoStateToken(final StateToken newToken) { Log.debug("StateManager: history goto-token: " + newToken + ", previous: " + previousGroupToken); + previousHash = history.getToken(); history.newItem(newToken.getEncoded()); } @@ -413,7 +427,7 @@ // signin(inbox) && cancel restorePreviousToken(fireChange); } else { - history.newItem(previousToken); // FIXMEKK + history.newItem(previousHash); } } else { // No redirect then restore previous token @@ -469,11 +483,11 @@ @Override public void restorePreviousToken(final boolean fireChange) { - if (previousGroupToken != null) { + if (previousHash != null) { if (fireChange) { - gotoStateToken(previousGroupToken); + gotoHistoryToken(previousHash); } else { - setHistoryStateToken(previousGroupToken); + setHistoryStateToken(previousHash); } } } @@ -489,9 +503,10 @@ } @Override - public void setHistoryStateToken(final StateToken newToken) { + public void setHistoryStateToken(final String newToken) { Log.debug("StateManager: history goto-token: " + newToken + ", previous: " + previousGroupToken); - history.newItem(newToken.getEncoded(), false); + previousHash = history.getToken(); + history.newItem(newToken, false); } @Override @@ -506,6 +521,7 @@ if (history.getToken().equals(token)) { setState(newState); } + previousHash = history.getToken(); history.newItem(token); } Modified: trunk/src/main/java/cc/kune/core/public/ws.css =================================================================== --- trunk/src/main/java/cc/kune/core/public/ws.css 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/public/ws.css 2012-03-28 23:23:29 UTC (rev 1805) @@ -375,6 +375,14 @@ height: 17px !important; } +div div.siteBar table.k-sitebar img.k-iconlabel-left { + margin: 0px !important; +} + +div div.siteBar table.k-sitebar div.k-iconlabel-left { + margin: 0px !important; +} + .k-sitebar-wave-status { font: 13px 'Ubuntu', arial; /* font-weight: bold; */ @@ -862,7 +870,6 @@ border: 2px solid #CCCCCC; cursor: pointer; margin: 0; - padding: 3px 0; text-decoration: none; background-color: #F2F2F2; color: #A05A2C; @@ -875,9 +882,14 @@ width: auto !IMPORTANT; width: 50px; min-width: 40px; - height: 28px; + height: 26px; } +button.k-button +{ + padding: 0 2px; +} + .k-sn-mainpanel .x-btn button:hover,.k-sn-mainpanel button:hover,button.k-button:hover,button.gwt-Button:hover { border: 2px orange solid; @@ -956,6 +968,13 @@ opacity: 0.60 !important; } +button.k-optionsborder img.k-iconlabel-left { + border: 2px solid #CCCCCC; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + /* end buttons */ .k-sn-collabslabel { @@ -1568,3 +1587,5 @@ top: 0 !important; width: auto !important; } + + Modified: trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -161,7 +161,7 @@ final GroupDTO groupDTO) throws DefaultException { final Group group = groupManager.findByShortName(token.getGroup()); final Long id = group.getId(); - if (!id.equals(groupDTO.getId())) { + if (!id.equals(groupDTO.getId()) || group.isPersonal()) { throw new AccessViolationException(); } final Group updatedGroup = groupManager.update(id, groupDTO); Modified: trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/core/shared/utils/SharedFileDownloadUtils.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -34,7 +34,12 @@ } public SharedFileDownloadUtils(final String prefix) { - this.prefix = prefix; + if (prefix.endsWith("/")) { + final int lastSlash = prefix.lastIndexOf("/"); + this.prefix = prefix.substring(0, lastSlash == -1 ? prefix.length() : lastSlash); + } else { + this.prefix = prefix; + } } public String getGroupLogo(final GroupDTO group) { Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -103,7 +103,7 @@ writeToBuddie.get(); } }); - tokenListener.put(SiteTokens.TRANSLATE, new HistoryTokenMustBeAuthCallback() { + tokenListener.put(SiteTokens.TRANSLATE, new HistoryTokenMustBeAuthCallback("") { @Override public void onHistoryToken(final String token) { if (session.isLogged() && session.getInitData().isTranslatorEnabled()) { Modified: trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -34,7 +34,7 @@ public ContentViewerOptionsMenu(final CoreResources res) { super(); this.withIcon(res.arrowdownsitebar()).withStyles( - "k-def-docbtn, k-fr, k-noborder, k-no-backimage, k-nobackcolor").withId(ID); + "k-def-docbtn, k-fr, k-noborder, k-optionsborder, k-no-backimage, k-nobackcolor").withId(ID); } Modified: trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -72,6 +72,15 @@ this.img = img; } + private void checkState(final StateAbstractDTO state) { + if (!state.getGroup().isPersonal() && state.getGroupRights().isAdministrable()) { + prefsItem.setVisible(true); + } else { + getView().hide(); + prefsItem.setVisible(false); + } + } + private void createActions() { final AbstractExtendedAction groupPrefsAction = new AbstractExtendedAction() { @Override @@ -105,12 +114,7 @@ @Override public void onStateChanged(final StateChangedEvent event) { final StateAbstractDTO state = event.getState(); - if (!state.getGroup().isPersonal() && state.getGroupRights().isAdministrable()) { - prefsItem.setVisible(true); - } else { - getView().hide(); - prefsItem.setVisible(false); - } + checkState(state); } }); session.onUserSignOut(false, new UserSignOutHandler() { @@ -126,6 +130,7 @@ public void show(final String token) { stateManager.gotoHistoryToken(token); super.show(); + checkState(session.getCurrentState()); } @Override Added: trunk/src/main/java/cc/kune/hspace/client/HSpace.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpace.java (rev 0) +++ trunk/src/main/java/cc/kune/hspace/client/HSpace.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -0,0 +1,27 @@ +/* + * + * Copyright (C) 2007-2012 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.hspace.client; + +import cc.kune.common.client.actions.ui.IsActionExtensible; + +public interface HSpace { + IsActionExtensible getToolbar(); +} Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -23,6 +23,8 @@ import org.waveprotocol.wave.client.common.util.DateUtils; +import cc.kune.common.client.actions.ui.ActionSimplePanel; +import cc.kune.common.client.actions.ui.IsActionExtensible; import cc.kune.common.client.ui.DottedTabPanel; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.state.SiteTokens; @@ -52,10 +54,12 @@ interface HSpacePanelUiBinder extends UiBinder<Widget, HSpacePanel> { } + public static final String K_HOME_GLOBAL_STATS = "k-home-global-stats"; - public static final String K_HOME_GROUP_STATS = "k-home-group-stats"; + public static final String K_HOME_TOOLBAR = "k-home-toolbar"; + private static HSpacePanelUiBinder uiBinder = GWT.create(HSpacePanelUiBinder.class); private final SharedFileDownloadUtils downUtils; @@ -73,6 +77,8 @@ @UiField public InlineLabel globalStatsTotalUsersTitle; private final RootPanel groupStatsParent; + + private final ActionSimplePanel homeToolbar; @UiField public FlowPanel lastActivityInYourGroup; @UiField @@ -89,6 +95,7 @@ public FlowPanel lastPublishedContents; @UiField public Label lastPublishedContentsTitle; + @UiField FlowPanel lastPublishedPanel; @@ -98,14 +105,15 @@ @UiField public Hyperlink unreadInYourInbox; - private final Widget widget; @Inject public HSpacePanel(final I18nTranslationService i18n, final GSpaceArmor armor, - final Provider<GroupContentHomeLink> linkProv, final SharedFileDownloadUtils downUtils) { + final Provider<GroupContentHomeLink> linkProv, final SharedFileDownloadUtils downUtils, + final ActionSimplePanel homeToolbar) { this.linkProv = linkProv; this.downUtils = downUtils; + this.homeToolbar = homeToolbar; widget = uiBinder.createAndBindUi(this); globalStatsTitle.setText(i18n.t("Stats")); globalStatsTotalGroupsTitle.setText(i18n.t("Hosted groups:")); @@ -120,6 +128,10 @@ unreadInYourInbox.setTargetHistoryToken(SiteTokens.WAVE_INBOX); globalStatsParent = RootPanel.get(K_HOME_GLOBAL_STATS); groupStatsParent = RootPanel.get(K_HOME_GROUP_STATS); + final RootPanel homeToolbarParent = RootPanel.get(K_HOME_TOOLBAR); + if (homeToolbarParent != null) { + homeToolbarParent.add(homeToolbar); + } if (globalStatsParent != null) { globalStatsParent.add(globalStats); } @@ -150,6 +162,11 @@ } @Override + public IsActionExtensible getToolbar() { + return homeToolbar; + } + + @Override public HasText getUnreadInYourInbox() { return unreadInYourInbox; } Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -21,12 +21,20 @@ import java.util.List; +import cc.kune.common.client.actions.AbstractExtendedAction; +import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.actions.ui.IsActionExtensible; +import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.events.InboxUnreadUpdatedEvent; import cc.kune.core.client.events.UserSignInOrSignOutEvent; import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; +import cc.kune.core.client.i18n.I18n; +import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.HomeStatsDTO; @@ -41,17 +49,21 @@ import com.gwtplatform.mvp.client.proxy.Proxy; import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent; -public class HSpacePresenter extends Presenter<HSpacePresenter.HSpaceView, HSpacePresenter.HSpaceProxy> { +public class HSpacePresenter extends Presenter<HSpacePresenter.HSpaceView, HSpacePresenter.HSpaceProxy> + implements HSpace { @ProxyCodeSplit public interface HSpaceProxy extends Proxy<HSpacePresenter> { } + public interface HSpaceView extends View { HasText getGlobalStatsTotalGroupsCount(); HasText getGlobalStatsTotalUsersCount(); + IsActionExtensible getToolbar(); + HasText getUnreadInYourInbox(); void setInboxUnreadVisible(boolean visible); @@ -67,11 +79,18 @@ void setUserGroupsActivityVisible(boolean visible); } + private final Session session; + private final StateManager stateManager; + private final Provider<ClientStatsServiceAsync> statsService; + @Inject public HSpacePresenter(final Session session, final EventBus eventBus, final HSpaceView view, final HSpaceProxy proxy, final Provider<ClientStatsServiceAsync> statsService, - final I18nTranslationService i18n) { + final StateManager stateManager, final I18nTranslationService i18n) { super(eventBus, view, proxy); + this.session = session; + this.statsService = statsService; + this.stateManager = stateManager; eventBus.addHandler(InboxUnreadUpdatedEvent.getType(), new InboxUnreadUpdatedEvent.InboxUnreadUpdatedHandler() { @Override @@ -87,6 +106,33 @@ } } }); + } + + @Override + public IsActionExtensible getToolbar() { + return getView().getToolbar(); + } + + @Override + protected void onBind() { + super.onBind(); + + final ButtonDescriptor signInHomeBtn = new ButtonDescriptor(new AbstractExtendedAction() { + @Override + public void actionPerformed(final ActionEvent event) { + stateManager.gotoHistoryTokenButRedirectToCurrent(SiteTokens.SIGN_IN); + } + }); + signInHomeBtn.withText(I18n.t(CoreMessages.SIGN_IN_TITLE)).withStyles("k-home-toolbar-btn, k-fl"); + final ButtonDescriptor newGroupHomeBtn = new ButtonDescriptor(new AbstractExtendedAction() { + @Override + public void actionPerformed(final ActionEvent event) { + stateManager.gotoHistoryToken(SiteTokens.NEW_GROUP); + } + }); + newGroupHomeBtn.withText(I18n.t(CoreMessages.NEW_GROUP_TITLE)).withStyles("k-home-toolbar-btn, k-fr"); + getView().getToolbar().add(signInHomeBtn); + getView().getToolbar().add(newGroupHomeBtn); final AsyncCallbackSimple<HomeStatsDTO> callback = new AsyncCallbackSimple<HomeStatsDTO>() { @Override public void onSuccess(final HomeStatsDTO result) { @@ -99,7 +145,6 @@ final boolean logged = session.isLogged(); final boolean myGroupsHasActivity = logged && lastContentsOfMyGroups != null && lastContentsOfMyGroups.size() > 0; - // NotifyUser.info("" + lastContentsOfMyGroups.size(), true); if (myGroupsHasActivity) { getView().setLastContentsOfMyGroup(lastContentsOfMyGroups); } @@ -111,6 +156,7 @@ @Override public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { final boolean logged = event.isLogged(); + signInHomeBtn.setVisible(!logged); if (logged) { statsService.get().getHomeStats(session.getUserHash(), callback); } else { Modified: trunk/src/main/webapp/ws.html =================================================================== --- trunk/src/main/webapp/ws.html 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/main/webapp/ws.html 2012-03-28 23:23:29 UTC (rev 1805) @@ -131,12 +131,10 @@ min-width: 320px; } -#k-home-ini { /* clear: both; */ - font-size: 20px; +#k-home-ini { + font-size: 17px; color: #69312f; text-align: justify; - /* padding: 27px 0; */ - /* line-height: 1.3em; */ } #k-home-ini a { @@ -191,7 +189,7 @@ line-height: 45px; } -#k-home-body { /* display: table-row;*/ +#k-home-body { clear: both; display: block; } @@ -211,16 +209,40 @@ } #k-home-summary-right { - padding-top: 42px; - vertical-align: bottom; + padding-top: 45px; + vertical-align: top; } -#k-home-right { /* white-space: nowrap; */ +#k-home-right { vertical-align: top; padding-top: 20px; - /* float: right; */ } +#k-home-toolbar { + width: 100%; + padding-top: 10px; +} + +div#k-home-toolbar table { + width: 100%; +} + +.k-home-toolbar-btn { + font-size: 18px !important; + min-height: 40px; + height: auto !important; + max-width: 150px; + min-height: 45px; +} + +div#k-home-toolbar table tbody tr td button.gwt-Button div.k-iconlabel { + white-space: normal !important; +} + +div#k-home-toolbar table tbody tr td button.gwt-Button { + padding: 0px !important; +} + #k-home-group-stats { color: #c87137; } @@ -234,7 +256,6 @@ font-size: 18px; font-weight: bold; padding-top: 10px; - /* clear: both; */ } .k-home-normal-text { @@ -367,11 +388,15 @@ share, collaborate with others and create your web spaces easily</strong>. <a href="#signin">Join!</a> </div> - <!-- div home-ini --> - <!-- k-home-summary-right --> + <!-- div k-home-ini --> + <div id="k-home-toolbar"> + <!-- This id is optional for kune (you can create a different .html but preserve this id if you want the home signin/newgroup home buttons) --> + </div> + <!-- div k-home-toolbar --> </div> - <!-- div home-header --> + <!-- k-home-summary-right --> </div> + <!-- div home-intro --> <div id="k-home-body"> <div id="k-home-left"> <div id="k-home-group-stats" style="display: none;"> @@ -382,7 +407,7 @@ <!-- div k-home-left --> <div id="k-home-right"> <div id="k-home-global-stats" style="display: none;"> - <!-- This id is optinal for kune (you can create a different .html but preserve this id if you want this stats) --> + <!-- This id is optional for kune (you can create a different .html but preserve this id if you want this stats) --> </div> </div> <!-- div k-home-right --> Modified: trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -108,7 +108,7 @@ }).when(session).onAppStart(anyBoolean(), (AppStartHandler) Mockito.anyObject()); state = Mockito.mock(StateAbstractDTO.class); stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus, - siteTokens); + siteTokens, null); stateChangeHandler = Mockito.mock(StateChangedHandler.class); groupChangeHandler = Mockito.mock(GroupChangedHandler.class); toolChangeHandler = Mockito.mock(ToolChangedHandler.class); Modified: trunk/src/test/java/cc/kune/core/shared/utils/SharedFileDownloadUtilsTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/shared/utils/SharedFileDownloadUtilsTest.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/test/java/cc/kune/core/shared/utils/SharedFileDownloadUtilsTest.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -25,41 +25,60 @@ import org.junit.Before; import org.junit.Test; +import cc.kune.core.shared.FileConstants; + public class SharedFileDownloadUtilsTest { private static final String GROUP = "groupname"; - private SharedFileDownloadUtils noPrefixUtils; - private SharedFileDownloadUtils prefixUtils; + private SharedFileDownloadUtils[] prefixUtils; + private SharedFileDownloadUtils utilNoPrefix; + private SharedFileDownloadUtils utilPrefix; + private SharedFileDownloadUtils utilPrefixWithSlash; @Before public void before() { - prefixUtils = new SharedFileDownloadUtils("http://example.org"); - noPrefixUtils = new SharedFileDownloadUtils(""); + utilPrefix = new SharedFileDownloadUtils("http://example.org"); + utilPrefixWithSlash = new SharedFileDownloadUtils("http://example.org/"); + utilNoPrefix = new SharedFileDownloadUtils(""); + prefixUtils = new SharedFileDownloadUtils[] { utilPrefix, utilPrefixWithSlash }; } @Test public void testGetLogoHtml() { - assertTrue(prefixUtils.getLogoAvatarHtml(GROUP, false, false, 50, 5).contains( - "'http://example.org/others/defgroup.gif")); - assertTrue(noPrefixUtils.getLogoAvatarHtml(GROUP, false, true, 50, 5), - prefixUtils.getLogoAvatarHtml(GROUP, false, true, 50, 5).contains("/others/unknown.jpg")); + for (final SharedFileDownloadUtils util : prefixUtils) { + assertTrue(util.getLogoAvatarHtml(GROUP, false, false, 50, 5).contains( + "'http://example.org/others/defgroup.gif")); + assertTrue( + util.getLogoAvatarHtml(GROUP, false, false, 50, 5), + util.getLogoAvatarHtml(GROUP, false, false, 50, 5).contains( + "http://example.org/others/defgroup.gif")); + assertTrue( + util.getLogoAvatarHtml(GROUP, false, true, 50, 5), + util.getLogoAvatarHtml(GROUP, false, true, 50, 5).contains( + "http://example.org/others/unknown.jpg")); + assertTrue(utilNoPrefix.getLogoAvatarHtml(GROUP, false, true, 50, 5), + util.getLogoAvatarHtml(GROUP, false, true, 50, 5).contains("/others/unknown.jpg")); + assertTrue( + util.getLogoAvatarHtml(GROUP, true, false, 50, 5), + util.getLogoAvatarHtml(GROUP, true, false, 50, 5).contains( + "'http://example.org/ws/servlets/EntityLogoDownloadManager?token=groupname")); + } + assertTrue( - prefixUtils.getLogoAvatarHtml(GROUP, true, false, 50, 5), - prefixUtils.getLogoAvatarHtml(GROUP, true, false, 50, 5).contains( - "'http://example.org/ws/servlets/EntityLogoDownloadManager?token=groupname")); - assertTrue( - noPrefixUtils.getLogoAvatarHtml(GROUP, true, true, 50, 5), - noPrefixUtils.getLogoAvatarHtml(GROUP, true, true, 50, 5).contains( + utilNoPrefix.getLogoAvatarHtml(GROUP, true, true, 50, 5), + utilNoPrefix.getLogoAvatarHtml(GROUP, true, true, 50, 5).contains( "/ws/servlets/EntityLogoDownloadManager?token=groupname")); - assertTrue(!noPrefixUtils.getLogoAvatarHtml(GROUP, true, true, 50, 5).contains("http")); + assertTrue(!utilNoPrefix.getLogoAvatarHtml(GROUP, true, true, 50, 5).contains("http")); } @Test public void testUserAvatar() { - assertEquals("http://example.org/ws/servlets/UserLogoDownloadManager?username=groupname", - prefixUtils.getUserAvatar(GROUP)); - assertEquals("/ws/servlets/UserLogoDownloadManager?username=groupname", - noPrefixUtils.getUserAvatar(GROUP)); + assertEquals("http://example.org" + FileConstants.LOGODOWNLOADSERVLET + "?token=groupname", + utilPrefix.getUserAvatar(GROUP)); + assertEquals("http://example.org" + FileConstants.LOGODOWNLOADSERVLET + "?token=groupname", + utilPrefixWithSlash.getUserAvatar(GROUP)); + assertEquals(FileConstants.LOGODOWNLOADSERVLET + "?token=groupname", + utilNoPrefix.getUserAvatar(GROUP)); } } Modified: trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java 2012-03-28 17:58:28 UTC (rev 1804) +++ trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java 2012-03-28 23:23:29 UTC (rev 1805) @@ -23,7 +23,7 @@ import org.openqa.selenium.support.FindBy; import cc.kune.core.client.notify.confirm.UserConfirmPanel; -import cc.kune.core.client.sitebar.SitebarGroupsLink; +import cc.kune.core.client.sitebar.SitebarNewGroupLink; import cc.kune.core.client.sitebar.search.SitebarSearchPanel; import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView; import cc.kune.selenium.PageObject; @@ -39,7 +39,7 @@ public WebElement groupSpaceBtn; @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.HOME_SPACE_ID) public WebElement homeSpaceBtn; - @FindBy(id = SeleniumConstants.GWTDEV + SitebarGroupsLink.NEW_GROUP_BTN_ID) + @FindBy(id = SeleniumConstants.GWTDEV + SitebarNewGroupLink.NEW_GROUP_BTN_ID) public WebElement newGroupBtn; @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.PUBLIC_SPACE_ID) public WebElement publicSpaceBtn;
participants (1)
-
Vicente J. Ruiz Jurado