Alexander Wels has uploaded a new change for review.

Change subject: userportal: Dynamic guide link
......................................................................

userportal: Dynamic guide link

- Dynamically switch guide link between basic guide
  and power user guide based on active tab
- Fixed issue where the place managers where not singleton
  accross modules.

Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=948653

Change-Id: If6374df0da70fa6f6edf044d4ebadafc7fb1a105
Signed-off-by: Alexander Wels <aw...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractHeaderPresenterWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/AbstractTabPanel.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/HeaderPresenterWidget.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/MainSectionPresenter.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
M packaging/branding/ovirt.brand/external_resources.properties
10 files changed, 103 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/19298/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
index 13104f7..2483aa0 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseSystemModule.java
@@ -20,7 +20,6 @@
 import com.google.inject.Singleton;
 import com.gwtplatform.mvp.client.RootPresenter;
 import com.gwtplatform.mvp.client.proxy.ParameterTokenFormatter;
-import com.gwtplatform.mvp.client.proxy.PlaceManager;
 import com.gwtplatform.mvp.client.proxy.TokenFormatter;
 
 /**
@@ -28,11 +27,10 @@
  */
 public abstract class BaseSystemModule extends AbstractGinModule {
 
-    protected void bindCommonInfrastructure(Class<? extends PlaceManager> 
placeManager) {
+    protected void bindCommonInfrastructure() {
         bindEventBus();
         
bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(Singleton.class);
         bind(RootPresenter.class).asEagerSingleton();
-        bind(PlaceManager.class).to(placeManager).in(Singleton.class);
         bind(CurrentUser.class).in(Singleton.class);
         bind(LoggedInGatekeeper.class).in(Singleton.class);
         
bind(ErrorPopupManager.class).to(ErrorPopupManagerImpl.class).in(Singleton.class);
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractHeaderPresenterWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractHeaderPresenterWidget.java
index a954918..1992563 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractHeaderPresenterWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractHeaderPresenterWidget.java
@@ -7,6 +7,7 @@
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.HasClickHandlers;
 import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.gwtplatform.mvp.client.PresenterWidget;
 import com.gwtplatform.mvp.client.View;
 
@@ -24,14 +25,14 @@
 
     private final CurrentUser user;
     private final String windowName;
-    private final String guideUrl;
+    private String guideUrl;
 
     public AbstractHeaderPresenterWidget(EventBus eventBus, V view, 
CurrentUser user,
             String windowName, String guideUrl) {
         super(eventBus, view);
         this.user = user;
         this.windowName = windowName;
-        this.guideUrl = guideUrl;
+        setGuideUrl(guideUrl);
     }
 
     @Override
@@ -51,7 +52,14 @@
                 WebUtils.openUrlInNewWindow(windowName, guideUrl, 
WebUtils.OPTION_SCROLLBARS);
             }
         }));
+    }
 
+    /**
+     * Set the URL of the guide link. This string is escaped.
+     * @param guideUrlString The new URL as a string.
+     */
+    public void setGuideUrl(String guideUrlString) {
+        this.guideUrl = SafeHtmlUtils.htmlEscapeAllowEntities(guideUrlString);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
index 466c43e..1292f12 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/DynamicMessages.java
@@ -35,6 +35,7 @@
         FEEDBACK_URL("feedback_url"), //$NON-NLS-1$
         FEEDBACK_LINK_LABEL("feedback_link_label"), //$NON-NLS-1$
         GUIDE_URL("guide_url"), //$NON-NLS-1$
+        EXTENDED_GUIDE_URL("extended_guide_url"), //$NON-NLS-1$
         GUIDE_LINK_LABEL("guide_link_label"), //$NON-NLS-1$
         DOC("doc"); //$NON-NLS-1$
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/AbstractTabPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/AbstractTabPanel.java
index c32d81e..eec0e50 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/AbstractTabPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/AbstractTabPanel.java
@@ -5,6 +5,7 @@
 
 import 
org.ovirt.engine.ui.common.presenter.DynamicTabContainerPresenter.DynamicTabPanel;
 
+import com.google.gwt.event.shared.HasHandlers;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.IsWidget;
@@ -22,7 +23,7 @@
  * <li>{@link #tabContentContainer} widget for displaying tab contents
  * </ul>
  */
-public abstract class AbstractTabPanel extends Composite implements TabPanel, 
DynamicTabPanel {
+public abstract class AbstractTabPanel extends Composite implements TabPanel, 
DynamicTabPanel, HasHandlers {
 
     @UiField
     public Panel tabContentContainer;
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
index 24226cd..b9441f8 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/ApplicationDynamicMessages.java
@@ -3,6 +3,7 @@
 import org.ovirt.engine.ui.common.utils.DynamicMessages;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.LocaleInfo;
 
 public class ApplicationDynamicMessages extends DynamicMessages {
 
@@ -19,4 +20,14 @@
         addFallback(DynamicMessageKey.GUIDE_LINK_LABEL, 
constants.guideLinkLabel());
     }
 
+    /**
+     * Get the extended guide URL using the {@code Dictionary} in the host 
page. Uses current locale (e.g. "en_US")
+     * for placeholder {0}, if it exists. With a fall back to the standard GWT 
Constant.
+     *
+     * @return The guide URL.
+     */
+    public final String extendedGuideUrl() {
+        return formatString(DynamicMessageKey.EXTENDED_GUIDE_URL, 
LocaleInfo.getCurrentLocale().getLocaleName());
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
index 97154a0..7aa1e60 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/SystemModule.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.userportal.gin;
 
+import org.ovirt.engine.ui.common.auth.CurrentUser;
 import org.ovirt.engine.ui.common.gin.BaseSystemModule;
 import org.ovirt.engine.ui.common.section.DefaultLoginSectionPlace;
 import org.ovirt.engine.ui.common.section.DefaultMainSectionPlace;
@@ -16,12 +17,19 @@
 import org.ovirt.engine.ui.userportal.section.DefaultMainSectionExtendedPlace;
 import org.ovirt.engine.ui.userportal.system.ApplicationInit;
 
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provides;
 import com.google.inject.Singleton;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
+import com.gwtplatform.mvp.client.proxy.TokenFormatter;
 
 /**
  * GIN module containing UserPortal infrastructure and configuration bindings.
  */
 public class SystemModule extends BaseSystemModule {
+
+    private static UserPortalPlaceManager singletonPlaceManager;
 
     @SuppressWarnings("deprecation")
     @Override
@@ -32,7 +40,7 @@
     }
 
     void bindInfrastructure() {
-        bindCommonInfrastructure(UserPortalPlaceManager.class);
+        bindCommonInfrastructure();
         bind(LoggedInExtendedPlaceGatekeeper.class).in(Singleton.class);
         bind(ApplicationInit.class).asEagerSingleton();
         bind(CurrentUserRole.class).in(Singleton.class);
@@ -51,4 +59,28 @@
         bind(ApplicationResourcesWithLookup.class).in(Singleton.class);
     }
 
+    @Provides
+    @Inject
+    public PlaceManager getPlaceManager(EventBus eventBus, TokenFormatter 
tokenFormatter,
+            CurrentUser user, CurrentUserRole userRole,
+            @DefaultLoginSectionPlace String defaultLoginSectionPlace,
+            @DefaultMainSectionPlace String defaultMainSectionPlace,
+            @DefaultMainSectionExtendedPlace String 
defaultMainSectionExtendedPlace) {
+        return getUserPortalPlaceManager(eventBus, tokenFormatter, user, 
userRole, defaultLoginSectionPlace,
+                defaultMainSectionExtendedPlace, 
defaultMainSectionExtendedPlace);
+    }
+
+    @Provides
+    @Inject
+    public UserPortalPlaceManager getUserPortalPlaceManager(EventBus eventBus, 
TokenFormatter tokenFormatter,
+            CurrentUser user, CurrentUserRole userRole,
+            @DefaultLoginSectionPlace String defaultLoginSectionPlace,
+            @DefaultMainSectionPlace String defaultMainSectionPlace,
+            @DefaultMainSectionExtendedPlace String 
defaultMainSectionExtendedPlace) {
+        if (singletonPlaceManager == null) {
+            singletonPlaceManager = new UserPortalPlaceManager(eventBus, 
tokenFormatter, user, userRole,
+                    defaultLoginSectionPlace, defaultMainSectionPlace, 
defaultMainSectionExtendedPlace);
+        }
+        return singletonPlaceManager;
+    }
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/HeaderPresenterWidget.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/HeaderPresenterWidget.java
index 13e1332..bf0046a 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/HeaderPresenterWidget.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/HeaderPresenterWidget.java
@@ -14,7 +14,8 @@
 import com.google.inject.Inject;
 import com.gwtplatform.mvp.client.proxy.RevealRootPopupContentEvent;
 
-public class HeaderPresenterWidget extends 
AbstractHeaderPresenterWidget<HeaderPresenterWidget.ViewDef> implements 
TabWidgetHandler {
+public class HeaderPresenterWidget extends 
AbstractHeaderPresenterWidget<HeaderPresenterWidget.ViewDef>
+    implements TabWidgetHandler {
 
     public interface ViewDef extends AbstractHeaderPresenterWidget.ViewDef, 
TabWidgetHandler {
 
@@ -64,5 +65,4 @@
 
         getView().setMainTabPanelVisible(userRole.isExtendedUser());
     }
-
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/MainSectionPresenter.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/MainSectionPresenter.java
index 8a54efc..1040df9 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/MainSectionPresenter.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/MainSectionPresenter.java
@@ -1,5 +1,8 @@
 package org.ovirt.engine.ui.userportal.section.main.presenter;
 
+import org.ovirt.engine.ui.userportal.ApplicationDynamicMessages;
+import org.ovirt.engine.ui.userportal.place.UserPortalPlaceManager;
+
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.GwtEvent.Type;
 import com.google.inject.Inject;
@@ -26,11 +29,18 @@
     public static final Type<RevealContentHandler<?>> TYPE_SetMainContent = 
new Type<RevealContentHandler<?>>();
 
     private final HeaderPresenterWidget header;
+    private final UserPortalPlaceManager placeManager;
+    private final String basicGuideUrl;
+    private final String extendedGuideUrl;
 
     @Inject
-    public MainSectionPresenter(EventBus eventBus, ViewDef view, ProxyDef 
proxy, HeaderPresenterWidget header) {
+    public MainSectionPresenter(EventBus eventBus, ViewDef view, ProxyDef 
proxy, HeaderPresenterWidget header,
+            UserPortalPlaceManager userPortalPlaceManager, 
ApplicationDynamicMessages dynamicMessages) {
         super(eventBus, view, proxy, RevealType.RootLayout);
         this.header = header;
+        this.placeManager = userPortalPlaceManager;
+        this.basicGuideUrl = dynamicMessages.guideUrl();
+        this.extendedGuideUrl = dynamicMessages.extendedGuideUrl();
     }
 
     @Override
@@ -40,4 +50,14 @@
         setInSlot(TYPE_SetHeader, header);
     }
 
+    @Override
+    protected void onReset() {
+        // This is called before the place is actually changed, so we need to 
reverse the logic, and set the
+        // extended guide when switching away from the basic (but it is still 
visible), and vice versa.
+        if (!placeManager.isMainSectionBasicPlaceVisible()) {
+            header.setGuideUrl(basicGuideUrl);
+        } else {
+            header.setGuideUrl(extendedGuideUrl);
+        }
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
index c437b1b..8138e85 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/SystemModule.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.webadmin.gin;
 
+import org.ovirt.engine.ui.common.auth.CurrentUser;
 import org.ovirt.engine.ui.common.gin.BaseSystemModule;
 import org.ovirt.engine.ui.common.section.DefaultLoginSectionPlace;
 import org.ovirt.engine.ui.common.section.DefaultMainSectionPlace;
@@ -14,10 +15,18 @@
 import org.ovirt.engine.ui.webadmin.system.InternalConfiguration;
 import org.ovirt.engine.ui.webadmin.system.PostMessageDispatcher;
 
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provides;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
+import com.gwtplatform.mvp.client.proxy.TokenFormatter;
+
 /**
  * GIN module containing WebAdmin infrastructure and configuration bindings.
  */
 public class SystemModule extends BaseSystemModule {
+
+    private static PlaceManager singletonPlaceManager;
 
     @SuppressWarnings("deprecation")
     @Override
@@ -28,7 +37,7 @@
     }
 
     void bindInfrastructure() {
-        bindCommonInfrastructure(WebAdminPlaceManager.class);
+        bindCommonInfrastructure();
         bind(ApplicationInit.class).asEagerSingleton();
         bind(InternalConfiguration.class).asEagerSingleton();
         bind(PostMessageDispatcher.class).asEagerSingleton();
@@ -44,4 +53,15 @@
                 ApplicationResources.class, ApplicationTemplates.class, 
ApplicationDynamicMessages.class);
     }
 
+    @Provides
+    @Inject
+    public PlaceManager getPlaceManager(EventBus eventBus, TokenFormatter 
tokenFormatter, CurrentUser user,
+            @DefaultLoginSectionPlace String defaultLoginSectionPlace,
+            @DefaultMainSectionPlace String defaultMainSectionPlace) {
+        if (singletonPlaceManager == null) {
+            singletonPlaceManager = new WebAdminPlaceManager(eventBus, 
tokenFormatter, user, defaultLoginSectionPlace,
+                    defaultMainSectionPlace);
+        }
+        return singletonPlaceManager;
+    }
 }
diff --git a/packaging/branding/ovirt.brand/external_resources.properties 
b/packaging/branding/ovirt.brand/external_resources.properties
index d085e75..c7e93af 100644
--- a/packaging/branding/ovirt.brand/external_resources.properties
+++ b/packaging/branding/ovirt.brand/external_resources.properties
@@ -7,4 +7,4 @@
 # Guide URL
 obrand.webadmin.guide_url=http://www.ovirt.org/Documentation
 obrand.userportal.guide_url=http://www.ovirt.org/Documentation
-
+obrand.userportal.extended_guide_url=http://www.ovirt.org/Documentation


-- 
To view, visit http://gerrit.ovirt.org/19298
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If6374df0da70fa6f6edf044d4ebadafc7fb1a105
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to