From 819f292f55adb377ef174b94d5da094f01ab88d9 Mon Sep 17 00:00:00 2001 From: BLANCHET Ludovic <ludovic.blanchet.ext@culture.gouv.fr> Date: Mon, 20 Jan 2020 11:34:13 +0100 Subject: [PATCH] Add app logo configuration Signed-off-by: Makhtar DIAGNE <makhtar.diagne@teamdlab.com> --- .../gouv/vitamui/commons/api/CommonConstants.java | 3 +++ .../vitamui/ui/commons/property/UIProperties.java | 2 ++ .../ui/commons/service/ApplicationService.java | 14 +++++++++++++- .../components/navbar/navbar.component.html | 5 ++++- .../modules/components/navbar/navbar.component.ts | 8 ++++++++ .../modules/models/app.configuration.interface.ts | 1 + .../src/app/modules/startup.service.ts | 10 ++++++++-- ui/ui-frontend/package.json.rej | 10 ++++++++++ .../graphic-identity-update.component.ts | 2 -- .../main/config/ui-identity-application-dev.yml | 2 ++ .../src/main/config/ui-portal-application-dev.yml | 2 ++ 11 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 ui/ui-frontend/package.json.rej diff --git a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java index 739b1e4e..cf9cf54e 100644 --- a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java +++ b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java @@ -183,6 +183,8 @@ public class CommonConstants { public static final String UI_URL = "UI_URL"; + public static final String ASSET_FOLDER = "ASSET_FOLDER"; + public static final String THEME_COLORS = "THEME_COLORS"; /** @@ -258,4 +260,5 @@ public class CommonConstants { public static final String MULTIPART_FILE_PARAM_NAME = "uploadedFile"; + public static final String LOGO = "LOGO"; } diff --git a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java index 63a5c945..04dc4634 100644 --- a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java +++ b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java @@ -50,4 +50,6 @@ public interface UIProperties { public Map<String, String> getThemeColors(); + public String getLogoURI(); + } diff --git a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java index 092e0fdc..2a08f359 100644 --- a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java +++ b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java @@ -118,13 +118,25 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { public Map<String, Object> getConf() { final Map<String, Object> configurationData = new HashMap<>(); configurationData.put(CommonConstants.PORTAL_URL, properties.getBaseUrl().getPortal()); - // TODO check if it s used configurationData.put(CommonConstants.CAS_LOGIN_URL, getCasLoginUrl()); configurationData.put(CommonConstants.CAS_LOGOUT_URL, casLogoutUrl.getValue()); configurationData.put(CommonConstants.UI_URL, uiUrl); configurationData.put(CommonConstants.LOGOUT_REDIRECT_UI_URL, casLogoutUrl.getValueWithRedirection(uiRedirectUrl)); configurationData.put(CommonConstants.THEME_COLORS, properties.getThemeColors()); + final Path logoPath = Paths.get(properties.getLogoURI()); + String base64Logo = null; + try { + base64Logo = DatatypeConverter.printBase64Binary(Files.readAllBytes(logoPath)); + } + catch (IOException e) { + LOGGER.warn("Error while resolve application logo"); + e.printStackTrace(); + } + if (base64Logo != null) { + configurationData.put(CommonConstants.LOGO, base64Logo); + } + return configurationData; } diff --git a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html index 369765e2..9fc9cff8 100644 --- a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html +++ b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html @@ -1,5 +1,8 @@ <nav class="vitamui-navbar"> - <a href="{{portalUrl}}" class="vitamui-navbar-logo"><img src="../../../../assets/navbar-logo-vitamui.png"></a> + <a href="{{portalUrl}}" class="vitamui-navbar-logo"> + <img *ngIf="base64Logo" [src]="trustedAppLogoUrl"> + <img *ngIf="!base64Logo" src="../../../../assets/navbar-logo.svg"> + </a> <ul class="menu"> diff --git a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts index e74218ac..1c2b663e 100644 --- a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts +++ b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts @@ -68,9 +68,11 @@ export class NavbarComponent { @Output() customerSelect = new EventEmitter<string>(); portalUrl: string; + base64Logo: string; currentUser: AuthUser; hasAccountProfile = false; trustedInlineLogoUrl: SafeUrl; + trustedAppLogoUrl: SafeUrl; constructor( public authService: AuthService, @@ -78,6 +80,12 @@ export class NavbarComponent { private subrogationService: SubrogationService, private domSanitizer: DomSanitizer) { this.portalUrl = startupService.getPortalUrl(); + this.base64Logo = startupService.getLogo(); + + if (this.base64Logo) { + this.trustedAppLogoUrl = this.domSanitizer.bypassSecurityTrustUrl('data:image/*;base64,' + this.base64Logo); + } + if (this.authService.user) { this.currentUser = this.authService.user; if (this.currentUser.basicCustomer) { diff --git a/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts b/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts index a5affeba..340c929a 100644 --- a/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts +++ b/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts @@ -42,6 +42,7 @@ export interface AppConfiguration { LOGOUT_REDIRECT_UI_URL: string; SEARCH_URL?: string; THEME_COLORS: any; + LOGO: any; [key: string]: string; } diff --git a/ui/ui-frontend-common/src/app/modules/startup.service.ts b/ui/ui-frontend-common/src/app/modules/startup.service.ts index 6a1b69ff..d4b85655 100644 --- a/ui/ui-frontend-common/src/app/modules/startup.service.ts +++ b/ui/ui-frontend-common/src/app/modules/startup.service.ts @@ -93,7 +93,6 @@ export class StartupService { const applicationColorMap = this.configurationData.THEME_COLORS; const customerColorMap = this.authService.user.basicCustomer.graphicIdentity.themeColors; - const themeColors = { '--vitamui-primary': getColorFromMaps('vitamui-primary', '#fe4f02', applicationColorMap, customerColorMap), '--vitamui-primary-light': getColorFromMaps('vitamui-primary-light', '#ff8559', applicationColorMap, customerColorMap), @@ -104,7 +103,8 @@ export class StartupService { '--vitamui-secondary-dark-5': getColorFromMaps('vitamui-secondary-dark', '#52aa9a', applicationColorMap, customerColorMap) }; - console.log('Theme colors: ', themeColors); + const logo64 = this.configurationData.LOGO; + console.log('Logo: ', logo64); for (const themeColorsKey in themeColors) { if (themeColors.hasOwnProperty(themeColorsKey)) { @@ -152,6 +152,12 @@ export class StartupService { } } + getLogo(): string { + if (this.configurationLoaded()) { + return this.configurationData.LOGO; + } + } + getPortalUrl(): string { if (this.configurationLoaded()) { return this.configurationData.PORTAL_URL; diff --git a/ui/ui-frontend/package.json.rej b/ui/ui-frontend/package.json.rej new file mode 100644 index 00000000..d3db92f4 --- /dev/null +++ b/ui/ui-frontend/package.json.rej @@ -0,0 +1,10 @@ +diff a/ui/ui-frontend/package.json b/ui/ui-frontend/package.json (rejected hunks) +@@ -59,7 +59,7 @@ + "moment": "^2.24.0", + "rxjs": "^6.5.2", + "tslib": "^1.9.0", +- "ui-frontend-common": "file:../ui-frontend-common/ui-frontend-common-0.0.25.tgz", ++ "ui-frontend-common": "file:../ui-frontend-common/ui-frontend-common-0.0.26.tgz", + "underscore": "^1.9.1", + "web-animations-js": "github:angular/web-animations-js#release_pr208", + "zone.js": "~0.9.1" diff --git a/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts b/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts index f93f6f51..e5d9cd5c 100644 --- a/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts +++ b/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts @@ -197,8 +197,6 @@ export class GraphicIdentityUpdateComponent implements OnInit { isGraphicIdentityFormValid() { return this.graphicIdentityForm.get('hasCustomGraphicIdentity').value === false || (this.graphicIdentityForm.get('hasCustomGraphicIdentity').value === true && this.imageUrl); - // TODO: Update me to add themeColors ! - // FIXME: What if we dont want to update imageURL ? Can we test image OR themeColors updates } } diff --git a/ui/ui-identity/src/main/config/ui-identity-application-dev.yml b/ui/ui-identity/src/main/config/ui-identity-application-dev.yml index 9fe3575e..56bd8c48 100644 --- a/ui/ui-identity/src/main/config/ui-identity-application-dev.yml +++ b/ui/ui-identity/src/main/config/ui-identity-application-dev.yml @@ -16,6 +16,8 @@ ui-identity: vitamui-primary-light-20: "#ba52d1" vitamui-secondary: "#7FA1D4" + logoURI: "/home/lubla/vitamui/test_logo.png" + iam-external-client: server-host: localhost server-port: 8083 diff --git a/ui/ui-portal/src/main/config/ui-portal-application-dev.yml b/ui/ui-portal/src/main/config/ui-portal-application-dev.yml index 2d49fefd..2566f06f 100644 --- a/ui/ui-portal/src/main/config/ui-portal-application-dev.yml +++ b/ui/ui-portal/src/main/config/ui-portal-application-dev.yml @@ -31,6 +31,8 @@ ui-portal: vitamui-primary-light-20: "#ba52d1" vitamui-secondary: "#7FA1D4" + logoURI: "/home/lubla/vitamui/test_logo.png" + iam-external-client: server-host: localhost server-port: 8083 -- GitLab