diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java index fedb17a55..43d22652e 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java @@ -79,6 +79,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; import org.springframework.security.web.authentication.AnonymousAuthenticationFilter; import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint; +import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler; import org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter; import org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; @@ -646,13 +647,16 @@ public class SecurityManagedConfiguration { httpSec.headers().contentSecurityPolicy(hawkbitSecurityProperties.getContentSecurityPolicy()); } + final SimpleUrlLogoutSuccessHandler simpleUrlLogoutSuccessHandler = new SimpleUrlLogoutSuccessHandler(); + simpleUrlLogoutSuccessHandler.setTargetUrlParameter("login"); + httpSec // UI .authorizeRequests().antMatchers("/UI/login/**").permitAll().antMatchers("/UI/UIDL/**").permitAll() .anyRequest().authenticated().and() // UI login / logout .exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/UI/login/#/")) - .and().logout().logoutUrl("/UI/logout").logoutSuccessUrl("/UI/login/#/"); + .and().logout().logoutUrl("/UI/logout").logoutSuccessHandler(simpleUrlLogoutSuccessHandler); } @Override diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java index 41c8184f8..efdb33f5b 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java @@ -155,7 +155,7 @@ public final class SpPermission { * * @return all permission */ - public static Collection getAllAuthorities() { + public static List getAllAuthorities() { return getAllAuthorities(Collections.emptyList()); } @@ -166,7 +166,7 @@ public final class SpPermission { * roles which will excluded * @return all permissions */ - public static Collection getAllAuthorities(final String... exclusionRoles) { + public static List getAllAuthorities(final String... exclusionRoles) { return getAllAuthorities(Arrays.asList(exclusionRoles)); } @@ -177,7 +177,7 @@ public final class SpPermission { * roles which will excluded * @return all permissions */ - public static Collection getAllAuthorities(final Collection exclusionRoles) { + public static List getAllAuthorities(final Collection exclusionRoles) { final List allPermissions = new ArrayList<>(); final Field[] declaredFields = SpPermission.class.getDeclaredFields(); for (final Field field : declaredFields) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/AppWidgetSet.gwt.xml b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/AppWidgetSet.gwt.xml index 81e3d36a3..4dd1223d2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/AppWidgetSet.gwt.xml +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/AppWidgetSet.gwt.xml @@ -20,25 +20,10 @@ - - - - - - - - - - - - - - - diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java index 29f57aa46..82cf9e43d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java @@ -21,6 +21,16 @@ import org.springframework.boot.context.properties.ConfigurationProperties; public class UiProperties implements Serializable { private static final long serialVersionUID = 1L; + private boolean gravatar; + + public boolean isGravatar() { + return gravatar; + } + + public void setGravatar(final boolean gravatar) { + this.gravatar = gravatar; + } + /** * Demo account login information. * diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactViewMenuItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactViewMenuItem.java index 1ad43c25c..d0e5ec323 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactViewMenuItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactViewMenuItem.java @@ -13,6 +13,8 @@ import java.util.List; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.ui.management.AbstractDashboardMenuItemNotification; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import com.vaadin.server.FontAwesome; @@ -30,7 +32,12 @@ import com.vaadin.spring.annotation.UIScope; @Order(500) public class UploadArtifactViewMenuItem extends AbstractDashboardMenuItemNotification { - private static final long serialVersionUID = 4096851897640769726L; + private static final long serialVersionUID = 1L; + + @Autowired + UploadArtifactViewMenuItem(final VaadinMessageSource i18n) { + super(i18n); + } @Override public String getViewName() { @@ -44,12 +51,12 @@ public class UploadArtifactViewMenuItem extends AbstractDashboardMenuItemNotific @Override public String getDashboardCaption() { - return "Upload"; + return getI18n().getMessage("dashboard.upload.caption"); } @Override public String getDashboardCaptionLong() { - return "Upload Management"; + return getI18n().getMessage("dashboard.upload.caption-long"); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/UserDetailsFormatter.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/UserDetailsFormatter.java index 9bcca1e05..a10c094c3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/UserDetailsFormatter.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/UserDetailsFormatter.java @@ -155,6 +155,22 @@ public final class UserDetailsFormatter { return trimAndFormatDetail(userPrincipal.getTenant(), 8); } + /** + * Format the current tenant. The information is loaded by the current + * session information. + * + * @return the formatted user name (max 8 characters) can be + */ + public static Optional getCurrentTenant() { + final UserDetails userDetails = getCurrentUser(); + if (!(userDetails instanceof UserPrincipal)) { + return Optional.empty(); + } + + final UserPrincipal userPrincipal = (UserPrincipal) userDetails; + return Optional.of(userPrincipal.getTenant().trim()); + } + /** * @return logged in users Email address */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java index d8c96cf51..33d168565 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java @@ -171,7 +171,7 @@ public abstract class AbstractDistributionSetDetails detailsTabLayout.removeAllComponents(); final Label typeLabel = SPUIComponentProvider - .createNameValueLabel(getI18n().getMessage("label.dist.details.type"), type); + .createNameValueLabel(getI18n().getMessage("label.dist.details.type"), type == null ? "" : type); typeLabel.setId(UIComponentIdProvider.DETAILS_TYPE_LABEL_ID); detailsTabLayout.addComponent(typeLabel); @@ -182,7 +182,7 @@ public abstract class AbstractDistributionSetDetails private String getMigrationRequiredValue(final Boolean isMigrationRequired) { if (isMigrationRequired == null) { - return null; + return ""; } return isMigrationRequired.equals(Boolean.TRUE) ? getI18n().getMessage("label.yes") : getI18n().getMessage("label.no"); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsViewMenuItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsViewMenuItem.java index 59c97187e..84cb58eab 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsViewMenuItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsViewMenuItem.java @@ -13,6 +13,8 @@ import java.util.List; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.ui.management.AbstractDashboardMenuItemNotification; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import com.vaadin.server.FontAwesome; @@ -22,16 +24,18 @@ import com.vaadin.spring.annotation.UIScope; /** * Menu item for distributions view. - * - * - * */ @SpringComponent @UIScope @Order(400) public class DistributionsViewMenuItem extends AbstractDashboardMenuItemNotification { - private static final long serialVersionUID = -4048522766974227222L; + private static final long serialVersionUID = 1L; + + @Autowired + DistributionsViewMenuItem(final VaadinMessageSource i18n) { + super(i18n); + } @Override public String getViewName() { @@ -45,12 +49,12 @@ public class DistributionsViewMenuItem extends AbstractDashboardMenuItemNotifica @Override public String getDashboardCaption() { - return "Distributions"; + return getI18n().getMessage("dashboard.distributions.caption"); } @Override public String getDashboardCaptionLong() { - return "Distributions Management"; + return getI18n().getMessage("dashboard.distributions.caption-long"); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/FilterManagementViewMenuItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/FilterManagementViewMenuItem.java index 1ce702d32..1bd17980f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/FilterManagementViewMenuItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/FilterManagementViewMenuItem.java @@ -13,6 +13,8 @@ import java.util.List; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.ui.management.AbstractDashboardMenuItemNotification; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import com.vaadin.server.FontAwesome; @@ -21,17 +23,19 @@ import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.UIScope; /** - * * Menu item for target filter management view. - * - * */ @SpringComponent @UIScope @Order(300) public class FilterManagementViewMenuItem extends AbstractDashboardMenuItemNotification { - private static final long serialVersionUID = -1272853053031512243L; + private static final long serialVersionUID = 1L; + + @Autowired + FilterManagementViewMenuItem(final VaadinMessageSource i18n) { + super(i18n); + } @Override public String getViewName() { @@ -45,12 +49,12 @@ public class FilterManagementViewMenuItem extends AbstractDashboardMenuItemNotif @Override public String getDashboardCaption() { - return "Target Filters"; + return getI18n().getMessage("dashboard.filters.caption"); } @Override public String getDashboardCaptionLong() { - return "Target Filter Management"; + return getI18n().getMessage("dashboard.filters.caption-long"); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/AbstractDashboardMenuItemNotification.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/AbstractDashboardMenuItemNotification.java index 0a05f2258..173e7e9eb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/AbstractDashboardMenuItemNotification.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/AbstractDashboardMenuItemNotification.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.ui.management; import java.util.concurrent.atomic.AtomicInteger; import org.eclipse.hawkbit.ui.menu.DashboardMenuItem; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; import com.vaadin.ui.Label; @@ -23,6 +24,12 @@ public abstract class AbstractDashboardMenuItemNotification implements Dashboard private final Label notificationsLabel = new Label(); + private final VaadinMessageSource i18n; + + protected AbstractDashboardMenuItemNotification(final VaadinMessageSource i18n) { + this.i18n = i18n; + } + @Override public void setNotificationUnreadValue(final AtomicInteger notificationUnread) { notificationsLabel.setValue(String.valueOf(notificationUnread.get())); @@ -35,4 +42,7 @@ public abstract class AbstractDashboardMenuItemNotification implements Dashboard return notificationsLabel; } + protected VaadinMessageSource getI18n() { + return i18n; + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/DeploymentViewMenuItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/DeploymentViewMenuItem.java index 9776e7fae..b7412026e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/DeploymentViewMenuItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/DeploymentViewMenuItem.java @@ -12,6 +12,8 @@ import java.util.Arrays; import java.util.List; import org.eclipse.hawkbit.im.authentication.SpPermission; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import com.vaadin.server.FontAwesome; @@ -20,15 +22,18 @@ import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.UIScope; /** - * Menu item for deplyoment. - * + * Menu item for deployment. */ @SpringComponent @UIScope @Order(100) public class DeploymentViewMenuItem extends AbstractDashboardMenuItemNotification { + private static final long serialVersionUID = 1L; - private static final long serialVersionUID = 6112540239655168995L; + @Autowired + DeploymentViewMenuItem(final VaadinMessageSource i18n) { + super(i18n); + } @Override public String getViewName() { @@ -42,12 +47,12 @@ public class DeploymentViewMenuItem extends AbstractDashboardMenuItemNotificatio @Override public String getDashboardCaption() { - return "Deployment"; + return getI18n().getMessage("dashboard.deployment.caption"); } @Override public String getDashboardCaptionLong() { - return "Deployment Management"; + return getI18n().getMessage("dashboard.deployment.caption-long"); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java index 8ee4b034d..aee8691a2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java @@ -12,8 +12,8 @@ import java.net.URI; import org.eclipse.hawkbit.repository.DeploymentManagement; import org.eclipse.hawkbit.repository.EntityFactory; -import org.eclipse.hawkbit.repository.TargetTagManagement; import org.eclipse.hawkbit.repository.TargetManagement; +import org.eclipse.hawkbit.repository.TargetTagManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.Target; @@ -141,9 +141,9 @@ public class TargetDetails extends AbstractTableDetailsLayout { getSelectedBaseEntity().getSecurityToken(), SPDateTimeUtil.getFormattedDate(getSelectedBaseEntity().getLastTargetQuery())); - populateDistributionDtls(installedDistLayout, deploymentManagement - .getAssignedDistributionSet(getSelectedBaseEntity().getControllerId()).orElse(null)); populateDistributionDtls(assignedDistLayout, deploymentManagement + .getAssignedDistributionSet(getSelectedBaseEntity().getControllerId()).orElse(null)); + populateDistributionDtls(installedDistLayout, deploymentManagement .getInstalledDistributionSet(getSelectedBaseEntity().getControllerId()).orElse(null)); } else { updateDetailsLayout(null, null, null, null); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java index ac1d43f1b..32028d751 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java @@ -28,6 +28,7 @@ import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; +import org.springframework.web.util.UriComponentsBuilder; import com.vaadin.server.FontAwesome; import com.vaadin.server.Page; @@ -59,6 +60,9 @@ public final class DashboardMenu extends CustomComponent { private static final String ID = "dashboard-menu"; + private static final String LOGOUT_BASE = "/UI/logout"; + private static final String LOGIN_BASE = "/UI/login"; + private final VaadinMessageSource i18n; private final UiProperties uiProperties; @@ -108,7 +112,7 @@ public final class DashboardMenu extends CustomComponent { final VerticalLayout dashboardMenuLayout = new VerticalLayout(); dashboardMenuLayout.setSizeFull(); final VerticalLayout menuContent = getMenuLayout(); - menuContent.addComponent(buildUserMenu()); + menuContent.addComponent(buildUserMenu(uiProperties)); menuContent.addComponent(buildToggleButton()); final VerticalLayout menus = buildMenuItems(); @@ -177,34 +181,49 @@ public final class DashboardMenu extends CustomComponent { return links; } - private static Resource getImage() { + private static Resource getImage(final boolean gravatar) { + if (!gravatar) { + return new ThemeResource("images/profile-pic-57px.jpg"); + } + return UserDetailsFormatter.getCurrentUserEmail().map(email -> (Resource) new GravatarResource(email)) .orElse(new ThemeResource("images/profile-pic-57px.jpg")); } - private static Component buildUserMenu() { + private Component buildUserMenu(final UiProperties uiProperties) { final MenuBar settings = new MenuBar(); settings.addStyleName("user-menu"); settings.setHtmlContentAllowed(true); - final MenuItem settingsItem = settings.addItem("", getImage(), null); + final MenuItem settingsItem = settings.addItem("", getImage(uiProperties.isGravatar()), null); final String formattedTenant = UserDetailsFormatter.formatCurrentTenant(); - final String formattedUsername = UserDetailsFormatter.formatCurrentUsername(); - String tenantAndUsernameHtml = ""; if (!StringUtils.isEmpty(formattedTenant)) { - tenantAndUsernameHtml += formattedTenant + "
"; + settingsItem.setText(formattedTenant); + UserDetailsFormatter.getCurrentTenant().ifPresent(tenant -> settingsItem.setDescription(i18n + .getMessage("menu.user.description", tenant, UserDetailsFormatter.getCurrentUser().getUsername()))); + } else { + settingsItem.setText("..."); } - tenantAndUsernameHtml += formattedUsername; - settingsItem.setText(tenantAndUsernameHtml); - settingsItem.setDescription(formattedUsername); + settingsItem.setStyleName("user-menuitem"); - settingsItem.addItem("Sign Out", selectedItem -> Page.getCurrent().setLocation("/UI/logout")); + final String logoutUrl = generateLogoutUrl(); + + settingsItem.addItem("Sign Out", selectedItem -> Page.getCurrent().setLocation(logoutUrl)); return settings; } + private static String generateLogoutUrl() { + final UriComponentsBuilder logout = UriComponentsBuilder.fromPath(LOGOUT_BASE); + + UserDetailsFormatter.getCurrentTenant().ifPresent(tenant -> logout.queryParam("login", + UriComponentsBuilder.fromPath(LOGIN_BASE).queryParam("tenant", tenant).build().toUriString())); + + return logout.toUriString(); + } + private Component buildToggleButton() { final Button valoMenuToggleButton = new Button("Menu", new MenuToggleClickListenerMyClickListener()); valoMenuToggleButton.setIcon(FontAwesome.LIST); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutViewMenuItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutViewMenuItem.java index 03236673f..afbf585f1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutViewMenuItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/RolloutViewMenuItem.java @@ -13,6 +13,8 @@ import java.util.List; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.ui.management.AbstractDashboardMenuItemNotification; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import com.vaadin.server.FontAwesome; @@ -21,17 +23,19 @@ import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.UIScope; /** - * Menu item for rollout . - * - * - * + * Menu item for rollouts. */ @SpringComponent @UIScope @Order(200) public class RolloutViewMenuItem extends AbstractDashboardMenuItemNotification { - private static final long serialVersionUID = 6112540239655168995L; + private static final long serialVersionUID = 1L; + + @Autowired + RolloutViewMenuItem(final VaadinMessageSource i18n) { + super(i18n); + } @Override public String getViewName() { @@ -45,12 +49,12 @@ public class RolloutViewMenuItem extends AbstractDashboardMenuItemNotification { @Override public String getDashboardCaption() { - return "Rollout"; + return getI18n().getMessage("dashboard.rollouts.caption"); } @Override public String getDashboardCaptionLong() { - return "Rollout Management"; + return getI18n().getMessage("dashboard.rollouts.caption-long"); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardViewMenuItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardViewMenuItem.java index bebe046cd..bfb2e9501 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardViewMenuItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardViewMenuItem.java @@ -13,6 +13,8 @@ import java.util.List; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.ui.management.AbstractDashboardMenuItemNotification; +import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import com.vaadin.server.FontAwesome; @@ -28,7 +30,12 @@ import com.vaadin.spring.annotation.UIScope; @Order(700) public class TenantConfigurationDashboardViewMenuItem extends AbstractDashboardMenuItemNotification { - private static final long serialVersionUID = 348659206461499664L; + private static final long serialVersionUID = 1L; + + @Autowired + TenantConfigurationDashboardViewMenuItem(final VaadinMessageSource i18n) { + super(i18n); + } @Override public String getViewName() { @@ -42,12 +49,12 @@ public class TenantConfigurationDashboardViewMenuItem extends AbstractDashboardM @Override public String getDashboardCaption() { - return "System Config"; + return getI18n().getMessage("dashboard.tenantconfig.caption"); } @Override public String getDashboardCaptionLong() { - return "System Configuration"; + return getI18n().getMessage("dashboard.tenantconfig.caption-long"); } @Override diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/dashboardview.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/dashboardview.scss deleted file mode 100644 index 5676907ce..000000000 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/dashboardview.scss +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Copyright (c) 2015 Bosch Software Innovations GmbH and others. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -// scss-lint:disable ImportantRule, PropertySortOrder - -$view-padding: round($v-unit-size / 1.5) !default; -@mixin dashboard-dashboard-view { - .dashboard-view.dashboard-view { - padding: 1.4px; - overflow: auto; - .dashboard-panel-toolbar { - padding: 1px 0; - height: $v-unit-size + 2px; - top: 0; - left: 0; - } - .dashboard-panels { - display: block; - height: 100%; - margin: 0 round($view-padding / -3); - - //Style of each report widget - .card { - height: 100%; - overflow: hidden; - position: relative; - .v-menubar-menuitem-icon-only { - color: $button-icon-color; - } - .highcharts-background { - fill: $widget-bg; - } - .highcharts-legend > rect { - fill: $widget-bg; - } - } - - //Each report widget style.Applying padding between the widgets - .dashboard-panel-slot { - padding-bottom: round($view-padding / 5)*2; - padding-left: round($view-padding / 5); - padding-right: round($view-padding / 5); - padding-top: 0; - min-height: 220px; - .card { - border: 1px solid $widget-border-color; - background-color: $widget-bg; - } - } - - //Maximized report widget style - .dashboard-panel-slot.max { - width: 100% !important; - height: 100% !important; - padding-top: 0; - padding-bottom: 0; - } - } - } - .dashboard-view { - @include width-range($max: 480px) { - padding-left: round($view-padding / 2); - padding-right: round($view-padding / 2); - } - } - - //Information table displayed when report widget is maximized - .info-table { - margin-right: 20px; - overflow-x: hidden; - overflow-y: auto; - font-size: $v-font-size--small; - } - - //Make information table visible when report widget is maximized - .info-table-show { - visibility: visible; - } - - //Report widget caption style - .v-caption-report-caption { - margin-top: 4px; - color: $widget-caption-color; - padding-left: 10px; - font-weight: 500; - } -} diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/hawkbittheme.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/hawkbittheme.scss index 3da891b10..24d2b2890 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/hawkbittheme.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/hawkbittheme.scss @@ -55,7 +55,6 @@ $v-animations-enabled: true; @import 'customstyles/drop-hint'; @import 'customstyles/popup-window'; @import 'customstyles/artifact-upload'; -@import 'customstyles/dashboardview'; @import 'customstyles/common'; @import 'customstyles/login'; @import 'customstyles/filter-layout-styles'; @@ -92,7 +91,6 @@ $v-included-components: remove($v-included-components, form); @include drop-hint; @include popup-window; @include artifact-upload; - @include dashboard-dashboard-view; @include dashboard-common; @include login; @include systemconfig; diff --git a/hawkbit-ui/src/main/resources/messages.properties b/hawkbit-ui/src/main/resources/messages.properties index 781b8a9f0..c4f691e08 100644 --- a/hawkbit-ui/src/main/resources/messages.properties +++ b/hawkbit-ui/src/main/resources/messages.properties @@ -11,6 +11,20 @@ # This is the messages.properties file ######################################################################################### +# Menu items +dashboard.upload.caption = Upload +dashboard.upload.caption-long = Upload Management +dashboard.tenantconfig.caption = System Config +dashboard.tenantconfig.caption-long = System Configuration +dashboard.distributions.caption = Distributions +dashboard.distributions.caption-long = Distributions Management +dashboard.filters.caption = Target Filters +dashboard.filters.caption-long = Target Filter Management +dashboard.deployment.caption = Deployment +dashboard.deployment.caption-long Deployment Management +dashboard.rollouts.caption = Rollout +dashboard.rollouts.caption-long = Rollout Management + # Button names prefix with - button button.save = Save button.delete = Delete @@ -579,7 +593,7 @@ label.rollout.calculating = Calculating groups ... #rollout - end #Menu -menu.title = Software Provisioning +menu.user.description = Tenant: {0} User: {1} #Target Filter Management breadcrumb.target.filter.custom.filters = Custom Filters