diff --git a/software/src/components/navigationItems.vue b/software/src/components/navigationItems.vue
index e2f3801..28dec75 100644
--- a/software/src/components/navigationItems.vue
+++ b/software/src/components/navigationItems.vue
@@ -59,6 +59,7 @@ const navRail = defineModel("navRail", { type: Boolean })
+
\ No newline at end of file
diff --git a/software/src/data/stores/scoreStore.ts b/software/src/data/stores/scoreStore.ts
new file mode 100644
index 0000000..f2607f2
--- /dev/null
+++ b/software/src/data/stores/scoreStore.ts
@@ -0,0 +1,11 @@
+import { useLocalStorage } from "@vueuse/core";
+import { defineStore } from "pinia";
+
+const useScoreStore = defineStore("scoreStore", {
+ state: () => ({
+ progressGroup0: useLocalStorage("hackmycart/scoreStore/progressGroup0", 0),
+ progressGroup1: useLocalStorage("hackmycart/scoreStore/progressGroup1", 0),
+ progressGroup2: useLocalStorage("hackmycart/scoreStore/progressGroup2", 0),
+ progressGroup3: useLocalStorage("hackmycart/scoreStore/progressGroup3", 0),
+ })
+})
\ No newline at end of file
diff --git a/software/src/locales/de.json b/software/src/locales/de.json
index a37b1aa..d81b3b0 100644
--- a/software/src/locales/de.json
+++ b/software/src/locales/de.json
@@ -9,7 +9,8 @@
"systemAndHelp": "System & Hilfe",
"helpInstructions": "Hilfestellung",
"preferences": "Einstellungen",
- "logout": "Ausloggen"
+ "logout": "Ausloggen",
+ "scoreBoard": "Score Board"
},
"preferences": {
"pageSetup": "Seiteneinstellungen",
@@ -102,5 +103,12 @@
"title": "Datenbank zurücksetzen?",
"description": "Soll die Datenbank des Servers wirklich zurückgesetzt werden? Dies kann nicht rückgänig gemacht werden!"
}
+ },
+ "scoreBoard": {
+ "exerciseGroup0": "Aufgabengruppe 0: Den Shop kennenlernen",
+ "exerciseGroup1": "Aufgabengruppe 1: SQL Injections",
+ "exerciseGroup2": "Aufgabengruppe 2: Broken Access Control",
+ "exerciseGroup3": "Aufgabengruppe 3: Cross-Site Scripting (XSS)",
+ "exercise": "Aufgabe {0}"
}
}
diff --git a/software/src/locales/en.json b/software/src/locales/en.json
index d9076ea..08f25f2 100644
--- a/software/src/locales/en.json
+++ b/software/src/locales/en.json
@@ -9,7 +9,8 @@
"systemAndHelp": "System & Help",
"helpInstructions": "Help instructions",
"preferences": "Preferences",
- "logout": "Logout"
+ "logout": "Logout",
+ "scoreBoard": "Score Board"
},
"preferences": {
"pageSetup": "Page setup",
@@ -102,5 +103,12 @@
"title": "Reset database?",
"description": "Do you really want to reset the server database? This can't be undone!"
}
+ },
+ "scoreBoard": {
+ "exerciseGroup0": "Exercise Group 0: Getting Started",
+ "exerciseGroup1": "Exercise Group 1: SQL Injections",
+ "exerciseGroup2": "Exercise Group 2: Broken Access Control",
+ "exerciseGroup3": "Exercise Group 3: Cross-Site Scripting (XSS)",
+ "exercise": "Exercise {0}"
}
}
diff --git a/software/src/pages/scoreBoardPage/index.vue b/software/src/pages/scoreBoardPage/index.vue
new file mode 100644
index 0000000..b865789
--- /dev/null
+++ b/software/src/pages/scoreBoardPage/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/software/src/pages/scoreBoardPage/scoreCard.vue b/software/src/pages/scoreBoardPage/scoreCard.vue
new file mode 100644
index 0000000..8f4b0b7
--- /dev/null
+++ b/software/src/pages/scoreBoardPage/scoreCard.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ {{ stepNames[step - 1] }}
+
+
+ {{ $t('scoreBoard.exercise', [step]) }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/software/src/router/routes.ts b/software/src/router/routes.ts
index f93693a..c988160 100644
--- a/software/src/router/routes.ts
+++ b/software/src/router/routes.ts
@@ -5,6 +5,7 @@ import ProductsPage from "@/pages/productsPage/index.vue";
import LoginPage from "@/pages/loginPage/index.vue"
import BasketPage from "@/pages/basketPage/index.vue"
import HelpPage from "@/pages/helpPage/index.vue"
+import ScoreBoardPage from "@/pages/scoreBoardPage/index.vue"
const routes = [
{ path: '/', component: ProductsPage },
@@ -13,6 +14,7 @@ const routes = [
{ path: '/preferences', component: PreferencesPage },
{ path: '/login', component: LoginPage },
{ path: '/basket', component: BasketPage },
+ { path: '/scoreboard', component: ScoreBoardPage },
{ path: '/help', component: HelpPage }
]