From 89bfb9cba98c40dcd84f94003b8a6e39c9aa23df Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 19:05:42 +0200 Subject: [PATCH 1/9] Ajout d'un select pour choisir sa locale. --- ui2/src/locales/fr.json | 5 +++- ui2/src/main.js | 4 ++- ui2/src/services/UserPreferencesService.js | 25 ++++++++++++++++ ui2/src/utils/LocaleUtils.js | 4 +++ ui2/src/views/common/MenuView.vue | 34 +++++++++++++++++----- 5 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 ui2/src/services/UserPreferencesService.js create mode 100644 ui2/src/utils/LocaleUtils.js diff --git a/ui2/src/locales/fr.json b/ui2/src/locales/fr.json index f0f999445..9941861a8 100644 --- a/ui2/src/locales/fr.json +++ b/ui2/src/locales/fr.json @@ -26,6 +26,9 @@ "menu": { "logout": "Se déconnecter", "applications": "Applications", - "references": "Référentiels" + "references": "Référentiels", + "french": "Français", + "english": "English", + "language": "Langue" } } diff --git a/ui2/src/main.js b/ui2/src/main.js index a22b78599..5105dcfb9 100644 --- a/ui2/src/main.js +++ b/ui2/src/main.js @@ -9,6 +9,7 @@ import { faExclamationCircle, faEye, faEyeSlash, + faGlobe, faPlus, faSignOutAlt, } from "@fortawesome/free-solid-svg-icons"; @@ -19,7 +20,8 @@ library.add( faPlus, faExclamationCircle, faCheck, - faSignOutAlt + faSignOutAlt, + faGlobe ); Vue.component("vue-fontawesome", FontAwesomeIcon); diff --git a/ui2/src/services/UserPreferencesService.js b/ui2/src/services/UserPreferencesService.js new file mode 100644 index 000000000..4bbaffa5f --- /dev/null +++ b/ui2/src/services/UserPreferencesService.js @@ -0,0 +1,25 @@ +import { Locales } from "@/utils/LocaleUtils"; +import { Fetcher } from "./Fetcher"; + +const LOCAL_STORAGE_LANG = "lang"; + +export class UserPreferencesService extends Fetcher { + static INSTANCE = new UserPreferencesService(); + + constructor() { + super(); + } + + getUserPrefLocale() { + const browserLocale = window.navigator.language.substring(0, 2); + return ( + localStorage.getItem(LOCAL_STORAGE_LANG) || + (Object.values(Locales).includes(browserLocale) && browserLocale) || + Locales.FRENCH + ); + } + + setUserPrefLocale(locale) { + localStorage.setItem(LOCAL_STORAGE_LANG, locale); + } +} diff --git a/ui2/src/utils/LocaleUtils.js b/ui2/src/utils/LocaleUtils.js new file mode 100644 index 000000000..6ae7fa9b6 --- /dev/null +++ b/ui2/src/utils/LocaleUtils.js @@ -0,0 +1,4 @@ +export const Locales = { + FRENCH: "fr", + ENGLISH: "en", +}; diff --git a/ui2/src/views/common/MenuView.vue b/ui2/src/views/common/MenuView.vue index a6c9516f4..fb37e23ea 100644 --- a/ui2/src/views/common/MenuView.vue +++ b/ui2/src/views/common/MenuView.vue @@ -17,34 +17,52 @@ }}</b-button> </div> </b-navbar-item> + <b-navbar-item tag="div"> + <b-field> + <b-select + v-model="chosenLocale" + :placeholder="$t('menu.language')" + icon="globe" + @input="setUserPrefLocale" + > + <option :value="locales.FRENCH">{{ $t("menu.french") }}</option> + <option :value="locales.ENGLISH">{{ $t("menu.english") }}</option> + </b-select> + </b-field> + </b-navbar-item> </template> </b-navbar> </template> <script> -import { User } from "@/model/User"; -import { LoginService } from "@/services/LoginService"; import { Component, Vue } from "vue-property-decorator"; +import { LoginService } from "@/services/LoginService"; +import { UserPreferencesService } from "@/services/UserPreferencesService"; + +import { Locales } from "@/utils/LocaleUtils.js"; + @Component({ components: {}, }) export default class MenuView extends Vue { loginService = LoginService.INSTANCE; + userPreferencesService = UserPreferencesService.INSTANCE; - loggedUser = new User(); + locales = Locales; + chosenLocale = ""; created() { - this.init(); - } - - async init() { - this.loggedUser = await this.loginService.getLoggedUser(); + this.chosenLocale = this.userPreferencesService.getUserPrefLocale(); } logout() { this.loginService.logout(); } + + setUserPrefLocale() { + this.userPreferencesService.setUserPrefLocale(this.chosenLocale); + } } </script> -- GitLab From 0df0898fe23dbe0aff0a3876e83fc6241bb81a55 Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 20:03:05 +0200 Subject: [PATCH 2/9] Ajout de la traduction anglaise dans le front --- ui2/.env | 2 -- ui2/src/i18n.js | 27 --------------- ui2/src/locales/en.json | 34 +++++++++++++++++++ ui2/src/main.js | 28 +++++++++++++-- ui2/src/services/Events.js | 3 ++ ui2/src/services/UserPreferencesService.js | 2 ++ .../validation/vee-validation-rules.js | 10 ------ 7 files changed, 64 insertions(+), 42 deletions(-) delete mode 100644 ui2/.env delete mode 100644 ui2/src/i18n.js create mode 100644 ui2/src/locales/en.json create mode 100644 ui2/src/services/Events.js diff --git a/ui2/.env b/ui2/.env deleted file mode 100644 index a20e25f13..000000000 --- a/ui2/.env +++ /dev/null @@ -1,2 +0,0 @@ -VUE_APP_I18N_LOCALE=fr -VUE_APP_I18N_FALLBACK_LOCALE=en diff --git a/ui2/src/i18n.js b/ui2/src/i18n.js deleted file mode 100644 index 7841e4465..000000000 --- a/ui2/src/i18n.js +++ /dev/null @@ -1,27 +0,0 @@ -import Vue from "vue"; -import VueI18n from "vue-i18n"; - -Vue.use(VueI18n); - -function loadLocaleMessages() { - const locales = require.context( - "./locales", - true, - /[A-Za-z0-9-_,\s]+\.json$/i - ); - const messages = {}; - locales.keys().forEach((key) => { - const matched = key.match(/([A-Za-z0-9-_]+)\./i); - if (matched && matched.length > 1) { - const locale = matched[1]; - messages[locale] = locales(key); - } - }); - return messages; -} - -export default new VueI18n({ - locale: process.env.VUE_APP_I18N_LOCALE || "en", - fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || "en", - messages: loadLocaleMessages(), -}); diff --git a/ui2/src/locales/en.json b/ui2/src/locales/en.json new file mode 100644 index 000000000..8d2325247 --- /dev/null +++ b/ui2/src/locales/en.json @@ -0,0 +1,34 @@ +{ + "titles": { + "login-page": "Welcome to SI-ORE", + "applications-page": "My applications", + "references-page": "My references" + }, + "login": { + "signin": "Sign in", + "signup": "Sign up", + "login": "Login", + "login-placeholder": "Write down the login", + "pwd": "Password", + "pwd-placeholder": "Write down the password", + "pwd-forgotten": "Password forgotten ? " + }, + "validation": { + "obligatoire": "Mandatory", + "facultatif": "Optional", + "invalid-required": "Please fill the field" + }, + "alert": { + "cancel": "Cancel", + "server-error": "A server error occured", + "user-uknown": "Uknown user" + }, + "menu": { + "logout": "Log out", + "applications": "Applications", + "references": "References", + "french": "Français", + "english": "English", + "language": "Language" + } +} diff --git a/ui2/src/main.js b/ui2/src/main.js index 5105dcfb9..9bdb15eec 100644 --- a/ui2/src/main.js +++ b/ui2/src/main.js @@ -27,13 +27,35 @@ Vue.component("vue-fontawesome", FontAwesomeIcon); import "@/style/global.scss"; +// Translation +import { UserPreferencesService } from "./services/UserPreferencesService"; +import VueI18n from "vue-i18n"; +import i18n_en from "@/locales/en.json"; +import i18n_fr from "@/locales/fr.json"; + +Vue.use(VueI18n); +const userPreferencesService = UserPreferencesService.INSTANCE; +export const i18n = new VueI18n({ + locale: userPreferencesService.getUserPrefLocale(), + messages: { + en: i18n_en, + fr: i18n_fr, + }, +}); + // Validation import "vee-validate"; -import "@/services/validation/vee-validation-rules"; +import { required } from "vee-validate/dist/rules"; +import { extend } from "vee-validate"; +// See https://logaretm.github.io/vee-validate/guide/rules.html +// For list of all availables rules -// Translation -import i18n from "@/i18n"; +extend("required", { + ...required, + message: i18n.t("validation.invalid-required"), +}); +// Buefy Vue.use(Buefy, { defaultIconComponent: "vue-fontawesome", defaultIconPack: "fas", diff --git a/ui2/src/services/Events.js b/ui2/src/services/Events.js new file mode 100644 index 000000000..1e2eb5722 --- /dev/null +++ b/ui2/src/services/Events.js @@ -0,0 +1,3 @@ +export const Events = { + LOCALE_CHANGED: "locale_changed", +}; diff --git a/ui2/src/services/UserPreferencesService.js b/ui2/src/services/UserPreferencesService.js index 4bbaffa5f..fa64d350a 100644 --- a/ui2/src/services/UserPreferencesService.js +++ b/ui2/src/services/UserPreferencesService.js @@ -12,6 +12,7 @@ export class UserPreferencesService extends Fetcher { getUserPrefLocale() { const browserLocale = window.navigator.language.substring(0, 2); + return ( localStorage.getItem(LOCAL_STORAGE_LANG) || (Object.values(Locales).includes(browserLocale) && browserLocale) || @@ -21,5 +22,6 @@ export class UserPreferencesService extends Fetcher { setUserPrefLocale(locale) { localStorage.setItem(LOCAL_STORAGE_LANG, locale); + this.$root.$i18n.locale = locale; } } diff --git a/ui2/src/services/validation/vee-validation-rules.js b/ui2/src/services/validation/vee-validation-rules.js index 5233349ff..e69de29bb 100644 --- a/ui2/src/services/validation/vee-validation-rules.js +++ b/ui2/src/services/validation/vee-validation-rules.js @@ -1,10 +0,0 @@ -import i18n from "@/i18n"; -import { required } from "vee-validate/dist/rules"; -import { extend } from "vee-validate"; -// See https://logaretm.github.io/vee-validate/guide/rules.html -// For list of all availables rules - -extend("required", { - ...required, - message: i18n.t("validation.invalid-required"), -}); -- GitLab From dc34ece1a88e0b7ed93ebc5f5cb67a4ec3258d78 Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 20:03:30 +0200 Subject: [PATCH 3/9] Suppression d'un fichier inutile. --- ui2/src/services/validation/vee-validation-rules.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ui2/src/services/validation/vee-validation-rules.js diff --git a/ui2/src/services/validation/vee-validation-rules.js b/ui2/src/services/validation/vee-validation-rules.js deleted file mode 100644 index e69de29bb..000000000 -- GitLab From 32d333ef8186ceef6df1ed9b191aaf18e0d8419a Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 20:23:39 +0200 Subject: [PATCH 4/9] :lipstick: Correction de la taille des pages --- ui2/src/App.vue | 1 + ui2/src/style/_common.scss | 5 +++++ ui2/src/views/LoginView.vue | 12 +++++++++--- ui2/src/views/common/MenuView.vue | 8 +++++--- ui2/src/views/common/PageView.vue | 12 +++++++----- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/ui2/src/App.vue b/ui2/src/App.vue index 5f1fcd5ac..4a8686e86 100644 --- a/ui2/src/App.vue +++ b/ui2/src/App.vue @@ -19,5 +19,6 @@ export default class App extends Vue {} color: $text-default-color; display: flex; flex-direction: column; + height: 100%; } </style> diff --git a/ui2/src/style/_common.scss b/ui2/src/style/_common.scss index f77569bf7..2edd880f7 100644 --- a/ui2/src/style/_common.scss +++ b/ui2/src/style/_common.scss @@ -1,4 +1,9 @@ // A file for common css across the application +html, +body { + height: 100%; +} + .title { color: $primary; &.main-title { diff --git a/ui2/src/views/LoginView.vue b/ui2/src/views/LoginView.vue index 9530262eb..ec78141f7 100644 --- a/ui2/src/views/LoginView.vue +++ b/ui2/src/views/LoginView.vue @@ -1,5 +1,5 @@ <template> - <PageView class="LoginView" :hasMenu="false"> + <PageView class="LoginView"> <h1 class="title main-title">{{ $t("titles.login-page") }}</h1> <div class="card LoginView-card"> <b-tabs type="is-boxed"> @@ -13,13 +13,15 @@ <script> import SignIn from "@/components/login/Signin.vue"; -import { Component, Vue } from "vue-property-decorator"; +import { Component, Provide, Vue } from "vue-property-decorator"; import PageView from "./common/PageView.vue"; @Component({ components: { PageView, SignIn }, }) -export default class LoginView extends Vue {} +export default class LoginView extends Vue { + @Provide() shortMenu = true; +} </script> <style lang="scss"> @@ -37,5 +39,9 @@ export default class LoginView extends Vue {} .LoginView-card { width: 70%; } + + .title { + margin-top: 1.5rem; + } } </style> diff --git a/ui2/src/views/common/MenuView.vue b/ui2/src/views/common/MenuView.vue index fb37e23ea..706a716c5 100644 --- a/ui2/src/views/common/MenuView.vue +++ b/ui2/src/views/common/MenuView.vue @@ -1,6 +1,6 @@ <template> <b-navbar class="menu-view"> - <template #start> + <template #start v-if="!shortMenu"> <b-navbar-item tag="router-link" :to="{ path: '/applications' }"> {{ $t("menu.applications") }} </b-navbar-item> @@ -10,7 +10,7 @@ </template> <template #end> - <b-navbar-item tag="div"> + <b-navbar-item tag="div" v-if="!shortMenu"> <div class="buttons"> <b-button type="is-info" @click="logout" icon-right="sign-out-alt">{{ $t("menu.logout") @@ -35,7 +35,7 @@ </template> <script> -import { Component, Vue } from "vue-property-decorator"; +import { Component, Inject, Vue } from "vue-property-decorator"; import { LoginService } from "@/services/LoginService"; import { UserPreferencesService } from "@/services/UserPreferencesService"; @@ -46,6 +46,8 @@ import { Locales } from "@/utils/LocaleUtils.js"; components: {}, }) export default class MenuView extends Vue { + @Inject() shortMenu; + loginService = LoginService.INSTANCE; userPreferencesService = UserPreferencesService.INSTANCE; diff --git a/ui2/src/views/common/PageView.vue b/ui2/src/views/common/PageView.vue index d5c5ff80f..6568f1d01 100644 --- a/ui2/src/views/common/PageView.vue +++ b/ui2/src/views/common/PageView.vue @@ -1,6 +1,6 @@ <template> - <div> - <MenuView v-if="hasMenu" /> + <div class="PageView"> + <MenuView /> <div class="container PageView-container"> <slot></slot> </div> @@ -9,15 +9,13 @@ <script> import { LoginService } from "@/services/LoginService"; -import { Component, Prop, Vue } from "vue-property-decorator"; +import { Component, Vue } from "vue-property-decorator"; import MenuView from "./MenuView.vue"; @Component({ components: { MenuView }, }) export default class PageView extends Vue { - @Prop({ default: true }) hasMenu; - loginService = LoginService.INSTANCE; created() { @@ -30,6 +28,10 @@ export default class PageView extends Vue { </script> <style lang="scss" scoped> +.PageView { + height: 100%; +} + .PageView-container { width: 100%; } -- GitLab From 0425683954f8493cc1c10e31b04592e3324238ae Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 20:27:55 +0200 Subject: [PATCH 5/9] Change effectivement de langue dans le front. --- ui2/src/services/UserPreferencesService.js | 3 ++- ui2/src/style/_common.scss | 2 ++ ui2/src/views/LoginView.vue | 4 ---- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/ui2/src/services/UserPreferencesService.js b/ui2/src/services/UserPreferencesService.js index fa64d350a..aa563b07b 100644 --- a/ui2/src/services/UserPreferencesService.js +++ b/ui2/src/services/UserPreferencesService.js @@ -1,3 +1,4 @@ +import app from "@/main"; import { Locales } from "@/utils/LocaleUtils"; import { Fetcher } from "./Fetcher"; @@ -22,6 +23,6 @@ export class UserPreferencesService extends Fetcher { setUserPrefLocale(locale) { localStorage.setItem(LOCAL_STORAGE_LANG, locale); - this.$root.$i18n.locale = locale; + app.$i18n.locale = locale; } } diff --git a/ui2/src/style/_common.scss b/ui2/src/style/_common.scss index 2edd880f7..39ad81f12 100644 --- a/ui2/src/style/_common.scss +++ b/ui2/src/style/_common.scss @@ -6,6 +6,8 @@ body { .title { color: $primary; + margin-top: 1.5rem; + &.main-title { display: flex; align-items: center; diff --git a/ui2/src/views/LoginView.vue b/ui2/src/views/LoginView.vue index ec78141f7..acb5c2035 100644 --- a/ui2/src/views/LoginView.vue +++ b/ui2/src/views/LoginView.vue @@ -39,9 +39,5 @@ export default class LoginView extends Vue { .LoginView-card { width: 70%; } - - .title { - margin-top: 1.5rem; - } } </style> -- GitLab From 5ac9745739eaab32133f2990cd26004b035b66f0 Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 20:28:43 +0200 Subject: [PATCH 6/9] Corrige une chaine de traduction --- ui2/src/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui2/src/locales/en.json b/ui2/src/locales/en.json index 8d2325247..80fb0d334 100644 --- a/ui2/src/locales/en.json +++ b/ui2/src/locales/en.json @@ -11,7 +11,7 @@ "login-placeholder": "Write down the login", "pwd": "Password", "pwd-placeholder": "Write down the password", - "pwd-forgotten": "Password forgotten ? " + "pwd-forgotten": "Forgotten password ? " }, "validation": { "obligatoire": "Mandatory", -- GitLab From d18ac397729dbefff8b17e479c3528a01d3218c0 Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Tue, 4 May 2021 20:40:54 +0200 Subject: [PATCH 7/9] =?UTF-8?q?Donne=20la=20locale=20dans=20le=20header=20?= =?UTF-8?q?des=20requ=C3=AAtes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui2/src/services/Fetcher.js | 25 ++++++++++++++++++++++ ui2/src/services/UserPreferencesService.js | 15 +------------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ui2/src/services/Fetcher.js b/ui2/src/services/Fetcher.js index 14117b5bd..36c308f59 100644 --- a/ui2/src/services/Fetcher.js +++ b/ui2/src/services/Fetcher.js @@ -1,5 +1,8 @@ import config from "@/config"; import { HttpStatusCodes } from "@/utils/HttpUtils"; +import { Locales } from "@/utils/LocaleUtils"; + +export const LOCAL_STORAGE_LANG = "lang"; export class Fetcher { async post(url, data) { @@ -10,6 +13,9 @@ export class Fetcher { mode: "cors", credentials: "include", body: formData, + headers: { + "Accept-Language": this.getUserPrefLocale(), + }, }); return this._handleResponse(response); @@ -22,6 +28,9 @@ export class Fetcher { mode: "cors", credentials: "include", body: formData, + headers: { + "Accept-Language": this.getUserPrefLocale(), + }, }); return this._handleResponse(response); @@ -44,6 +53,9 @@ export class Fetcher { method: "GET", mode: "cors", credentials: "include", + headers: { + "Accept-Language": this.getUserPrefLocale(), + }, }); return this._handleResponse(response); @@ -56,6 +68,9 @@ export class Fetcher { mode: "cors", credentials: "include", body: formData, + headers: { + "Accept-Language": this.getUserPrefLocale(), + }, }); if (response.ok) { @@ -92,4 +107,14 @@ export class Fetcher { } return formData; } + + getUserPrefLocale() { + const browserLocale = window.navigator.language.substring(0, 2); + + return ( + localStorage.getItem(LOCAL_STORAGE_LANG) || + (Object.values(Locales).includes(browserLocale) && browserLocale) || + Locales.FRENCH + ); + } } diff --git a/ui2/src/services/UserPreferencesService.js b/ui2/src/services/UserPreferencesService.js index aa563b07b..ffbe8deca 100644 --- a/ui2/src/services/UserPreferencesService.js +++ b/ui2/src/services/UserPreferencesService.js @@ -1,8 +1,5 @@ import app from "@/main"; -import { Locales } from "@/utils/LocaleUtils"; -import { Fetcher } from "./Fetcher"; - -const LOCAL_STORAGE_LANG = "lang"; +import { Fetcher, LOCAL_STORAGE_LANG } from "./Fetcher"; export class UserPreferencesService extends Fetcher { static INSTANCE = new UserPreferencesService(); @@ -11,16 +8,6 @@ export class UserPreferencesService extends Fetcher { super(); } - getUserPrefLocale() { - const browserLocale = window.navigator.language.substring(0, 2); - - return ( - localStorage.getItem(LOCAL_STORAGE_LANG) || - (Object.values(Locales).includes(browserLocale) && browserLocale) || - Locales.FRENCH - ); - } - setUserPrefLocale(locale) { localStorage.setItem(LOCAL_STORAGE_LANG, locale); app.$i18n.locale = locale; -- GitLab From b2fc2c3ee4a99ad16dfd75fdf0408131f83ca911 Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Wed, 5 May 2021 10:44:46 +0200 Subject: [PATCH 8/9] =?UTF-8?q?Supprime=20fichier=20inutilis=C3=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui2/src/services/Events.js | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 ui2/src/services/Events.js diff --git a/ui2/src/services/Events.js b/ui2/src/services/Events.js deleted file mode 100644 index 1e2eb5722..000000000 --- a/ui2/src/services/Events.js +++ /dev/null @@ -1,3 +0,0 @@ -export const Events = { - LOCALE_CHANGED: "locale_changed", -}; -- GitLab From 92ceddbaf07f81b7d14f0bba1ab51306e63fc77e Mon Sep 17 00:00:00 2001 From: Aurore Lecointe <lecointe@codelutin.com> Date: Wed, 5 May 2021 15:16:01 +0200 Subject: [PATCH 9/9] =?UTF-8?q?Changements=20suite=20=C3=A0=20revue=20de?= =?UTF-8?q?=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui2/src/components/login/Signin.vue | 2 +- ui2/src/locales/en.json | 2 +- ui2/src/locales/fr.json | 2 +- ui2/src/main.js | 4 ++-- ui2/src/views/LoginView.vue | 8 +++----- ui2/src/views/common/MenuView.vue | 8 +++----- ui2/src/views/common/PageView.vue | 6 ++++-- 7 files changed, 15 insertions(+), 17 deletions(-) diff --git a/ui2/src/components/login/Signin.vue b/ui2/src/components/login/Signin.vue index 9afed9a4d..92da74c84 100644 --- a/ui2/src/components/login/Signin.vue +++ b/ui2/src/components/login/Signin.vue @@ -95,7 +95,7 @@ export default class SignIn extends Vue { } catch (error) { let message = this.$t("alert.server-error"); if (error.status === HttpStatusCodes.FORBIDDEN) { - message = this.$t("alert.user-uknown"); + message = this.$t("alert.user-unknown"); } this.alertService.toastError(message, error); } diff --git a/ui2/src/locales/en.json b/ui2/src/locales/en.json index 80fb0d334..7ee339960 100644 --- a/ui2/src/locales/en.json +++ b/ui2/src/locales/en.json @@ -21,7 +21,7 @@ "alert": { "cancel": "Cancel", "server-error": "A server error occured", - "user-uknown": "Uknown user" + "user-unknown": "Unknown user" }, "menu": { "logout": "Log out", diff --git a/ui2/src/locales/fr.json b/ui2/src/locales/fr.json index 9941861a8..65bb79fea 100644 --- a/ui2/src/locales/fr.json +++ b/ui2/src/locales/fr.json @@ -21,7 +21,7 @@ "alert": { "cancel": "Annuler", "server-error": "Une erreur serveur est survenue", - "user-uknown": "Identifiants inconnus" + "user-unknown": "Identifiants inconnus" }, "menu": { "logout": "Se déconnecter", diff --git a/ui2/src/main.js b/ui2/src/main.js index 9bdb15eec..45f5d5e83 100644 --- a/ui2/src/main.js +++ b/ui2/src/main.js @@ -47,8 +47,8 @@ export const i18n = new VueI18n({ import "vee-validate"; import { required } from "vee-validate/dist/rules"; import { extend } from "vee-validate"; -// See https://logaretm.github.io/vee-validate/guide/rules.html -// For list of all availables rules +// Ici on surcharge les messages d'erreur de vee-validate. +// Pour plus de règles : https://logaretm.github.io/vee-validate/guide/rules.html extend("required", { ...required, diff --git a/ui2/src/views/LoginView.vue b/ui2/src/views/LoginView.vue index acb5c2035..9530262eb 100644 --- a/ui2/src/views/LoginView.vue +++ b/ui2/src/views/LoginView.vue @@ -1,5 +1,5 @@ <template> - <PageView class="LoginView"> + <PageView class="LoginView" :hasMenu="false"> <h1 class="title main-title">{{ $t("titles.login-page") }}</h1> <div class="card LoginView-card"> <b-tabs type="is-boxed"> @@ -13,15 +13,13 @@ <script> import SignIn from "@/components/login/Signin.vue"; -import { Component, Provide, Vue } from "vue-property-decorator"; +import { Component, Vue } from "vue-property-decorator"; import PageView from "./common/PageView.vue"; @Component({ components: { PageView, SignIn }, }) -export default class LoginView extends Vue { - @Provide() shortMenu = true; -} +export default class LoginView extends Vue {} </script> <style lang="scss"> diff --git a/ui2/src/views/common/MenuView.vue b/ui2/src/views/common/MenuView.vue index 706a716c5..fb37e23ea 100644 --- a/ui2/src/views/common/MenuView.vue +++ b/ui2/src/views/common/MenuView.vue @@ -1,6 +1,6 @@ <template> <b-navbar class="menu-view"> - <template #start v-if="!shortMenu"> + <template #start> <b-navbar-item tag="router-link" :to="{ path: '/applications' }"> {{ $t("menu.applications") }} </b-navbar-item> @@ -10,7 +10,7 @@ </template> <template #end> - <b-navbar-item tag="div" v-if="!shortMenu"> + <b-navbar-item tag="div"> <div class="buttons"> <b-button type="is-info" @click="logout" icon-right="sign-out-alt">{{ $t("menu.logout") @@ -35,7 +35,7 @@ </template> <script> -import { Component, Inject, Vue } from "vue-property-decorator"; +import { Component, Vue } from "vue-property-decorator"; import { LoginService } from "@/services/LoginService"; import { UserPreferencesService } from "@/services/UserPreferencesService"; @@ -46,8 +46,6 @@ import { Locales } from "@/utils/LocaleUtils.js"; components: {}, }) export default class MenuView extends Vue { - @Inject() shortMenu; - loginService = LoginService.INSTANCE; userPreferencesService = UserPreferencesService.INSTANCE; diff --git a/ui2/src/views/common/PageView.vue b/ui2/src/views/common/PageView.vue index 6568f1d01..093f3246d 100644 --- a/ui2/src/views/common/PageView.vue +++ b/ui2/src/views/common/PageView.vue @@ -1,6 +1,6 @@ <template> <div class="PageView"> - <MenuView /> + <MenuView v-if="hasMenu" /> <div class="container PageView-container"> <slot></slot> </div> @@ -9,13 +9,15 @@ <script> import { LoginService } from "@/services/LoginService"; -import { Component, Vue } from "vue-property-decorator"; +import { Component, Prop, Vue } from "vue-property-decorator"; import MenuView from "./MenuView.vue"; @Component({ components: { MenuView }, }) export default class PageView extends Vue { + @Prop({ default: true }) hasMenu; + loginService = LoginService.INSTANCE; created() { -- GitLab