From 22579ba9b298e96a5ce00250648cbc62fb25e687 Mon Sep 17 00:00:00 2001 From: Manuel Meister Date: Sun, 4 Feb 2024 16:39:49 +0100 Subject: [PATCH 1/3] Add help/news to navigation --- .../ecamp3/templates/frontend_configmap.yaml | 2 + frontend/src/App.vue | 16 ---- .../src/components/layout/AuthContainer.vue | 8 +- .../src/components/navigation/UserMeta.vue | 30 +++++++- frontend/src/environment.js | 2 + frontend/src/locales/de.json | 4 +- frontend/src/locales/en.json | 4 +- frontend/src/locales/fr.json | 4 +- frontend/src/locales/it.json | 4 +- frontend/src/locales/rm.json | 4 +- frontend/src/router.js | 15 ++-- frontend/src/views/NavigationDefault.vue | 16 +++- frontend/src/views/Profile.vue | 5 +- frontend/src/views/auth/NavigationAuth.vue | 74 +++++++++++++++++++ .../camp/navigation/desktop/NavTopbar.vue | 12 ++- .../camp/navigation/mobile/NavSidebar.vue | 19 +++++ 16 files changed, 181 insertions(+), 38 deletions(-) create mode 100644 frontend/src/views/auth/NavigationAuth.vue 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/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 ea49c354b3..7c3625f61a 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..d3d65f3644 100644 --- a/frontend/src/views/camp/navigation/mobile/NavSidebar.vue +++ b/frontend/src/views/camp/navigation/mobile/NavSidebar.vue @@ -33,6 +33,18 @@ icon="mdi-format-list-bulleted-triangle" :to="{ name: 'camps', query: { isDetail: true } }" /> + + @@ -100,6 +112,7 @@ import { campRoute, adminRoute } from '@/router' import UserAvatar from '@/components/user/UserAvatar.vue' import SidebarListItem from '@/components/layout/SidebarListItem.vue' import { mapGetters } from 'vuex' +import { getEnv } from '@/environment.js' export default { name: 'NavSidebar', @@ -112,6 +125,12 @@ export default { camp: { type: Function, required: true }, }, computed: { + newsLink() { + return getEnv().NEWS_LINK + }, + helpLink() { + return getEnv().HELP_LINK + }, ...mapGetters({ user: 'getLoggedInUser', }), From 8bfdbee9f7a52b64d21a05e669240b40e85a4976 Mon Sep 17 00:00:00 2001 From: Manuel Meister Date: Sun, 4 Feb 2024 16:57:25 +0100 Subject: [PATCH 2/3] Add help/news links to deployment environment variables --- .github/workflows/reusable-dev-deployment.yml | 4 +++- .github/workflows/reusable-stage-prod-deployment.yml | 2 ++ .helm/deploy-to-cluster.sh | 4 +++- .helm/ecamp3/values.yaml | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-dev-deployment.yml b/.github/workflows/reusable-dev-deployment.yml index aee99e9045..e9e037e8a4 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 c1de8a81b1..4c0a97ee7d 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/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: From 30ac1fde4f2eee1c8f26bdc9a51a400542491437 Mon Sep 17 00:00:00 2001 From: Manuel Meister Date: Tue, 26 Mar 2024 19:21:31 +0100 Subject: [PATCH 3/3] Move meta links to bottom --- .../camp/navigation/mobile/NavSidebar.vue | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/frontend/src/views/camp/navigation/mobile/NavSidebar.vue b/frontend/src/views/camp/navigation/mobile/NavSidebar.vue index d3d65f3644..85be95631b 100644 --- a/frontend/src/views/camp/navigation/mobile/NavSidebar.vue +++ b/frontend/src/views/camp/navigation/mobile/NavSidebar.vue @@ -33,18 +33,6 @@ icon="mdi-format-list-bulleted-triangle" :to="{ name: 'camps', query: { isDetail: true } }" /> - - @@ -89,6 +77,23 @@ :to="adminRoute(camp(), 'print')" /> + + + + + + +