2022-07-07 19:59:16 +02:00
import { RequestCluster } from '../../request-cluster' ;
2022-02-07 21:11:25 +01:00
function generateHostPage (
2022-07-07 19:59:16 +02:00
cluster : RequestCluster ,
2022-04-24 22:11:33 +02:00
index : number ,
2022-07-07 19:59:16 +02:00
all_clusters : RequestCluster [ ]
) : { title : string ; elements : any [ ] ; visibleIf? : string } {
function f ( name : string , c = cluster ) {
return ` ${ c . id . replace ( /\./g , '_' ) } | ${ name } ` ;
2022-04-24 22:11:33 +02:00
}
2022-07-07 19:59:16 +02:00
const previous_cluster : RequestCluster | null = index > 0 ? all_clusters [ index - 1 ] : null ;
2022-04-24 22:11:33 +02:00
function defaultValue ( name : string ) {
2022-07-07 19:59:16 +02:00
if ( ! previous_cluster ) {
2022-04-24 22:11:33 +02:00
return { } ;
}
2022-07-07 19:59:16 +02:00
return { defaultValueExpression : ` { ${ f ( name , previous_cluster ) } } ` } ;
}
const domain = cluster . id ;
2022-07-07 21:16:48 +02:00
const danych = cluster . getDataTypeDescription ( ) ;
2022-04-24 22:11:33 +02:00
return {
2022-07-07 19:59:16 +02:00
title : cluster.id ,
2022-04-24 22:11:33 +02:00
elements : [
{
type : 'radiogroup' ,
name : f ( 'present' ) ,
isRequired : true ,
2022-07-08 20:53:12 +02:00
title : ` Strona udostępniła właścicielowi domeny ${ domain } ${ danych } . Cel takiego przetwarzania danych: ` ,
2022-04-24 22:11:33 +02:00
. . . defaultValue ( 'present' ) ,
visibleIf : '{popup_type} != "none"' ,
choices : [
{
value : 'not_mentioned' ,
text : 'nie jest podany nigdzie na stronie' ,
visibleIf : "{policy_readable} = 'yes' " ,
} ,
{
value : 'not_before_making_a_choice' ,
text : 'nie jest podany w żadnym miejscu na stronie, do którego można się dostać bez podejmowania wyboru dotyczącego przetwarzania danych osobowych' ,
} ,
{
value : 'mentioned_in_policy' ,
text : 'jest podany w polityce prywatności' ,
visibleIf : "{policy_readable} = 'yes' " ,
} ,
2022-02-07 21:11:25 +01:00
2022-04-24 22:11:33 +02:00
{
value : 'mentioned_in_popup' ,
text : 'jest podany w okienku RODO' ,
visibleIf : "{popup_type} != 'none' " ,
} ,
] ,
} ,
{
type : 'radiogroup' ,
name : f ( 'legal_basis_type' ) ,
. . . defaultValue ( 'legal_basis_type' ) ,
isRequired : true ,
title : ` Podstawa prawna dla tego konkretnego celu ` ,
visibleIf : ` { ${ f ( 'present' ) } } notempty and { ${ f (
'present'
) } } != "not_mentioned" and { $ { f ( 'present' ) } } != "not_before_making_a_choice" ` ,
choices : [
2022-07-07 22:10:03 +02:00
{ value : 'consent' , text : 'to zgoda (art. 6 ust. 1 lit. a RODO).' } ,
2022-04-24 22:11:33 +02:00
{
value : 'legitimate_interest' ,
2022-07-07 22:10:03 +02:00
text : 'to uzasadniony interes (art. 6 ust. 1 lit. f RODO).' ,
2022-04-24 22:11:33 +02:00
} ,
{ value : 'not_mentioned' , text : 'nie jest wskazana nigdzie na stronie.' } ,
] ,
} ,
{
type : 'radiogroup' ,
name : f ( 'consent_problems' ) ,
. . . defaultValue ( 'consent_problems' ) ,
isRequired : true ,
title : ` Jak ma się ta podstawa prawna do stanu faktycznego? ` ,
visibleIf : ` { ${ f ( 'legal_basis_type' ) } } = "consent" ` ,
defaultValueExpression :
'iif({popup_action} = "none" or {popup_action} = "closed_popup", "claims_consent_but_sends_before_consent", iif({popup_action} = "accept_all" and {rejection_is_hard} = "yes", "claims_consent_but_there_was_no_easy_refuse", ""))' ,
choices : [
{
value : 'claims_consent_but_sends_before_consent' ,
2022-07-07 19:59:16 +02:00
text : ` Strona wysłała {moje} dane do ${ domain } zanim {wyraziłem} na to zgodę ` ,
2022-04-24 22:11:33 +02:00
} ,
{
value : 'claims_consent_but_there_was_no_easy_refuse' ,
text : '{Kliknąłem} przycisk od wyrażania zgody, ale w okienku o zgodę nie było natychmiastowo dostępnego przycisku do niewyrażenia zgody jednym kliknięciem' ,
} ,
{ value : 'none' , text : 'żadne z powyższych.' } ,
] ,
} ,
{
type : 'radiogroup' ,
name : f ( 'legitimate_interest_activity_specified' ) ,
. . . defaultValue ( 'legitimate_interest_activity_specified' ) ,
isRequired : true ,
title : /* HTML */ ` Czy administrator strony opisał szczegółowo, na czym polega
uzasadniony interes w kontekście tego celu ? ` ,
visibleIf : ` { ${ f ( 'legal_basis_type' ) } } = "legitimate_interest" ` ,
choices : [
{
value : 'precise' ,
text : /* HTML */ ` Tak, wskazuje jasno na bieżące działania lub korzyści
wynikające z takiego przetwarzania danych . ` ,
} ,
{
value : 'vague' ,
text : ` Wskazuje tylko ogólnie, jak np. „marketing” czy „statystyki”. ` ,
} ,
{
value : 'no' ,
text : ` Nie. Nie wiadomo, na czym ten uzasadniony interes polega. ` ,
} ,
] ,
} ,
{
type : 'text' ,
2022-07-07 19:59:16 +02:00
title : ` Jak administrator opisał to, na czym polega uzasadniony interes w kontekście ${ domain } ? ` ,
2022-04-24 22:11:33 +02:00
name : f ( 'legitimate_interest_description' ) ,
visibleIf : ` { ${ f ( 'legitimate_interest_activity_specified' ) } } = 'vague' ` ,
placeholder : 'marketing' ,
defaultValueExpression :
index == 0
? 'marketing'
2022-07-09 15:28:37 +02:00
: ` { ${ f (
'legitimate_interest_description' ,
previous_cluster || undefined
) } } ` ,
2022-04-24 22:11:33 +02:00
} ,
{
type : 'radiogroup' ,
2022-07-07 19:59:16 +02:00
title : ` Czy domena ${ domain } należy do podmiotu spoza Europy (np. Google, Facebook)? ` ,
2022-04-24 22:11:33 +02:00
name : f ( 'outside_eu' ) ,
. . . defaultValue ( 'outside_eu' ) ,
visibleIf : ` { ${ f ( 'legitimate_interest_activity_specified' ) } } = "precise" or { ${ f (
'consent_problems'
) } } = "none" ` ,
2022-07-03 19:51:04 +02:00
isRequired : true ,
2022-04-24 22:11:33 +02:00
choices : [
{ value : 'yes' , text : 'Tak' } ,
{ value : 'no' , text : 'Nie' } ,
{ value : 'not_sure' , text : 'Nie wiem' } ,
] ,
} ,
{
type : 'radiogroup' ,
2022-07-07 19:59:16 +02:00
title : ` Czy w {Twojej} ocenie ujawnienie {Twoich} danych ( ${ danych } ) właścicielowi domeny ${ domain } było konieczne do świadczenia zażądanej przez {Ciebie} usługi drogą elektroniczną? ` ,
2022-04-24 22:11:33 +02:00
name : f ( 'was_processing_necessary' ) ,
2022-07-03 19:51:04 +02:00
isRequired : true ,
2022-04-24 22:11:33 +02:00
. . . defaultValue ( 'was_processing_necessary' ) ,
visibleIf : ` { ${ f ( 'legal_basis_type' ) } } = "legitimate_interest" or { ${ f (
'present'
2022-07-16 21:47:53 +02:00
) } } = "not_mentioned" or { $ { f (
'present'
) } } = "not_before_making_a_choice" or { popup_type } = "none" ` ,
2022-04-24 22:11:33 +02:00
choices : [
{ value : 'yes' , text : 'Tak, było konieczne' } ,
{ value : 'no' , text : 'Nie, nie było konieczne' } ,
{ value : 'not_sure' , text : 'Nie mam zdania' } ,
] ,
} ,
] ,
} ;
2022-02-07 21:11:25 +01:00
}
2022-07-07 19:59:16 +02:00
export default function generateSurveyQuestions ( clusters : RequestCluster [ ] ) {
2022-04-24 22:11:33 +02:00
return {
showQuestionNumbers : 'off' ,
showProgressBar : 'top' ,
2022-07-03 19:51:04 +02:00
pagePrevText : 'Wróć' ,
pageNextText : 'Dalej' ,
completeText : 'Dalej' ,
locale : 'pl' ,
2022-04-24 22:11:33 +02:00
clearInvisibleValues : 'onHidden' ,
pages : [
2022-07-06 20:01:14 +02:00
{
2022-07-08 20:53:12 +02:00
title : 'Dodatkowe pytania' ,
2022-07-06 20:01:14 +02:00
elements : [
{
type : 'html' ,
name : 'intro' ,
2022-07-08 17:07:11 +02:00
html : /* HTML */ ` <p>
2022-07-08 20:53:12 +02:00
Analiza ruchu sieciowego generowanego przez stronę została zakończona .
Teraz , aby lepiej oszacować , gdzie są potencjalne obszary robocze pod
względem zgodności z RODO , możesz udzielić odpowiedzi na pytania
dotyczące funkcjonowania strony . Wtyczka wtedy wygeneruje raport lub
treść maila , którą możesz wysłać do administratora strony .
2022-07-08 17:07:11 +02:00
< / p > ` ,
2022-07-06 20:01:14 +02:00
} ,
] ,
} ,
2022-04-24 22:11:33 +02:00
{
2022-07-08 20:53:12 +02:00
title : 'Kontekst analizy' ,
2022-04-24 22:11:33 +02:00
elements : [
2022-07-08 20:53:12 +02:00
{
type : 'radiogroup' ,
name : 'user_role' ,
title : 'Jestem:' ,
2022-07-10 13:52:48 +02:00
isRequired : true ,
2022-07-08 20:53:12 +02:00
choices : [
{ value : 'user' , text : 'użytkownikiem strony' } ,
{ value : 'admin' , text : 'administratorem strony' } ,
] ,
} ,
{
type : 'radiogroup' ,
name : 'email_type' ,
title : 'Chcę:' ,
visibleIf : "{user_role} = 'user'" ,
choices : [
{
value : 'polite_information' ,
text : 'uprzejmie poinformować administratora strony o potencjalnych problemach ze zgodnością z RODO na jego stronie' ,
} ,
{
value : 'official_request' ,
text : 'wysłać formalne zapytanie do administratora strony, na które ma obowiązek odpowiedzieć. Jeżeli administrator nie odpowie na takie zapytanie, może to być podstawą złożenia skargi do UODO' ,
} ,
] ,
} ,
2022-04-24 22:11:33 +02:00
{
type : 'radiogroup' ,
name : 'zaimek' ,
2022-07-08 20:53:12 +02:00
title : 'Forma czasownika, jaka będzie użyta w raporcie:' ,
2022-04-24 22:11:33 +02:00
isRequired : true ,
choices : [
2022-07-08 21:01:55 +02:00
{ value : 0 , text : 'wysłałem' } ,
{ value : 1 , text : 'wysłałam' } ,
{ value : 2 , text : 'wysłałom' } ,
{ value : 3 , text : 'wysłaliśmy' } ,
2022-04-24 22:11:33 +02:00
] ,
} ,
] ,
} ,
{
2022-04-25 20:02:20 +02:00
title : 'Obowiązek informacyjny i mechanizm pozyskiwania zgody' ,
2022-04-24 22:11:33 +02:00
elements : [
{
type : 'radiogroup' ,
title : 'Jaką formę informacji o przetwarzaniu danych osobowych stosuje ta strona?' ,
name : 'popup_type' ,
isRequired : true ,
choices : [
{ value : 'none' , text : 'Brak informacji' } ,
{
value : 'page' ,
text : 'Tylko w postaci tekstu na podstronie np. "prywatność" lub "polityka cookies"' ,
} ,
{
value : 'passive_popup' ,
text : /* HTML */ ` Okienko o cookiesach, bez możliwości podjęcia
ż adnego wyboru ( np . tylko opcja „ zamknij ” ) ` ,
} ,
{
value : 'some_choice' ,
text : 'Okienko o cookiesach, z możliwością podjęcia wyboru' ,
} ,
] ,
} ,
{
type : 'checkbox' ,
title : /* HTML */ ` Istnieje możliwość, że okienko z informacjami i wyborami
dotyczącymi przetwarzania { Twoich } danych osobowych ukazało się dawno temu w
trakcie { twojej } wcześniejszej wizyty i wtedy je { odkliknąłeś } . { Otwórz } tę
samą stronę w Trybie Prywatnym ( Incognito ) . Co { widzisz } ? ` ,
visibleIf : "{popup_type} = 'none' or {popup_type} = 'page'" ,
name : 'is_incognito_different' ,
isRequired : true ,
choices : [
{
value : 'incognito_is_the_same' ,
text : 'W Trybie prywatnym {widzę} to samo, co {widziałem} w normalnym trybie' ,
} ,
] ,
} ,
{
type : 'html' ,
visibleIf :
'{is_incognito_different} != "no" and ({popup_type} = "none" or {popup_type} = "page") ' ,
2022-07-03 19:35:36 +02:00
html : /* HTML */ ` Jeżeli w trybie incognito {widzisz} więcej okienek z
informacjami o przetwarzaniu danych osobowych , { wykonaj } analizę w
normalnym trybie ponownie - ale najpierw { usuń } pliki cookies tej
strony .
2022-04-24 22:11:33 +02:00
< a
href = "https://support.mozilla.org/pl/kb/usuwanie-ciasteczek-i-danych-stron-firefox?redirectslug=usuwanie-ciasteczek&redirectlocale=pl"
target = "_blank"
>
2022-07-03 19:35:36 +02:00
{ Zobacz } , jak to zrobić
2022-04-24 22:11:33 +02:00
< / a > ` ,
} ,
{
type : 'radiogroup' ,
name : 'mentions_passive_consent' ,
isRequired : true ,
visibleIf : '{popup_type} = "passive_popup"' ,
title : 'Czy treść okienka wskazuje na zgodę wyrażoną pasywnie, np. „Korzystając z naszej strony wyrażasz zgodę”, „Brak zmiany ustawień przeglądarki oznacza zgodę”, „Klikając przycisk "X" (zamknij) wyrażasz zgodę”?' ,
choices : [
{
value : 'yes' ,
text : 'Tak' ,
} ,
{
value : 'no' ,
text : 'Nie' ,
} ,
] ,
} ,
{
type : 'text' ,
name : 'passive_consent_description' ,
isRequired : true ,
visibleIf : '{mentions_passive_consent} = "yes"' ,
title : 'Jakimi słowami administrator opisuje to pasywne wyrażenie zgody? Zacytuj wprost. Na przykład: „Korzystając ze strony wyrażasz zgodę”, albo „Pozostawiając ustawienia przeglądarki bez zmian (..) wyrażasz zgodę”' ,
defaultValue : 'Korzystając ze strony wyrażasz zgodę' ,
} ,
{
type : 'radiogroup' ,
name : 'cookie_wall' ,
isRequired : true ,
visibleIf : '{popup_type} = "passive_popup"' ,
title : 'Czy treść strony jest wygodnie czytelna bez odkliknięcia tego okienka o RODO?' ,
choices : [
{
value : 'no' , // wiem, że tu jest "no", a odpowiedź brzmi "tak" - ale nazwa pytania dotyczy obecności cookie walla
text : 'Tak, jest czytelna' ,
} ,
{
value : 'yes' ,
text : 'Nie. Jest zupełnie niewidoczna albo jest przesłonięta w stopniu uniemożliwiającym lub znacznie utrudniającym czytanie treści strony.' ,
} ,
] ,
} ,
{
type : 'radiogroup' ,
name : 'rejection_is_hard' ,
isRequired : true ,
visibleIf : '{popup_type} = "some_choice"' ,
title : 'Czy wyrażenie zgody na wszystkie cele jest dokładnie tak samo łatwe, jak odmowa zgody na wszystkie cele?' ,
choices : [
{
value : 'no' , // wiem, że tu jest "no", a odpowiedź brzmi "tak" - ale nazwa pytania dotyczy braku równowagi
text : 'Tak. Opcja odmowy zgody na wszystkie cele jest równie widoczna i łatwo dostępna, co opcja wyrażenia zgody.' ,
} ,
{
value : 'yes' ,
2022-07-08 20:53:12 +02:00
text : 'Nie. {Muszę} wykonać więcej czynności (np. kliknięć) aby odmówić wszystkich zgód, albo opcja niewyrażenia zgody jest mało widoczna.' ,
2022-04-24 22:11:33 +02:00
} ,
] ,
} ,
{
type : 'radiogroup' ,
name : 'popup_action' ,
isRequired : true ,
visibleIf : '{popup_type} = "some_choice" or {popup_type} = "passive_popup"' ,
title : 'Jaką akcję {podjąłeś} w ramach wyskakującego okienka?' ,
choices : [
{
value : 'none' ,
text : 'Nic nie {kliknąłem}' ,
} ,
{
value : 'closed_popup' ,
text : '{Zamknąłem} okienko za pomocą przycisku „X” lub „Zamknij”, lub podobnego' ,
} ,
{
value : 'accept_all' ,
text : '{Kliknąłem} przycisk od akceptacji wszystkich zgód' ,
} ,
{
value : 'deny_all' ,
text : '{Odmówiłem} wyrażenia zgody na wszystkie cele' ,
} ,
{
value : 'other' ,
text : 'Coś innego' ,
} ,
] ,
} ,
{
type : 'text' ,
name : 'popup_closed_how' ,
isRequired : true ,
visibleIf : '{popup_action} = "closed_popup"' ,
title : 'W jaki sposób {zamknąłeś} okienko o zgodę? Opisz pełnym zdaniem' ,
defaultValueExpression : '{Kliknąłem} przycisk „X”.' ,
} ,
{
type : 'text' ,
name : 'popup_deny_all_how' ,
isRequired : true ,
visibleIf : '{popup_action} = "deny_all"' ,
title : 'W jaki sposób {zamknąłeś} okienko o zgodę? Opisz pełnym zdaniem, np.: „{Kliknąłem} przycisk <Odrzuć wszystkie>” lub „{Odznaczyłem} wszystkie opcje w ustawieniach zaawansowanych”' ,
defaultValueExpression : '{Kliknąłem} przycisk „odmawiam wyrażenia zgody”.' ,
} ,
{
type : 'radiogroup' ,
name : 'administrator_identity_available_before_choice' ,
isRequired : true ,
visibleIf : '{popup_type} = "some_choice"' ,
2022-07-03 19:35:36 +02:00
title : 'Czy przed podjęciem wyboru dot. {Twoich} danych {masz} możliwość poznać tożsamość administratora strony?' ,
2022-04-24 22:11:33 +02:00
choices : [
{
value : 'yes' ,
text : 'Tak.' ,
} ,
{
value : 'no' ,
text : 'Nie.' ,
} ,
] ,
} ,
] ,
} ,
{
title : 'Obowiązek informacyjny, polityka prywatności' ,
visibleIf : "{popup_type} != 'none'" ,
elements : [
{
type : 'radiogroup' ,
title : 'Czy polityka prywatności jest dostępna i czytelna?' ,
name : 'policy_readable' ,
isRequired : true ,
choices : [
2022-07-03 19:35:36 +02:00
{ value : 'yes' , text : 'Dostępna i czytelna' } ,
2022-04-24 22:11:33 +02:00
{
value : 'entirely_obscured_by_popup' ,
2022-07-03 19:35:36 +02:00
text : 'Dostępna, ale nieczytelna. Zasłania ją całkowicie lub prawie całkowicie popup o RODO lub nie można się do niej doklikać bez podjęcia wyboru w okienku' ,
2022-04-24 22:11:33 +02:00
} ,
{
value : 'cant_find' ,
text : ` Niedostępna. {Szukałem}, ale nie {znalazłem} jej na stronie ` ,
} ,
] ,
} ,
] ,
} ,
2022-07-07 19:59:16 +02:00
. . . clusters . map ( generateHostPage ) ,
2022-04-24 22:11:33 +02:00
] ,
} ;
2022-02-07 21:11:25 +01:00
}