Skip to content

Commit 9bf1bd9

Browse files
BC-10340: Registration welcome page (#3950)
* add translations and display on page * move code to separate component * use enum instead of number for steps * conditional rendering of h2 subtitle * use enum * adjust margin * change wording * undo changing a file for local debugging * change naming of subtitle to heading, make sure h2 has unique ids across steps * focus heading on initial load and moving forward in stepper * remove on initial mounting * remove focus indicator on heading element * fix translation key * fix typo --------- Co-authored-by: Murat Merdoglu <[email protected]>
1 parent 6c7b9c1 commit 9bf1bd9

File tree

6 files changed

+98
-29
lines changed

6 files changed

+98
-29
lines changed

src/locales/de.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,9 +1529,13 @@ export default {
15291529
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Einwilligungserklärung",
15301530
"pages.registrationExternalMembers.steps.confirmationCode.title": "Bestätigungscode",
15311531
"pages.registrationExternalMembers.steps.registration.title": "Registrierung",
1532-
"pages.registrationExternalMembers.steps.registration.subtitle": "Registrierung erfolgreich",
1533-
"pages.registrationExternalMembers.steps.language.subtitle": "Bitte Sprache wählen",
1534-
"pages.registrationExternalMembers.steps.password.subtitle": "Passwort vergeben",
1532+
"pages.registrationExternalMembers.steps.registration.heading": "Registrierung erfolgreich",
1533+
"pages.registrationExternalMembers.steps.language.heading": "Bitte Sprache wählen",
1534+
"pages.registrationExternalMembers.steps.welcome.heading":
1535+
"Mit der Registrierung in der dBildungscloud im nächsten Schritt werden die {dataProtection} und {tos} akzeptiert. Die {dataProtection} ist jederzeit im Footer verfügbar. Für die Nutzung gilt folgende {tos} (soweit die Schule oder Bildungseinrichtung keine eigene Nutzungsordnung erlassen hat).",
1536+
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Datenschutzerklärung",
1537+
"pages.registrationExternalMembers.steps.welcome.tos": "Nutzungsordnung",
1538+
"pages.registrationExternalMembers.steps.password.heading": "Passwort vergeben",
15351539
"pages.room.boardCard.label.columnBoard": "Bereich {'|'} mehrspaltig",
15361540
"pages.room.boardCard.label.courseBoard": "Kurs-Bereich",
15371541
"pages.room.boardCard.label.listBoard": "Bereich {'|'} einspaltig",
@@ -1648,7 +1652,7 @@ export default {
16481652
"pages.rooms.infoAlert.welcome.teamsAndCourses":
16491653
"Räume werden weiter ausgebaut. Teams und Kurse bleiben bestehen, bis die Inhalte in Räume überführt werden können.",
16501654
"pages.rooms.infoAlert.welcome.furtherInformation":
1651-
"Weitere Information gibt es auf unserer {helpLink}. Wir freuen uns über {feedbackLink} zum aktuellen Stand.",
1655+
"Weitere Information gibt es auf unserer {helpLink}. Wir freuen uns über {feedbackLink} zum aktuellen Stand.", // tada
16521656
"pages.rooms.infoAlert.welcome.furtherInformation.help": "Hilfeseite",
16531657
"pages.rooms.infoAlert.welcome.furtherInformation.feedback": "Rückmeldungen",
16541658
"pages.rooms.leaveRoom.confirmation": 'Raum "{roomName}" wirklich verlassen?',

src/locales/en.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,9 +1507,13 @@ export default {
15071507
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Declaration of consent",
15081508
"pages.registrationExternalMembers.steps.confirmationCode.title": "Confirmation code",
15091509
"pages.registrationExternalMembers.steps.registration.title": "Registration",
1510-
"pages.registrationExternalMembers.steps.registration.subtitle": "Registration successful",
1511-
"pages.registrationExternalMembers.steps.language.subtitle": "Please select your language",
1512-
"pages.registrationExternalMembers.steps.password.subtitle": "Set password",
1510+
"pages.registrationExternalMembers.steps.registration.heading": "Registration successful",
1511+
"pages.registrationExternalMembers.steps.language.heading": "Please select your language",
1512+
"pages.registrationExternalMembers.steps.welcome.heading":
1513+
"By registering in the dBildungscloud in the next step, you accept the {dataProtection} and {tos}. The {dataProtection} are always available in the footer. The following {tos} apply for use (unless your school or educational institution has issued its own terms of use).",
1514+
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Privacy policy",
1515+
"pages.registrationExternalMembers.steps.welcome.tos": "Terms of use",
1516+
"pages.registrationExternalMembers.steps.password.heading": "Set password",
15131517
"pages.room.boardCard.label.columnBoard": "Column Board",
15141518
"pages.room.boardCard.label.courseBoard": "Course Board",
15151519
"pages.room.boardCard.label.listBoard": "List Board",

src/locales/es.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,9 +1540,13 @@ export default {
15401540
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Declaración de consentimiento",
15411541
"pages.registrationExternalMembers.steps.confirmationCode.title": "Código de confirmación",
15421542
"pages.registrationExternalMembers.steps.registration.title": "Registro",
1543-
"pages.registrationExternalMembers.steps.registration.subtitle": "Registro exitoso",
1544-
"pages.registrationExternalMembers.steps.language.subtitle": "Por favor seleccione su idioma",
1545-
"pages.registrationExternalMembers.steps.password.subtitle": "Establecer contraseña",
1543+
"pages.registrationExternalMembers.steps.registration.heading": "Registro exitoso",
1544+
"pages.registrationExternalMembers.steps.language.heading": "Por favor seleccione su idioma",
1545+
"pages.registrationExternalMembers.steps.welcome.heading":
1546+
"Al registrarse en dBildungscloud en el siguiente paso, acepta la {dataProtection} y los {tos}. La {dataProtection} está siempre disponible en el pie de página. Para el uso, se aplican los siguientes {tos} (a menos que su escuela o institución educativa haya establecido sus propias condiciones de uso).",
1547+
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Política de privacidad",
1548+
"pages.registrationExternalMembers.steps.welcome.tos": "Condiciones de uso",
1549+
"pages.registrationExternalMembers.steps.password.heading": "Establecer contraseña",
15461550
"pages.room.boardCard.label.columnBoard": "Tablero de columna",
15471551
"pages.room.boardCard.label.courseBoard": "Junta del curso",
15481552
"pages.room.boardCard.label.listBoard": "Tablero de listas",

src/locales/uk.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,9 +1516,13 @@ export default {
15161516
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Декларація про згоду",
15171517
"pages.registrationExternalMembers.steps.confirmationCode.title": "Код підтвердження",
15181518
"pages.registrationExternalMembers.steps.registration.title": "Реєстрація",
1519-
"pages.registrationExternalMembers.steps.registration.subtitle": "Реєстрація успішна",
1520-
"pages.registrationExternalMembers.steps.language.subtitle": "Будь ласка, виберіть свою мову",
1521-
"pages.registrationExternalMembers.steps.password.subtitle": "Встановіть пароль",
1519+
"pages.registrationExternalMembers.steps.registration.heading": "Реєстрація успішна",
1520+
"pages.registrationExternalMembers.steps.language.heading": "Будь ласка, виберіть свою мову",
1521+
"pages.registrationExternalMembers.steps.welcome.heading":
1522+
"Реєструючись у dBildungscloud на наступному кроці, ви приймаєте {dataProtection} та {tos}. {dataProtection} завжди доступні у футері. Для використання діють наступні {tos} (якщо ваша школа або освітній заклад не встановили власні умови використання).",
1523+
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Політика конфіденційності",
1524+
"pages.registrationExternalMembers.steps.welcome.tos": "Умови використання",
1525+
"pages.registrationExternalMembers.steps.password.heading": "Встановіть пароль",
15221526
"pages.room.boardCard.label.columnBoard": "Колонна дошка",
15231527
"pages.room.boardCard.label.courseBoard": "Дошка оголошень",
15241528
"pages.room.boardCard.label.listBoard": "Список дошки оголошень",

src/modules/feature/room/registration/Registration.vue

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
<VStepperWindow>
1111
<template v-for="step in steps" :key="step.value">
1212
<VStepperWindowItem :value="step.value">
13-
<h2 id="language-heading" class="mb-10">{{ step.subtitle }}</h2>
13+
<h2 :id="`step-heading-${step.id}`" class="mb-4 heading" :tabindex="-1">{{ step.heading }}</h2>
1414
<LanguageSelection
15-
v-if="step.value === 1"
15+
v-if="step.value === RegistrationSteps.LanguageSelection"
1616
:selected-language="lang"
1717
@update:selected-language="onUpdateSelectedLanguage"
1818
/>
19+
<Welcome v-else-if="step.value === RegistrationSteps.Welcome" />
1920
</VStepperWindowItem>
2021
</template>
2122
</VStepperWindow>
@@ -26,7 +27,7 @@
2627
</VBtn>
2728
</template>
2829
<template #next>
29-
<VSpacer v-if="stepValue === 1" />
30+
<VSpacer v-if="stepValue < steps.length" />
3031
<VBtn
3132
variant="flat"
3233
color="primary"
@@ -44,12 +45,22 @@
4445

4546
<script setup lang="ts">
4647
import LanguageSelection from "./steps/LanguageSelection.vue";
48+
import Welcome from "./steps/Welcome.vue";
4749
import { LanguageType } from "@/serverApi/v3";
4850
import { useRegistration } from "@data-room";
4951
import { computed, onMounted, ref } from "vue";
5052
import { useI18n } from "vue-i18n";
5153
import { useDisplay } from "vuetify";
5254
55+
enum RegistrationSteps {
56+
LanguageSelection = 1,
57+
Welcome,
58+
PasswordSetup,
59+
DeclarationOfConsent,
60+
ConfirmationCode,
61+
Registration,
62+
}
63+
5364
const { t } = useI18n();
5465
const { xs, sm } = useDisplay();
5566
const mobileView = computed(() => xs.value || sm.value);
@@ -61,10 +72,16 @@ const onUpdateSelectedLanguage = (value: string) => {
6172
setSelectedLanguage(value as LanguageType);
6273
};
6374
64-
const stepValue = ref(1);
75+
const stepValue = ref(RegistrationSteps.LanguageSelection);
76+
77+
const focusHeading = () => {
78+
const headingElement = document.getElementById(`step-heading-${stepValue.value - 1}`);
79+
headingElement?.focus();
80+
};
6581
66-
const onStepperClick = (value: number) => {
82+
const onStepperClick = (value: RegistrationSteps) => {
6783
stepValue.value = value;
84+
focusHeading();
6885
};
6986
7087
onMounted(() => {
@@ -73,30 +90,45 @@ onMounted(() => {
7390
7491
const steps = computed(() => [
7592
{
76-
value: 1,
93+
value: RegistrationSteps.LanguageSelection,
7794
title: t("common.labels.language"),
78-
subtitle: t("pages.registrationExternalMembers.steps.language.subtitle"),
95+
heading: t("pages.registrationExternalMembers.steps.language.heading"),
96+
id: "language",
97+
},
98+
{
99+
value: RegistrationSteps.Welcome,
100+
title: t("common.labels.welcome"),
101+
heading: t("common.labels.welcome"),
102+
id: "welcome",
79103
},
80-
{ value: 2, title: t("common.labels.welcome"), subtitle: t("common.labels.welcome") },
81104
{
82-
value: 3,
105+
value: RegistrationSteps.PasswordSetup,
83106
title: t("common.labels.password"),
84-
subtitle: t("pages.registrationExternalMembers.steps.password.subtitle"),
107+
heading: t("pages.registrationExternalMembers.steps.password.heading"),
108+
id: "password",
85109
},
86110
{
87-
value: 4,
111+
value: RegistrationSteps.DeclarationOfConsent,
88112
title: t("pages.registrationExternalMembers.steps.declarationOfConsent.title"),
89-
subtitle: t("pages.registrationExternalMembers.steps.declarationOfConsent.title"),
113+
heading: t("pages.registrationExternalMembers.steps.declarationOfConsent.heading"),
114+
id: "consent",
90115
},
91116
{
92-
value: 5,
117+
value: RegistrationSteps.ConfirmationCode,
93118
title: t("pages.registrationExternalMembers.steps.confirmationCode.title"),
94-
subtitle: t("pages.registrationExternalMembers.steps.confirmationCode.title"),
119+
heading: t("pages.registrationExternalMembers.steps.confirmationCode.heading"),
120+
id: "confirmation",
95121
},
96122
{
97-
value: 6,
123+
value: RegistrationSteps.Registration,
98124
title: t("pages.registrationExternalMembers.steps.registration.title"),
99-
subtitle: t("pages.registrationExternalMembers.steps.registration.subtitle"),
125+
heading: t("pages.registrationExternalMembers.steps.registration.heading"),
126+
id: "registration",
100127
},
101128
]);
102129
</script>
130+
<style scoped>
131+
.heading:focus {
132+
outline: none;
133+
}
134+
</style>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<template>
2+
<div class="mb-10">
3+
<i18n-t keypath="pages.registrationExternalMembers.steps.welcome.heading" scope="global">
4+
<template #dataProtection>
5+
<strong>
6+
{{ t("pages.registrationExternalMembers.steps.welcome.dataProtection") }}
7+
</strong>
8+
</template>
9+
<template #tos>
10+
<strong>
11+
{{ t("pages.registrationExternalMembers.steps.welcome.tos") }}
12+
</strong>
13+
</template>
14+
</i18n-t>
15+
</div>
16+
</template>
17+
18+
<script setup lang="ts">
19+
import { useI18n } from "vue-i18n";
20+
const { t } = useI18n();
21+
</script>

0 commit comments

Comments
 (0)