Refine footer links and donation link and fix their tests

This commit is contained in:
Wolfgang Huß 2022-10-28 11:12:34 +02:00
parent 9bf0e26731
commit 00c10cc1a7
5 changed files with 101 additions and 32 deletions

View File

@ -100,21 +100,40 @@ describe('PageFooter.vue', () => {
const links = { const links = {
...linksDefault, ...linksDefault,
ORGANIZATION: linksDefault.ORGANIZATION.overwrite({ ORGANIZATION: linksDefault.ORGANIZATION.overwrite({
externalLink: 'https://ocelot.social', externalLink: {
url: 'https://ocelot.social',
target: '_blank',
},
}), }),
IMPRINT: linksDefault.IMPRINT.overwrite({ IMPRINT: linksDefault.IMPRINT.overwrite({
externalLink: 'https://ocelot.social/IMPRINT', externalLink: {
url: 'https://ocelot.social/IMPRINT',
target: '_blank',
},
}), }),
TERMS_AND_CONDITIONS: linksDefault.TERMS_AND_CONDITIONS.overwrite({ TERMS_AND_CONDITIONS: linksDefault.TERMS_AND_CONDITIONS.overwrite({
externalLink: 'https://ocelot.social/TERMS_AND_CONDITIONS', externalLink: {
url: 'https://ocelot.social/TERMS_AND_CONDITIONS',
target: '_blank',
},
}), }),
CODE_OF_CONDUCT: linksDefault.CODE_OF_CONDUCT.overwrite({ CODE_OF_CONDUCT: linksDefault.CODE_OF_CONDUCT.overwrite({
externalLink: 'https://ocelot.social/CODE_OF_CONDUCT', externalLink: {
url: 'https://ocelot.social/CODE_OF_CONDUCT',
target: '_blank',
},
}), }),
DATA_PRIVACY: linksDefault.DATA_PRIVACY.overwrite({ DATA_PRIVACY: linksDefault.DATA_PRIVACY.overwrite({
externalLink: 'https://ocelot.social/DATA_PRIVACY', externalLink: {
url: 'https://ocelot.social/DATA_PRIVACY',
target: '_blank',
},
}), }),
FAQ: linksDefault.FAQ.overwrite({ externalLink: 'https://ocelot.social/FAQ' }), FAQ: linksDefault.FAQ.overwrite({
externalLink: {
url: 'https://ocelot.social/FAQ',
target: '_blank',
} }),
} }
wrapper = Wrapper() wrapper = Wrapper()
wrapper.setData({ links }) wrapper.setData({ links })

View File

@ -8,7 +8,7 @@
</nuxt-link> </nuxt-link>
<a <a
v-else v-else
:href="pageParams.externalLink" :href="pageParams.externalLink.url"
:target="pageParams.internalPage.target" :target="pageParams.internalPage.target"
:data-test="pageParams.name + '-link'" :data-test="pageParams.name + '-link'"
> >

View File

@ -4,7 +4,11 @@ export const defaultPageParamsPages = {
ORGANIZATION: new PageParams({ ORGANIZATION: new PageParams({
name: 'organization', name: 'organization',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/organization', // static, don't change! internal page in case no external is defined pageRoute: '/organization', // static, don't change! internal page in case no external is defined
@ -21,7 +25,11 @@ export const defaultPageParamsPages = {
DONATE: new PageParams({ DONATE: new PageParams({
name: 'donate', name: 'donate',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/donate', // static, don't change! internal page in case no external is defined pageRoute: '/donate', // static, don't change! internal page in case no external is defined
@ -38,7 +46,11 @@ export const defaultPageParamsPages = {
IMPRINT: new PageParams({ IMPRINT: new PageParams({
name: 'imprint', name: 'imprint',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/imprint', // static, don't change! internal page in case no external is defined pageRoute: '/imprint', // static, don't change! internal page in case no external is defined
@ -55,7 +67,11 @@ export const defaultPageParamsPages = {
TERMS_AND_CONDITIONS: new PageParams({ TERMS_AND_CONDITIONS: new PageParams({
name: 'terms-and-conditions', name: 'terms-and-conditions',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/terms-and-conditions', // static, don't change! internal page in case no external is defined pageRoute: '/terms-and-conditions', // static, don't change! internal page in case no external is defined
@ -72,7 +88,11 @@ export const defaultPageParamsPages = {
CODE_OF_CONDUCT: new PageParams({ CODE_OF_CONDUCT: new PageParams({
name: 'code-of-conduct', name: 'code-of-conduct',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/code-of-conduct', // static, don't change! internal page in case no external is defined pageRoute: '/code-of-conduct', // static, don't change! internal page in case no external is defined
@ -89,7 +109,11 @@ export const defaultPageParamsPages = {
DATA_PRIVACY: new PageParams({ DATA_PRIVACY: new PageParams({
name: 'data-privacy', name: 'data-privacy',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/data-privacy', // static, don't change! internal page in case no external is defined pageRoute: '/data-privacy', // static, don't change! internal page in case no external is defined
@ -106,7 +130,11 @@ export const defaultPageParamsPages = {
FAQ: new PageParams({ FAQ: new PageParams({
name: 'faq', name: 'faq',
externalLink: null, // if string is defined and not empty it's dominating // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/faq', // static, don't change! internal page in case no external is defined pageRoute: '/faq', // static, don't change! internal page in case no external is defined
@ -123,7 +151,11 @@ export const defaultPageParamsPages = {
SUPPORT: new PageParams({ SUPPORT: new PageParams({
name: 'support', name: 'support',
externalLink: null, // externalLink: {
// url: 'https://ocelot.social',
// target: '_blank',
// },
externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
pageRoute: '/support', // static, don't change '*/support'! internal page in case no external is defined pageRoute: '/support', // static, don't change '*/support'! internal page in case no external is defined

View File

@ -24,18 +24,25 @@ export class PageParams {
} }
get isInternalPage() { get isInternalPage() {
return this.noStringDefined(this.externalLink) return !(this.externalLink && !this.noStringDefined(this.externalLink.url))
} }
get link() { get link() {
return this.isInternalPage ? this.internalPage.pageRoute : this.externalLink return this.isInternalPage ? this.internalPage.pageRoute : this.externalLink.url
} }
redirectToPage(thisComponent) { redirectToPage(thisComponent) {
if (this.isInternalPage) { if (this.isInternalPage) {
thisComponent.$router.push(this.internalPage.pageRoute) thisComponent.$router.push(this.internalPage.pageRoute)
} else if (typeof window !== 'undefined') { } else if (typeof window !== 'undefined') {
window.location.href = this.externalLink if (this.externalLink.target === '_blank') {
window.open(
this.externalLink.url,
this.externalLink.target,
)
} else {
window.location.href = this.externalLink.url
}
} }
} }
} }

View File

@ -3,10 +3,13 @@
import { defaultPageParamsPages } from '~/components/utils/InternalPages.js' import { defaultPageParamsPages } from '~/components/utils/InternalPages.js'
const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({
externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating // if defined it's dominating
externalLink: {
url: 'https://ocelot.social',
target: '_blank',
},
internalPage: { internalPage: {
target: '_blank',
// footerIdent: 'site.made', // localized string identifier, if undefined default is used // footerIdent: 'site.made', // localized string identifier, if undefined default is used
// headTitleIdent: 'site.made', // localized string identifier, if undefined default is used // headTitleIdent: 'site.made', // localized string identifier, if undefined default is used
// headlineIdent: 'site.made', // localized string identifier, on null it's hidden, if undefined default is used // headlineIdent: 'site.made', // localized string identifier, on null it's hidden, if undefined default is used
@ -17,11 +20,14 @@ const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({
}, },
}) })
const DONATE = defaultPageParamsPages.DONATE.overwrite({ const DONATE = defaultPageParamsPages.DONATE.overwrite({
// if defined it's dominating
externalLink: {
// we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly
externalLink: 'https://ocelot-social.herokuapp.com/donations', // if string is defined and not empty it's dominating url: 'https://ocelot-social.herokuapp.com/donations',
target: '_blank',
},
internalPage: { internalPage: {
target: '_blank',
// footerIdent: 'site.donate', // localized string identifier, if undefined default is used // footerIdent: 'site.donate', // localized string identifier, if undefined default is used
// headTitleIdent: 'site.donate', // localized string identifier, if undefined default is used // headTitleIdent: 'site.donate', // localized string identifier, if undefined default is used
// headlineIdent: 'site.donate', // localized string identifier, on null it's hidden, if undefined default is used // headlineIdent: 'site.donate', // localized string identifier, on null it's hidden, if undefined default is used
@ -32,11 +38,13 @@ const DONATE = defaultPageParamsPages.DONATE.overwrite({
}, },
}) })
const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({
externalLink: {
// we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly
externalLink: 'https://ocelot-social.herokuapp.com/imprint', // if string is defined and not empty it's dominating url: 'https://ocelot-social.herokuapp.com/imprint',
target: '_blank',
},
internalPage: { internalPage: {
target: '_blank',
// footerIdent: 'site.imprint', // localized string identifier, if undefined default is used // footerIdent: 'site.imprint', // localized string identifier, if undefined default is used
// headTitleIdent: 'site.imprint', // localized string identifier, if undefined default is used // headTitleIdent: 'site.imprint', // localized string identifier, if undefined default is used
// headlineIdent: 'site.imprint', // localized string identifier, on null it's hidden, if undefined default is used // headlineIdent: 'site.imprint', // localized string identifier, on null it's hidden, if undefined default is used
@ -47,7 +55,7 @@ const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({
}, },
}) })
const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwrite({ const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwrite({
// externalLink: null, // if string is defined and not empty it's dominating // externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
// footerIdent: 'site.termsAndConditions', // localized string identifier, if undefined default is used // footerIdent: 'site.termsAndConditions', // localized string identifier, if undefined default is used
@ -60,7 +68,7 @@ const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwri
}, },
}) })
const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({
// externalLink: null, // if string is defined and not empty it's dominating // externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
// footerIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used // footerIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used
@ -73,7 +81,7 @@ const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({
}, },
}) })
const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({
// externalLink: null, // if string is defined and not empty it's dominating // externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
// footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used // footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used
@ -86,7 +94,7 @@ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({
}, },
}) })
const FAQ = defaultPageParamsPages.FAQ.overwrite({ const FAQ = defaultPageParamsPages.FAQ.overwrite({
// externalLink: null, // if string is defined and not empty it's dominating // externalLink: null, // if defined it's dominating
internalPage: { internalPage: {
// footerIdent: 'site.faq', // localized string identifier, if undefined default is used // footerIdent: 'site.faq', // localized string identifier, if undefined default is used
@ -99,10 +107,13 @@ const FAQ = defaultPageParamsPages.FAQ.overwrite({
}, },
}) })
const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({ const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({
externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating // if defined it's dominating
externalLink: {
url: 'https://ocelot.social',
target: '_blank',
},
internalPage: { internalPage: {
target: '_blank',
// footerIdent: 'site.support', // localized string identifier, if undefined default is used // footerIdent: 'site.support', // localized string identifier, if undefined default is used
// headTitleIdent: 'site.support', // localized string identifier, if undefined default is used // headTitleIdent: 'site.support', // localized string identifier, if undefined default is used
// headlineIdent: 'site.support', // on null default is used, on empty string it's hidden // headlineIdent: 'site.support', // on null default is used, on empty string it's hidden