mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Merge branch 'master' of github.com:Ocelot-Social-Community/Ocelot-Social into 4326-send-notification-email
This commit is contained in:
commit
05c171d9fa
63
CHANGELOG.md
63
CHANGELOG.md
@ -4,8 +4,69 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
|
||||
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
||||
|
||||
#### [v1.0.4](https://github.com/Ocelot-Social-Community/Ocelot-Social/compare/1.0.3...v1.0.4)
|
||||
#### [1.0.5](https://github.com/Ocelot-Social-Community/Ocelot-Social/compare/1.0.4...1.0.5)
|
||||
|
||||
- feat: 🍰 Landing Page And Other Internal Pages [`#4599`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4599)
|
||||
- Bump eslint-plugin-prettier from 3.1.4 to 3.4.0 in /webapp [`#4577`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4577)
|
||||
- Bump vue-scrollto from 2.17.1 to 2.20.0 in /webapp [`#4592`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4592)
|
||||
- Bump date-fns from 2.22.1 to 2.23.0 [`#4596`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4596)
|
||||
- Bump metascraper-description from 5.11.6 to 5.23.1 in /backend [`#4593`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4593)
|
||||
- Bump slug from 2.1.1 to 5.1.0 [`#4525`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4525)
|
||||
- Bump metascraper-lang from 5.11.8 to 5.23.1 in /backend [`#4587`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4587)
|
||||
- Bump eslint-plugin-promise from 4.2.1 to 4.3.1 in /backend [`#4591`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4591)
|
||||
- fix: 🍰 Quick Fix For backend Tests [`#4565`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4565)
|
||||
- Bump eslint-config-prettier from 6.10.1 to 6.15.0 in /backend [`#4583`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4583)
|
||||
- Bump subscriptions-transport-ws from 0.9.16 to 0.9.19 in /backend [`#4584`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4584)
|
||||
- Bump metascraper-youtube from 5.11.8 to 5.23.0 in /backend [`#4579`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4579)
|
||||
- Bump metascraper-publisher from 5.11.8 to 5.23.0 in /backend [`#4578`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4578)
|
||||
- [Security] Bump node-notifier from 6.0.0 to 8.0.2 in /webapp [`#4299`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4299)
|
||||
- Bump @storybook/addon-a11y from 5.3.21 to 6.3.6 in /webapp [`#4570`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4570)
|
||||
- Bump metascraper-soundcloud from 5.11.8 to 5.23.0 in /backend [`#4576`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4576)
|
||||
- Bump cross-env from 7.0.2 to 7.0.3 in /backend [`#4522`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4522)
|
||||
- [Security] Bump browserslist from 4.9.1 to 4.16.6 in /backend [`#4444`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4444)
|
||||
- 🍰 feat: Landing Page etc. [`#4555`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4555)
|
||||
- [Security] Bump browserslist from 4.14.7 to 4.16.6 [`#4440`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4440)
|
||||
- Bump auto-changelog from 2.2.1 to 2.3.0 [`#4515`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4515)
|
||||
- Bump @storybook/vue from 5.3.21 to 6.3.6 in /webapp [`#4571`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4571)
|
||||
- Bump @storybook/addon-actions from 5.3.18 to 5.3.21 in /webapp [`#4141`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4141)
|
||||
- [Security] Bump ssri from 6.0.1 to 6.0.2 in /webapp [`#4390`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4390)
|
||||
- [Security] Bump y18n from 4.0.0 to 4.0.3 in /backend [`#4356`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4356)
|
||||
- Bump v-tooltip from 2.0.3 to 2.1.3 in /webapp [`#4308`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4308)
|
||||
- Bump eslint-plugin-jest from 24.1.10 to 24.4.0 in /webapp [`#4564`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4564)
|
||||
- Bump apollo-cache-inmemory from 1.6.5 to 1.6.6 in /webapp [`#4140`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4140)
|
||||
- [Security] Bump websocket-extensions from 0.1.3 to 0.1.4 in /webapp [`#3975`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/3975)
|
||||
- Bump linkify-it from 2.2.0 to 3.0.2 in /webapp [`#4139`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4139)
|
||||
- [Security] Bump yargs-parser from 18.1.1 to 18.1.3 in /backend [`#3962`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/3962)
|
||||
- [Security] Bump y18n from 3.2.1 to 3.2.2 in /webapp [`#4317`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4317)
|
||||
- Bump vue-sweetalert-icons from 4.2.0 to 4.3.0 in /webapp [`#4142`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4142)
|
||||
- Bump mustache from 4.0.1 to 4.2.0 in /backend [`#4310`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4310)
|
||||
- [Security] Bump elliptic from 6.5.3 to 6.5.4 in /webapp [`#4286`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4286)
|
||||
- [Security] Bump elliptic from 6.5.3 to 6.5.4 [`#4285`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4285)
|
||||
- Bump neode from 0.3.7 to 0.4.7 [`#4162`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4162)
|
||||
- Bump date-fns from 2.11.1 to 2.22.1 in /backend [`#4523`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4523)
|
||||
- Bump stack-utils from 2.0.1 to 2.0.3 in /webapp [`#4076`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4076)
|
||||
- Bump date-fns from 2.12.0 to 2.22.1 [`#4455`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4455)
|
||||
- Bump date-fns from 2.12.0 to 2.22.1 in /webapp [`#4537`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4537)
|
||||
- Bump cross-env from 7.0.2 to 7.0.3 [`#4032`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4032)
|
||||
- Bump graphql-request from 1.8.2 to 2.0.0 [`#3988`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/3988)
|
||||
- Bump cookie-universal-nuxt from 2.1.4 to 2.1.5 in /webapp [`#4561`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4561)
|
||||
- Bump graphql from 14.6.0 to 14.7.0 in /webapp [`#4000`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4000)
|
||||
- Bump prettier from 2.2.0 to 2.3.2 in /backend [`#4530`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4530)
|
||||
- Bump merge-graphql-schemas from 1.7.7 to 1.7.8 in /backend [`#3959`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/3959)
|
||||
- fix: 🍰 Fix Menu Legend Menu Bar Button Without Click Event [`#4556`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4556)
|
||||
- Bump eslint-plugin-promise from 4.2.1 to 4.3.1 in /webapp [`#4534`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4534)
|
||||
- feat: 🍰 Post Editor Legend [`#4492`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4492)
|
||||
- New Issue type EPIC [`#4536`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4536)
|
||||
- Upgrade to GitHub-native Dependabot [`#4399`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4399)
|
||||
- Remove superfluous package-lock.json [`c7e4e6d`](https://github.com/Ocelot-Social-Community/Ocelot-Social/commit/c7e4e6d2b26d448b3d2787aff4a0bde32c24e919)
|
||||
- Delete superfluous and always conflicting file package-lock.json [`9932796`](https://github.com/Ocelot-Social-Community/Ocelot-Social/commit/9932796d233789c76b917de533ec2efc99f6aa4a)
|
||||
- Refactor pageParams, second step [`e8a0a5d`](https://github.com/Ocelot-Social-Community/Ocelot-Social/commit/e8a0a5d13c0610066c50c98d5e0d661ee8139217)
|
||||
|
||||
#### [1.0.4](https://github.com/Ocelot-Social-Community/Ocelot-Social/compare/1.0.3...1.0.4)
|
||||
|
||||
> 8 June 2021
|
||||
|
||||
- chore: 🍰 Release v1.0.4 [`#4475`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4475)
|
||||
- fixed wrong env variable [`#4474`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4474)
|
||||
- chore: [WIP] 🍰 New Deployment With 'base' And 'code' Docker Images [`#4452`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4452)
|
||||
- feat: 🍰 Flexible Footer Links [`#4468`](https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4468)
|
||||
|
||||
@ -74,7 +74,7 @@ Docker is a software development container tool that combines software and its d
|
||||
|
||||
#### General Installation of Docker
|
||||
|
||||
There are [sevaral ways to install Docker CE](https://docs.docker.com/install/) on your computer or server.
|
||||
There are [several ways to install Docker CE](https://docs.docker.com/install/) on your computer or server.
|
||||
|
||||
* [install Docker Desktop on macOS](https://docs.docker.com/docker-for-mac/install/)
|
||||
* [install Docker Desktop on Windows](https://docs.docker.com/docker-for-windows/install/)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ocelot-social-backend",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.5",
|
||||
"description": "GraphQL Backend for ocelot.social",
|
||||
"repository": "https://github.com/Ocelot-Social-Community/Ocelot-Social",
|
||||
"author": "ocelot.social Community",
|
||||
@ -107,7 +107,7 @@
|
||||
"neode": "^0.3.7",
|
||||
"node-fetch": "~2.6.1",
|
||||
"nodemailer": "^6.4.4",
|
||||
"nodemailer-html-to-text": "^3.1.0",
|
||||
"nodemailer-html-to-text": "^3.2.0",
|
||||
"npm-run-all": "~4.1.5",
|
||||
"request": "~2.88.2",
|
||||
"sanitize-html": "~1.22.0",
|
||||
|
||||
8
backend/src/config/emails.js
Normal file
8
backend/src/config/emails.js
Normal file
@ -0,0 +1,8 @@
|
||||
// this file is duplicated in `backend/src/config/` and `webapp/constants/` and replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/constants/
|
||||
export default {
|
||||
SUPPORT_EMAIL: 'devops@ocelot.social',
|
||||
MODERATION_EMAIL: 'devops@ocelot.social',
|
||||
// ATTENTION: the following links have to be defined even for internal pages with full URLs as example like 'https://staging.ocelot.social/support', because they are used in e-mails!
|
||||
ORGANIZATION_LINK: 'https://ocelot.social',
|
||||
SUPPORT_LINK: 'https://ocelot.social',
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
import dotenv from 'dotenv'
|
||||
import links from './links.js'
|
||||
import emails from './emails.js'
|
||||
import metadata from './metadata.js'
|
||||
|
||||
// Load env file
|
||||
@ -79,9 +79,9 @@ const s3 = {
|
||||
|
||||
const options = {
|
||||
EMAIL_DEFAULT_SENDER: env.EMAIL_DEFAULT_SENDER,
|
||||
SUPPORT_URL: links.SUPPORT,
|
||||
SUPPORT_URL: emails.SUPPORT_LINK,
|
||||
APPLICATION_NAME: metadata.APPLICATION_NAME,
|
||||
ORGANIZATION_URL: links.ORGANIZATION,
|
||||
ORGANIZATION_URL: emails.ORGANIZATION_LINK,
|
||||
PUBLIC_REGISTRATION: env.PUBLIC_REGISTRATION === 'true' || false,
|
||||
INVITE_REGISTRATION: env.INVITE_REGISTRATION !== 'false', // default = true
|
||||
}
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
// this file is duplicated in `backend/src/config/links.js` and `webapp/constants/links.js` and replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/constants/
|
||||
export default {
|
||||
LANDING_PAGE: '/login', // examples: '/login', '/registration', '/organization', or external 'https://ocelot.social'
|
||||
|
||||
// you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/
|
||||
|
||||
SUPPORT: 'https://ocelot.social', // example for internal support page: 'https://staging.ocelot.social/support'. set a full URL please, because it is used in e-mails as well!
|
||||
|
||||
// on null or empty strings internal pages are used, see 'webapp/locales/html/'
|
||||
ORGANIZATION: 'https://ocelot.social',
|
||||
DONATE: 'https://ocelot-social.herokuapp.com/donations', // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly
|
||||
IMPRINT: 'https://ocelot-social.herokuapp.com/imprint', // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly
|
||||
TERMS_AND_CONDITIONS: null,
|
||||
CODE_OF_CONDUCT: null,
|
||||
DATA_PRIVACY: null,
|
||||
FAQ: 'https://ocelot.social',
|
||||
}
|
||||
@ -3808,6 +3808,15 @@ dom-serializer@^0.2.1:
|
||||
domelementtype "^2.0.1"
|
||||
entities "^2.0.0"
|
||||
|
||||
dom-serializer@^1.0.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
|
||||
integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^4.2.0"
|
||||
entities "^2.0.0"
|
||||
|
||||
dom-serializer@~0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
|
||||
@ -3826,6 +3835,11 @@ domelementtype@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
|
||||
integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
|
||||
|
||||
domelementtype@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
|
||||
integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
|
||||
|
||||
domexception@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
|
||||
@ -3854,6 +3868,13 @@ domhandler@^3.0.0:
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
|
||||
domhandler@^4.0.0, domhandler@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059"
|
||||
integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==
|
||||
dependencies:
|
||||
domelementtype "^2.2.0"
|
||||
|
||||
domutils@1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
|
||||
@ -3879,6 +3900,15 @@ domutils@^2.0.0:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.0.0"
|
||||
|
||||
domutils@^2.5.2:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442"
|
||||
integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==
|
||||
dependencies:
|
||||
dom-serializer "^1.0.1"
|
||||
domelementtype "^2.2.0"
|
||||
domhandler "^4.2.0"
|
||||
|
||||
dont-sniff-mimetype@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz#c7d0427f8bcb095762751252af59d148b0a623b2"
|
||||
@ -5338,17 +5368,17 @@ html-escaper@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491"
|
||||
integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==
|
||||
|
||||
html-to-text@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-5.1.1.tgz#2d89db7bf34bc7bcb7d546b1b228991a16926e87"
|
||||
integrity sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==
|
||||
html-to-text@7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-7.1.1.tgz#69de8d85b91646b4bc14fdf4f850e9e046efff15"
|
||||
integrity sha512-c9QWysrfnRZevVpS8MlE7PyOdSuIOjg8Bt8ZE10jMU/BEngA6j3llj4GRfAmtQzcd1FjKE0sWu5IHXRUH9YxIQ==
|
||||
dependencies:
|
||||
deepmerge "^4.2.2"
|
||||
he "^1.2.0"
|
||||
htmlparser2 "^3.10.1"
|
||||
lodash "^4.17.11"
|
||||
minimist "^1.2.0"
|
||||
htmlparser2 "^6.1.0"
|
||||
minimist "^1.2.5"
|
||||
|
||||
htmlparser2@^3.10.1, htmlparser2@^3.9.1:
|
||||
htmlparser2@^3.9.1:
|
||||
version "3.10.1"
|
||||
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
|
||||
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
|
||||
@ -5370,6 +5400,16 @@ htmlparser2@^4.1.0:
|
||||
domutils "^2.0.0"
|
||||
entities "^2.0.0"
|
||||
|
||||
htmlparser2@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
|
||||
integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^4.0.0"
|
||||
domutils "^2.5.2"
|
||||
entities "^2.0.0"
|
||||
|
||||
http-cache-semantics@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5"
|
||||
@ -6855,7 +6895,7 @@ lodash@4.17.15:
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||
|
||||
lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.11, lodash@~4.17.14, lodash@~4.17.15, lodash@~4.17.20:
|
||||
lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.11, lodash@~4.17.14, lodash@~4.17.15, lodash@~4.17.20:
|
||||
version "4.17.20"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||
@ -7630,12 +7670,12 @@ node-releases@^1.1.71:
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe"
|
||||
integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==
|
||||
|
||||
nodemailer-html-to-text@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/nodemailer-html-to-text/-/nodemailer-html-to-text-3.1.0.tgz#11e4e435eb03e4f3b439aaf294b1bd1377e7f789"
|
||||
integrity sha512-AijyAZgcFb6b53g1oMwdCKyLYQVJzbgZKbs3Bma8zR5hPR1gkajQKGGZbwtuA5JhUqnyC8pjp+tiaS7CkQ8TRg==
|
||||
nodemailer-html-to-text@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/nodemailer-html-to-text/-/nodemailer-html-to-text-3.2.0.tgz#91b959491fef8f7d91796047abb728aa86d4a12b"
|
||||
integrity sha512-RJUC6640QV1PzTHHapOrc6IzrAJUZtk2BdVdINZ9VTLm+mcQNyBO9LYyhrnufkzqiD9l8hPLJ97rSyK4WanPNg==
|
||||
dependencies:
|
||||
html-to-text "^5.1.1"
|
||||
html-to-text "7.1.1"
|
||||
|
||||
nodemailer@^6.4.4:
|
||||
version "6.4.5"
|
||||
|
||||
@ -60,6 +60,11 @@ services:
|
||||
networks:
|
||||
- external-net
|
||||
|
||||
# the following network from the main YAML gives the warning `WARNING: Some networks were defined but are not used by any service: internal-net` and should be removed
|
||||
# but removing is not possible yet, it seems: https://github.com/docker/compose/issues/3729#issuecomment-623154878
|
||||
# networks:
|
||||
# internal-net:
|
||||
|
||||
volumes:
|
||||
webapp_node_modules:
|
||||
backend_node_modules:
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ocelot-social",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.5",
|
||||
"description": "Fullstack and API tests with cypress and cucumber for ocelot.social",
|
||||
"author": "ocelot.social Community",
|
||||
"license": "MIT",
|
||||
@ -27,7 +27,7 @@
|
||||
"@babel/register": "^7.12.10",
|
||||
"auto-changelog": "^2.3.0",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"codecov": "^3.7.1",
|
||||
"codecov": "^3.8.2",
|
||||
"cross-env": "^7.0.3",
|
||||
"cucumber": "^6.0.5",
|
||||
"cypress": "^7.0.1",
|
||||
|
||||
@ -57,8 +57,10 @@ COPY package.json yarn.lock ./
|
||||
RUN yarn install --production=false --frozen-lockfile --non-interactive
|
||||
|
||||
COPY assets assets
|
||||
# COPY components/_new/generic/ components/_new/generic
|
||||
COPY components/LocaleSwitch/ components/LocaleSwitch
|
||||
COPY components/Dropdown.vue components/Dropdown.vue
|
||||
# COPY components/Logo/ components/Logo
|
||||
COPY layouts/blank.vue layouts/blank.vue
|
||||
COPY locales locales
|
||||
COPY mixins mixins
|
||||
|
||||
@ -25,10 +25,10 @@
|
||||
<div v-if="formData.image" class="blur-toggle">
|
||||
<label for="blur-img">{{ $t('contribution.inappropriatePicture') }}</label>
|
||||
<input type="checkbox" id="blur-img" v-model="formData.imageBlurred" />
|
||||
<a :href="links.FAQ" target="_blank" class="link">
|
||||
{{ $t('contribution.inappropriatePictureText') }}
|
||||
<page-params-link class="link" :pageParams="links.FAQ">
|
||||
{{ $t('contribution.inappropriatePicture') }}
|
||||
<base-icon name="question-circle" />
|
||||
</a>
|
||||
</page-params-link>
|
||||
</div>
|
||||
<ds-input
|
||||
model="title"
|
||||
@ -71,11 +71,13 @@ import HcEditor from '~/components/Editor/Editor'
|
||||
import PostMutations from '~/graphql/PostMutations.js'
|
||||
import ImageUploader from '~/components/ImageUploader/ImageUploader'
|
||||
import links from '~/constants/links.js'
|
||||
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
HcEditor,
|
||||
ImageUploader,
|
||||
PageParamsLink,
|
||||
},
|
||||
props: {
|
||||
contribution: {
|
||||
|
||||
@ -21,12 +21,6 @@ describe('DonationInfo.vue', () => {
|
||||
|
||||
const Wrapper = () => mount(DonationInfo, { mocks, localVue })
|
||||
|
||||
it('includes a link to the ocelot.social donations website', () => {
|
||||
expect(Wrapper().find('a').attributes('href')).toBe(
|
||||
'https://ocelot-social.herokuapp.com/donations',
|
||||
)
|
||||
})
|
||||
|
||||
it('displays a call to action button', () => {
|
||||
expect(Wrapper().find('.base-button').text()).toBe('donations.donate-now')
|
||||
})
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="donation-info">
|
||||
<progress-bar :title="title" :label="label" :goal="goal" :progress="progress" />
|
||||
<a target="_blank" :href="links.DONATE">
|
||||
<base-button filled>{{ $t('donations.donate-now') }}</base-button>
|
||||
</a>
|
||||
<base-button filled @click="redirectToPage(links.DONATE)">
|
||||
{{ $t('donations.donate-now') }}
|
||||
</base-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -36,6 +36,11 @@ export default {
|
||||
})
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
redirectToPage(pageParams) {
|
||||
pageParams.redirectToPage(this)
|
||||
},
|
||||
},
|
||||
apollo: {
|
||||
Donations: {
|
||||
query() {
|
||||
|
||||
41
webapp/components/LoginButton/LoginButton.spec.js
Normal file
41
webapp/components/LoginButton/LoginButton.spec.js
Normal file
@ -0,0 +1,41 @@
|
||||
import { config, mount } from '@vue/test-utils'
|
||||
import LoginButton from './LoginButton.vue'
|
||||
|
||||
config.stubs['v-popover'] = '<span><slot /></span>'
|
||||
|
||||
describe('LoginButton.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
let propsData
|
||||
|
||||
beforeEach(() => {
|
||||
mocks = {
|
||||
$t: jest.fn(),
|
||||
navigator: {
|
||||
clipboard: {
|
||||
writeText: jest.fn(),
|
||||
},
|
||||
},
|
||||
}
|
||||
propsData = {}
|
||||
})
|
||||
|
||||
describe('mount', () => {
|
||||
const Wrapper = () => {
|
||||
return mount(LoginButton, { mocks, propsData })
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
wrapper = Wrapper()
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.contains('.login-button')).toBe(true)
|
||||
})
|
||||
|
||||
it('open popup', () => {
|
||||
wrapper.find('.base-button').trigger('click')
|
||||
expect(wrapper.contains('.login-button')).toBe(true)
|
||||
})
|
||||
})
|
||||
})
|
||||
54
webapp/components/LoginButton/LoginButton.vue
Normal file
54
webapp/components/LoginButton/LoginButton.vue
Normal file
@ -0,0 +1,54 @@
|
||||
<template>
|
||||
<dropdown class="login-button" offset="8" :placement="placement">
|
||||
<template #default="{ toggleMenu }">
|
||||
<base-button icon="sign-in" circle ghost @click.prevent="toggleMenu" />
|
||||
</template>
|
||||
<template #popover>
|
||||
<div class="login-button-menu-popover">
|
||||
<nuxt-link class="login-link" :to="{ name: 'login' }">
|
||||
<base-icon name="sign-in" />
|
||||
{{ $t('login.login') }}
|
||||
</nuxt-link>
|
||||
</div>
|
||||
</template>
|
||||
</dropdown>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Dropdown from '~/components/Dropdown'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Dropdown,
|
||||
},
|
||||
props: {
|
||||
placement: { type: String, default: 'top-end' },
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scope>
|
||||
.login-button {
|
||||
color: $color-secondary;
|
||||
}
|
||||
|
||||
.login-button-menu-popover {
|
||||
padding-top: $space-x-small;
|
||||
padding-bottom: $space-x-small;
|
||||
hr {
|
||||
color: $color-neutral-90;
|
||||
background-color: $color-neutral-90;
|
||||
}
|
||||
.login-link {
|
||||
color: $text-color-base;
|
||||
padding-top: $space-xx-small;
|
||||
&:hover {
|
||||
color: $text-color-link-active;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.invite-code {
|
||||
left: 50%;
|
||||
}
|
||||
</style>
|
||||
@ -6,9 +6,9 @@
|
||||
</blockquote>
|
||||
<base-card>
|
||||
<template #imageColumn>
|
||||
<a :href="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)" target="_blank">
|
||||
<page-params-link :pageParams="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)">
|
||||
<logo logoType="welcome" />
|
||||
</a>
|
||||
</page-params-link>
|
||||
</template>
|
||||
<h2 class="title">{{ $t('login.login') }}</h2>
|
||||
<form :disabled="pending" @submit.prevent="onSubmit">
|
||||
@ -54,6 +54,7 @@
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import metadata from '~/constants/metadata.js'
|
||||
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
|
||||
import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch'
|
||||
import Logo from '~/components/Logo/Logo'
|
||||
import ShowPassword from '../ShowPassword/ShowPassword.vue'
|
||||
@ -62,6 +63,7 @@ export default {
|
||||
components: {
|
||||
LocaleSwitch,
|
||||
Logo,
|
||||
PageParamsLink,
|
||||
ShowPassword,
|
||||
},
|
||||
data() {
|
||||
@ -113,7 +115,7 @@ export default {
|
||||
.login-form {
|
||||
width: 80vw;
|
||||
max-width: 620px;
|
||||
/* margin: auto; */
|
||||
margin: auto;
|
||||
|
||||
.base-button {
|
||||
display: block;
|
||||
|
||||
@ -71,7 +71,7 @@ export default {
|
||||
maintenance: {
|
||||
path: logos.LOGO_MAINTENACE_RESET_PATH,
|
||||
alt: 'Under Maintenance',
|
||||
widthDefault: '75%',
|
||||
widthDefault: '200px',
|
||||
},
|
||||
}
|
||||
return {
|
||||
|
||||
@ -29,8 +29,8 @@ describe('PageFooter.vue', () => {
|
||||
wrapper = Wrapper()
|
||||
})
|
||||
|
||||
it('renders four links', () => {
|
||||
expect(wrapper.findAll('a')).toHaveLength(4)
|
||||
it('renders five links', () => {
|
||||
expect(wrapper.findAll('a')).toHaveLength(5)
|
||||
})
|
||||
|
||||
it('renders three nuxt-links', () => {
|
||||
@ -56,12 +56,12 @@ describe('PageFooter.vue', () => {
|
||||
beforeEach(async () => {
|
||||
const links = {
|
||||
...linksDefault,
|
||||
ORGANIZATION: null,
|
||||
IMPRINT: null,
|
||||
TERMS_AND_CONDITIONS: null,
|
||||
CODE_OF_CONDUCT: null,
|
||||
DATA_PRIVACY: null,
|
||||
FAQ: null,
|
||||
ORGANIZATION: linksDefault.ORGANIZATION.overwrite({ externalLink: null }),
|
||||
IMPRINT: linksDefault.IMPRINT.overwrite({ externalLink: null }),
|
||||
TERMS_AND_CONDITIONS: linksDefault.TERMS_AND_CONDITIONS.overwrite({ externalLink: null }),
|
||||
CODE_OF_CONDUCT: linksDefault.CODE_OF_CONDUCT.overwrite({ externalLink: null }),
|
||||
DATA_PRIVACY: linksDefault.DATA_PRIVACY.overwrite({ externalLink: null }),
|
||||
FAQ: linksDefault.FAQ.overwrite({ externalLink: null }),
|
||||
}
|
||||
wrapper = Wrapper()
|
||||
wrapper.setData({ links })
|
||||
@ -77,15 +77,17 @@ describe('PageFooter.vue', () => {
|
||||
})
|
||||
|
||||
it('renders TERMS_AND_CONDITIONS as nuxt-link', () => {
|
||||
expect(wrapper.find('span[data-test="terms-nuxt-link"]').exists()).toBeTruthy()
|
||||
expect(
|
||||
wrapper.find('span[data-test="terms-and-conditions-nuxt-link"]').exists(),
|
||||
).toBeTruthy()
|
||||
})
|
||||
|
||||
it('renders CODE_OF_CONDUCT as nuxt-link', () => {
|
||||
expect(wrapper.find('span[data-test="code-nuxt-link"]').exists()).toBeTruthy()
|
||||
expect(wrapper.find('span[data-test="code-of-conduct-nuxt-link"]').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('renders DATA_PRIVACY as nuxt-link', () => {
|
||||
expect(wrapper.find('span[data-test="data-nuxt-link"]').exists()).toBeTruthy()
|
||||
expect(wrapper.find('span[data-test="data-privacy-nuxt-link"]').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('renders FAQ as nuxt-link', () => {
|
||||
@ -97,12 +99,22 @@ describe('PageFooter.vue', () => {
|
||||
beforeEach(async () => {
|
||||
const links = {
|
||||
...linksDefault,
|
||||
ORGANIZATION: 'https://ocelot.social',
|
||||
IMPRINT: 'https://ocelot.social/IMPRINT',
|
||||
TERMS_AND_CONDITIONS: 'https://ocelot.social/TERMS_AND_CONDITIONS',
|
||||
CODE_OF_CONDUCT: 'https://ocelot.social/CODE_OF_CONDUCT',
|
||||
DATA_PRIVACY: 'https://ocelot.social/DATA_PRIVACY',
|
||||
FAQ: 'https://ocelot.social/FAQ',
|
||||
ORGANIZATION: linksDefault.ORGANIZATION.overwrite({
|
||||
externalLink: 'https://ocelot.social',
|
||||
}),
|
||||
IMPRINT: linksDefault.IMPRINT.overwrite({
|
||||
externalLink: 'https://ocelot.social/IMPRINT',
|
||||
}),
|
||||
TERMS_AND_CONDITIONS: linksDefault.TERMS_AND_CONDITIONS.overwrite({
|
||||
externalLink: 'https://ocelot.social/TERMS_AND_CONDITIONS',
|
||||
}),
|
||||
CODE_OF_CONDUCT: linksDefault.CODE_OF_CONDUCT.overwrite({
|
||||
externalLink: 'https://ocelot.social/CODE_OF_CONDUCT',
|
||||
}),
|
||||
DATA_PRIVACY: linksDefault.DATA_PRIVACY.overwrite({
|
||||
externalLink: 'https://ocelot.social/DATA_PRIVACY',
|
||||
}),
|
||||
FAQ: linksDefault.FAQ.overwrite({ externalLink: 'https://ocelot.social/FAQ' }),
|
||||
}
|
||||
wrapper = Wrapper()
|
||||
wrapper.setData({ links })
|
||||
|
||||
@ -1,69 +1,12 @@
|
||||
<template>
|
||||
<div id="footer" class="ds-footer">
|
||||
<!-- made with ❤️ -->
|
||||
<nuxt-link
|
||||
v-if="noLinkDefined(links.ORGANIZATION)"
|
||||
to="/organization"
|
||||
data-test="organization-nuxt-link"
|
||||
>
|
||||
{{ $t('site.made') }}
|
||||
</nuxt-link>
|
||||
<a v-else :href="links.ORGANIZATION" target="_blank" data-test="organization-link">
|
||||
{{ $t('site.made') }}
|
||||
</a>
|
||||
<span>-</span>
|
||||
<!-- imprint -->
|
||||
<nuxt-link v-if="noLinkDefined(links.IMPRINT)" to="/imprint" data-test="imprint-nuxt-link">
|
||||
{{ $t('site.imprint') }}
|
||||
</nuxt-link>
|
||||
<a v-else :href="links.IMPRINT" target="_blank">
|
||||
{{ $t('site.imprint') }}
|
||||
</a>
|
||||
<span>-</span>
|
||||
<!-- terms and conditions -->
|
||||
<nuxt-link
|
||||
v-if="noLinkDefined(links.TERMS_AND_CONDITIONS)"
|
||||
to="/terms-and-conditions"
|
||||
data-test="terms-nuxt-link"
|
||||
>
|
||||
{{ $t('site.termsAndConditions') }}
|
||||
</nuxt-link>
|
||||
<a v-else :href="links.TERMS_AND_CONDITIONS" target="_blank">
|
||||
{{ $t('site.termsAndConditions') }}
|
||||
</a>
|
||||
<span>-</span>
|
||||
<!-- code of conduct -->
|
||||
<nuxt-link
|
||||
v-if="noLinkDefined(links.CODE_OF_CONDUCT)"
|
||||
to="/code-of-conduct"
|
||||
data-test="code-nuxt-link"
|
||||
>
|
||||
{{ $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>
|
||||
<!-- data privacy -->
|
||||
<nuxt-link
|
||||
v-if="noLinkDefined(links.DATA_PRIVACY)"
|
||||
to="/data-privacy"
|
||||
data-test="data-nuxt-link"
|
||||
>
|
||||
{{ $t('site.data-privacy') }}
|
||||
</nuxt-link>
|
||||
<a v-else :href="links.DATA_PRIVACY" target="_blank">
|
||||
{{ $t('site.data-privacy') }}
|
||||
</a>
|
||||
<span>-</span>
|
||||
<!-- faq -->
|
||||
<nuxt-link v-if="noLinkDefined(links.FAQ)" to="/faq" data-test="faq-nuxt-link">
|
||||
{{ $t('site.faq') }}
|
||||
</nuxt-link>
|
||||
<a v-else :href="links.FAQ" target="_blank">
|
||||
{{ $t('site.faq') }}
|
||||
</a>
|
||||
<span>-</span>
|
||||
<!-- links to internal or external pages -->
|
||||
<span v-for="pageParams in links.FOOTER_LINK_LIST" :key="pageParams.name">
|
||||
<page-params-link :pageParams="pageParams">
|
||||
{{ $t(pageParams.internalPage.footerIdent) }}
|
||||
</page-params-link>
|
||||
<span class="division-line">-</span>
|
||||
</span>
|
||||
<!-- version -->
|
||||
<a
|
||||
href="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/CHANGELOG.md"
|
||||
@ -77,16 +20,15 @@
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
PageParamsLink,
|
||||
},
|
||||
data() {
|
||||
return { links, version: `v${this.$env.VERSION}` }
|
||||
},
|
||||
methods: {
|
||||
noLinkDefined(link) {
|
||||
return !link || link.length === 0
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -101,7 +43,8 @@ export default {
|
||||
padding: 10px 10px;
|
||||
box-shadow: 0px -6px 12px -4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
span {
|
||||
.division-line {
|
||||
margin-left: 0.2rem;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -79,7 +79,7 @@ export default {
|
||||
data() {
|
||||
const passwordForm = PasswordForm({ translate: this.$t })
|
||||
return {
|
||||
supportEmail: emails.SUPPORT,
|
||||
supportEmail: emails.SUPPORT_EMAIL,
|
||||
formData: {
|
||||
...passwordForm.formData,
|
||||
},
|
||||
|
||||
@ -142,7 +142,7 @@ export default {
|
||||
const passwordForm = PasswordForm({ translate: this.$t })
|
||||
return {
|
||||
links,
|
||||
supportEmail: emails.SUPPORT,
|
||||
supportEmail: emails.SUPPORT_EMAIL,
|
||||
formData: {
|
||||
name: '',
|
||||
...passwordForm.formData,
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<section class="login-form">
|
||||
<section class="registration-slider">
|
||||
<base-card>
|
||||
<template #imageColumn>
|
||||
<a :href="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)" target="_blank">
|
||||
<page-params-link :pageParams="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)">
|
||||
<logo logoType="signup" />
|
||||
</a>
|
||||
</page-params-link>
|
||||
</template>
|
||||
|
||||
<component-slider :sliderData="sliderData">
|
||||
@ -48,6 +48,7 @@ import metadata from '~/constants/metadata.js'
|
||||
import ComponentSlider from '~/components/ComponentSlider/ComponentSlider'
|
||||
import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch'
|
||||
import Logo from '~/components/Logo/Logo'
|
||||
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
|
||||
import RegistrationSlideCreate from './RegistrationSlideCreate'
|
||||
import RegistrationSlideEmail from './RegistrationSlideEmail'
|
||||
import RegistrationSlideInvite from './RegistrationSlideInvite'
|
||||
@ -60,6 +61,7 @@ export default {
|
||||
ComponentSlider,
|
||||
LocaleSwitch,
|
||||
Logo,
|
||||
PageParamsLink,
|
||||
RegistrationSlideCreate,
|
||||
RegistrationSlideEmail,
|
||||
RegistrationSlideInvite,
|
||||
@ -253,4 +255,10 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss"></style>
|
||||
<style lang="scss">
|
||||
.registration-slider {
|
||||
width: 80vw;
|
||||
max-width: 620px;
|
||||
margin: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading v-if="pageParams.internalPage.headlineIdent !== null" tag="h2">
|
||||
{{ $t(pageParams.internalPage.headlineIdent) }}
|
||||
</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container v-if="pageParams.internalPage.hasContainer">
|
||||
<div v-if="!pageParams.internalPage.hasBaseCard">
|
||||
<br />
|
||||
<div v-html="$t(pageParams.internalPage.htmlIdent)" />
|
||||
</div>
|
||||
<base-card v-else>
|
||||
<div v-html="$t(pageParams.internalPage.htmlIdent)" />
|
||||
</base-card>
|
||||
</ds-container>
|
||||
<div v-else-if="!pageParams.internalPage.hasBaseCard">
|
||||
<br />
|
||||
<div v-html="$t(pageParams.internalPage.htmlIdent)" />
|
||||
</div>
|
||||
<base-card v-else>
|
||||
<div v-html="$t(pageParams.internalPage.htmlIdent)" />
|
||||
</base-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'InternalPage',
|
||||
props: {
|
||||
pageParams: { type: Object, required: true },
|
||||
},
|
||||
}
|
||||
</script>
|
||||
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<nuxt-link
|
||||
v-if="pageParams.isInternalPage"
|
||||
:to="pageParams.internalPage.pageRoute"
|
||||
:data-test="pageParams.name + '-nuxt-link'"
|
||||
>
|
||||
<slot />
|
||||
</nuxt-link>
|
||||
<a v-else :href="pageParams.externalLink" target="_blank" :data-test="pageParams.name + '-link'">
|
||||
<slot />
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'PageParamsLink',
|
||||
props: {
|
||||
pageParams: { type: Object, required: true },
|
||||
},
|
||||
}
|
||||
</script>
|
||||
140
webapp/components/utils/InternalPages.js
Normal file
140
webapp/components/utils/InternalPages.js
Normal file
@ -0,0 +1,140 @@
|
||||
import { PageParams } from '~/components/utils/PageParams.js'
|
||||
|
||||
export const defaultPageParamsPages = {
|
||||
ORGANIZATION: new PageParams({
|
||||
name: 'organization',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/organization', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.made', // localized string identifier
|
||||
headTitleIdent: 'site.made', // localized string identifier
|
||||
headlineIdent: 'site.made', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.organization',
|
||||
},
|
||||
}),
|
||||
DONATE: new PageParams({
|
||||
name: 'donate',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/donate', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.donate', // localized string identifier
|
||||
headTitleIdent: 'site.donate', // localized string identifier
|
||||
headlineIdent: 'site.donate', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.donate',
|
||||
},
|
||||
}),
|
||||
IMPRINT: new PageParams({
|
||||
name: 'imprint',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/imprint', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.imprint', // localized string identifier
|
||||
headTitleIdent: 'site.imprint', // localized string identifier
|
||||
headlineIdent: 'site.imprint', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.imprint',
|
||||
},
|
||||
}),
|
||||
TERMS_AND_CONDITIONS: new PageParams({
|
||||
name: 'terms-and-conditions',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/terms-and-conditions', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.termsAndConditions', // localized string identifier
|
||||
headTitleIdent: 'site.termsAndConditions', // localized string identifier
|
||||
headlineIdent: 'site.termsAndConditions', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.termsAndConditions',
|
||||
},
|
||||
}),
|
||||
CODE_OF_CONDUCT: new PageParams({
|
||||
name: 'code-of-conduct',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/code-of-conduct', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.code-of-conduct', // localized string identifier
|
||||
headTitleIdent: 'site.code-of-conduct', // localized string identifier
|
||||
headlineIdent: 'site.code-of-conduct', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.codeOfConduct',
|
||||
},
|
||||
}),
|
||||
DATA_PRIVACY: new PageParams({
|
||||
name: 'data-privacy',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/data-privacy', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.data-privacy', // localized string identifier
|
||||
headTitleIdent: 'site.data-privacy', // localized string identifier
|
||||
headlineIdent: 'site.data-privacy', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.dataPrivacy',
|
||||
},
|
||||
}),
|
||||
FAQ: new PageParams({
|
||||
name: 'faq',
|
||||
|
||||
externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/faq', // static, don't change! internal page in case no external is defined
|
||||
footerIdent: 'site.faq', // localized string identifier
|
||||
headTitleIdent: 'site.faq', // localized string identifier
|
||||
headlineIdent: 'site.faq', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.faq',
|
||||
},
|
||||
}),
|
||||
SUPPORT: new PageParams({
|
||||
name: 'support',
|
||||
|
||||
externalLink: null,
|
||||
|
||||
internalPage: {
|
||||
pageRoute: '/support', // static, don't change '*/support'! internal page in case no external is defined
|
||||
footerIdent: 'site.support', // localized string identifier
|
||||
headTitleIdent: 'site.support', // localized string identifier
|
||||
headlineIdent: 'site.support', // localized string identifier. on null it's hidden, on empty string default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
htmlIdent: 'html.support',
|
||||
},
|
||||
}),
|
||||
}
|
||||
41
webapp/components/utils/PageParams.js
Normal file
41
webapp/components/utils/PageParams.js
Normal file
@ -0,0 +1,41 @@
|
||||
export class PageParams {
|
||||
constructor(pageParams) {
|
||||
this.name = pageParams.name
|
||||
this.externalLink = pageParams.externalLink
|
||||
this.internalPage = pageParams.internalPage
|
||||
}
|
||||
|
||||
overwrite(assignPageParams) {
|
||||
const pageParams = this
|
||||
if (assignPageParams.name !== undefined) {
|
||||
pageParams.name = assignPageParams.name
|
||||
}
|
||||
if (assignPageParams.externalLink !== undefined) {
|
||||
pageParams.externalLink = assignPageParams.externalLink
|
||||
}
|
||||
if (assignPageParams.internalPage !== undefined) {
|
||||
pageParams.internalPage = { ...pageParams.internalPage, ...assignPageParams.internalPage }
|
||||
}
|
||||
return pageParams
|
||||
}
|
||||
|
||||
noStringDefined(string) {
|
||||
return !string || string.length === 0
|
||||
}
|
||||
|
||||
get isInternalPage() {
|
||||
return this.noStringDefined(this.externalLink)
|
||||
}
|
||||
|
||||
get link() {
|
||||
return this.isInternalPage ? this.internalPage.pageRoute : this.externalLink
|
||||
}
|
||||
|
||||
redirectToPage(thisComponent) {
|
||||
if (this.isInternalPage) {
|
||||
thisComponent.$router.push(this.internalPage.pageRoute)
|
||||
} else if (typeof window !== 'undefined') {
|
||||
window.location.href = this.externalLink
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,8 @@
|
||||
// this file is duplicated in `backend/src/config/` and `webapp/constants/` and replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/constants/
|
||||
export default {
|
||||
SUPPORT: 'devops@ocelot.social',
|
||||
MODERATION: 'devops@ocelot.social',
|
||||
SUPPORT_EMAIL: 'devops@ocelot.social',
|
||||
MODERATION_EMAIL: 'devops@ocelot.social',
|
||||
// ATTENTION: the following links have to be defined even for internal pages with full URLs as example like 'https://staging.ocelot.social/support', because they are used in e-mails!
|
||||
ORGANIZATION_LINK: 'https://ocelot.social',
|
||||
SUPPORT_LINK: 'https://ocelot.social',
|
||||
}
|
||||
|
||||
@ -1,17 +1,136 @@
|
||||
// this file is duplicated in `backend/src/config/links.js` and `webapp/constants/links.js` and replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/constants/
|
||||
// this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/constants/
|
||||
|
||||
import { defaultPageParamsPages } from '~/components/utils/InternalPages.js'
|
||||
|
||||
const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({
|
||||
externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: '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
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const DONATE = defaultPageParamsPages.DONATE.overwrite({
|
||||
// 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
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: '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
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({
|
||||
// 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
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: '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
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwrite({
|
||||
// externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: 'site.termsAndConditions', // localized string identifier, if undefined default is used
|
||||
// headTitleIdent: 'site.termsAndConditions', // localized string identifier, if undefined default is used
|
||||
// headlineIdent: 'site.termsAndConditions', // localized string identifier, on null it's hidden, if undefined default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({
|
||||
// externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used
|
||||
// headTitleIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used
|
||||
// headlineIdent: 'site.code-of-conduct', // localized string identifier, on null it's hidden, if undefined default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({
|
||||
// externalLink: null, // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used
|
||||
// headTitleIdent: 'site.data-privacy', // localized string identifier, if undefined default is used
|
||||
// headlineIdent: 'site.data-privacy', // localized string identifier, on null it's hidden, if undefined default is used
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const FAQ = defaultPageParamsPages.FAQ.overwrite({
|
||||
externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: 'site.faq', // localized string identifier, if undefined default is used
|
||||
// headTitleIdent: 'site.faq', // localized string identifier, if undefined default is used
|
||||
// headlineIdent: 'site.faq', // on null default is used, on empty string it's hidden
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
const SUPPORT = defaultPageParamsPages.SUPPORT.overwrite({
|
||||
externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating
|
||||
|
||||
internalPage: {
|
||||
// footerIdent: '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
|
||||
hasContainer: true,
|
||||
hasBaseCard: true,
|
||||
hasLoginInHeader: true,
|
||||
// in case internal page content is here 'webapp/locales/html/'
|
||||
},
|
||||
})
|
||||
|
||||
export default {
|
||||
LANDING_PAGE: '/login', // examples: '/login', '/registration', '/organization', or external 'https://ocelot.social'
|
||||
|
||||
// you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/
|
||||
// you can find and store templates for 👇🏼 at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/
|
||||
|
||||
SUPPORT: 'https://ocelot.social', // example for internal support page: 'https://staging.ocelot.social/support'. set a full URL please, because it is used in e-mails as well!
|
||||
ORGANIZATION,
|
||||
DONATE,
|
||||
IMPRINT,
|
||||
TERMS_AND_CONDITIONS,
|
||||
CODE_OF_CONDUCT,
|
||||
DATA_PRIVACY,
|
||||
FAQ,
|
||||
SUPPORT,
|
||||
|
||||
// on null or empty strings internal pages are used, see 'webapp/locales/html/'
|
||||
ORGANIZATION: 'https://ocelot.social',
|
||||
DONATE: 'https://ocelot-social.herokuapp.com/donations', // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly
|
||||
IMPRINT: 'https://ocelot-social.herokuapp.com/imprint', // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly
|
||||
TERMS_AND_CONDITIONS: null,
|
||||
CODE_OF_CONDUCT: null,
|
||||
DATA_PRIVACY: null,
|
||||
FAQ: 'https://ocelot.social',
|
||||
FOOTER_LINK_LIST: [
|
||||
ORGANIZATION,
|
||||
TERMS_AND_CONDITIONS,
|
||||
CODE_OF_CONDUCT,
|
||||
DATA_PRIVACY,
|
||||
FAQ,
|
||||
DONATE,
|
||||
IMPRINT,
|
||||
// SUPPORT,
|
||||
],
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import Vuex from 'vuex'
|
||||
import { config, shallowMount } from '@vue/test-utils'
|
||||
import Basic from './basic.vue'
|
||||
|
||||
@ -8,16 +9,23 @@ config.stubs.nuxt = '<span><slot /></span>'
|
||||
describe('basic.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
let store
|
||||
|
||||
beforeEach(() => {
|
||||
mocks = {
|
||||
$t: jest.fn(),
|
||||
}
|
||||
store = new Vuex.Store({
|
||||
getters: {
|
||||
'auth/isLoggedIn': () => true,
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
describe('shallow mount', () => {
|
||||
const Wrapper = () => {
|
||||
return shallowMount(Basic, {
|
||||
store,
|
||||
mocks,
|
||||
localVue,
|
||||
})
|
||||
|
||||
@ -10,7 +10,14 @@
|
||||
</a>
|
||||
</ds-flex-item>
|
||||
<ds-flex-item width="20%" style="flex-grow: 0">
|
||||
<locale-switch class="topbar-locale-switch" placement="top" offset="16" />
|
||||
<div class="main-navigation-right" style="flex-basis: auto">
|
||||
<locale-switch class="topbar-locale-switch" placement="top" offset="8" />
|
||||
<template v-if="!isLoggedIn">
|
||||
<client-only>
|
||||
<login-button placement="top" />
|
||||
</client-only>
|
||||
</template>
|
||||
</div>
|
||||
</ds-flex-item>
|
||||
</ds-flex>
|
||||
</ds-container>
|
||||
@ -26,18 +33,26 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import seo from '~/mixins/seo'
|
||||
import Logo from '~/components/Logo/Logo'
|
||||
import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch'
|
||||
import seo from '~/mixins/seo'
|
||||
import LoginButton from '~/components/LoginButton/LoginButton'
|
||||
import PageFooter from '~/components/PageFooter/PageFooter'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Logo,
|
||||
LocaleSwitch,
|
||||
LoginButton,
|
||||
PageFooter,
|
||||
},
|
||||
mixins: [seo],
|
||||
computed: {
|
||||
...mapGetters({
|
||||
isLoggedIn: 'auth/isLoggedIn',
|
||||
}),
|
||||
},
|
||||
methods: {
|
||||
redirectToRoot() {
|
||||
this.$router.replace('/')
|
||||
@ -45,3 +60,13 @@ export default {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.main-navigation-right {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.main-navigation-right .desktop-view {
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -781,6 +781,7 @@
|
||||
"contact": "Kontakt",
|
||||
"data-privacy": "Datenschutzerklärung",
|
||||
"director": "Geschäftsführer",
|
||||
"donate": "Spenden",
|
||||
"error-occurred": "Ein Fehler ist aufgetreten.",
|
||||
"faq": "FAQ",
|
||||
"germany": "Deutschland",
|
||||
|
||||
@ -781,6 +781,7 @@
|
||||
"contact": "Contact",
|
||||
"data-privacy": "Data privacy",
|
||||
"director": "Managing Director",
|
||||
"donate": "Donate",
|
||||
"error-occurred": "An error occurred.",
|
||||
"faq": "FAQ",
|
||||
"germany": "Germany",
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Ich bin der Inhalt vom Verhaltenskodex.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Das hier wäre der Inhalt der Datenschutzbestimmungen.</p>
|
||||
|
||||
4
webapp/locales/html/de/donate.html
Normal file
4
webapp/locales/html/de/donate.html
Normal file
@ -0,0 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<p>Hier steht was zu den Spenden.</p>
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Hier stehen die FAQs.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Ich bin das Impressum.</p>
|
||||
|
||||
@ -5,6 +5,7 @@ import codeOfConduct from './code-of-conduct.html'
|
||||
import dataPrivacy from './data-privacy.html'
|
||||
import faq from './faq.html'
|
||||
import imprint from './imprint.html'
|
||||
import donate from './donate.html'
|
||||
|
||||
export default {
|
||||
organization,
|
||||
@ -14,4 +15,5 @@ export default {
|
||||
dataPrivacy,
|
||||
faq,
|
||||
imprint,
|
||||
donate,
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Hier wird das Netzwerk beschrieben.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Ich bin der Inhalt vom Support.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Ich bin der Inhalt der Seite "Nutzungsbedingungen".</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>I am the content of the code of conduct.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>This would be our data privacy section.</p>
|
||||
|
||||
4
webapp/locales/html/en/donate.html
Normal file
4
webapp/locales/html/en/donate.html
Normal file
@ -0,0 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<p>Here's what it says about donations.</p>
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Here are the FAQs.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>I am the imprint.</p>
|
||||
|
||||
@ -5,6 +5,7 @@ import codeOfConduct from './code-of-conduct.html'
|
||||
import dataPrivacy from './data-privacy.html'
|
||||
import faq from './faq.html'
|
||||
import imprint from './imprint.html'
|
||||
import donate from './donate.html'
|
||||
|
||||
export default {
|
||||
organization,
|
||||
@ -14,4 +15,5 @@ export default {
|
||||
dataPrivacy,
|
||||
faq,
|
||||
imprint,
|
||||
donate,
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>Here the network is described.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>I am the content of the support.</p>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<!-- this file is replaced on rebranding by https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/locales/html/ -->
|
||||
<!-- you can find and store templates at https://github.com/Ocelot-Social-Community/Ocelot-Social-Deploy-Rebranding/tree/master/branding/templates/ -->
|
||||
|
||||
<br>
|
||||
<p>I am the content of the page "Terms And Conditions".<p>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ocelot-social/maintenance",
|
||||
"version": "1.0.3",
|
||||
"version": "1.0.5",
|
||||
"description": "Maintenance page for ocelot.social",
|
||||
"repository": "https://github.com/Ocelot-Social-Community/Ocelot-Social",
|
||||
"author": "ocelot.social Community",
|
||||
|
||||
@ -8,9 +8,19 @@
|
||||
<ds-flex>
|
||||
<ds-flex-item :width="{ base: '100%', sm: 1, md: 1 }">
|
||||
<ds-space>
|
||||
<a :href="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)" target="_blank">
|
||||
<img class="image" alt="Under maintenance" src="/img/custom/logo-squared.svg" />
|
||||
</a>
|
||||
<!-- QUESTION: could we have internal page or even all internal pages here as well with PageParamsLink by having the footer underneath? -->
|
||||
<!-- I tried this out, but only could get the nginx page displayed. I guees the there were nuxt errors, because the nuxt config file 'webapp/maintenance/source/nuxt.config.maintenance.js' would have to be refactored for that as well and may be the missing folder `components/_new/generic/` plays a role, see https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/4619 -->
|
||||
<!-- <page-params-link :pageParams="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)">
|
||||
<logo type="maintenance" />
|
||||
</page-params-link> -->
|
||||
<!-- BUT: not the logo and not even the a-tag is working at the moment -->
|
||||
<!-- <a
|
||||
:href="emails.ORGANIZATION_LINK"
|
||||
:title="$t('login.moreInfo', metadata)"
|
||||
target="_blank"
|
||||
> -->
|
||||
<img class="image" alt="Under maintenance" src="/img/custom/logo-squared.svg" />
|
||||
<!-- </a> -->
|
||||
</ds-space>
|
||||
</ds-flex-item>
|
||||
<ds-flex-item :width="{ base: '100%', sm: 1, md: 1 }">
|
||||
@ -35,17 +45,20 @@
|
||||
|
||||
<script>
|
||||
import emails from '~/constants/emails.js'
|
||||
import links from '~/constants/links.js'
|
||||
// import links from '~/constants/links.js'
|
||||
import metadata from '~/constants/metadata.js'
|
||||
import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch'
|
||||
// import Logo from '~/components/Logo/Logo'
|
||||
|
||||
export default {
|
||||
layout: 'blank',
|
||||
components: {
|
||||
LocaleSwitch,
|
||||
// Logo,
|
||||
},
|
||||
data() {
|
||||
return { links, metadata, supportEmail: emails.SUPPORT }
|
||||
// return { links, metadata, supportEmail: emails.SUPPORT_EMAIL }
|
||||
return { metadata, supportEmail: emails.SUPPORT_EMAIL }
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
26
webapp/mixins/internalPageMixins.js
Normal file
26
webapp/mixins/internalPageMixins.js
Normal file
@ -0,0 +1,26 @@
|
||||
import InternalPage from '~/components/_new/features/InternalPage/InternalPage.vue'
|
||||
|
||||
export function internalPageMixins(pageParams) {
|
||||
return {
|
||||
layout: 'basic',
|
||||
components: {
|
||||
InternalPage,
|
||||
},
|
||||
data() {
|
||||
return { pageParams }
|
||||
},
|
||||
head() {
|
||||
return {
|
||||
title: this.$t(this.pageParams.internalPage.headTitleIdent),
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (!this.pageParams.isInternalPage) {
|
||||
// to avoid possible errors, because 'window' is only defined on browser side but not in NodeJS on client side. check for 'typeof window' is neccessary, because if it's not defined at all you can't check for 'window !== undefined' without the same error 'window is undefined'
|
||||
if (typeof window !== 'undefined') {
|
||||
window.location.href = this.pageParams.externalLink
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -45,6 +45,7 @@ export default {
|
||||
'imprint',
|
||||
'data-privacy',
|
||||
'faq',
|
||||
'donate',
|
||||
],
|
||||
// pages to keep alive
|
||||
keepAlivePages: ['index'],
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ocelot-social-webapp",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.5",
|
||||
"description": "ocelot.social Frontend",
|
||||
"repository": "https://github.com/Ocelot-Social-Community/Ocelot-Social",
|
||||
"author": "ocelot.social Community",
|
||||
@ -132,7 +132,7 @@
|
||||
"eslint-plugin-import": "~2.20.2",
|
||||
"eslint-plugin-jest": "~24.4.0",
|
||||
"eslint-plugin-node": "~11.1.0",
|
||||
"eslint-plugin-prettier": "~3.1.4",
|
||||
"eslint-plugin-prettier": "~3.4.0",
|
||||
"eslint-plugin-promise": "~4.3.1",
|
||||
"eslint-plugin-standard": "~5.0.0",
|
||||
"eslint-plugin-vue": "~6.2.2",
|
||||
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('code-of-conduct.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('code-of-conduct.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading tag="h2">{{ $t('site.code-of-conduct') }}</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container>
|
||||
<div v-html="$t('html.codeOfConduct')" />
|
||||
</ds-container>
|
||||
</div>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.code-of-conduct'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.CODE_OF_CONDUCT)],
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('data-privacy.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('data-privacy.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading tag="h2">{{ $t('site.data-privacy') }}</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container>
|
||||
<div v-html="$t('html.dataPrivacy')" />
|
||||
</ds-container>
|
||||
</div>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.data-privacy'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.DATA_PRIVACY)],
|
||||
}
|
||||
</script>
|
||||
|
||||
43
webapp/pages/donate.spec.js
Normal file
43
webapp/pages/donate.spec.js
Normal file
@ -0,0 +1,43 @@
|
||||
import { mount } from '@vue/test-utils'
|
||||
import Donate from './donate.vue'
|
||||
import VueMeta from 'vue-meta'
|
||||
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('donate.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
|
||||
beforeEach(() => {
|
||||
mocks = {
|
||||
$t: (t) => t,
|
||||
}
|
||||
})
|
||||
|
||||
describe('mount', () => {
|
||||
const Wrapper = () => {
|
||||
return mount(Donate, {
|
||||
mocks,
|
||||
localVue,
|
||||
})
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
wrapper = Wrapper()
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
expect(wrapper.vm.$metaInfo.title).toBe('site.donate')
|
||||
})
|
||||
})
|
||||
})
|
||||
12
webapp/pages/donate.vue
Normal file
12
webapp/pages/donate.vue
Normal file
@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
mixins: [internalPageMixins(links.DONATE)],
|
||||
}
|
||||
</script>
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('faq.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('faq.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<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>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.faq'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.FAQ)],
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('imprint.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('imprint.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading tag="h2">{{ $t('site.imprint') }}</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container>
|
||||
<div v-html="$t('html.imprint')" />
|
||||
</ds-container>
|
||||
</div>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.imprint'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.IMPRINT)],
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -5,11 +5,11 @@
|
||||
<hashtags-filter :hashtag="hashtag" @clearSearch="clearSearch" />
|
||||
</ds-grid-item>
|
||||
<ds-grid-item :row-span="2" column-span="fullWidth" class="top-info-bar">
|
||||
<!--<donation-info /> -->
|
||||
<!-- <donation-info /> -->
|
||||
<div>
|
||||
<a target="_blank" :href="links.DONATE">
|
||||
<base-button filled>{{ $t('donations.donate-now') }}</base-button>
|
||||
</a>
|
||||
<base-button filled @click="redirectToPage(links.DONATE)">
|
||||
{{ $t('donations.donate-now') }}
|
||||
</base-button>
|
||||
</div>
|
||||
<div class="sorting-dropdown">
|
||||
<ds-select
|
||||
@ -172,6 +172,9 @@ export default {
|
||||
this.resetPostList()
|
||||
this.$apollo.queries.Post.refetch()
|
||||
},
|
||||
redirectToPage(pageParams) {
|
||||
pageParams.redirectToPage(this)
|
||||
},
|
||||
},
|
||||
apollo: {
|
||||
Post: {
|
||||
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('organization.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('organization.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading tag="h2">{{ $t('site.made') }}</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container>
|
||||
<div v-html="$t('html.organization')" />
|
||||
</ds-container>
|
||||
</div>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.made'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.ORGANIZATION)],
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
<ds-container width="small" class="password-reset">
|
||||
<base-card>
|
||||
<template #imageColumn>
|
||||
<a :href="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)" target="_blank">
|
||||
<page-params-link :pageParams="links.ORGANIZATION" :title="$t('login.moreInfo', metadata)">
|
||||
<logo logoType="passwordReset" />
|
||||
</a>
|
||||
</page-params-link>
|
||||
</template>
|
||||
<nuxt-child />
|
||||
<template #topMenu>
|
||||
@ -19,11 +19,13 @@ import links from '~/constants/links.js'
|
||||
import metadata from '~/constants/metadata.js'
|
||||
import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch'
|
||||
import Logo from '~/components/Logo/Logo'
|
||||
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
LocaleSwitch,
|
||||
Logo,
|
||||
PageParamsLink,
|
||||
},
|
||||
layout: 'no-header',
|
||||
data() {
|
||||
|
||||
@ -80,7 +80,9 @@
|
||||
{{ $t('settings.blocked-users.explanation.commenting-disabled') }}
|
||||
<br />
|
||||
{{ $t('settings.blocked-users.explanation.commenting-explanation') }}
|
||||
<a :href="links.FAQ" target="_blank">FAQ</a>
|
||||
<page-params-link :pageParams="links.FAQ">
|
||||
{{ $t('site.faq') }}
|
||||
</page-params-link>
|
||||
</ds-placeholder>
|
||||
</ds-section>
|
||||
</base-card>
|
||||
@ -95,6 +97,7 @@ import UserTeaser from '~/components/UserTeaser/UserTeaser'
|
||||
import HcShoutButton from '~/components/ShoutButton.vue'
|
||||
import CommentForm from '~/components/CommentForm/CommentForm'
|
||||
import CommentList from '~/components/CommentList/CommentList'
|
||||
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
|
||||
import {
|
||||
postMenuModalsData,
|
||||
deletePostMutation,
|
||||
@ -111,13 +114,14 @@ export default {
|
||||
mode: 'out-in',
|
||||
},
|
||||
components: {
|
||||
HcHashtag,
|
||||
UserTeaser,
|
||||
HcShoutButton,
|
||||
ContentMenu,
|
||||
CommentForm,
|
||||
CommentList,
|
||||
ContentViewer,
|
||||
HcHashtag,
|
||||
HcShoutButton,
|
||||
PageParamsLink,
|
||||
UserTeaser,
|
||||
},
|
||||
head() {
|
||||
return {
|
||||
|
||||
@ -306,7 +306,7 @@ describe('Registration', () => {
|
||||
|
||||
it('renders', async () => {
|
||||
wrapper = await Wrapper()
|
||||
expect(wrapper.is('.login-form')).toBe(true)
|
||||
expect(wrapper.is('.registration-slider')).toBe(true)
|
||||
})
|
||||
|
||||
// The asyncTests must go last
|
||||
|
||||
@ -60,7 +60,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
supportEmail: emails.SUPPORT,
|
||||
supportEmail: emails.SUPPORT_EMAIL,
|
||||
}
|
||||
},
|
||||
async asyncData(context) {
|
||||
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('support.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('support.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading tag="h2">{{ $t('site.support') }}</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container>
|
||||
<div v-html="$t('html.support')" />
|
||||
</ds-container>
|
||||
</div>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.support'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.SUPPORT)],
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -5,6 +5,11 @@ import VueMeta from 'vue-meta'
|
||||
const localVue = global.localVue
|
||||
localVue.use(VueMeta, { keyName: 'head' })
|
||||
|
||||
// avoid: 'Error: Not implemented: navigation (except hash changes)', see https://stackoverflow.com/questions/54090231/how-to-fix-error-not-implemented-navigation-except-hash-changes
|
||||
const assignMock = jest.fn()
|
||||
delete window.location
|
||||
window.location = { assign: assignMock }
|
||||
|
||||
describe('terms-and-conditions.vue', () => {
|
||||
let wrapper
|
||||
let mocks
|
||||
@ -28,7 +33,7 @@ describe('terms-and-conditions.vue', () => {
|
||||
})
|
||||
|
||||
it('renders', () => {
|
||||
expect(wrapper.is('div')).toBe(true)
|
||||
expect(wrapper.is('div')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has correct <head> content', () => {
|
||||
|
||||
@ -1,21 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<ds-space margin="small">
|
||||
<ds-heading tag="h2">{{ $t('site.termsAndConditions') }}</ds-heading>
|
||||
</ds-space>
|
||||
<ds-container>
|
||||
<div v-html="$t('html.termsAndConditions')" />
|
||||
</ds-container>
|
||||
</div>
|
||||
<internal-page :pageParams="pageParams" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import links from '~/constants/links.js'
|
||||
import { internalPageMixins } from '~/mixins/internalPageMixins'
|
||||
|
||||
export default {
|
||||
layout: 'basic',
|
||||
head() {
|
||||
return {
|
||||
title: this.$t('site.termsAndConditions'),
|
||||
}
|
||||
},
|
||||
mixins: [internalPageMixins(links.TERMS_AND_CONDITIONS)],
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -9821,10 +9821,10 @@ eslint-plugin-node@~11.1.0:
|
||||
resolve "^1.10.1"
|
||||
semver "^6.1.0"
|
||||
|
||||
eslint-plugin-prettier@~3.1.4:
|
||||
version "3.1.4"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2"
|
||||
integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==
|
||||
eslint-plugin-prettier@~3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7"
|
||||
integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==
|
||||
dependencies:
|
||||
prettier-linter-helpers "^1.0.0"
|
||||
|
||||
|
||||
210
yarn.lock
210
yarn.lock
@ -1392,11 +1392,6 @@ acorn@^6.0.2:
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
|
||||
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
|
||||
|
||||
agent-base@5:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c"
|
||||
integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
|
||||
|
||||
agent-base@6:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a"
|
||||
@ -1726,10 +1721,10 @@ bluebird@^3.4.1, bluebird@^3.7.2:
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9:
|
||||
version "4.12.0"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
|
||||
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
||||
version "4.11.9"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
|
||||
integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
@ -1762,7 +1757,7 @@ braces@^3.0.1:
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
brorand@^1.0.1, brorand@^1.1.0:
|
||||
brorand@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
||||
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
|
||||
@ -1900,15 +1895,15 @@ browserify@16.2.3, browserify@^16.1.0:
|
||||
xtend "^4.0.0"
|
||||
|
||||
browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.6.0:
|
||||
version "4.16.6"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2"
|
||||
integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==
|
||||
version "4.14.7"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6"
|
||||
integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001219"
|
||||
colorette "^1.2.2"
|
||||
electron-to-chromium "^1.3.723"
|
||||
caniuse-lite "^1.0.30001157"
|
||||
colorette "^1.2.1"
|
||||
electron-to-chromium "^1.3.591"
|
||||
escalade "^3.1.1"
|
||||
node-releases "^1.1.71"
|
||||
node-releases "^1.1.66"
|
||||
|
||||
buffer-crc32@~0.2.3:
|
||||
version "0.2.13"
|
||||
@ -1968,10 +1963,10 @@ cachedir@^2.3.0:
|
||||
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
|
||||
integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
|
||||
|
||||
caniuse-lite@^1.0.30001219:
|
||||
version "1.0.30001228"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa"
|
||||
integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==
|
||||
caniuse-lite@^1.0.30001157:
|
||||
version "1.0.30001159"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001159.tgz#bebde28f893fa9594dadcaa7d6b8e2aa0299df20"
|
||||
integrity sha512-w9Ph56jOsS8RL20K9cLND3u/+5WASWdhC/PPrf+V3/HsM3uHOavWOR1Xzakbv4Puo/srmPHudkmCRWM7Aq+/UA==
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
@ -2137,15 +2132,15 @@ code-point-at@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
|
||||
|
||||
codecov@^3.7.1:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.7.1.tgz#434cb8d55f18ef01672e5739d3d266696bebc202"
|
||||
integrity sha512-JHWxyPTkMLLJn9SmKJnwAnvY09kg2Os2+Ux+GG7LwZ9g8gzDDISpIN5wAsH1UBaafA/yGcd3KofMaorE8qd6Lw==
|
||||
codecov@^3.8.2:
|
||||
version "3.8.2"
|
||||
resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.8.2.tgz#ab24f18783998c39e809ea210af899f8dbcc790e"
|
||||
integrity sha512-6w/kt/xvmPsWMfDFPE/T054txA9RTgcJEw36PNa6MYX+YV29jCHCRFXwbQ3QZBTOgnex1J2WP8bo2AT8TWWz9g==
|
||||
dependencies:
|
||||
argv "0.0.2"
|
||||
ignore-walk "3.0.3"
|
||||
js-yaml "3.13.1"
|
||||
teeny-request "6.0.1"
|
||||
js-yaml "3.14.1"
|
||||
teeny-request "7.0.1"
|
||||
urlgrey "0.4.4"
|
||||
|
||||
coffeeify@3.0.1:
|
||||
@ -2193,10 +2188,10 @@ color-name@~1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
colorette@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
|
||||
integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
|
||||
colorette@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
|
||||
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
|
||||
|
||||
colors@1.0.3:
|
||||
version "1.0.3"
|
||||
@ -2235,7 +2230,12 @@ commander@^3.0.1:
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e"
|
||||
integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==
|
||||
|
||||
commander@^5.0.0, commander@^5.1.0:
|
||||
commander@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0"
|
||||
integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ==
|
||||
|
||||
commander@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
|
||||
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
|
||||
@ -2381,7 +2381,7 @@ cross-spawn@^6.0.5:
|
||||
shebang-command "^1.2.0"
|
||||
which "^1.2.9"
|
||||
|
||||
cross-spawn@^7.0.0, cross-spawn@^7.0.1:
|
||||
cross-spawn@^7.0.0:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
|
||||
@ -2390,6 +2390,15 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1:
|
||||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
cross-spawn@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14"
|
||||
integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==
|
||||
dependencies:
|
||||
path-key "^3.1.0"
|
||||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
crypto-browserify@^3.0.0:
|
||||
version "3.12.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
|
||||
@ -2804,10 +2813,10 @@ ecdsa-sig-formatter@1.0.11:
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
electron-to-chromium@^1.3.723:
|
||||
version "1.3.737"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.737.tgz#196f2e9656f4f3c31930750e1899c091b72d36b5"
|
||||
integrity sha512-P/B84AgUSQXaum7a8m11HUsYL8tj9h/Pt5f7Hg7Ty6bm5DxlFq+e5+ouHUoNQMsKDJ7u4yGfI8mOErCmSH9wyg==
|
||||
electron-to-chromium@^1.3.591:
|
||||
version "1.3.603"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.603.tgz#1b71bec27fb940eccd79245f6824c63d5f7e8abf"
|
||||
integrity sha512-J8OHxOeJkoSLgBXfV9BHgKccgfLMHh+CoeRo6wJsi6m0k3otaxS/5vrHpMNSEYY4MISwewqanPOuhAtuE8riQQ==
|
||||
|
||||
elegant-spinner@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -2815,17 +2824,17 @@ elegant-spinner@^1.0.1:
|
||||
integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
|
||||
|
||||
elliptic@^6.0.0:
|
||||
version "6.5.4"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
|
||||
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
|
||||
version "6.5.3"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
|
||||
integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
|
||||
dependencies:
|
||||
bn.js "^4.11.9"
|
||||
brorand "^1.1.0"
|
||||
bn.js "^4.4.0"
|
||||
brorand "^1.0.1"
|
||||
hash.js "^1.0.0"
|
||||
hmac-drbg "^1.0.1"
|
||||
inherits "^2.0.4"
|
||||
minimalistic-assert "^1.0.1"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
hmac-drbg "^1.0.0"
|
||||
inherits "^2.0.1"
|
||||
minimalistic-assert "^1.0.0"
|
||||
minimalistic-crypto-utils "^1.0.0"
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
@ -3412,7 +3421,7 @@ hash.js@^1.0.0, hash.js@^1.0.3:
|
||||
inherits "^2.0.3"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
hmac-drbg@^1.0.1:
|
||||
hmac-drbg@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
|
||||
@ -3453,12 +3462,12 @@ https-browserify@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
|
||||
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
|
||||
|
||||
https-proxy-agent@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b"
|
||||
integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==
|
||||
https-proxy-agent@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
|
||||
integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
|
||||
dependencies:
|
||||
agent-base "5"
|
||||
agent-base "6"
|
||||
debug "4"
|
||||
|
||||
human-signals@^1.1.1:
|
||||
@ -3510,7 +3519,7 @@ inflight@^1.0.4:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
|
||||
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
@ -3876,10 +3885,10 @@ js-string-escape@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||
|
||||
js-yaml@3.13.1, js-yaml@^3.9.0:
|
||||
version "3.13.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
|
||||
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
|
||||
js-yaml@3.14.1, js-yaml@^3.9.0:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
@ -4301,7 +4310,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
||||
|
||||
minimalistic-crypto-utils@^1.0.1:
|
||||
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||
@ -4448,15 +4457,38 @@ neo-async@^2.6.0:
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||
|
||||
neo4j-driver@^4.0.2, neo4j-driver@^4.2.2:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/neo4j-driver/-/neo4j-driver-4.2.3.tgz#238c98cef329ff0fb11f9884360c4ff4650b2409"
|
||||
integrity sha512-HCJ7+J5V/5yhP+b6G2zTb7SKlAN/oLYaMkD8Bo8L9veScDtgDHBlbkbYEHf1YSAd67OfjZKeF9l84J8Kjdw91g==
|
||||
neo4j-driver-bolt-connection@^4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/neo4j-driver-bolt-connection/-/neo4j-driver-bolt-connection-4.3.1.tgz#bbaf0d2287d9be61a480397067c57e82e431fac9"
|
||||
integrity sha512-xE7tHgoqcHM1qlXKWWxcOag2F+5OgNVeKDW9W+DKLQ7g3YGvutxcUzp1WrAc8hpFGM2IWVSNEeUt5c5SIXlHCg==
|
||||
dependencies:
|
||||
neo4j-driver-core "^4.3.1"
|
||||
text-encoding-utf-8 "^1.0.2"
|
||||
|
||||
neo4j-driver-core@^4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/neo4j-driver-core/-/neo4j-driver-core-4.3.1.tgz#5d92ae3f9ee48e3af2b4a085503368b15a195a98"
|
||||
integrity sha512-FV194GxpPvgNpettGUMit6hxbMOkBR42j1K6xwfLvm25XYaZJMJzE0ezqS0Vp0G6etUqhUQChh7WYLdTMIztpQ==
|
||||
|
||||
neo4j-driver@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/neo4j-driver/-/neo4j-driver-4.0.2.tgz#78de3b91e91572bcbd9d2e02554322fe1ab399ea"
|
||||
integrity sha512-xQN4BZZsweaNNac7FDYAV6f/JybghwY3lk4fwblS8V5KQ+DBMPe4Pthh672mp+wEYZGyzPalq5CfpcBrWaZ4Gw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.5.5"
|
||||
rxjs "^6.6.3"
|
||||
rxjs "^6.5.2"
|
||||
text-encoding-utf-8 "^1.0.2"
|
||||
uri-js "^4.4.0"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
neo4j-driver@^4.2.2:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/neo4j-driver/-/neo4j-driver-4.3.1.tgz#897c812abf631b5a520162bb1d71d6a1b320d231"
|
||||
integrity sha512-7MguiDpGWoj10wfQvi7HRLBif39Sz67w5zOyhaDG8OcHfJbU+onlnGfE81AOlOlYSj/JSv196K1RcFXuJMZv8Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.5.5"
|
||||
neo4j-driver-bolt-connection "^4.3.1"
|
||||
neo4j-driver-core "^4.3.1"
|
||||
rxjs "^6.6.3"
|
||||
|
||||
neode@^0.4.7:
|
||||
version "0.4.7"
|
||||
@ -4485,11 +4517,16 @@ no-case@^2.2.0:
|
||||
dependencies:
|
||||
lower-case "^1.1.1"
|
||||
|
||||
node-fetch@^2.2.0, node-fetch@^2.6.0:
|
||||
node-fetch@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
||||
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
|
||||
|
||||
node-fetch@^2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
|
||||
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
|
||||
|
||||
node-modules-regexp@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
|
||||
@ -4511,10 +4548,10 @@ node-pre-gyp@^0.10.0:
|
||||
semver "^5.3.0"
|
||||
tar "^4"
|
||||
|
||||
node-releases@^1.1.71:
|
||||
version "1.1.72"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe"
|
||||
integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==
|
||||
node-releases@^1.1.66:
|
||||
version "1.1.67"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12"
|
||||
integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==
|
||||
|
||||
nopt@^4.0.1:
|
||||
version "4.0.1"
|
||||
@ -5252,7 +5289,7 @@ rosie@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/rosie/-/rosie-2.0.1.tgz#c250c4787ce450b72aa9eff26509f68589814fa2"
|
||||
integrity sha1-wlDEeHzkULcqqe/yZQn2hYmBT6I=
|
||||
|
||||
rxjs@^6.3.3:
|
||||
rxjs@^6.3.3, rxjs@^6.5.2:
|
||||
version "6.5.4"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c"
|
||||
integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==
|
||||
@ -5779,16 +5816,16 @@ tar@^4:
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.2"
|
||||
|
||||
teeny-request@6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.1.tgz#9b1f512cef152945827ba7e34f62523a4ce2c5b0"
|
||||
integrity sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==
|
||||
teeny-request@7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c"
|
||||
integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==
|
||||
dependencies:
|
||||
http-proxy-agent "^4.0.0"
|
||||
https-proxy-agent "^4.0.0"
|
||||
node-fetch "^2.2.0"
|
||||
https-proxy-agent "^5.0.0"
|
||||
node-fetch "^2.6.1"
|
||||
stream-events "^1.0.5"
|
||||
uuid "^3.3.2"
|
||||
uuid "^8.0.0"
|
||||
|
||||
text-encoding-utf-8@^1.0.2:
|
||||
version "1.0.2"
|
||||
@ -6033,13 +6070,6 @@ uri-js@^4.2.2:
|
||||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
uri-js@^4.4.0:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
|
||||
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
|
||||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
urix@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
|
||||
@ -6095,11 +6125,21 @@ util@~0.10.1:
|
||||
dependencies:
|
||||
inherits "2.0.3"
|
||||
|
||||
uuid@^3.3.2, uuid@^3.4.0:
|
||||
uuid@^3.3.2:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
|
||||
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
|
||||
|
||||
uuid@^3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
uuid@^8.0.0:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||
|
||||
validate-npm-package-license@^3.0.1:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user