Remove Social Media and Google Relations

* Remove Google analytics
* Remove cookies
* And the DSGVO banner
* Removed Social Media Connections
* Removed Cookie Consent stuff
* Removed Social Media related stuff in Datenschutzerklärung
This commit is contained in:
Christoph Lienhard 2020-04-03 00:12:09 +02:00
parent d18e78cb8f
commit de3d972191
12 changed files with 3 additions and 424 deletions

View File

@ -7,7 +7,6 @@ const {
baseConfig,
pageUrl,
siteName,
textField,
stringField,
markdownField,
listField,
@ -292,22 +291,6 @@ const configTree = {
stringField('imprint', '[Label] Imprint'),
stringField('privacy', '[Label] Data privacy')
]
}),
objectField('socialMedia', 'Social Media Share Text', {
hint: 'These are the default texts which get used to share.',
list: [
stringField('twitter', 'Twitter'),
stringField('facebook', 'Facebook'),
stringField('clipboard', 'Clipboard')
]
}),
objectField('cookieConsent', 'Cookie Consent Layer', {
hint: 'The text which is shown in the cookie consent layer.',
list: [
textField('text', 'Text'),
stringField('btnDecline', '[Button] Decline'),
stringField('btnAccept', '[Button] Accept')
]
})
]
})

View File

@ -20,7 +20,6 @@
"stylelint-processor-html": "^1.0.0",
"stylelint-webpack-plugin": "^0.10.5",
"vue": "^2.6.6",
"vue-analytics": "^5.16.4",
"vue-feather-icons": "^4.10.0",
"vue-i18n": "^8.10.0",
"vue-markdown": "^2.2.4",

View File

@ -767,31 +767,3 @@ collections:
- label: '[Label] Data privacy'
name: privacy
widget: string
- label: Social Media Share Text
name: socialMedia
widget: object
hint: These are the default texts which get used to share.
fields:
- label: Twitter
name: twitter
widget: string
- label: Facebook
name: facebook
widget: string
- label: Clipboard
name: clipboard
widget: string
- label: Cookie Consent Layer
name: cookieConsent
widget: object
hint: The text which is shown in the cookie consent layer.
fields:
- label: Text
name: text
widget: text
- label: '[Button] Decline'
name: btnDecline
widget: string
- label: '[Button] Accept'
name: btnAccept
widget: string

View File

@ -18,21 +18,14 @@
</main>
<footer v-if="!isEmbedded">
<app-footer :menu="subMenu" :social="socialMedia" />
<app-footer :menu="subMenu" />
</footer>
<cookie-consent
v-if="showConsentLayer"
@cookie-consent="updateConsent"
/>
</div>
</template>
<script>
import '@/assets/icons/european-stars'
import { GA_COOKIE_NAME } from '@/config/analytics'
import { SUPPORTED_LOCALES } from '@/config'
import { setCookie, getCookie } from '@/helper/cookies'
import { getTranslatedUrl } from '@/i18n/helper'
export default {
@ -40,7 +33,6 @@
data () {
return {
showConsentLayer: getCookie(GA_COOKIE_NAME) === null,
euromatLogo: require('@/assets/candymat-logo.png'),
logoSize: 220,
languages: SUPPORTED_LOCALES.map(([locale, language]) => ({
@ -88,41 +80,12 @@
}
]
},
socialMedia () {
return [
{
label: 'twitter',
icon: 'twitter',
message: {
text: this.$t('meta.socialMedia.twitter'),
hashtags: 'BTW17,EUROMAT'
}
},
{
label: 'facebook',
icon: 'facebook',
message: this.$t('meta.socialMedia.facebook')
},
{
label: 'clipboard',
icon: 'clipboard',
message: this.$t('meta.socialMedia.clipboard')
}
]
},
isEmbedded () {
return (
this.$route.query.embedded &&
this.$route.query.embedded === 'iframe'
)
}
},
methods: {
updateConsent (consent) {
setCookie(GA_COOKIE_NAME, consent)
this.showConsentLayer = false
}
}
}
</script>

View File

@ -97,34 +97,6 @@
</section>
</template>
<script>
export default {
name: 'Imprint',
components: {
'feather-mail': () =>
import('vue-feather-icons/icons/MailIcon' /* webpackChunkName: "icons" */),
'feather-phone': () =>
import('vue-feather-icons/icons/PhoneIcon' /* webpackChunkName: "icons" */)
},
data () {
return {
social: {
polis: [
{ platform: 'Twitter', url: '' },
{ platform: 'Facebook', url: '' }
],
poe: [
{ platform: 'Twitter', url: '' },
{ platform: 'Facebook', url: '' }
]
}
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/layout";
@import "~@/styles/colors";

View File

@ -20,18 +20,6 @@
"title": "Übermittlung von Daten an Dritte",
"content": "Eine Weitergabe Ihrer personenbezogenen Daten an Dritte erfolgt grundsätzlich nur, sofern dies zur Erbringung unserer Dienstleistung oder zur Vertragsdurchführung notwendig ist und Sie ausdrücklich eingewilligt haben."
},
{
"title": "Datenschutzerklärung für die Nutzung von Facebook-Plugins (Like-Button)",
"content": "Auf unseren Seiten sind Plugins des sozialen Netzwerks Facebook, Anbieter Facebook Inc., 1 Hacker Way, Menlo Park, California 94025, USA, integriert. Die Facebook-Plugins erkennen Sie an dem Facebook-Logo oder dem „Like-Button“(„Gefällt mir“) auf unserer Seite. Eine Übersicht über die Facebook-Plugins finden Sie hier: http://developers.facebook.com/docs/plugins/. Wenn Sie unsere Seiten besuchen, wird über das Plugin eine direkte Verbindung zwischen Ihrem Browser und dem Facebook-Server hergestellt. Facebook erhält dadurch die Information, dass Sie mit Ihrer IP-Adresse unsere Seite besucht haben. Wenn Sie den Facebook „Like-Button“ anklicken während Sie in Ihrem Facebook-Account eingeloggt sind, können Sie die Inhalte unserer Seiten auf Ihrem Facebook- Profil verlinken. Dadurch kann Facebook den Besuch unserer Seiten Ihrem Benutzerkonto zuordnen. Wir weisen darauf hin, dass wir als Anbieter der Seiten keine Kenntnis vom Inhalt der übermittelten Daten sowie deren Nutzung durch Facebook erhalten. Weitere Informationen hierzu finden Sie in der Datenschutzerklärung von Facebook unter http://de-de.facebook.com/policy.php. Wenn Sie nicht wünschen, dass Facebook den Besuch unserer Seiten Ihrem Facebook- Nutzerkonto zuordnen kann, loggen Sie sich bitte aus Ihrem Facebook-Benutzerkonto aus."
},
{
"title": "Datenschutzerklärung für die Nutzung von Twitter",
"content": "Auf unseren Seiten sind Funktionen des Dienstes Twitter eingebunden. Diese Funktionen werden angeboten durch die Twitter Inc., 1355 Market Street, Suite 900, San Francisco, CA 94103, USA. Durch das Benutzen von Twitter und der Funktion „Re-Tweet“ werden die von Ihnen besuchten Webseiten mit Ihrem Twitter-Account verknüpft und anderen Nutzern bekannt gegeben. Dabei werden auch Daten an Twitter übertragen. Wir weisen darauf hin, dass wir als Anbieter der Seiten keine Kenntnis vom Inhalt der übermittelten Daten sowie deren Nutzung durch Twitter erhalten. Weitere Informationen hierzu finden Sie in der Datenschutzerklärung von Twitter unter: http://twitter.com/privacy. Ihre Datenschutzeinstellungen bei Twitter können Sie in den Konto-Einstellungen unterhttp://twitter.com/account/settings ändern."
},
{
"title": "Datenschutzerklärung für den Webanalysedienst Google Analytics",
"content": "Diese Website benutzt Google Analytics, einen Webanalysedienst der Google Inc. (“Google”). Google Analytics verwendet sog. “Cookies”, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durch Sie ermöglichen. Die durch den Cookie erzeugten Informationen über Ihre Benutzung dieser Website werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Wir haben die IP-Anonymisierung aktiviert. Auf dieser Webseite wird Ihre IP-Adresse von Google daher innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum zuvor gekürzt. Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von Google in den USA übertragen und dort gekürzt. Im Auftrag des Betreibers dieser Website wird Google diese Informationen benutzen, um Ihre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen gegenüber dem Websitebetreiber zu erbringen. Die im Rahmen von Google Analytics von Ihrem Browser übermittelte IP-Adresse wird nicht mit anderen Daten von Google zusammengeführt. Sie können die Speicherung der Cookies durch eine entsprechende Einstellung Ihrer Browser-Software verhindern; wir weisen Sie jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website vollumfänglich werden nutzen können. Sie können darüber hinaus die Erfassung der durch das Cookie erzeugten und auf Ihre Nutzung der Website bezogenen Daten (inkl. Ihrer IP-Adresse) an Google sowie die Verarbeitung dieser Daten durch Google verhindern, indem sie das unter dem folgenden Link verfügbare Browser-Plugin herunterladen und installieren: http://tools.google.com/dlpage/gaoptout?hl=de"
},
{
"title": "Abrufbarkeit der Datenschutzerklärung",
"content": "Sie können die Datenschutzerklärung jederzeit von jeder Seite dieses Internetangebots unter dem Link „Impressum“ abrufen. Bitte nehmen Sie zur Kenntnis, dass Änderungen des Angebots, gesetzliche und rechtliche Neuerungen sowie ggf. nachträglich erkannte Regelungslücken Änderungen dieser Datenschutzerklärung erforderlich werden lassen können."

View File

@ -1,17 +1,5 @@
<template>
<div class="footer">
<ul class="footer-social">
<li v-for="item of social"
:key="item.label"
:data-message="getMessage(item)"
:class="getSocialClass(item)"
>
<button class="btn-dark" @click="share(item)">
<component :is="'feather-' + item.icon" />
</button>
</li>
</ul>
<ul class="footer-menu">
<li v-for="item of menu" :key="item.label">
<router-link tag="a" :to="item.route">
@ -26,103 +14,8 @@
export default {
name: 'AppFooter',
components: {
'feather-twitter': () =>
import('vue-feather-icons/icons/TwitterIcon' /* webpackChunkName: "icons" */),
'feather-facebook': () =>
import('vue-feather-icons/icons/FacebookIcon' /* webpackChunkName: "icons" */),
'feather-clipboard': () =>
import('vue-feather-icons/icons/ClipboardIcon' /* webpackChunkName: "icons" */)
},
props: {
menu: { type: Array, default: () => [] },
social: { type: Array, default: () => [] }
},
data () {
return {
shareURL: window.location.origin,
showClipboardInfo: false,
infoTimeout: 2000
}
},
methods: {
getMessage (item) {
return item.label === 'clipboard'
? item.message
: ''
},
getSocialClass (item) {
return {
'show-info': item.label === 'clipboard' && this.showClipboardInfo
}
},
// https://stackoverflow.com/a/16861050/1724106
getPopupDimensions (w = 800, h = 600) {
const { screenLeft, screenTop, innerWidth, innerHeight } = window
const dualScreenLeft = screenLeft || screen.left
const dualScreenTop = screenTop || screen.top
const width = innerWidth || document.documentElement.clientWidth || screen.width
const height = innerHeight || document.documentElement.clientHeight || screen.height
return {
width: w,
height: h,
left: ((width / 2) - (w / 2)) + dualScreenLeft,
top: ((height / 2) - (h / 2)) + dualScreenTop
}
},
constructTwitterURL (message) {
const { text, hashtags } = message
const url = 'https://twitter.com/intent/tweet'
return `${url}?text=${encodeURI(text)}&hashtags=${hashtags}&url=${this.shareURL}`
},
share (social) {
switch (social.label.toLowerCase()) {
case 'twitter': return this.shareViaTwitter(social.message)
case 'facebook': return this.shareViaFacebook(social.message)
case 'clipboard': return this.copyToClipboard(social.message)
default: break
}
},
shareViaTwitter (message) {
const frameName = 'Post a Tweet on Twitter'
const { width, height, left, top } = this.getPopupDimensions()
const options = `resizable,scrollbars,width=${width},height=${height},top=${top},left=${left}`
const popup = window.open(this.constructTwitterURL(message), frameName, options)
if (window.focus) {
popup.focus()
}
},
shareViaFacebook () {
FB.ui({
method: 'share',
display: 'popup',
href: this.shareURL
}, response => {})
},
copyToClipboard (message) {
const $textarea = document.createElement('textarea')
$textarea.value = this.shareURL
document.body.appendChild($textarea)
$textarea.select()
try {
const successful = document.execCommand('copy')
if (successful) {
this.showClipboardInfo = true
setTimeout(() => { this.showClipboardInfo = false }, this.infoTimeout)
}
} catch (error) {
// eslint-disable-next-line
console.error('Oops, unable to copy', error)
}
document.body.removeChild($textarea)
}
menu: { type: Array, default: () => [] }
}
}
</script>
@ -173,74 +66,4 @@
margin-left: $base-gap;
}
}
.footer-social {
margin: 0 $small-gap / 2 0 0;
padding: $small-gap / 2;
background: $background-primary;
border-radius: $border-radius;
@media (max-width: $breakpoint) {
display: flex;
justify-content: center;
padding: 0;
margin: 0;
li:not(:last-child) {
margin-bottom: 0;
margin-right: $small-gap;
}
}
li {
position: relative;
&.show-info::before {
transform: translate(-105%, -50%) scale(1);
opacity: 1;
@media (max-width: $breakpoint) {
transform: translate(-50%, -55%) scale(1);
}
}
}
li::before {
content: attr(data-message);
position: absolute;
top: 50%;
left: 0;
transform: translate(-105%, -50%) scale(0);
white-space: pre;
padding: 10px 20px;
border-radius: $border-radius;
background: rgba(0, 0, 0, 0.3);
width: auto;
font-size: $font-size-small;
opacity: 0;
transition: opacity 150ms $easeOutBack;
@media (max-width: $breakpoint) {
left: 50%;
top: -50%;
}
}
li:not(:last-child) {
margin-bottom: 5px;
}
button {
width: $social-btn-size;
height: $social-btn-size;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
}
svg {
margin: 0 auto;
}
}
</style>

View File

@ -1,68 +0,0 @@
<template>
<section id="analytics-consent">
<div class="consent-content">
<p>{{ $t('meta.cookieConsent.text') }}</p>
<div class="consent-actions">
<button @click="updateConsent(false)">
{{ $t('meta.cookieConsent.btnDecline') }}
</button>
<button @click="updateConsent(true)">
{{ $t('meta.cookieConsent.btnAccept') }}
</button>
</div>
</div>
</section>
</template>
<script>
export default {
name: 'CookieConsent',
methods: {
updateConsent (consent) {
this.$emit('cookie-consent', consent)
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/fonts";
@import "~@/styles/buttons";
@import "~@/styles/colors";
@import "~@/styles/layout";
#analytics-consent {
position: fixed;
z-index: 4;
bottom: 0;
width: 100vw;
max-width: $app-width;
background: $background-secondary;
color: $text-color-secondary;
display: flex;
justify-content: center;
padding: $small-gap;
margin-bottom: $base-gap;
border-radius: $border-radius;
box-shadow: $button-shadow;
@media (max-width: $app-width) {
margin-bottom: 0;
border-radius: 0;
box-shadow: 0;
}
.consent-content {
max-width: $app-width;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
& button {
margin-left: $small-gap;
}
}
}
</style>

View File

@ -1,2 +0,0 @@
export const GA_KEY = 'UA-83519650-2'
export const GA_COOKIE_NAME = '_euromat-ga'

View File

@ -11,15 +11,5 @@
"footerMenu": {
"imprint": "Impressum",
"privacy": "Datenschutz"
},
"socialMedia": {
"twitter": "Die #Europawahlen2019 stehen vor der Tür! Neugierig was die europäischen Parteien sagen? Mach den EUROMAT & finde heraus mit wem du übereinstimmst! ",
"facebook": "Die #Europawahlen2019 stehen vor der Tür! Neugierig was die europäischen Parteien zur sagen haben? Mach den #EUROMAT & finde heraus mit wem du übereinstimmst!",
"clipboard": "In Zwischenablage kopiert"
},
"cookieConsent": {
"text": "Diese Website verwendet Cookies, um die bestmögliche Erfahrung auf unserer Website zu ermöglichen.",
"btnDecline": "Ablehnen",
"btnAccept": "Akzeptieren"
}
}
}

View File

@ -1,30 +0,0 @@
export function setCookie (name, value = '') {
if (!name) {
throw new Error(`Cookie needs a valid name, you passed "${name}".`)
}
document.cookie = `${name}=${value}`
}
export function getCookie (name) {
const nameEQ = name + '='
const cookies = document.cookie.split(';')
for (var i = 0; i < cookies.length; i++) {
let cookie = cookies[i]
while (cookie.charAt(0) === ' ') {
cookie = cookie.substring(1, cookie.length)
}
if (cookie.indexOf(nameEQ) === 0) {
return cookie.substring(nameEQ.length, cookie.length)
}
}
return null
}
export function deleteCookie (name) {
if (!name) {
throw new Error(`Cookie needs a valid name, you passed "${name}".`)
}
document.cookie = `${name}=; Max-Age=-99999999;`
}

View File

@ -1,6 +1,5 @@
import Vue from 'vue'
import VueSVGIcon from 'vue-svgicon'
import VueAnalytics from 'vue-analytics'
import { init as initSentry } from '@sentry/browser'
import * as Integrations from '@sentry/integrations'
@ -8,8 +7,6 @@ import App from '@/app/app'
import router from '@/router'
import i18n from '@/i18n'
import storage from '@/helper/storage'
import { getCookie } from '@/helper/cookies'
import { GA_KEY, GA_COOKIE_NAME } from '@/config/analytics'
import '@/registerComponents'
import '@/registerServiceWorker'
@ -17,14 +14,6 @@ import '@/registerServiceWorker'
Vue.config.productionTip = false
Vue.use(VueSVGIcon)
Vue.use(storage)
Vue.use(VueAnalytics, {
id: GA_KEY,
disabled: getCookie(GA_COOKIE_NAME) !== 'true',
router,
debug: {
sendHitTask: process.env.NODE_ENV === 'production'
}
})
if (process.env.NODE_ENV === 'production') {
initSentry({