@dargmuesli/nuxt-vio 1.11.0-beta.1 → 2.0.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
package/app.config.ts CHANGED
@@ -3,6 +3,27 @@ import { useSeoMeta } from '@unhead/vue'
3
3
  import { SITE_NAME } from './utils/constants'
4
4
 
5
5
  export default defineAppConfig({
6
+ legalNotice: undefined as
7
+ | {
8
+ contact: {
9
+ email: string
10
+ }
11
+ responsibility: {
12
+ address: {
13
+ city: string
14
+ name: string
15
+ street: string
16
+ }
17
+ }
18
+ tmg: {
19
+ address: {
20
+ city: string
21
+ name: string
22
+ street: string
23
+ }
24
+ }
25
+ }
26
+ | undefined,
6
27
  privacyPolicy: undefined as
7
28
  | {
8
29
  hostingCdn?: {
@@ -3,15 +3,48 @@
3
3
  <h1>{{ title }}</h1>
4
4
  <h2>{{ t('tmg') }}</h2>
5
5
  <address>
6
- <slot name="tmgAddress" />
6
+ <slot v-if="$slots.tmgAddress" name="tmgAddress" />
7
+ <i18n-t v-else keypath="tmgAddress">
8
+ <template #br>
9
+ <br />
10
+ </template>
11
+ <template #city>
12
+ {{ appConfig.legalNotice.tmg.address.city }}
13
+ </template>
14
+ <template #name>
15
+ {{ appConfig.legalNotice.tmg.address.name }}
16
+ </template>
17
+ <template #street>
18
+ {{ appConfig.legalNotice.tmg.address.street }}
19
+ </template>
20
+ </i18n-t>
7
21
  </address>
8
22
 
9
23
  <h2>{{ t('contact') }}</h2>
10
- <p>{{ t('email') }}</p>
24
+ <p>
25
+ <slot v-if="$slots.contactEmail" name="contactEmail" />
26
+ <span v-else>
27
+ {{ t('email', { email: appConfig.legalNotice.contact.email }) }}
28
+ </span>
29
+ </p>
11
30
 
12
31
  <h2>{{ t('responsibility') }}</h2>
13
32
  <address>
14
- <slot name="responsibilityAddress" />
33
+ <slot v-if="$slots.responsibilityAddress" name="responsibilityAddress" />
34
+ <i18n-t v-else keypath="responsibilityAddress">
35
+ <template #br>
36
+ <br />
37
+ </template>
38
+ <template #city>
39
+ {{ appConfig.legalNotice.responsibility.address.city }}
40
+ </template>
41
+ <template #name>
42
+ {{ appConfig.legalNotice.responsibility.address.name }}
43
+ </template>
44
+ <template #street>
45
+ {{ appConfig.legalNotice.responsibility.address.street }}
46
+ </template>
47
+ </i18n-t>
15
48
  </address>
16
49
 
17
50
  <h3>{{ t('liabilityContentTitle') }}</h3>
@@ -33,6 +66,7 @@
33
66
  </template>
34
67
 
35
68
  <script setup lang="ts">
69
+ const appConfig = useAppConfig()
36
70
  const { t } = useI18n()
37
71
 
38
72
  // data
@@ -48,7 +82,7 @@ de:
48
82
  copyrightDescription1: Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet.
49
83
  copyrightDescription2: Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
50
84
  copyrightTitle: Urheberrecht
51
- email: "E-Mail: server+legal-notice{'@'}jonas-thelemann.de"
85
+ email: 'E-Mail: {email}'
52
86
  liabilityContentDescription1: Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
53
87
  liabilityContentDescription2: Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
54
88
  liabilityContentTitle: Haftung für Inhalte
@@ -56,15 +90,17 @@ de:
56
90
  liabilityLinksDescription2: Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
57
91
  liabilityLinksTitle: Haftung für Links
58
92
  responsibility: Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV
93
+ responsibilityAddress: '{name}{br}{street}{br}{city}'
59
94
  source: Quelle
60
95
  title: Impressum
61
96
  tmg: Angaben gemäß § 5 TMG
97
+ tmgAddress: '{name}{br}{street}{br}{city}'
62
98
  en:
63
99
  contact: Contact
64
100
  copyrightDescription1: The content and works created by the site operators on these pages are subject to German copyright law. The reproduction, editing, distribution and any kind of exploitation outside the limits of copyright require the written consent of the respective author or creator. Downloads and copies of this site are only permitted for private, non-commercial use.
65
101
  copyrightDescription2: Insofar as the content on this page was not created by the operator, the copyrights of third parties are respected. In particular, third-party content is identified as such. Should you nevertheless become aware of a copyright infringement, we request that you notify us accordingly. If we become aware of any infringements, we will remove such content immediately.
66
102
  copyrightTitle: Copyright
67
- email: "Email: server+legal-notice{'@'}jonas-thelemann.de"
103
+ email: 'Email: {email}'
68
104
  liabilityContentDescription1: As a service provider, we are responsible for our own content on these pages in accordance with general legislation pursuant to Section 7 (1) of the German Telemedia Act (TMG). According to §§ 8 to 10 TMG, however, we are not obligated as a service provider to monitor transmitted or stored third-party information or to investigate circumstances that indicate illegal activity.
69
105
  liabilityContentDescription2: Obligations to remove or block the use of information according to general laws remain unaffected. However, liability in this regard is only possible from the time of knowledge of a concrete infringement. If we become aware of such infringements, we will remove this content immediately.
70
106
  liabilityContentTitle: Liability for content
@@ -72,7 +108,9 @@ en:
72
108
  liabilityLinksDescription2: However, a permanent control of the contents of the linked pages is not reasonable without concrete evidence of a violation of the law. If we become aware of any infringements, we will remove such links immediately.
73
109
  liabilityLinksTitle: Liability for links
74
110
  responsibility: Responsible for the content according to § 55 para. 2 RStV
111
+ responsibilityAddress: '{name}{br}{street}{br}{city}'
75
112
  source: Source
76
113
  title: Legal notice
77
114
  tmg: Information according to § 5 TMG
115
+ tmgAddress: '{name}{br}{street}{br}{city}'
78
116
  </i18n>
@@ -1,365 +1,427 @@
1
1
  <template>
2
2
  <div class="vio-prose">
3
3
  <h1>{{ title }}</h1>
4
- <div v-if="isEnabled">
5
- <section v-if="isEnabled.summary">
6
- <h2>{{ t('summary') }}</h2>
7
-
8
- <section v-if="isEnabled.summary.generalNotes">
9
- <h3>{{ t('generalNotesTitle') }}</h3>
10
- <p>{{ t('generalNotesDescription') }}</p>
11
- </section>
12
-
13
- <section v-if="isEnabled.summary.dataCollection">
14
- <h3>{{ t('dataCollection') }}</h3>
15
-
16
- <section v-if="isEnabled.summary.dataCollection.liability">
17
- <h4>{{ t('dataCollectionLiabilityTitle') }}</h4>
18
- <p>{{ t('dataCollectionLiabilityDescription') }}</p>
4
+ <ol v-if="isEnabled">
5
+ <li v-if="isEnabled.summary">
6
+ <section>
7
+ <h2>{{ t('summary') }}</h2>
8
+
9
+ <section v-if="isEnabled.summary.generalNotes">
10
+ <h3>{{ t('generalNotesTitle') }}</h3>
11
+ <p>{{ t('generalNotesDescription') }}</p>
19
12
  </section>
20
13
 
21
- <section v-if="isEnabled.summary.dataCollection.method">
22
- <h4>{{ t('dataCollectionMethodTitle') }}</h4>
23
- <p>{{ t('dataCollectionMethodDescription1') }}</p>
24
- <p>{{ t('dataCollectionMethodDescription2') }}</p>
14
+ <section v-if="isEnabled.summary.dataCollection">
15
+ <h3>{{ t('dataCollection') }}</h3>
16
+
17
+ <section v-if="isEnabled.summary.dataCollection.liability">
18
+ <h4>{{ t('dataCollectionLiabilityTitle') }}</h4>
19
+ <p>{{ t('dataCollectionLiabilityDescription') }}</p>
20
+ </section>
21
+
22
+ <section v-if="isEnabled.summary.dataCollection.method">
23
+ <h4>{{ t('dataCollectionMethodTitle') }}</h4>
24
+ <p>{{ t('dataCollectionMethodDescription1') }}</p>
25
+ <p>{{ t('dataCollectionMethodDescription2') }}</p>
26
+ </section>
27
+
28
+ <section v-if="isEnabled.summary.dataCollection.use">
29
+ <h4>{{ t('dataCollectionUseTitle') }}</h4>
30
+ <p>{{ t('dataCollectionUseDescription') }}</p>
31
+ </section>
32
+
33
+ <section v-if="isEnabled.summary.dataCollection.rights">
34
+ <h4>{{ t('dataCollectionRightsTitle') }}</h4>
35
+ <p>{{ t('dataCollectionRightsDescription1') }}</p>
36
+ <p>{{ t('dataCollectionRightsDescription2') }}</p>
37
+ </section>
25
38
  </section>
26
39
 
27
- <section v-if="isEnabled.summary.dataCollection.use">
28
- <h4>{{ t('dataCollectionUseTitle') }}</h4>
29
- <p>{{ t('dataCollectionUseDescription') }}</p>
40
+ <section v-if="isEnabled.summary.dataCollectionTools">
41
+ <h3>{{ t('dataCollectionToolsTitle') }}</h3>
42
+ <p>{{ t('dataCollectionToolsDescription1') }}</p>
43
+ <p>{{ t('dataCollectionToolsDescription2') }}</p>
30
44
  </section>
31
-
32
- <section v-if="isEnabled.summary.dataCollection.rights">
33
- <h4>{{ t('dataCollectionRightsTitle') }}</h4>
34
- <p>{{ t('dataCollectionRightsDescription1') }}</p>
35
- <p>{{ t('dataCollectionRightsDescription2') }}</p>
36
- </section>
37
- </section>
38
-
39
- <section v-if="isEnabled.summary.dataCollectionTools">
40
- <h3>{{ t('dataCollectionToolsTitle') }}</h3>
41
- <p>{{ t('dataCollectionToolsDescription1') }}</p>
42
- <p>{{ t('dataCollectionToolsDescription2') }}</p>
43
45
  </section>
44
- </section>
45
-
46
- <section v-if="isEnabled.hostingCdn">
47
- <h2>{{ t('hostingCdn') }}</h2>
48
-
49
- <section v-if="isEnabled.hostingCdn.external">
50
- <h3>{{ t('hostingCdnExternalTitle') }}</h3>
51
- <p>{{ t('hostingCdnExternalDescription1') }}</p>
52
- <p>{{ t('hostingCdnExternalDescription2') }}</p>
53
- <p>{{ t('hostingCdnExternalDescription3') }}</p>
54
- <p>{{ t('hostingCdnExternalDescription4') }}</p>
55
- <address>
56
- <slot name="hostingCdnExternalAddress" />
57
- </address>
58
-
59
- <section v-if="isEnabled.hostingCdn.external.processingContract">
60
- <h4>{{ t('hostingCdnExternalProcessingContractTitle') }}</h4>
61
- <p>{{ t('hostingCdnExternalProcessingContractDescription') }}</p>
46
+ </li>
47
+ <li v-if="isEnabled.hostingCdn">
48
+ <section>
49
+ <h2>{{ t('hostingCdn') }}</h2>
50
+
51
+ <section v-if="isEnabled.hostingCdn.external">
52
+ <h3>{{ t('hostingCdnExternalTitle') }}</h3>
53
+ <p>{{ t('hostingCdnExternalDescription1') }}</p>
54
+ <p>{{ t('hostingCdnExternalDescription2') }}</p>
55
+ <p>{{ t('hostingCdnExternalDescription3') }}</p>
56
+ <p>{{ t('hostingCdnExternalDescription4') }}</p>
57
+ <address>
58
+ <slot
59
+ v-if="$slots.hostingCdnExternalAddress"
60
+ name="hostingCdnExternalAddress"
61
+ />
62
+ <i18n-t v-else keypath="hostingCdnExternalAddress">
63
+ <template #br>
64
+ <br />
65
+ </template>
66
+ <template #city>
67
+ {{ appConfig.privacyPolicy.hostingCdn.external.address.city }}
68
+ </template>
69
+ <template #name>
70
+ {{ appConfig.privacyPolicy.hostingCdn.external.address.name }}
71
+ </template>
72
+ <template #street>
73
+ {{
74
+ appConfig.privacyPolicy.hostingCdn.external.address.street
75
+ }}
76
+ </template>
77
+ </i18n-t>
78
+ </address>
79
+
80
+ <section v-if="isEnabled.hostingCdn.external.processingContract">
81
+ <h4>{{ t('hostingCdnExternalProcessingContractTitle') }}</h4>
82
+ <p>{{ t('hostingCdnExternalProcessingContractDescription') }}</p>
83
+ </section>
62
84
  </section>
63
85
  </section>
64
- </section>
65
-
66
- <section v-if="isEnabled.mandatoryInfo">
67
- <h2>{{ t('mandatoryInfo') }}</h2>
68
-
69
- <section v-if="isEnabled.mandatoryInfo.privacy">
70
- <h3>{{ t('mandatoryInfoPrivacyTitle') }}</h3>
71
- <p>{{ t('mandatoryInfoPrivacyDescription1') }}</p>
72
- <p>{{ t('mandatoryInfoPrivacyDescription2') }}</p>
73
- <p>{{ t('mandatoryInfoPrivacyDescription3') }}</p>
74
- </section>
75
-
76
- <section v-if="isEnabled.mandatoryInfo.responsible">
77
- <h3>{{ t('mandatoryInfoResponsibleTitle') }}</h3>
78
- <p>{{ t('mandatoryInfoResponsibleDescription1') }}</p>
79
- <address>
80
- <slot name="mandatoryInfoResponsibleAddress" />
81
- </address>
82
- <p>{{ t('mandatoryInfoResponsibleDescription2') }}</p>
83
- </section>
84
-
85
- <section v-if="isEnabled.mandatoryInfo.storageDuration">
86
- <h3>{{ t('mandatoryInfoStorageDurationTitle') }}</h3>
87
- <p>{{ t('mandatoryInfoStorageDurationDescription') }}</p>
88
- </section>
89
-
90
- <section v-if="isEnabled.mandatoryInfo.dataSharingUsa">
91
- <h3>{{ t('mandatoryInfoDataSharingUsaTitle') }}</h3>
92
- <p>{{ t('mandatoryInfoDataSharingUsaDescription') }}</p>
93
- </section>
86
+ </li>
87
+ <li v-if="isEnabled.mandatoryInfo">
88
+ <section>
89
+ <h2>{{ t('mandatoryInfo') }}</h2>
90
+
91
+ <section v-if="isEnabled.mandatoryInfo.privacy">
92
+ <h3>{{ t('mandatoryInfoPrivacyTitle') }}</h3>
93
+ <p>{{ t('mandatoryInfoPrivacyDescription1') }}</p>
94
+ <p>{{ t('mandatoryInfoPrivacyDescription2') }}</p>
95
+ <p>{{ t('mandatoryInfoPrivacyDescription3') }}</p>
96
+ </section>
94
97
 
95
- <section v-if="isEnabled.mandatoryInfo.consentRevocation">
96
- <h3>{{ t('mandatoryInfoConsentRevocationTitle') }}</h3>
97
- <p>{{ t('mandatoryInfoConsentRevocationDescription') }}</p>
98
- </section>
98
+ <section v-if="isEnabled.mandatoryInfo.responsible">
99
+ <h3>{{ t('mandatoryInfoResponsibleTitle') }}</h3>
100
+ <p>{{ t('mandatoryInfoResponsibleDescription1') }}</p>
101
+ <address>
102
+ <slot
103
+ v-if="$slots.mandatoryInfoResponsibleAddress"
104
+ name="mandatoryInfoResponsibleAddress"
105
+ />
106
+ <i18n-t v-else keypath="mandatoryInfoResponsibleAddress">
107
+ <template #br>
108
+ <br />
109
+ </template>
110
+ <template #city>
111
+ {{
112
+ appConfig.privacyPolicy.mandatoryInfo.responsible.address
113
+ .city
114
+ }}
115
+ </template>
116
+ <template #email>
117
+ {{
118
+ t('email', {
119
+ email:
120
+ appConfig.privacyPolicy.mandatoryInfo.responsible
121
+ .address.email,
122
+ })
123
+ }}
124
+ </template>
125
+ <template #name>
126
+ {{
127
+ appConfig.privacyPolicy.mandatoryInfo.responsible.address
128
+ .name
129
+ }}
130
+ </template>
131
+ <template #street>
132
+ {{
133
+ appConfig.privacyPolicy.mandatoryInfo.responsible.address
134
+ .street
135
+ }}
136
+ </template>
137
+ </i18n-t>
138
+ </address>
139
+ <p>{{ t('mandatoryInfoResponsibleDescription2') }}</p>
140
+ </section>
99
141
 
100
- <section v-if="isEnabled.mandatoryInfo.consentRevocationSpecial">
101
- <h3>{{ t('mandatoryInfoConsentRevocationSpecialTitle') }}</h3>
102
- <p class="font-bold">
103
- {{ t('mandatoryInfoConsentRevocationSpecialDescription1') }}
104
- </p>
105
- <p class="font-bold">
106
- {{ t('mandatoryInfoConsentRevocationSpecialDescription2') }}
107
- </p>
108
- </section>
142
+ <section v-if="isEnabled.mandatoryInfo.storageDuration">
143
+ <h3>{{ t('mandatoryInfoStorageDurationTitle') }}</h3>
144
+ <p>{{ t('mandatoryInfoStorageDurationDescription') }}</p>
145
+ </section>
109
146
 
110
- <section v-if="isEnabled.mandatoryInfo.complaint">
111
- <h3>{{ t('mandatoryInfoComplaintTitle') }}</h3>
112
- <p>{{ t('mandatoryInfoComplaintDescription') }}</p>
113
- </section>
147
+ <section v-if="isEnabled.mandatoryInfo.dataSharingUsa">
148
+ <h3>{{ t('mandatoryInfoDataSharingUsaTitle') }}</h3>
149
+ <p>{{ t('mandatoryInfoDataSharingUsaDescription') }}</p>
150
+ </section>
114
151
 
115
- <section v-if="isEnabled.mandatoryInfo.portability">
116
- <h3>{{ t('mandatoryInfoPortabilityTitle') }}</h3>
117
- <p>{{ t('mandatoryInfoPortabilityDescription') }}</p>
118
- </section>
152
+ <section v-if="isEnabled.mandatoryInfo.consentRevocation">
153
+ <h3>{{ t('mandatoryInfoConsentRevocationTitle') }}</h3>
154
+ <p>{{ t('mandatoryInfoConsentRevocationDescription') }}</p>
155
+ </section>
119
156
 
120
- <section v-if="isEnabled.mandatoryInfo.sslTls">
121
- <h3>{{ t('mandatoryInfoSslTlsTitle') }}</h3>
122
- <p>{{ t('mandatoryInfoSslTlsDescription1') }}</p>
123
- <p>{{ t('mandatoryInfoSslTlsDescription2') }}</p>
124
- </section>
157
+ <section v-if="isEnabled.mandatoryInfo.consentRevocationSpecial">
158
+ <h3>{{ t('mandatoryInfoConsentRevocationSpecialTitle') }}</h3>
159
+ <p class="font-bold">
160
+ {{ t('mandatoryInfoConsentRevocationSpecialDescription1') }}
161
+ </p>
162
+ <p class="font-bold">
163
+ {{ t('mandatoryInfoConsentRevocationSpecialDescription2') }}
164
+ </p>
165
+ </section>
125
166
 
126
- <section v-if="isEnabled.mandatoryInfo.dataChange">
127
- <h3>{{ t('mandatoryInfoDataChangeTitle') }}</h3>
128
- <p>{{ t('mandatoryInfoDataChangeDescription') }}</p>
129
- </section>
167
+ <section v-if="isEnabled.mandatoryInfo.complaint">
168
+ <h3>{{ t('mandatoryInfoComplaintTitle') }}</h3>
169
+ <p>{{ t('mandatoryInfoComplaintDescription') }}</p>
170
+ </section>
130
171
 
131
- <section v-if="isEnabled.mandatoryInfo.processingRestriction">
132
- <h3>{{ t('mandatoryInfoProcessingRestrictionTitle') }}</h3>
133
- <p>{{ t('mandatoryInfoProcessingRestrictionDescription1') }}</p>
134
- <ul>
135
- <li>{{ t('mandatoryInfoProcessingRestrictionList1') }}</li>
136
- <li>{{ t('mandatoryInfoProcessingRestrictionList2') }}</li>
137
- <li>{{ t('mandatoryInfoProcessingRestrictionList3') }}</li>
138
- <li>{{ t('mandatoryInfoProcessingRestrictionList4') }}</li>
139
- </ul>
140
- <p>{{ t('mandatoryInfoProcessingRestrictionDescription2') }}</p>
141
- </section>
172
+ <section v-if="isEnabled.mandatoryInfo.portability">
173
+ <h3>{{ t('mandatoryInfoPortabilityTitle') }}</h3>
174
+ <p>{{ t('mandatoryInfoPortabilityDescription') }}</p>
175
+ </section>
142
176
 
143
- <section v-if="isEnabled.mandatoryInfo.opposition">
144
- <h3>{{ t('mandatoryInfoOppositionTitle') }}</h3>
145
- <p>{{ t('mandatoryInfoOppositionDescription') }}</p>
146
- </section>
147
- </section>
148
-
149
- <section v-if="isEnabled.dataAcquisition">
150
- <h2>{{ t('dataAcquisition') }}</h2>
151
-
152
- <section v-if="isEnabled.dataAcquisition.cookies">
153
- <h3>{{ t('dataAcquisitionCookiesTitle') }}</h3>
154
- <p>{{ t('dataAcquisitionCookiesDescription1') }}</p>
155
- <p>{{ t('dataAcquisitionCookiesDescription2') }}</p>
156
- <p>{{ t('dataAcquisitionCookiesDescription3') }}</p>
157
- <p>{{ t('dataAcquisitionCookiesDescription4') }}</p>
158
- <p>{{ t('dataAcquisitionCookiesDescription5') }}</p>
159
- <p>{{ t('dataAcquisitionCookiesDescription6') }}</p>
160
- </section>
177
+ <section v-if="isEnabled.mandatoryInfo.sslTls">
178
+ <h3>{{ t('mandatoryInfoSslTlsTitle') }}</h3>
179
+ <p>{{ t('mandatoryInfoSslTlsDescription1') }}</p>
180
+ <p>{{ t('mandatoryInfoSslTlsDescription2') }}</p>
181
+ </section>
161
182
 
162
- <section v-if="isEnabled.dataAcquisition.log">
163
- <h3>{{ t('dataAcquisitionLogTitle') }}</h3>
164
- <p>{{ t('dataAcquisitionLogDescription1') }}</p>
165
- <ul>
166
- <li>{{ t('dataAcquisitionLogItem1') }}</li>
167
- <li>{{ t('dataAcquisitionLogItem2') }}</li>
168
- <li>{{ t('dataAcquisitionLogItem3') }}</li>
169
- <li>{{ t('dataAcquisitionLogItem4') }}</li>
170
- <li>{{ t('dataAcquisitionLogItem5') }}</li>
171
- <li>{{ t('dataAcquisitionLogItem6') }}</li>
172
- </ul>
173
- <p>{{ t('dataAcquisitionLogDescription2') }}</p>
174
- <p>{{ t('dataAcquisitionLogDescription3') }}</p>
175
- </section>
183
+ <section v-if="isEnabled.mandatoryInfo.dataChange">
184
+ <h3>{{ t('mandatoryInfoDataChangeTitle') }}</h3>
185
+ <p>{{ t('mandatoryInfoDataChangeDescription') }}</p>
186
+ </section>
176
187
 
177
- <section v-if="isEnabled.dataAcquisition.contactForm">
178
- <h3>{{ t('dataAcquisitionContactFormTitle') }}</h3>
179
- <p>{{ t('dataAcquisitionContactFormDescription1') }}</p>
180
- <p>{{ t('dataAcquisitionContactFormDescription2') }}</p>
181
- <p>{{ t('dataAcquisitionContactFormDescription3') }}</p>
182
- </section>
188
+ <section v-if="isEnabled.mandatoryInfo.processingRestriction">
189
+ <h3>{{ t('mandatoryInfoProcessingRestrictionTitle') }}</h3>
190
+ <p>{{ t('mandatoryInfoProcessingRestrictionDescription1') }}</p>
191
+ <ul>
192
+ <li>{{ t('mandatoryInfoProcessingRestrictionList1') }}</li>
193
+ <li>{{ t('mandatoryInfoProcessingRestrictionList2') }}</li>
194
+ <li>{{ t('mandatoryInfoProcessingRestrictionList3') }}</li>
195
+ <li>{{ t('mandatoryInfoProcessingRestrictionList4') }}</li>
196
+ </ul>
197
+ <p>{{ t('mandatoryInfoProcessingRestrictionDescription2') }}</p>
198
+ </section>
183
199
 
184
- <section v-if="isEnabled.dataAcquisition.contactExternal">
185
- <h3>{{ t('dataAcquisitionContactExternalTitle') }}</h3>
186
- <p>{{ t('dataAcquisitionContactExternalDescription1') }}</p>
187
- <p>{{ t('dataAcquisitionContactExternalDescription2') }}</p>
188
- <p>{{ t('dataAcquisitionContactExternalDescription3') }}</p>
200
+ <section v-if="isEnabled.mandatoryInfo.opposition">
201
+ <h3>{{ t('mandatoryInfoOppositionTitle') }}</h3>
202
+ <p>{{ t('mandatoryInfoOppositionDescription') }}</p>
203
+ </section>
189
204
  </section>
205
+ </li>
206
+ <li v-if="isEnabled.dataAcquisition">
207
+ <section>
208
+ <h2>{{ t('dataAcquisition') }}</h2>
209
+
210
+ <section v-if="isEnabled.dataAcquisition.cookies">
211
+ <h3>{{ t('dataAcquisitionCookiesTitle') }}</h3>
212
+ <p>{{ t('dataAcquisitionCookiesDescription1') }}</p>
213
+ <p>{{ t('dataAcquisitionCookiesDescription2') }}</p>
214
+ <p>{{ t('dataAcquisitionCookiesDescription3') }}</p>
215
+ <p>{{ t('dataAcquisitionCookiesDescription4') }}</p>
216
+ <p>{{ t('dataAcquisitionCookiesDescription5') }}</p>
217
+ <p>{{ t('dataAcquisitionCookiesDescription6') }}</p>
218
+ </section>
190
219
 
191
- <section v-if="isEnabled.dataAcquisition.comments">
192
- <h3>{{ t('dataAcquisitionCommentsTitle') }}</h3>
193
- <p>{{ t('dataAcquisitionCommentsDescription') }}</p>
194
-
195
- <section v-if="isEnabled.dataAcquisition.comments.ip">
196
- <h4>{{ t('dataAcquisitionCommentsIpTitle') }}</h4>
197
- <p>{{ t('dataAcquisitionCommentsIpDescription') }}</p>
220
+ <section v-if="isEnabled.dataAcquisition.log">
221
+ <h3>{{ t('dataAcquisitionLogTitle') }}</h3>
222
+ <p>{{ t('dataAcquisitionLogDescription1') }}</p>
223
+ <ul>
224
+ <li>{{ t('dataAcquisitionLogItem1') }}</li>
225
+ <li>{{ t('dataAcquisitionLogItem2') }}</li>
226
+ <li>{{ t('dataAcquisitionLogItem3') }}</li>
227
+ <li>{{ t('dataAcquisitionLogItem4') }}</li>
228
+ <li>{{ t('dataAcquisitionLogItem5') }}</li>
229
+ <li>{{ t('dataAcquisitionLogItem6') }}</li>
230
+ </ul>
231
+ <p>{{ t('dataAcquisitionLogDescription2') }}</p>
232
+ <p>{{ t('dataAcquisitionLogDescription3') }}</p>
198
233
  </section>
199
234
 
200
- <section v-if="isEnabled.dataAcquisition.comments.subscribe">
201
- <h4>{{ t('dataAcquisitionCommentsSubscribeTitle') }}</h4>
202
- <p>{{ t('dataAcquisitionCommentsSubscribeDescription') }}</p>
235
+ <section v-if="isEnabled.dataAcquisition.contactForm">
236
+ <h3>{{ t('dataAcquisitionContactFormTitle') }}</h3>
237
+ <p>{{ t('dataAcquisitionContactFormDescription1') }}</p>
238
+ <p>{{ t('dataAcquisitionContactFormDescription2') }}</p>
239
+ <p>{{ t('dataAcquisitionContactFormDescription3') }}</p>
203
240
  </section>
204
241
 
205
- <section v-if="isEnabled.dataAcquisition.comments.storageDuration">
206
- <h4>{{ t('dataAcquisitionCommentsStorageDurationTitle') }}</h4>
207
- <p>{{ t('dataAcquisitionCommentsStorageDurationDescription') }}</p>
242
+ <section v-if="isEnabled.dataAcquisition.contactExternal">
243
+ <h3>{{ t('dataAcquisitionContactExternalTitle') }}</h3>
244
+ <p>{{ t('dataAcquisitionContactExternalDescription1') }}</p>
245
+ <p>{{ t('dataAcquisitionContactExternalDescription2') }}</p>
246
+ <p>{{ t('dataAcquisitionContactExternalDescription3') }}</p>
208
247
  </section>
209
248
 
210
- <section v-if="isEnabled.dataAcquisition.comments.legalBasis">
211
- <h4>{{ t('dataAcquisitionCommentsLegalBasisTitle') }}</h4>
212
- <p>{{ t('dataAcquisitionCommentsLegalBasisDescription') }}</p>
249
+ <section v-if="isEnabled.dataAcquisition.comments">
250
+ <h3>{{ t('dataAcquisitionCommentsTitle') }}</h3>
251
+ <p>{{ t('dataAcquisitionCommentsDescription') }}</p>
252
+
253
+ <section v-if="isEnabled.dataAcquisition.comments.ip">
254
+ <h4>{{ t('dataAcquisitionCommentsIpTitle') }}</h4>
255
+ <p>{{ t('dataAcquisitionCommentsIpDescription') }}</p>
256
+ </section>
257
+
258
+ <section v-if="isEnabled.dataAcquisition.comments.subscribe">
259
+ <h4>{{ t('dataAcquisitionCommentsSubscribeTitle') }}</h4>
260
+ <p>{{ t('dataAcquisitionCommentsSubscribeDescription') }}</p>
261
+ </section>
262
+
263
+ <section v-if="isEnabled.dataAcquisition.comments.storageDuration">
264
+ <h4>{{ t('dataAcquisitionCommentsStorageDurationTitle') }}</h4>
265
+ <p>
266
+ {{ t('dataAcquisitionCommentsStorageDurationDescription') }}
267
+ </p>
268
+ </section>
269
+
270
+ <section v-if="isEnabled.dataAcquisition.comments.legalBasis">
271
+ <h4>{{ t('dataAcquisitionCommentsLegalBasisTitle') }}</h4>
272
+ <p>{{ t('dataAcquisitionCommentsLegalBasisDescription') }}</p>
273
+ </section>
213
274
  </section>
214
275
  </section>
215
- </section>
216
-
217
- <section v-if="isEnabled.newsletter">
218
- <h2>{{ t('newsletter') }}</h2>
219
-
220
- <section v-if="isEnabled.newsletter.data">
221
- <h3>{{ t('newsletterDataTitle') }}</h3>
222
- <p>{{ t('newsletterDataDescription1') }}</p>
223
- <p>{{ t('newsletterDataDescription2') }}</p>
224
- <p>{{ t('newsletterDataDescription3') }}</p>
225
-
226
- <i18n-t keypath="newsletterDataDescription4" tag="p">
227
- <template #strong>
228
- <strong>{{ t('newsletterDataDescription4s') }}</strong>
229
- </template>
230
- </i18n-t>
231
- </section>
232
- </section>
233
-
234
- <section v-if="isEnabled.pluginsTools">
235
- <h2>{{ t('pluginsTools') }}</h2>
236
-
237
- <section v-if="isEnabled.pluginsTools.youTube">
238
- <h3>{{ t('pluginsToolsYouTubeTitle') }}</h3>
239
- <p>{{ t('pluginsToolsYouTubeDescription1') }}</p>
240
- <p>{{ t('pluginsToolsYouTubeDescription2') }}</p>
241
- <p>{{ t('pluginsToolsYouTubeDescription3') }}</p>
242
- <p>{{ t('pluginsToolsYouTubeDescription4') }}</p>
243
- <p>{{ t('pluginsToolsYouTubeDescription5') }}</p>
244
- <p>{{ t('pluginsToolsYouTubeDescription6') }}</p>
245
- <i18n-t keypath="pluginsToolsYouTubeDescription7" tag="p">
246
- <template #linkPrivacy>
247
- <VioLink
248
- :aria-label="t('pluginsToolsYouTubeDescription7s')"
249
- :to="t('pluginsToolsYouTubeDescription7s')"
250
- >
251
- {{ t('pluginsToolsYouTubeDescription7s') }}
252
- </VioLink>
253
- </template>
254
- </i18n-t>
276
+ </li>
277
+ <li v-if="isEnabled.newsletter">
278
+ <section>
279
+ <h2>{{ t('newsletter') }}</h2>
280
+
281
+ <section v-if="isEnabled.newsletter.data">
282
+ <h3>{{ t('newsletterDataTitle') }}</h3>
283
+ <p>{{ t('newsletterDataDescription1') }}</p>
284
+ <p>{{ t('newsletterDataDescription2') }}</p>
285
+ <p>{{ t('newsletterDataDescription3') }}</p>
286
+
287
+ <i18n-t keypath="newsletterDataDescription4" tag="p">
288
+ <template #strong>
289
+ <strong>{{ t('newsletterDataDescription4s') }}</strong>
290
+ </template>
291
+ </i18n-t>
292
+ </section>
255
293
  </section>
294
+ </li>
295
+ <li v-if="isEnabled.pluginsTools">
296
+ <section>
297
+ <h2>{{ t('pluginsTools') }}</h2>
298
+
299
+ <section v-if="isEnabled.pluginsTools.youTube">
300
+ <h3>{{ t('pluginsToolsYouTubeTitle') }}</h3>
301
+ <p>{{ t('pluginsToolsYouTubeDescription1') }}</p>
302
+ <p>{{ t('pluginsToolsYouTubeDescription2') }}</p>
303
+ <p>{{ t('pluginsToolsYouTubeDescription3') }}</p>
304
+ <p>{{ t('pluginsToolsYouTubeDescription4') }}</p>
305
+ <p>{{ t('pluginsToolsYouTubeDescription5') }}</p>
306
+ <p>{{ t('pluginsToolsYouTubeDescription6') }}</p>
307
+ <i18n-t keypath="pluginsToolsYouTubeDescription7" tag="p">
308
+ <template #linkPrivacy>
309
+ <VioLink
310
+ :aria-label="t('pluginsToolsYouTubeDescription7s')"
311
+ :to="t('pluginsToolsYouTubeDescription7s')"
312
+ >
313
+ {{ t('pluginsToolsYouTubeDescription7s') }}
314
+ </VioLink>
315
+ </template>
316
+ </i18n-t>
317
+ </section>
256
318
 
257
- <section v-if="isEnabled.pluginsTools.googleWebFonts">
258
- <h3>{{ t('pluginsToolsGoogleWebFontsTitle') }}</h3>
259
- <p>{{ t('pluginsToolsGoogleWebFontsDescription1') }}</p>
260
- <i18n-t keypath="pluginsToolsGoogleWebFontsDescription2" tag="p">
261
- <template #linkFaq>
262
- <VioLink
263
- :aria-label="t('pluginsToolsGoogleWebFontsDescription2s1')"
264
- :to="t('pluginsToolsGoogleWebFontsDescription2s1')"
265
- >
266
- {{ t('pluginsToolsGoogleWebFontsDescription2s1') }}
267
- </VioLink>
268
- </template>
269
- <template #linkPrivacy>
270
- <VioLink
271
- :aria-label="t('pluginsToolsGoogleWebFontsDescription2s2')"
272
- :to="t('pluginsToolsGoogleWebFontsDescription2s2')"
273
- >
274
- {{ t('pluginsToolsGoogleWebFontsDescription2s2') }}
275
- </VioLink>
276
- </template>
277
- </i18n-t>
278
- </section>
319
+ <section v-if="isEnabled.pluginsTools.googleWebFonts">
320
+ <h3>{{ t('pluginsToolsGoogleWebFontsTitle') }}</h3>
321
+ <p>{{ t('pluginsToolsGoogleWebFontsDescription1') }}</p>
322
+ <i18n-t keypath="pluginsToolsGoogleWebFontsDescription2" tag="p">
323
+ <template #linkFaq>
324
+ <VioLink
325
+ :aria-label="t('pluginsToolsGoogleWebFontsDescription2s1')"
326
+ :to="t('pluginsToolsGoogleWebFontsDescription2s1')"
327
+ >
328
+ {{ t('pluginsToolsGoogleWebFontsDescription2s1') }}
329
+ </VioLink>
330
+ </template>
331
+ <template #linkPrivacy>
332
+ <VioLink
333
+ :aria-label="t('pluginsToolsGoogleWebFontsDescription2s2')"
334
+ :to="t('pluginsToolsGoogleWebFontsDescription2s2')"
335
+ >
336
+ {{ t('pluginsToolsGoogleWebFontsDescription2s2') }}
337
+ </VioLink>
338
+ </template>
339
+ </i18n-t>
340
+ </section>
279
341
 
280
- <section v-if="isEnabled.pluginsTools.fontAwesome">
281
- <h3>{{ t('pluginsToolsFontAwesomeTitle') }}</h3>
282
- <p>{{ t('pluginsToolsFontAwesomeDescription1') }}</p>
283
- <i18n-t keypath="pluginsToolsFontAwesomeDescription2" tag="p">
284
- <template #linkPrivacy>
285
- <VioLink
286
- :aria-label="t('pluginsToolsFontAwesomeDescription2s')"
287
- :to="t('pluginsToolsFontAwesomeDescription2s')"
288
- >
289
- {{ t('pluginsToolsFontAwesomeDescription2s') }}
290
- </VioLink>
291
- </template>
292
- </i18n-t>
293
- </section>
342
+ <section v-if="isEnabled.pluginsTools.fontAwesome">
343
+ <h3>{{ t('pluginsToolsFontAwesomeTitle') }}</h3>
344
+ <p>{{ t('pluginsToolsFontAwesomeDescription1') }}</p>
345
+ <i18n-t keypath="pluginsToolsFontAwesomeDescription2" tag="p">
346
+ <template #linkPrivacy>
347
+ <VioLink
348
+ :aria-label="t('pluginsToolsFontAwesomeDescription2s')"
349
+ :to="t('pluginsToolsFontAwesomeDescription2s')"
350
+ >
351
+ {{ t('pluginsToolsFontAwesomeDescription2s') }}
352
+ </VioLink>
353
+ </template>
354
+ </i18n-t>
355
+ </section>
294
356
 
295
- <section v-if="isEnabled.pluginsTools.googleMaps">
296
- <h3>{{ t('pluginsToolsGoogleMapsTitle') }}</h3>
297
- <p>{{ t('pluginsToolsGoogleMapsDescription1') }}</p>
298
- <p>{{ t('pluginsToolsGoogleMapsDescription2') }}</p>
299
- <p>{{ t('pluginsToolsGoogleMapsDescription3') }}</p>
300
- <i18n-t keypath="pluginsToolsGoogleMapsDescription4" tag="p">
301
- <template #linkGdpr>
302
- <VioLink
303
- :aria-label="t('pluginsToolsGoogleMapsDescription4s1')"
304
- to="https://privacy.google.com/businesses/gdprcontrollerterms/"
305
- >
306
- {{ t('pluginsToolsGoogleMapsDescription4s1') }}
307
- </VioLink>
308
- </template>
309
- <template #linkGdprScss>
310
- <VioLink
311
- :aria-label="t('pluginsToolsGoogleMapsDescription4s1')"
312
- to="https://privacy.google.com/businesses/gdprcontrollerterms/sccs/"
313
- >
314
- {{ t('pluginsToolsGoogleMapsDescription4s2') }}
315
- </VioLink>
316
- </template>
317
- </i18n-t>
318
- <i18n-t keypath="pluginsToolsGoogleMapsDescription5" tag="p">
319
- <template #linkPrivacy>
320
- <VioLink
321
- :aria-label="t('pluginsToolsGoogleMapsDescription5s')"
322
- :to="t('pluginsToolsGoogleMapsDescription5s')"
323
- >
324
- {{ t('pluginsToolsGoogleMapsDescription5s') }}
325
- </VioLink>
326
- </template>
327
- </i18n-t>
328
- </section>
357
+ <section v-if="isEnabled.pluginsTools.googleMaps">
358
+ <h3>{{ t('pluginsToolsGoogleMapsTitle') }}</h3>
359
+ <p>{{ t('pluginsToolsGoogleMapsDescription1') }}</p>
360
+ <p>{{ t('pluginsToolsGoogleMapsDescription2') }}</p>
361
+ <p>{{ t('pluginsToolsGoogleMapsDescription3') }}</p>
362
+ <i18n-t keypath="pluginsToolsGoogleMapsDescription4" tag="p">
363
+ <template #linkGdpr>
364
+ <VioLink
365
+ :aria-label="t('pluginsToolsGoogleMapsDescription4s1')"
366
+ to="https://privacy.google.com/businesses/gdprcontrollerterms/"
367
+ >
368
+ {{ t('pluginsToolsGoogleMapsDescription4s1') }}
369
+ </VioLink>
370
+ </template>
371
+ <template #linkGdprScss>
372
+ <VioLink
373
+ :aria-label="t('pluginsToolsGoogleMapsDescription4s1')"
374
+ to="https://privacy.google.com/businesses/gdprcontrollerterms/sccs/"
375
+ >
376
+ {{ t('pluginsToolsGoogleMapsDescription4s2') }}
377
+ </VioLink>
378
+ </template>
379
+ </i18n-t>
380
+ <i18n-t keypath="pluginsToolsGoogleMapsDescription5" tag="p">
381
+ <template #linkPrivacy>
382
+ <VioLink
383
+ :aria-label="t('pluginsToolsGoogleMapsDescription5s')"
384
+ :to="t('pluginsToolsGoogleMapsDescription5s')"
385
+ >
386
+ {{ t('pluginsToolsGoogleMapsDescription5s') }}
387
+ </VioLink>
388
+ </template>
389
+ </i18n-t>
390
+ </section>
329
391
 
330
- <section v-if="isEnabled.pluginsTools.googleReCaptcha">
331
- <h3>{{ t('pluginsToolsGoogleReCaptchaTitle') }}</h3>
332
- <p>{{ t('pluginsToolsGoogleReCaptchaDescription1') }}</p>
333
- <p>{{ t('pluginsToolsGoogleReCaptchaDescription2') }}</p>
334
- <p>{{ t('pluginsToolsGoogleReCaptchaDescription3') }}</p>
335
- <p>{{ t('pluginsToolsGoogleReCaptchaDescription4') }}</p>
336
- <i18n-t keypath="pluginsToolsGoogleReCaptchaDescription5" tag="p">
337
- <template #linkPrivacy>
338
- <VioLink
339
- :aria-label="t('pluginsToolsGoogleReCaptchaDescription5s1')"
340
- :to="t('pluginsToolsGoogleReCaptchaDescription5s1')"
341
- >
342
- {{ t('pluginsToolsGoogleReCaptchaDescription5s1') }}
343
- </VioLink>
344
- </template>
345
- <template #linkTerms>
346
- <VioLink
347
- :aria-label="t('pluginsToolsGoogleReCaptchaDescription5s2')"
348
- :to="t('pluginsToolsGoogleReCaptchaDescription5s2')"
349
- >
350
- {{ t('pluginsToolsGoogleReCaptchaDescription5s2') }}
351
- </VioLink>
352
- </template>
353
- </i18n-t>
392
+ <section v-if="isEnabled.pluginsTools.googleReCaptcha">
393
+ <h3>{{ t('pluginsToolsGoogleReCaptchaTitle') }}</h3>
394
+ <p>{{ t('pluginsToolsGoogleReCaptchaDescription1') }}</p>
395
+ <p>{{ t('pluginsToolsGoogleReCaptchaDescription2') }}</p>
396
+ <p>{{ t('pluginsToolsGoogleReCaptchaDescription3') }}</p>
397
+ <p>{{ t('pluginsToolsGoogleReCaptchaDescription4') }}</p>
398
+ <i18n-t keypath="pluginsToolsGoogleReCaptchaDescription5" tag="p">
399
+ <template #linkPrivacy>
400
+ <VioLink
401
+ :aria-label="t('pluginsToolsGoogleReCaptchaDescription5s1')"
402
+ :to="t('pluginsToolsGoogleReCaptchaDescription5s1')"
403
+ >
404
+ {{ t('pluginsToolsGoogleReCaptchaDescription5s1') }}
405
+ </VioLink>
406
+ </template>
407
+ <template #linkTerms>
408
+ <VioLink
409
+ :aria-label="t('pluginsToolsGoogleReCaptchaDescription5s2')"
410
+ :to="t('pluginsToolsGoogleReCaptchaDescription5s2')"
411
+ >
412
+ {{ t('pluginsToolsGoogleReCaptchaDescription5s2') }}
413
+ </VioLink>
414
+ </template>
415
+ </i18n-t>
416
+ </section>
354
417
  </section>
355
-
356
- <p>
357
- <VioLink :aria-label="t('source')" to="https://www.e-recht24.de">
358
- {{ t('source') }}
359
- </VioLink>
360
- </p>
361
- </section>
362
- </div>
418
+ </li>
419
+ </ol>
420
+ <p>
421
+ <VioLink :aria-label="t('source')" to="https://www.e-recht24.de">
422
+ {{ t('source') }}
423
+ </VioLink>
424
+ </p>
363
425
  </div>
364
426
  </template>
365
427
 
@@ -433,6 +495,7 @@ withDefaults(defineProps<Props>(), {
433
495
  }),
434
496
  })
435
497
 
498
+ const appConfig = useAppConfig()
436
499
  const { t } = useI18n()
437
500
 
438
501
  // data
@@ -444,7 +507,7 @@ useSeoMeta({ title })
444
507
 
445
508
  <i18n lang="yaml">
446
509
  de:
447
- dataAcquisition: 4. Datenerfassung auf dieser Website
510
+ dataAcquisition: Datenerfassung auf dieser Website
448
511
  dataAcquisitionCommentsDescription: Für die Kommentarfunktion auf dieser Seite werden neben Ihrem Kommentar auch Angaben zum Zeitpunkt der Erstellung des Kommentars, Ihre E-Mail-Adresse und, wenn Sie nicht anonym posten, der von Ihnen gewählte Nutzername gespeichert.
449
512
  dataAcquisitionCommentsIpDescription: Unsere Kommentarfunktion speichert die IP-Adressen der Nutzer, die Kommentare verfassen. Da wir Kommentare auf dieser Website nicht vor der Freischaltung prüfen, benötigen wir diese Daten, um im Falle von Rechtsverletzungen wie Beleidigungen oder Propaganda gegen den Verfasser vorgehen zu können.
450
513
  dataAcquisitionCommentsIpTitle: Speicherung der IP-Adresse
@@ -494,9 +557,11 @@ de:
494
557
  dataCollectionToolsTitle: Analyse-Tools und Tools von Drittanbietern
495
558
  dataCollectionUseDescription: Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der Website zu gewährleisten. Andere Daten können zur Analyse Ihres Nutzerverhaltens verwendet werden.
496
559
  dataCollectionUseTitle: Wofür nutzen wir Ihre Daten?
560
+ email: 'E-Mail: {email}'
497
561
  generalNotesDescription: Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz entnehmen Sie unserer unter diesem Text aufgeführten Datenschutzerklärung.
498
562
  generalNotesTitle: Allgemeine Hinweise
499
- hostingCdn: 2. Hosting und Content Delivery Networks (CDN)
563
+ hostingCdn: Hosting und Content Delivery Networks (CDN)
564
+ hostingCdnExternalAddress: '{name}{br}{street}{br}{city}'
500
565
  hostingCdnExternalDescription1: Diese Website wird bei einem externen Dienstleister gehostet (Hoster). Die personenbezogenen Daten, die auf dieser Website erfasst werden, werden auf den Servern des Hosters gespeichert. Hierbei kann es sich v. a. um IP-Adressen, Kontaktanfragen, Meta- und Kommunikationsdaten, Vertragsdaten, Kontaktdaten, Namen, Websitezugriffe und sonstige Daten, die über eine Website generiert werden, handeln.
501
566
  hostingCdnExternalDescription2: Der Einsatz des Hosters erfolgt zum Zwecke der Vertragserfüllung gegenüber unseren potenziellen und bestehenden Kunden (Art. 6 Abs. 1 lit. b DSGVO) und im Interesse einer sicheren, schnellen und effizienten Bereitstellung unseres Online-Angebots durch einen professionellen Anbieter (Art. 6 Abs. 1 lit. f DSGVO).
502
567
  hostingCdnExternalDescription3: Unser Hoster wird Ihre Daten nur insoweit verarbeiten, wie dies zur Erfüllung seiner Leistungspflichten erforderlich ist und unsere Weisungen in Bezug auf diese Daten befolgen.
@@ -504,7 +569,7 @@ de:
504
569
  hostingCdnExternalProcessingContractDescription: Um die datenschutzkonforme Verarbeitung zu gewährleisten, haben wir einen Vertrag über Auftragsverarbeitung mit unserem Hoster geschlossen.
505
570
  hostingCdnExternalProcessingContractTitle: Abschluss eines Vertrages über Auftragsverarbeitung
506
571
  hostingCdnExternalTitle: Externes Hosting
507
- mandatoryInfo: 3. Allgemeine Hinweise und Pflichtinformationen
572
+ mandatoryInfo: Allgemeine Hinweise und Pflichtinformationen
508
573
  mandatoryInfoComplaintDescription: Im Falle von Verstößen gegen die DSGVO steht den Betroffenen ein Beschwerderecht bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat ihres gewöhnlichen Aufenthalts, ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes zu. Das Beschwerderecht besteht unbeschadet anderweitiger verwaltungsrechtlicher oder gerichtlicher Rechtsbehelfe.
509
574
  mandatoryInfoComplaintTitle: Beschwerderecht bei der zuständigen Aufsichtsbehörde
510
575
  mandatoryInfoConsentRevocationDescription: Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich. Sie können eine bereits erteilte Einwilligung jederzeit widerrufen. Die Rechtmäßigkeit der bis zum Widerruf erfolgten Datenverarbeitung bleibt vom Widerruf unberührt.
@@ -531,6 +596,7 @@ de:
531
596
  mandatoryInfoProcessingRestrictionList3: Wenn wir Ihre personenbezogenen Daten nicht mehr benötigen, Sie sie jedoch zur Ausübung, Verteidigung oder Geltendmachung von Rechtsansprüchen benötigen, haben Sie das Recht, statt der Löschung die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
532
597
  mandatoryInfoProcessingRestrictionList4: Wenn Sie einen Widerspruch nach Art. 21 Abs. 1 DSGVO eingelegt haben, muss eine Abwägung zwischen Ihren und unseren Interessen vorgenommen werden. Solange noch nicht feststeht, wessen Interessen überwiegen, haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
533
598
  mandatoryInfoProcessingRestrictionTitle: Recht auf Einschränkung der Verarbeitung
599
+ mandatoryInfoResponsibleAddress: '{name}{br}{street}{br}{city}{br}{br}{email}'
534
600
  mandatoryInfoResponsibleDescription1: 'Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:'
535
601
  mandatoryInfoResponsibleDescription2: Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten (z. B. Namen, E-Mail-Adressen o. Ä.) entscheidet.
536
602
  mandatoryInfoResponsibleTitle: Hinweis zur verantwortlichen Stelle
@@ -539,14 +605,14 @@ de:
539
605
  mandatoryInfoSslTlsTitle: SSL- bzw. TLS-Verschlüsselung
540
606
  mandatoryInfoStorageDurationDescription: Soweit innerhalb dieser Datenschutzerklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir keinen anderen rechtlich zulässigen Gründe für die Speicherung Ihrer personenbezogenen Daten haben (z.B. steuer- oder handelsrechtliche Aufbewahrungsfristen); im letztgenannten Fall erfolgt die Löschung nach Fortfall dieser Gründe.
541
607
  mandatoryInfoStorageDurationTitle: Speicherdauer
542
- newsletter: 5. Newsletter
608
+ newsletter: Newsletter
543
609
  newsletterDataDescription1: Wenn Sie den auf der Website angebotenen Newsletter beziehen möchten, benötigen wir von Ihnen eine E-Mail-Adresse sowie Informationen, welche uns die Überprüfung gestatten, dass Sie der Inhaber der angegebenen E-Mail-Adresse sind und mit dem Empfang des Newsletters einverstanden sind. Weitere Daten werden nicht bzw. nur auf freiwilliger Basis erhoben. Diese Daten verwenden wir ausschließlich für den Versand der angeforderten Informationen und geben diese nicht an Dritte weiter.
544
610
  newsletterDataDescription2: Die Verarbeitung der in das Newsletteranmeldeformular eingegebenen Daten erfolgt ausschließlich auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Die erteilte Einwilligung zur Speicherung der Daten, der E-Mail-Adresse sowie deren Nutzung zum Versand des Newsletters können Sie jederzeit widerrufen, etwa über den „Austragen“-Link im Newsletter. Die Rechtmäßigkeit der bereits erfolgten Datenverarbeitungsvorgänge bleibt vom Widerruf unberührt.
545
611
  newsletterDataDescription3: Die von Ihnen zum Zwecke des Newsletter-Bezugs bei uns hinterlegten Daten werden von uns bis zu Ihrer Austragung aus dem Newsletter bei uns bzw. dem Newsletterdiensteanbieter gespeichert und nach der Abbestellung des Newsletters aus der Newsletterverteilerliste gelöscht. Daten, die zu anderen Zwecken bei uns gespeichert wurden bleiben hiervon unberührt.
546
612
  newsletterDataDescription4s: Sie können der Speicherung widersprechen, sofern Ihre Interessen unser berechtigtes Interesse überwiegen.
547
613
  newsletterDataDescription4: Nach Ihrer Austragung aus der Newsletterverteilerliste wird Ihre E-Mail-Adresse bei uns bzw. dem Newsletterdiensteanbieter ggf. in einer Blacklist gespeichert, um künftige Mailings zu verhindern. Die Daten aus der Blacklist werden nur für diesen Zweck verwendet und nicht mit anderen Daten zusammengeführt. Dies dient sowohl Ihrem Interesse als auch unserem Interesse an der Einhaltung der gesetzlichen Vorgaben beim Versand von Newslettern (berechtigtes Interesse im Sinne des Art. 6 Abs. 1 lit. f DSGVO). Die Speicherung in der Blacklist ist zeitlich nicht befristet. {strong}
548
614
  newsletterDataTitle: Newsletterdaten
549
- pluginsTools: 6. Plugins und Tools
615
+ pluginsTools: Plugins und Tools
550
616
  pluginsToolsFontAwesomeDescription1: Diese Seite nutzt zur einheitlichen Darstellung von Schriftarten Font Awesome. Font Awesome ist lokal installiert. Eine Verbindung zu Servern von Fonticons, Inc. findet dabei nicht statt.
551
617
  pluginsToolsFontAwesomeDescription2s: https://fontawesome.com/privacy
552
618
  pluginsToolsFontAwesomeDescription2: 'Weitere Informationen zu Font Awesome finden Sie und in der Datenschutzerklärung für Font Awesome unter: {linkPrivacy}.'
@@ -583,10 +649,10 @@ de:
583
649
  pluginsToolsYouTubeDescription7: 'Weitere Informationen über Datenschutz bei YouTube finden Sie in deren Datenschutzerklärung unter: {linkPrivacy}.'
584
650
  pluginsToolsYouTubeTitle: YouTube mit erweitertem Datenschutz
585
651
  source: Quelle
586
- summary: 1. Datenschutz auf einen Blick
652
+ summary: Datenschutz auf einen Blick
587
653
  title: Datenschutzerklärung
588
654
  en:
589
- dataAcquisition: 4. Data collection on this website
655
+ dataAcquisition: Data collection on this website
590
656
  dataAcquisitionCommentsDescription: For the comment function on this page, in addition to your comment, information on the time of creation of the comment, your e-mail address and, if you do not post anonymously, the username you have chosen will be stored.
591
657
  dataAcquisitionCommentsIpDescription: Our comment function stores the IP addresses of users who post comments. Since we do not check comments on this website before they are activated, we need this data to be able to take action against the author in the event of legal violations such as insults or propaganda.
592
658
  dataAcquisitionCommentsIpTitle: IP address storage
@@ -636,9 +702,11 @@ en:
636
702
  dataCollectionToolsTitle: Third-party analytics and tools
637
703
  dataCollectionUseDescription: Some of the data is collected to ensure error-free provision of the website. Other data may be used to analyze your user behavior.
638
704
  dataCollectionUseTitle: What do we use your data for?
705
+ email: 'Email: {email}'
639
706
  generalNotesDescription: The following notices provide a simple overview of what happens to your personal data when you visit this website. Personal data is any data that can be used to identify you personally. For detailed information on the subject of data protection, please refer to our privacy policy listed below this text.
640
707
  generalNotesTitle: General notes
641
- hostingCdn: 2. Hosting and Content Delivery Networks (CDN)
708
+ hostingCdn: Hosting and Content Delivery Networks (CDN)
709
+ hostingCdnExternalAddress: '{name}{br}{street}{br}{city}'
642
710
  hostingCdnExternalDescription1: This website is hosted by an external service provider (hoster). The personal data collected on this website is stored on the hoster's servers. This may include IP addresses, contact requests, meta and communication data, contract data, contact data, names, website accesses and other data generated via a website.
643
711
  hostingCdnExternalDescription2: The hoster is used for the purpose of fulfilling contracts with our potential and existing customers (Art. 6 para. 1 lit. b GDPR) and in the interest of a secure, fast and efficient provision of our online offer by a professional provider (Art. 6 para. 1 lit. f GDPR).
644
712
  hostingCdnExternalDescription3: Our hoster will only process your data to the extent necessary to fulfill its service obligations and will follow our instructions regarding this data.
@@ -646,7 +714,7 @@ en:
646
714
  hostingCdnExternalProcessingContractDescription: To ensure data protection-compliant processing, we have concluded an order processing contract with our hoster.
647
715
  hostingCdnExternalProcessingContractTitle: Conclusion of a contract for order processing
648
716
  hostingCdnExternalTitle: External hosting
649
- mandatoryInfo: 3. General notes and mandatory information
717
+ mandatoryInfo: General notes and mandatory information
650
718
  mandatoryInfoComplaintDescription: In the event of breaches of the GDPR, data subjects shall have a right of appeal to a supervisory authority, in particular in the Member State of their habitual residence, their place of work or the place of the alleged breach. The right of appeal is without prejudice to other administrative or judicial remedies.
651
719
  mandatoryInfoComplaintTitle: Right of appeal to the competent supervisory authority
652
720
  mandatoryInfoConsentRevocationDescription: Many data processing operations are only possible with your express consent. You can revoke consent you have already given at any time. The legality of the data processing carried out until the revocation remains unaffected by the revocation.
@@ -673,6 +741,7 @@ en:
673
741
  mandatoryInfoProcessingRestrictionList3: If we no longer need your personal data, but you need it to exercise, defend or enforce legal claims, you have the right to request restriction of the processing of your personal data instead of deletion.
674
742
  mandatoryInfoProcessingRestrictionList4: If you have lodged an objection pursuant to Art. 21 (1) GDPR, a balancing of your and our interests must be carried out. As long as it has not yet been determined whose interests prevail, you have the right to request the restriction of the processing of your personal data.
675
743
  mandatoryInfoProcessingRestrictionTitle: Right to restriction of processing
744
+ mandatoryInfoResponsibleAddress: '{name}{br}{street}{br}{city}{br}{br}{email}'
676
745
  mandatoryInfoResponsibleDescription1: 'The responsible party for data processing on this website is:'
677
746
  mandatoryInfoResponsibleDescription2: The controller is the natural or legal person who alone or jointly with others determines the purposes and means of the processing of personal data (e.g. names, e-mail addresses, etc.).
678
747
  mandatoryInfoResponsibleTitle: Note on the responsible body
@@ -681,14 +750,14 @@ en:
681
750
  mandatoryInfoSslTlsTitle: SSL or TLS encryption
682
751
  mandatoryInfoStorageDurationDescription: Unless a more specific storage period has been specified within this privacy policy, your personal data will remain with us until the purpose for data processing no longer applies. If you assert a legitimate request for deletion or revoke your consent to data processing, your data will be deleted unless we have other legally permissible reasons for storing your personal data (e.g. retention periods under tax or commercial law); in the latter case, the data will be deleted once these reasons no longer apply.
683
752
  mandatoryInfoStorageDurationTitle: Storage duration
684
- newsletter: 5. Newsletter
753
+ newsletter: Newsletter
685
754
  newsletterDataDescription1: If you would like to receive the newsletter offered on the website, we require an e-mail address from you as well as information that allows us to verify that you are the owner of the specified e-mail address and agree to receive the newsletter. Further data is not collected or only on a voluntary basis. We use this data exclusively for sending the requested information and do not pass it on to third parties.
686
755
  newsletterDataDescription2: The processing of the data entered in the newsletter registration form is based exclusively on your consent (Art. 6 para. 1 lit. a GDPR). You can revoke your consent to the storage of the data, the e-mail address and their use for sending the newsletter at any time, for example via the „unsubscribe“-link in the newsletter. The legality of the data processing operations already carried out remains unaffected by the revocation.
687
756
  newsletterDataDescription3: The data you provide for the purpose of receiving the newsletter will be stored by us or the newsletter service provider until you unsubscribe from the newsletter and will be deleted from the newsletter distribution list after you unsubscribe from the newsletter. Data that has been stored by us for other purposes remains unaffected by this.
688
757
  newsletterDataDescription4s: You can object to the storage if your interests outweigh our legitimate interest.
689
758
  newsletterDataDescription4: After you have unsubscribed from the newsletter distribution list, your e-mail address will be stored by us or the newsletter service provider in a blacklist, if necessary, in order to prevent future mailings. The data from the blacklist will only be used for this purpose and will not be merged with other data. This serves both your interest and our interest in complying with legal requirements when sending newsletters (legitimate interest within the meaning of Art. 6 (1) lit. f GDPR). The storage in the blacklist is not limited in time. {strong}
690
759
  newsletterDataTitle: Newsletter data
691
- pluginsTools: 6. Plugins and tools
760
+ pluginsTools: Plugins and tools
692
761
  pluginsToolsFontAwesomeDescription1: This site uses Font Awesome for consistent font rendering. Font Awesome is installed locally. A connection to servers of Fonticons, Inc. does not take place.
693
762
  pluginsToolsFontAwesomeDescription2s: https://fontawesome.com/privacy
694
763
  pluginsToolsFontAwesomeDescription2: 'For more information about Font Awesome, please see and Font Awesome privacy policy at: {linkPrivacy}.'
@@ -725,6 +794,6 @@ en:
725
794
  pluginsToolsYouTubeDescription7: 'For more information about privacy at YouTube, please see their privacy policy at: {linkPrivacy}.'
726
795
  pluginsToolsYouTubeTitle: YouTube with enhanced privacy
727
796
  source: Source
728
- summary: 1. Data protection at a glance
797
+ summary: Data protection at a glance
729
798
  title: Privacy Policy
730
799
  </i18n>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dargmuesli/nuxt-vio",
3
- "version": "1.11.0-beta.1",
3
+ "version": "2.0.0-beta.1",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,52 +1,3 @@
1
1
  <template>
2
- <VioLegalNotice>
3
- <template #responsibilityAddress>
4
- <i18n-t keypath="responsibilityAddress">
5
- <template #br>
6
- <br />
7
- </template>
8
- <template #city>
9
- {{ appConfig.privacyPolicy.hostingCdn.external.address.city }}
10
- </template>
11
- <template #name>
12
- {{ appConfig.privacyPolicy.hostingCdn.external.address.name }}
13
- </template>
14
- <template #street>
15
- {{ appConfig.privacyPolicy.hostingCdn.external.address.street }}
16
- </template>
17
- </i18n-t>
18
- </template>
19
- <template #tmgAddress>
20
- <i18n-t keypath="tmgAddress">
21
- <template #br>
22
- <br />
23
- </template>
24
- <template #city>
25
- {{ appConfig.privacyPolicy.hostingCdn.external.address.city }}
26
- </template>
27
- <template #name>
28
- {{ appConfig.privacyPolicy.hostingCdn.external.address.name }}
29
- </template>
30
- <template #street>
31
- {{ appConfig.privacyPolicy.hostingCdn.external.address.street }}
32
- </template>
33
- </i18n-t>
34
- </template>
35
- </VioLegalNotice>
2
+ <VioLegalNotice />
36
3
  </template>
37
-
38
- <script setup lang="ts">
39
- const appConfig = useAppConfig()
40
-
41
- // TODO: use i18n-t without useI18n (https://github.com/nuxt-modules/i18n/issues/1731)
42
- const x = useI18n() // eslint-disable-line @typescript-eslint/no-unused-vars
43
- </script>
44
-
45
- <i18n lang="yaml">
46
- de:
47
- tmgAddress: '{name}{br}{street}{br}{city}'
48
- responsibilityAddress: '{name}{br}{street}{br}{city}'
49
- en:
50
- tmgAddress: '{name}{br}{street}{br}{city}'
51
- responsibilityAddress: '{name}{br}{street}{br}{city}'
52
- </i18n>
@@ -53,57 +53,5 @@
53
53
  googleReCaptcha: true,
54
54
  },
55
55
  }"
56
- >
57
- <template #hostingCdnExternalAddress>
58
- <i18n-t keypath="hostingCdnExternalAddress">
59
- <template #br>
60
- <br />
61
- </template>
62
- <template #city>
63
- {{ appConfig.privacyPolicy.hostingCdn.external.address.city }}
64
- </template>
65
- <template #name>
66
- {{ appConfig.privacyPolicy.hostingCdn.external.address.name }}
67
- </template>
68
- <template #street>
69
- {{ appConfig.privacyPolicy.hostingCdn.external.address.street }}
70
- </template>
71
- </i18n-t>
72
- </template>
73
- <template #mandatoryInfoResponsibleAddress>
74
- <i18n-t keypath="mandatoryInfoResponsibleAddress">
75
- <template #br>
76
- <br />
77
- </template>
78
- <template #city>
79
- {{ appConfig.privacyPolicy.mandatoryInfo.responsible.address.city }}
80
- </template>
81
- <template #email>
82
- {{ appConfig.privacyPolicy.mandatoryInfo.responsible.address.email }}
83
- </template>
84
- <template #name>
85
- {{ appConfig.privacyPolicy.mandatoryInfo.responsible.address.name }}
86
- </template>
87
- <template #street>
88
- {{ appConfig.privacyPolicy.mandatoryInfo.responsible.address.street }}
89
- </template>
90
- </i18n-t>
91
- </template>
92
- </VioPrivacyPolicy>
56
+ />
93
57
  </template>
94
-
95
- <script setup lang="ts">
96
- const appConfig = useAppConfig()
97
-
98
- // TODO: use i18n-t without useI18n (https://github.com/nuxt-modules/i18n/issues/1731)
99
- const x = useI18n() // eslint-disable-line @typescript-eslint/no-unused-vars
100
- </script>
101
-
102
- <i18n lang="yaml">
103
- de:
104
- hostingCdnExternalAddress: '{name}{br}{street}{br}{city}'
105
- mandatoryInfoResponsibleAddress: '{name}{br}{street}{br}{city}{br}{br}{email}'
106
- en:
107
- hostingCdnExternalAddress: '{name}{br}{street}{br}{city}'
108
- mandatoryInfoResponsibleAddress: '{name}{br}{street}{br}{city}{br}{br}{email}'
109
- </i18n>