[kune-commits] 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/cc/kune/core/server/rpc main/java/cc/kune/core/shared/utils main/java/cc/kune/gspace/client main/java/cc/kune/gspace/client/actions main/java/cc/kune/gspace/client/options main/java/cc/kune/hspace/client main/webapp test/java/cc/kune/core/client/state/impl test/java/cc/kune/core/shared/utils test/java/cc/kune/selenium/spaces

Vicente J. Ruiz Jurado vjrj_ at ourproject.org
Thu Mar 29 01:23:29 CEST 2012


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;




More information about the kune-commits mailing list