mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
Implement flexible page footer links
This commit is contained in:
parent
d7b888f7b2
commit
1bd4af6fd3
@ -1,23 +1,51 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="footer" class="ds-footer">
|
<div id="footer" class="ds-footer">
|
||||||
<a :href="links.ORGANIZATION" target="_blank" v-html="$t('site.made')"></a>
|
<!-- made with ❤️ -->
|
||||||
|
<a :href="links.ORGANIZATION" target="_blank">
|
||||||
|
{{ $t('site.made') }}
|
||||||
|
</a>
|
||||||
<span>-</span>
|
<span>-</span>
|
||||||
<nuxt-link to="/imprint">
|
<!-- imprint -->
|
||||||
|
<nuxt-link v-if="noLinkDefined(links.IMPRINT)" to="/imprint">
|
||||||
{{ $t('site.imprint') }}
|
{{ $t('site.imprint') }}
|
||||||
</nuxt-link>
|
</nuxt-link>
|
||||||
|
<a v-else :href="links.IMPRINT" target="_blank">
|
||||||
|
{{ $t('site.imprint') }}
|
||||||
|
</a>
|
||||||
<span>-</span>
|
<span>-</span>
|
||||||
<nuxt-link to="/terms-and-conditions">{{ $t('site.termsAndConditions') }}</nuxt-link>
|
<!-- terms and conditions -->
|
||||||
|
<nuxt-link v-if="noLinkDefined(links.TERMS_AND_CONDITIONS)" to="/terms-and-conditions">
|
||||||
|
{{ $t('site.termsAndConditions') }}
|
||||||
|
</nuxt-link>
|
||||||
|
<a v-else :href="links.TERMS_AND_CONDITIONS" target="_blank">
|
||||||
|
{{ $t('site.termsAndConditions') }}
|
||||||
|
</a>
|
||||||
<span>-</span>
|
<span>-</span>
|
||||||
<nuxt-link to="/code-of-conduct">{{ $t('site.code-of-conduct') }}</nuxt-link>
|
<!-- code of conduct -->
|
||||||
|
<nuxt-link v-if="noLinkDefined(links.CODE_OF_CONDUCT)" to="/code-of-conduct">
|
||||||
|
{{ $t('site.code-of-conduct') }}
|
||||||
|
</nuxt-link>
|
||||||
|
<a v-else :href="links.CODE_OF_CONDUCT" target="_blank">
|
||||||
|
{{ $t('site.code-of-conduct') }}
|
||||||
|
</a>
|
||||||
<span>-</span>
|
<span>-</span>
|
||||||
<nuxt-link to="/data-privacy">
|
<!-- data privacy -->
|
||||||
|
<nuxt-link v-if="noLinkDefined(links.DATA_PRIVACY)" to="/data-privacy">
|
||||||
{{ $t('site.data-privacy') }}
|
{{ $t('site.data-privacy') }}
|
||||||
</nuxt-link>
|
</nuxt-link>
|
||||||
|
<a v-else :href="links.DATA_PRIVACY" target="_blank">
|
||||||
|
{{ $t('site.data-privacy') }}
|
||||||
|
</a>
|
||||||
<span>-</span>
|
<span>-</span>
|
||||||
<a :href="links.FAQ" target="_blank">
|
<!-- faq -->
|
||||||
|
<nuxt-link v-if="noLinkDefined(links.FAQ)" to="/faq">
|
||||||
|
{{ $t('site.faq') }}
|
||||||
|
</nuxt-link>
|
||||||
|
<a v-else :href="links.FAQ" target="_blank">
|
||||||
{{ $t('site.faq') }}
|
{{ $t('site.faq') }}
|
||||||
</a>
|
</a>
|
||||||
<span>-</span>
|
<span>-</span>
|
||||||
|
<!-- version -->
|
||||||
<a
|
<a
|
||||||
href="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/CHANGELOG.md"
|
href="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/CHANGELOG.md"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@ -29,10 +57,16 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import links from '~/constants/links.js'
|
import links from '~/constants/links.js'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return { links, version: `v${this.$env.VERSION}` }
|
return { links, version: `v${this.$env.VERSION}` }
|
||||||
},
|
},
|
||||||
|
methods: {
|
||||||
|
noLinkDefined(link) {
|
||||||
|
return !link || link.length === 0
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -771,7 +771,7 @@
|
|||||||
"faq": "FAQ",
|
"faq": "FAQ",
|
||||||
"germany": "Deutschland",
|
"germany": "Deutschland",
|
||||||
"imprint": "Impressum",
|
"imprint": "Impressum",
|
||||||
"made": "Mit ❤ gemacht",
|
"made": "Mit ❤️ gemacht",
|
||||||
"register": "Registernummer",
|
"register": "Registernummer",
|
||||||
"responsible": "Verantwortlich für Inhalte dieser Seite (§ 55 Abs. 2 RStV)",
|
"responsible": "Verantwortlich für Inhalte dieser Seite (§ 55 Abs. 2 RStV)",
|
||||||
"taxident": "Umsatzsteuer-Identifikationsnummer gemäß § 27 a Umsatzsteuergesetz (Deutschland)",
|
"taxident": "Umsatzsteuer-Identifikationsnummer gemäß § 27 a Umsatzsteuergesetz (Deutschland)",
|
||||||
|
|||||||
@ -771,7 +771,7 @@
|
|||||||
"faq": "FAQ",
|
"faq": "FAQ",
|
||||||
"germany": "Germany",
|
"germany": "Germany",
|
||||||
"imprint": "Imprint",
|
"imprint": "Imprint",
|
||||||
"made": "Made with ❤",
|
"made": "Made with ❤️",
|
||||||
"register": "Registry number",
|
"register": "Registry number",
|
||||||
"responsible": "responsible for contents of this page (§ 55 Abs. 2 RStV)",
|
"responsible": "responsible for contents of this page (§ 55 Abs. 2 RStV)",
|
||||||
"taxident": "USt-ID. according to §27a of the German Sales Tax Law:",
|
"taxident": "USt-ID. according to §27a of the German Sales Tax Law:",
|
||||||
|
|||||||
@ -694,7 +694,7 @@
|
|||||||
"faq": "Preguntas más frecuentes",
|
"faq": "Preguntas más frecuentes",
|
||||||
"germany": "Alemania",
|
"germany": "Alemania",
|
||||||
"imprint": "Pie de imprenta",
|
"imprint": "Pie de imprenta",
|
||||||
"made": "Hecho con ❤",
|
"made": "Hecho con ❤️",
|
||||||
"register": "Número de registro",
|
"register": "Número de registro",
|
||||||
"responsible": "Responsable según § 55 Abs. 2 RStV (Alemania)",
|
"responsible": "Responsable según § 55 Abs. 2 RStV (Alemania)",
|
||||||
"taxident": "Número de identificación del impuesto sobre el valor añadido según el § 27 a de la Ley del Impuesto sobre el Valor Añadido (Alemania)",
|
"taxident": "Número de identificación del impuesto sobre el valor añadido según el § 27 a de la Ley del Impuesto sobre el Valor Añadido (Alemania)",
|
||||||
|
|||||||
@ -662,7 +662,7 @@
|
|||||||
"faq": "FAQ",
|
"faq": "FAQ",
|
||||||
"germany": "Allemagne",
|
"germany": "Allemagne",
|
||||||
"imprint": "Mentions légales",
|
"imprint": "Mentions légales",
|
||||||
"made": "Fabriqué avec ❤",
|
"made": "Fabriqué avec ❤️",
|
||||||
"register": "Numéro de registre",
|
"register": "Numéro de registre",
|
||||||
"responsible": "Responsable selon § 55 Abs. 2 RStV (Allemagne)",
|
"responsible": "Responsable selon § 55 Abs. 2 RStV (Allemagne)",
|
||||||
"taxident": "Numéro d'identification à la taxe sur la valeur ajoutée selon § 27 a de la loi sur la taxe sur la valeur ajoutée (Allemagne)",
|
"taxident": "Numéro d'identification à la taxe sur la valeur ajoutée selon § 27 a de la loi sur la taxe sur la valeur ajoutée (Allemagne)",
|
||||||
|
|||||||
1
webapp/locales/html/de/faq.html
Normal file
1
webapp/locales/html/de/faq.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<p>Hier stehen die FAQs</p>
|
||||||
@ -1,11 +1,13 @@
|
|||||||
import termsAndConditions from './terms-and-conditions.html'
|
import termsAndConditions from './terms-and-conditions.html'
|
||||||
import codeOfConduct from './code-of-conduct.html'
|
import codeOfConduct from './code-of-conduct.html'
|
||||||
import dataPrivacy from './data-privacy.html'
|
import dataPrivacy from './data-privacy.html'
|
||||||
|
import faq from './faq.html'
|
||||||
import imprint from './imprint.html'
|
import imprint from './imprint.html'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
termsAndConditions,
|
termsAndConditions,
|
||||||
codeOfConduct,
|
codeOfConduct,
|
||||||
dataPrivacy,
|
dataPrivacy,
|
||||||
|
faq,
|
||||||
imprint,
|
imprint,
|
||||||
}
|
}
|
||||||
|
|||||||
1
webapp/locales/html/en/faq.html
Normal file
1
webapp/locales/html/en/faq.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<p>Here are the FAQs</p>
|
||||||
@ -1,11 +1,13 @@
|
|||||||
import termsAndConditions from './terms-and-conditions.html'
|
import termsAndConditions from './terms-and-conditions.html'
|
||||||
import codeOfConduct from './code-of-conduct.html'
|
import codeOfConduct from './code-of-conduct.html'
|
||||||
import dataPrivacy from './data-privacy.html'
|
import dataPrivacy from './data-privacy.html'
|
||||||
|
import faq from './faq.html'
|
||||||
import imprint from './imprint.html'
|
import imprint from './imprint.html'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
termsAndConditions,
|
termsAndConditions,
|
||||||
codeOfConduct,
|
codeOfConduct,
|
||||||
dataPrivacy,
|
dataPrivacy,
|
||||||
|
faq,
|
||||||
imprint,
|
imprint,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -612,7 +612,7 @@
|
|||||||
"faq": null,
|
"faq": null,
|
||||||
"germany": "Germania",
|
"germany": "Germania",
|
||||||
"imprint": "Impressum",
|
"imprint": "Impressum",
|
||||||
"made": "Con ❤ fatto",
|
"made": "Con ❤️ fatto",
|
||||||
"register": "numero di registro",
|
"register": "numero di registro",
|
||||||
"responsible": "Responsabile ai sensi del § 55 Abs. 2 RStV (Germania)",
|
"responsible": "Responsabile ai sensi del § 55 Abs. 2 RStV (Germania)",
|
||||||
"taxident": "Numero di identificazione dell'imposta sul valore aggiunto ai sensi del § 27 a Legge sull'imposta sul valore aggiunto (Germania)",
|
"taxident": "Numero di identificazione dell'imposta sul valore aggiunto ai sensi del § 27 a Legge sull'imposta sul valore aggiunto (Germania)",
|
||||||
|
|||||||
@ -165,7 +165,7 @@
|
|||||||
"director": "Directeur",
|
"director": "Directeur",
|
||||||
"germany": "Duitsland",
|
"germany": "Duitsland",
|
||||||
"imprint": "Afdruk",
|
"imprint": "Afdruk",
|
||||||
"made": "Met ❤ gemaakt",
|
"made": "Met ❤️ gemaakt",
|
||||||
"register": "inschrijfnummer",
|
"register": "inschrijfnummer",
|
||||||
"responsible": "Verantwoordelijk volgens § 55 Abs. 2 RStV (Duitsland).",
|
"responsible": "Verantwoordelijk volgens § 55 Abs. 2 RStV (Duitsland).",
|
||||||
"taxident": "Identificatienummer voor de belasting over de toegevoegde waarde overeenkomstig § 27 a Wet op de belasting over de toegevoegde waarde (Duitsland).",
|
"taxident": "Identificatienummer voor de belasting over de toegevoegde waarde overeenkomstig § 27 a Wet op de belasting over de toegevoegde waarde (Duitsland).",
|
||||||
|
|||||||
@ -350,7 +350,7 @@
|
|||||||
"director": "Dyrektor zarządzający",
|
"director": "Dyrektor zarządzający",
|
||||||
"germany": "Niemcy",
|
"germany": "Niemcy",
|
||||||
"imprint": "Nadruk",
|
"imprint": "Nadruk",
|
||||||
"made": "Z ❤ zrobiony",
|
"made": "Z ❤️ zrobiony",
|
||||||
"register": "numer rejestracyjny",
|
"register": "numer rejestracyjny",
|
||||||
"responsible": "Odpowiedzialny zgodnie z § 55 Abs. 2 RStV (Niemcy)",
|
"responsible": "Odpowiedzialny zgodnie z § 55 Abs. 2 RStV (Niemcy)",
|
||||||
"taxident": "Numer identyfikacyjny podatku od wartości dodanej zgodnie z § 27 a Ustawa o podatku od wartości dodanej (Niemcy)",
|
"taxident": "Numer identyfikacyjny podatku od wartości dodanej zgodnie z § 27 a Ustawa o podatku od wartości dodanej (Niemcy)",
|
||||||
|
|||||||
@ -647,7 +647,7 @@
|
|||||||
"faq": "FAQ",
|
"faq": "FAQ",
|
||||||
"germany": "Alemanha",
|
"germany": "Alemanha",
|
||||||
"imprint": "Impressão",
|
"imprint": "Impressão",
|
||||||
"made": "Feito com ❤",
|
"made": "Feito com ❤️",
|
||||||
"register": "número de registo",
|
"register": "número de registo",
|
||||||
"responsible": "Responsável segundo § 55 Abs. 2 RStV (Alemanha) ",
|
"responsible": "Responsável segundo § 55 Abs. 2 RStV (Alemanha) ",
|
||||||
"taxident": "Número de identificação do imposto sobre o valor acrescentado de acordo com o § 27 da Lei do Imposto sobre o Valor Acrescentado (Alemanha)",
|
"taxident": "Número de identificação do imposto sobre o valor acrescentado de acordo com o § 27 da Lei do Imposto sobre o Valor Acrescentado (Alemanha)",
|
||||||
|
|||||||
@ -694,7 +694,7 @@
|
|||||||
"faq": "ЧаВо (FAQ)",
|
"faq": "ЧаВо (FAQ)",
|
||||||
"germany": "Германия",
|
"germany": "Германия",
|
||||||
"imprint": "Импрессум",
|
"imprint": "Импрессум",
|
||||||
"made": "Сделано с ❤",
|
"made": "Сделано с ❤️",
|
||||||
"register": "Регистрационный номер",
|
"register": "Регистрационный номер",
|
||||||
"responsible": "ответственный за содержание этой страницы (§ 55 Abs. 2 RStV)",
|
"responsible": "ответственный за содержание этой страницы (§ 55 Abs. 2 RStV)",
|
||||||
"taxident": "UST-ID. в соответствии с §27a Закона о налоге с продаж Германии:",
|
"taxident": "UST-ID. в соответствии с §27a Закона о налоге с продаж Германии:",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<ds-space>
|
<ds-space margin="small">
|
||||||
<ds-heading tag="h2">{{ $t('site.code-of-conduct') }}</ds-heading>
|
<ds-heading tag="h2">{{ $t('site.code-of-conduct') }}</ds-heading>
|
||||||
</ds-space>
|
</ds-space>
|
||||||
<ds-container>
|
<ds-container>
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<ds-space>
|
<ds-space margin="small">
|
||||||
<ds-heading tag="h2">{{ $t('site.data-privacy') }}</ds-heading>
|
<ds-heading tag="h2">{{ $t('site.data-privacy') }}</ds-heading>
|
||||||
</ds-space>
|
</ds-space>
|
||||||
|
|
||||||
<ds-container>
|
<ds-container>
|
||||||
<div v-html="$t('html.dataPrivacy')" />
|
<div v-html="$t('html.dataPrivacy')" />
|
||||||
</ds-container>
|
</ds-container>
|
||||||
|
|||||||
38
webapp/pages/faq.spec.js
Normal file
38
webapp/pages/faq.spec.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import { mount } from '@vue/test-utils'
|
||||||
|
import Faq from './faq.vue'
|
||||||
|
import VueMeta from 'vue-meta'
|
||||||
|
|
||||||
|
const localVue = global.localVue
|
||||||
|
localVue.use(VueMeta, { keyName: 'head' })
|
||||||
|
|
||||||
|
describe('faq.vue', () => {
|
||||||
|
let wrapper
|
||||||
|
let mocks
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
mocks = {
|
||||||
|
$t: (t) => t,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('mount', () => {
|
||||||
|
const Wrapper = () => {
|
||||||
|
return mount(Faq, {
|
||||||
|
mocks,
|
||||||
|
localVue,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
wrapper = Wrapper()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('renders', () => {
|
||||||
|
expect(wrapper.is('div')).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct <head> content', () => {
|
||||||
|
expect(wrapper.vm.$metaInfo.title).toBe('site.faq')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
21
webapp/pages/faq.vue
Normal file
21
webapp/pages/faq.vue
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<ds-space margin="small">
|
||||||
|
<ds-heading tag="h2">{{ $t('site.faq') }}</ds-heading>
|
||||||
|
</ds-space>
|
||||||
|
<ds-container>
|
||||||
|
<div v-html="$t('html.faq')" />
|
||||||
|
</ds-container>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
layout: 'basic',
|
||||||
|
head() {
|
||||||
|
return {
|
||||||
|
title: this.$t('site.faq'),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -1,9 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<ds-space>
|
<ds-space margin="small">
|
||||||
<ds-heading tag="h2">{{ $t('site.imprint') }}</ds-heading>
|
<ds-heading tag="h2">{{ $t('site.imprint') }}</ds-heading>
|
||||||
</ds-space>
|
</ds-space>
|
||||||
|
|
||||||
<ds-container>
|
<ds-container>
|
||||||
<div v-html="$t('html.imprint')" />
|
<div v-html="$t('html.imprint')" />
|
||||||
</ds-container>
|
</ds-container>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<ds-space>
|
<ds-space margin="small">
|
||||||
<ds-heading tag="h2">{{ $t('site.termsAndConditions') }}</ds-heading>
|
<ds-heading tag="h2">{{ $t('site.termsAndConditions') }}</ds-heading>
|
||||||
</ds-space>
|
</ds-space>
|
||||||
<ds-container>
|
<ds-container>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user