diff --git a/.github/workflows/reusable-dev-deployment.yml b/.github/workflows/reusable-dev-deployment.yml
index 9b51534746..ac55f2ac8f 100644
--- a/.github/workflows/reusable-dev-deployment.yml
+++ b/.github/workflows/reusable-dev-deployment.yml
@@ -60,7 +60,7 @@ jobs:
|🔨 Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) |
|🔍 Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) |
comment_tag: feature-branch-deployment-status
-
+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
ref: ${{ inputs.sha }}
@@ -87,6 +87,8 @@ jobs:
--set caddy.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy' \
--set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \
--set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \
+ --set newsLink='https://ecamp3.ch/blog' \
+ --set helpLink='https://ecamp3.ch/faq' \
--set domain=${{ inputs.name }}.${{ vars.DOMAIN }} \
--set ingress.basicAuth.enabled=${{ vars.BASIC_AUTH_ENABLED || false }} \
--set ingress.basicAuth.username=${{ secrets.BASIC_AUTH_USERNAME }} \
diff --git a/.github/workflows/reusable-stage-prod-deployment.yml b/.github/workflows/reusable-stage-prod-deployment.yml
index ff8ef1ebaf..f79cc1b32e 100644
--- a/.github/workflows/reusable-stage-prod-deployment.yml
+++ b/.github/workflows/reusable-stage-prod-deployment.yml
@@ -46,6 +46,8 @@ jobs:
--set caddy.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy' \
--set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \
--set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \
+ --set newsLink='https://ecamp3.ch/blog' \
+ --set helpLink='https://ecamp3.ch/faq' \
--set domain=${{ env.domain }} \
--set ingress.basicAuth.enabled=${{ vars.BASIC_AUTH_ENABLED || false }} \
--set ingress.basicAuth.username=${{ secrets.BASIC_AUTH_USERNAME }} \
diff --git a/.helm/deploy-to-cluster.sh b/.helm/deploy-to-cluster.sh
index 13f571f63d..9e2683457e 100755
--- a/.helm/deploy-to-cluster.sh
+++ b/.helm/deploy-to-cluster.sh
@@ -35,6 +35,8 @@ app_jwt_private_key=$(echo -n "$app_jwt_passphrase" | openssl pkey -in "$SCRIPT_
for i in 1; do
values="$values --set imageTag=${version}"
values="$values --set termsOfServiceLinkTemplate=https://ecamp3.ch/{lang}/tos"
+ values="$values --set newsLink=https://ecamp3.ch/blog"
+ values="$values --set helpLink=https://ecamp3.ch/faq"
values="$values --set domain=$instance_name-"$i".$domain"
values="$values --set mail.dummyEnabled=true"
values="$values --set ingress.basicAuth.enabled=$BASIC_AUTH_ENABLED"
@@ -95,7 +97,7 @@ for i in 1; do
values="$values --set $imagespec.image.pullPolicy=$pull_policy"
values="$values --set $imagespec.image.repository=docker.io/${docker_hub_account}/ecamp3-api-$imagespec"
done
-
+
values="$values --set postgresql.dbBackupRestoreImage.pullPolicy=$pull_policy"
values="$values --set postgresql.dbBackupRestoreImage.repository=docker.io/${docker_hub_account}/ecamp3-db-backup-restore"
diff --git a/.helm/ecamp3/templates/frontend_configmap.yaml b/.helm/ecamp3/templates/frontend_configmap.yaml
index 614a01c8ac..4e18b26ed7 100644
--- a/.helm/ecamp3/templates/frontend_configmap.yaml
+++ b/.helm/ecamp3/templates/frontend_configmap.yaml
@@ -21,6 +21,8 @@ data:
VERSION: '{{ .Values.deployedVersion }}',
VERSION_LINK_TEMPLATE: '{{ .Values.versionLinkTemplate }}',
TERMS_OF_SERVICE_LINK_TEMPLATE: '{{ .Values.termsOfServiceLinkTemplate }}',
+ NEWS_LINK: '{{ .Values.newsLink }}',
+ HELP_LINK: '{{ .Values.helpLink }}',
{{- if .Values.recaptcha.siteKey }}
RECAPTCHA_SITE_KEY: '{{ .Values.recaptcha.siteKey }}',
{{- else }}
diff --git a/.helm/ecamp3/values.yaml b/.helm/ecamp3/values.yaml
index 74637bc9e7..45d2996f28 100644
--- a/.helm/ecamp3/values.yaml
+++ b/.helm/ecamp3/values.yaml
@@ -9,6 +9,8 @@ domain:
deployedVersion: "devel"
versionLinkTemplate: 'https://github.com/ecamp/ecamp3/commit/{version}'
termsOfServiceLinkTemplate: # 'https://ecamp3.ch/{lang}/tos'
+newsLink: # 'https://ecamp3.ch/blog'
+helpLink: # 'https://ecamp3.ch/faq'
# enable/disable feature across the complete deployment
featureToggle:
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 337e40a211..afea99c0f8 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -90,27 +90,11 @@ export default {
width: 100%;
}
-.user-nav {
- border-top-left-radius: 0 !important;
- border-top-right-radius: 0 !important;
-}
-
.v-btn--open {
background: #b0bec5 !important;
color: rgba(0, 0, 0, 0.87) !important;
}
-.ec-usermenu {
- border-top-left-radius: 0 !important;
- border-top-right-radius: 0 !important;
- right: 0;
- left: inherit !important;
-
- .v-list {
- border-radius: 0;
- }
-}
-
.v-app-bar .v-toolbar__content {
padding-left: 0;
padding-right: 0;
diff --git a/frontend/src/components/layout/AuthContainer.vue b/frontend/src/components/layout/AuthContainer.vue
index 8c5a2a1a8a..3a47f90c4c 100644
--- a/frontend/src/components/layout/AuthContainer.vue
+++ b/frontend/src/components/layout/AuthContainer.vue
@@ -2,10 +2,7 @@
diff --git a/frontend/src/components/navigation/UserMeta.vue b/frontend/src/components/navigation/UserMeta.vue
index 8a50d20089..e936cddf25 100644
--- a/frontend/src/components/navigation/UserMeta.vue
+++ b/frontend/src/components/navigation/UserMeta.vue
@@ -5,8 +5,9 @@
offset-y
dark
right
+ rounded
:content-class="
- ['ec-usermenu', $vuetify.breakpoint.xsOnly && 'rounded-lg mt-2'].join(' ')
+ ['ec-usermenu my-4', $vuetify.breakpoint.xsOnly && 'rounded-lg mt-2'].join(' ')
"
transition="slide-y-transition"
:close-on-content-click="false"
@@ -41,7 +42,7 @@
-
+
mdi-format-list-bulleted-triangle
{{ $tc('components.navigation.userMeta.myCamps') }}
+
+ mdi-help-circle
+ {{ $tc('global.navigation.help') }}
+
+ mdi-open-in-new
+
+
+ mdi-script-text-outline
+ {{ $tc('global.navigation.news') }}
+
+ mdi-open-in-new
+
+
import UserAvatar from '../user/UserAvatar.vue'
import { mapGetters } from 'vuex'
+import { getEnv } from '@/environment.js'
export default {
name: 'UserMeta',
@@ -95,6 +115,12 @@ export default {
}
},
computed: {
+ newsLink() {
+ return getEnv().NEWS_LINK
+ },
+ helpLink() {
+ return getEnv().HELP_LINK
+ },
...mapGetters({
authUser: 'getLoggedInUser',
}),
diff --git a/frontend/src/environment.js b/frontend/src/environment.js
index 0b727969bb..a299a1477e 100644
--- a/frontend/src/environment.js
+++ b/frontend/src/environment.js
@@ -18,6 +18,8 @@ export function getEnv() {
'https://github.com/ecamp/ecamp3/commit/{version}',
TERMS_OF_SERVICE_LINK_TEMPLATE:
env.TERMS_OF_SERVICE_LINK_TEMPLATE ?? 'https://ecamp3.ch/{lang}/tos',
+ NEWS_LINK: env.NEWS_LINK ?? 'https://ecamp3.ch/blog',
+ HELP_LINK: env.HELP_LINK ?? 'https://ecamp3.ch/faq',
FEATURE_DEVELOPER: (env.VITE_FEATURE_DEVELOPER ?? 'true') === 'true',
LOGIN_INFO_TEXT_KEY: env.VITE_LOGIN_INFO_TEXT_KEY ?? 'dev',
}
diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json
index e37a50c8ea..6df666e6bd 100644
--- a/frontend/src/locales/de.json
+++ b/frontend/src/locales/de.json
@@ -463,7 +463,9 @@
"navigation": {
"admin": {
"title": "Admin"
- }
+ },
+ "help": "Hilfe",
+ "news": "News"
},
"serverError": {
"409": "Uuuups... Diese Aktion hat zu einem Fehler auf dem Server geführt.",
diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json
index 19a15dbb18..c73cdbf7bb 100644
--- a/frontend/src/locales/en.json
+++ b/frontend/src/locales/en.json
@@ -463,7 +463,9 @@
"navigation": {
"admin": {
"title": "Admin"
- }
+ },
+ "help": "Help",
+ "news": "News"
},
"serverError": {
"409": "Uuuups... This action caused an server-side error.",
diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json
index 2c9fb9bfa3..6f5fe38e5e 100644
--- a/frontend/src/locales/fr.json
+++ b/frontend/src/locales/fr.json
@@ -446,7 +446,9 @@
"navigation": {
"admin": {
"title": "Admin"
- }
+ },
+ "help": "Aide",
+ "news": "Actualités"
},
"serverError": {
"409": "Oooops... Cette action a provoqué une erreur côté serveur.",
diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json
index a7f7d63eef..3691364aa5 100644
--- a/frontend/src/locales/it.json
+++ b/frontend/src/locales/it.json
@@ -446,7 +446,9 @@
"navigation": {
"admin": {
"title": "Admin"
- }
+ },
+ "help": "Aiuto",
+ "news": "Notizie"
},
"serverError": {
"409": "Oooops... Questa azione ha causato un errore sul lato server.",
diff --git a/frontend/src/locales/rm.json b/frontend/src/locales/rm.json
index c8eab54d10..b42a15107f 100644
--- a/frontend/src/locales/rm.json
+++ b/frontend/src/locales/rm.json
@@ -410,7 +410,9 @@
"navigation": {
"admin": {
"title": "Admin"
- }
+ },
+ "help": "Agid",
+ "news": "Noviteds"
},
"serverError": {
"409": "Uuuups... Questa acziun ha chaschunà ina errur sin il server."
diff --git a/frontend/src/router.js b/frontend/src/router.js
index 1358d671eb..addcbb33d3 100644
--- a/frontend/src/router.js
+++ b/frontend/src/router.js
@@ -7,6 +7,7 @@ import { getEnv } from '@/environment.js'
Vue.use(Router)
+const NavigationAuth = () => import('./views/auth/NavigationAuth.vue')
const NavigationDefault = () => import('./views/NavigationDefault.vue')
const NavigationCamp = () => import('./views/camp/navigation/NavigationCamp.vue')
const GenericPage = () => import('./components/generic/GenericPage.vue')
@@ -43,7 +44,7 @@ export default new Router({
path: '/register',
name: 'register',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/Register.vue'),
},
},
@@ -51,7 +52,7 @@ export default new Router({
path: '/register-done',
name: 'register-done',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/RegisterDone.vue'),
},
},
@@ -59,7 +60,7 @@ export default new Router({
path: '/reset-password',
name: 'resetPasswordRequest',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/ResetPasswordRequest.vue'),
},
},
@@ -67,7 +68,7 @@ export default new Router({
path: '/reset-password/:id',
name: 'resetPassword',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/ResetPassword.vue'),
},
props: {
@@ -82,7 +83,7 @@ export default new Router({
path: '/activate/:userId/:activationKey',
name: 'activate',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/Activate.vue'),
},
props: {
@@ -98,7 +99,7 @@ export default new Router({
path: '/login',
name: 'login',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/Login.vue'),
},
},
@@ -106,7 +107,7 @@ export default new Router({
path: '/loginCallback',
name: 'loginCallback',
components: {
- navigation: NavigationDefault,
+ navigation: NavigationAuth,
default: () => import('./views/auth/LoginCallback.vue'),
},
},
diff --git a/frontend/src/views/NavigationDefault.vue b/frontend/src/views/NavigationDefault.vue
index 017e0771c9..20fa38c2da 100644
--- a/frontend/src/views/NavigationDefault.vue
+++ b/frontend/src/views/NavigationDefault.vue
@@ -6,15 +6,22 @@
color="blue-grey darken-4"
dark
>
-
+
-
+
+
+ {{ $tc('global.navigation.help') }}
+ mdi-open-in-new
+
+
+
diff --git a/frontend/src/views/Profile.vue b/frontend/src/views/Profile.vue
index 47927ae657..8b32d545ee 100644
--- a/frontend/src/views/Profile.vue
+++ b/frontend/src/views/Profile.vue
@@ -4,10 +4,13 @@
v-if="user"
max-width="800"
:title="
- $tc('views.profile.profile') + ': ' + (user._meta.loading ? '' : user.displayName)
+ $tc('views.profile.profile') + (user._meta.loading ? '' : ': ' + user.displayName)
"
toolbar
>
+
+
+
+
+
+
+
+
+ mdi-script-text-outline
+ {{ $tc('global.navigation.news') }}
+
+
+
+ mdi-help
+ {{ $tc('global.navigation.help') }}
+
+
+
+ mdi-help
+ {{ $tc('global.navigation.help') }}
+
+
+
+
+
+
diff --git a/frontend/src/views/camp/navigation/desktop/NavTopbar.vue b/frontend/src/views/camp/navigation/desktop/NavTopbar.vue
index 5de166a951..bf3e9dfe56 100644
--- a/frontend/src/views/camp/navigation/desktop/NavTopbar.vue
+++ b/frontend/src/views/camp/navigation/desktop/NavTopbar.vue
@@ -36,7 +36,13 @@
-
+
+
+ {{ $tc('global.navigation.help') }}
+ mdi-open-in-new
+
+
+
@@ -46,6 +52,7 @@ import Logo from '@/components/navigation/Logo.vue'
import { campRoute, materialListRoute } from '@/router.js'
import { mapGetters } from 'vuex'
import { campRoleMixin } from '@/mixins/campRoleMixin.js'
+import { getEnv } from '@/environment.js'
export default {
name: 'NavTopbar',
@@ -63,6 +70,9 @@ export default {
}
},
computed: {
+ helpLink() {
+ return getEnv().HELP_LINK
+ },
...mapGetters({
user: 'getLoggedInUser',
}),
diff --git a/frontend/src/views/camp/navigation/mobile/NavSidebar.vue b/frontend/src/views/camp/navigation/mobile/NavSidebar.vue
index f4eb86d47d..85be95631b 100644
--- a/frontend/src/views/camp/navigation/mobile/NavSidebar.vue
+++ b/frontend/src/views/camp/navigation/mobile/NavSidebar.vue
@@ -77,6 +77,23 @@
:to="adminRoute(camp(), 'print')"
/>
+
+
+
+
+
+
+