Skip to content

Instantly share code, notes, and snippets.

@htatche
Created June 10, 2021 08:43
Show Gist options
  • Save htatche/a8274d68b2a19cfb6ca89fded1da253f to your computer and use it in GitHub Desktop.
Save htatche/a8274d68b2a19cfb6ca89fded1da253f to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="en" class="no-js">
<head><script type="text/javascript">
/* iubenda ws plugin */
/* app7 */
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta class="swiftype" name="tags" data-type="string" content="en">
<meta charset="utf-8">
<title>Privacy & Cookie Policy Generator | iubenda</title>
<meta name="title" content="Privacy & Cookie Policy Generator | iubenda">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en">
<meta name="locale" content="en">
<meta name="description" content="Make your sites & apps legally compliant across multiple languages and legislations (including the GDPR) with our lawyer-crafted, self-updating solutions.">
<meta name="image" content="https://www.iubenda.com/seo/assets/default.png">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Privacy & Cookie Policy Generator | iubenda">
<meta name="twitter:description" content="Make your sites & apps legally compliant across multiple languages and legislations (including the GDPR) with our lawyer-crafted, self-updating solutions.">
<meta name="twitter:site" content="@iubenda">
<meta name="twitter:image:src" content="https://www.iubenda.com/seo/assets/default.png">
<meta property="og:title" content="Privacy & Cookie Policy Generator | iubenda">
<meta property="og:description" content="Make your sites & apps legally compliant across multiple languages and legislations (including the GDPR) with our lawyer-crafted, self-updating solutions.">
<meta property="og:image" content="https://www.iubenda.com/seo/assets/default.png">
<meta property="og:url" content="https://www.iubenda.com/en/flow/2175924">
<meta property="og:site_name" content="iubenda">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
<meta property="fb:app_id" content="190131204371223">
<script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","url":"https://www.iubenda.com","logo":"https://www.iubenda.com/seo/assets/logo.png","sameAs":["https://www.facebook.com/iubenda","https://www.twitter.com/iubenda"]}</script>
<link rel="canonical" href="https://www.iubenda.com/en/flow/2175924"/>
<link rel="alternate" href="https://www.iubenda.com/it/flow/2175924" hreflang="it"/>
<link rel="alternate" href="https://www.iubenda.com/en/flow/2175924" hreflang="en"/>
<link rel="alternate" href="https://www.iubenda.com/de/flow/2175924" hreflang="de"/>
<meta content="authenticity_token" name="csrf-param"/>
<meta content="9kAR2k+ont8MC3nhWBeM2UacIalKIiEvJJckaMDJZA0=" name="csrf-token"/>
<link rel="preload" href="/assets/red/site-445e9406846f0ccfdc6645dc930b7538.js" as="script">
<link rel="preload" href="/assets/core-de504379540910be5d5ca85cacce21c1.css" as="style">
<link rel="preload" href="/assets/red/app-06a1a1cf47cc9eb6ad40a839aedabf88.js" as="script">
<link rel="preload" href="https://cdn.iubenda.com/cons/beta/iubenda_cons.js" as="script">
<link rel="preload" as="font" href="/assets/hk-grotesk/HKGrotesk-Medium-9f4795ea393dbec36500f8300031f36c.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/icons/iubenda-0b2d0e5d142b70fed8494a763f0b3bc2.woff" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/hk-grotesk/HKGrotesk-Regular-0898cb6b44516efbc9a184a80e9b0cf0.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/hk-grotesk/HKGrotesk-Bold-c3364d52197e796a3a7a48bd7b95d5bd.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/hk-grotesk/HKGrotesk-Light-64fbc9046a4e3b63f41c59f32c063c57.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/hk-grotesk/HKGrotesk-Italic-be313f66fc42171da1624b82e3037328.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/tisa/light-italic-20aa99781f44c509fd2307fc0d35c1ae.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/tisa/light-fb448e6dc518c0d3e630b4b695705b81.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/tisa/regular-italic-88c3121bb396d39cf425ad9e4e9049bc.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/assets/tisa/regular-1acab92b66e889d32a3a9640363fd6d9.woff2" type="font/woff2" crossorigin>
<link href="/assets/core-de504379540910be5d5ca85cacce21c1.css" media="screen" rel="stylesheet" type="text/css"/>
<link rel="preload" href="/assets/app-073ebc4867b3232ed16edf2b2b53350e.css" as="style">
<link href="/assets/app-073ebc4867b3232ed16edf2b2b53350e.css" media="screen" rel="stylesheet" type="text/css"/>
<link rel="preload" href="/assets/legacy_site-3144c67830cc57a6d24dba2affb6c170.css" as="style">
<link href="/assets/legacy_site-3144c67830cc57a6d24dba2affb6c170.css" media="screen" rel="stylesheet" type="text/css"/>
<link rel="preload" href="/assets/help-563d6ba5e72539b5f5141f84841f25d2.css" as="style">
<link href="/assets/help-563d6ba5e72539b5f5141f84841f25d2.css" media="screen" rel="stylesheet" type="text/css"/>
<!-- Preload of Braintree Payments -->
<link rel="preload" href="https://www.paypalobjects.com/api/checkout.js" as="script">
<link rel="preload" href="https://js.braintreegateway.com/web/3.76.2/js/client.min.js" as="script">
<link rel="preload" href="https://js.braintreegateway.com/web/3.76.2/js/hosted-fields.min.js" as="script">
<link rel="preload" href="https://js.braintreegateway.com/web/3.76.2/js/paypal-checkout.min.js" as="script">
<link rel="preload" href="https://js.braintreegateway.com/web/3.76.2/js/three-d-secure.min.js" as="script">
<script type="text/javascript">
window._app = window._app || {};
</script>
<script src="/assets/red/site-445e9406846f0ccfdc6645dc930b7538.js" type="text/javascript"></script>
<script type="text/javascript">
I18n.defaultLocale = "en";
I18n.locale = "en";
</script>
<script src="/assets/red/app-06a1a1cf47cc9eb6ad40a839aedabf88.js" type="text/javascript"></script>
<script src="/assets/site/pp_generator-a3c8497dc7713a6ea17f7216e4f105fe.js" type="text/javascript"></script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="4">
(function(_Sentry) {
var sentryOptions = {
dsn: 'https://a6efffda2fa44246a402fa12a1c70e8f@app.getsentry.com/78453',
environment: 'production',
ignoreErrors: [
/Blocked a frame with origin/,
'top.GLOBALS',
'originalCreateNotification',
'canvas.contentDocument',
'MyApp_RemoveAllHighlights',
'http://tt.epicplay.com',
'Can\'t find variable: ZiteReader',
'jigsaw is not defined',
'ComboSearch is not defined',
'http://loading.retry.widdit.com/',
'atomicFindClose',
'fb_xd_fragment',
'bmi_SafeAddOnload',
'EBCallBackMessageReceived',
'conduitPage',
'Script error.',
'The play() request was interrupted by a call to pause(). https://goo.gl/',
"Cannot read property 'className' of null",
"Cannot read property 'vdata",
"Cannot read property 'classList' of null",
"Cannot read property 'insertBefore' of null",
"Cannot read property 'querySelector' of null",
"Object doesn't support property or method 'matchMedia'",
"Object doesn't support property or method 'placeholder'",
"Cannot read property 'popoverBorderWidth' of undefined",
"undefined is not an object (evaluating 'this.video._opts.popoverBorderWidth')",
"this.video._opts is undefined",
"Cannot read property 'isKeyboardFocused' of null",
"'exposeFideFunctions' is undefined",
"'TocActivator' is undefined",
"Unable to get value of the property 'add': object is null or undefined",
"i(assets/red/site)",
"ResizeObserver loop limit exceeded",
'ReferenceError: UET is not defined',
],
blacklistUrls: [
/graph\.facebook\.com/i,
/connect\.facebook\.net\/en_US\/all\.js/i,
/eatdifferent\.com\.woopra-ns\.com/i,
/static\.woopra\.com\/js\/woopra\.js/i,
/extensions\//i,
/^chrome:\/\//i,
/127\.0\.0\.1:4001\/isrunning/i,
/webappstoolbarba\.texthelp\.com\//i,
/metrics\.itunes\.apple\.com\.edgesuite\.net\//i
]
};
_Sentry.init(sentryOptions);
})(Sentry);
</script>
<link rel="P3Pv1" href="https://www.iubenda.com/w3c/p3p.xml">
<script type='text/javascript'>
var _iub = _iub || {};
_iub.cons = _iub.cons || {};
_iub.cons.api_base_url = 'consent.iubenda.com/beta/public/';
_iub.cons_instructions = _iub.cons_instructions || [];
_iub.cons_instructions.push(['init', {
api_key: 'TxVC3QW2DacksiUzfazNBocfStJA2s9O',
log_level: 'error',
sendFromLocalStorageAtLoad: true,
}]);
</script>
<script type='text/javascript' onload="_iub.cons.api_base_url = 'consent.iubenda.com/beta/public/'" src='https://cdn.iubenda.com/cons/beta/iubenda_cons.js' async></script>
<script src="https://www.paypalobjects.com/api/checkout.js" data-version-4 log-level="warn"></script>
<script src="https://js.braintreegateway.com/web/3.76.2/js/client.min.js"></script>
<script src="https://js.braintreegateway.com/web/3.76.2/js/hosted-fields.min.js"></script>
<script src="https://js.braintreegateway.com/web/3.76.2/js/paypal-checkout.min.js"></script>
<script src="https://js.braintreegateway.com/web/3.76.2/js/three-d-secure.min.js"></script>
<script type="text/javascript">
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('set', 'developer_id.dZTJkMz', true);
gtag("consent", "default", {
ad_storage: "denied",
analytics_storage: "denied",
wait_for_update: 2000
});
gtag('set', 'ads_data_redaction', true);
</script>
<script>
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-PJDQKV');
</script>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="icon" type="image/png" href="/favicon.png">
<link rel="apple-touch-icon" href="/touch-icon-iphone.png">
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="5">
(function () {
var zi = document.createElement('script');
zi.type = 'text/javascript';
zi.async = true;
zi.referrerPolicy = 'unsafe-url';
zi.src = 'https://ws.zoominfo.com/pixel/vnT4Hl7evP9WD5fG5CmL';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(zi, s);
})();
</script>
</head>
<body>
<div class="top_bar" id="alert_msg" style="display:none;">
<div class="alert-message warning top">
<button class="close" onclick="hideAlertMsg();return false;">&times;</button>
</div>
</div>
<script>
</script>
<div class="alert text-white bg-warning alert-dismissible fade show mb-0 text-center text-xl-left sticky-top alert-sticky-top" role="alert">
<div class="container text-white">
<div class="d-block d-xl-flex align-items-center justify-content-between alert-box-content entry_content">
<div class="mb-3 mb-xl-0">
Be very careful, you are logged in as: herve.tatche@iubenda.com
</div>
<div class="text-xl-right text-center flex">
<a href="https://www.iubenda.com/en/logout" data-method="post" class="btn btn-white btn-sm mr-0 mr-xl-2 mb-2 mb-xl-0 text-dark" data-modal-size="md"> Logout </a>
</div>
</div>
<button type="button" class="close text-white p-3" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<header>
<div class="bg-light-gray text-sm text-light py-2">
<div id="headerContainer" class="container">
<div class="d-flex justify-content-between align-items-center">
<div>
<ul class="list-unstyled mb-0">
<li class="list-inline-item">
<div class="dropdown">
<button class="btn btn-sm btn-lighter text-light dropdown-toggle rounded" type="button" id="dropdown-language" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="i-world mr-1 align-middle"></i><span>English</span>
</button>
<div class="lang_selector dropdown-menu" aria-labelledby="dropdown-language">
<a class="dropdown-item" data-locale="en" href="/en/flow/2175924" title="iubenda - privacy policy generator - English version">English
</a>
<a class="dropdown-item" data-locale="it" href="/it/flow/2175924" title="iubenda - generatore di privacy policy - versione italiana">Italiano
</a>
<a class="dropdown-item" data-locale="de" href="/de/flow/2175924" title="iubenda - Datenschutzerklärung-Generator - Deutsche Version">Deutsch
</a>
</div>
</div>
</li>
<li class="list-inline-item d-none d-lg-inline-block">
<span class="unread-wrap"></span>
</li>
</ul>
</div>
<div class="text-right">
<ul class="list-unstyled mb-0">
<li class="dropdown d-inline-block d-lg-none cursor-pointer">
<a href="#" class="cursor-pointer shape relative lg d-inline-block circle align-middle bg-white" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="i-user lg"></i>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="https://www.iubenda.com/en/dashboard">Dashboard</a>
<a class="dropdown-item" href="https://www.iubenda.com/en/account">Account & Billing info</a>
<a class="dropdown-item" href="https://www.iubenda.com/en/logout" data-method="post">Logout</a>
</div>
</li>
<li class="d-none d-lg-inline-block p-1">
<ul class="list-unstyled mb-0">
<li class="list-inline-item mr-2">herve.tatche@iubenda.com</li>
<li class="list-inline-item mr-2"><a class="btn btn-sm btn-lighter text-light" href="https://www.iubenda.com/en/dashboard">Dashboard</a></li>
<li class="list-inline-item mr-2"><a class="btn btn-sm btn-lighter text-light" href="https://www.iubenda.com/en/account">Account & Billing info</a></li>
<li class="list-inline-item"><a class="btn btn-sm btn-dark text-white" href="https://www.iubenda.com/en/logout" data-method="post">Logout</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="bg-white">
<div class="container">
<div class="row justify-content-between pt-3 pb-3">
<div class="col-8 d-block d-lg-flex">
<a href="https://www.iubenda.com/en/" class="d-inline-block mr-5">
<img alt="Iubenda logo" data-lazy-src="/assets/site/red/general/logo-0d5e6ac350838dc49b817d775b325242.svg" height="33" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="92"/>
<noscript>
<img alt="Iubenda logo" height="33" src="/assets/site/red/general/logo-0d5e6ac350838dc49b817d775b325242.svg" width="92"/>
</noscript>
</a>
<ul class="d-block d-lg-flex list-unstyled mb-0 d-inline-block mainmenu" id="mainMenu" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li class="align-self-center has-nav">
<span class="lh-2 p-3">Products and services</span>
<nav class="text-sm">
<div class="p-4">
<div class="mb-4">
<p class="serif text-light">A complete set of solutions to make your website or app compliant with the law, on multiple languages and legislations</p>
<ul class="list-unstyled mb-0">
<li class="list-inline-item d-block d-md-inline-block mr-md-0 mb-md-2">
<a href="https://www.iubenda.com/en/overview" class="btn btn-sm btn-outline-primary d-block">Overview</a>
</li>
<li class="list-inline-item d-block d-md-inline-block mr-md-0 mb-md-2">
<a href="https://www.iubenda.com/en/pricing" class="btn btn-sm btn-outline-primary d-block">Pricing</a>
</li>
</ul>
</div>
<div class="row line-between-columns">
<div class="col-lg">
<div class="d-flex">
<div class="mr-3">
<img alt="Privacy Policy icon" data-lazy-src="/assets/site/red/products/privacy_policy-13ad873060825cd9da3b4f7824f0a4db.svg" height="72" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="72"/>
<noscript>
<img alt="Privacy Policy icon" height="72" src="/assets/site/red/products/privacy_policy-13ad873060825cd9da3b4f7824f0a4db.svg" width="72"/>
</noscript>
</div>
<div>
<div class="products_tags mb-3">
<div><i class="i-check mr-1 text-md"></i>For websites/apps</div>
</div>
<h4 class="text-sm mb-1">Privacy and Cookie Policy Generator</h4>
<div class="d-block d-lg-none">
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/privacy-and-cookie-policy-generator">Explore</a>
</div>
<div class="d-none d-lg-block">
<p class="text-muted serif text-sm">Create your privacy and cookie policy in minutes.<br/><br/> Customizable from 1500+ clauses, available in 8 languages and automatically updated if the law changes, our generator allows you to create a legal document in minutes and seamlessly integrate it with your website or app.</p>
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/privacy-and-cookie-policy-generator">Explore</a>
<ul class="list-unstyled mb-3 mt-3">
<li class="list-inline-item mr-2"><a href="https://www.iubenda.com/en/features#privacy-and-cookie-policy" class="link-underline line-highlight">Features</a></li>
<li class="list-inline-item"><a href="/en/help/463-generate-privacy-policy" class="link-underline line-highlight">Documentation and guides</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-lg">
<div class="d-flex">
<div class="mr-3">
<img alt="Cookie Solution icon" data-lazy-src="/assets/site/red/products/cookie_solution-883626f757c849e1474c128cb4a776b6.svg" height="72" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="72"/>
<noscript>
<img alt="Cookie Solution icon" height="72" src="/assets/site/red/products/cookie_solution-883626f757c849e1474c128cb4a776b6.svg" width="72"/>
</noscript>
</div>
<div>
<div class="products_tags mb-3">
<div><i class="i-check mr-1 text-md"></i>For websites/apps</div>
</div>
<h4 class="text-sm mb-1">Cookie Solution</h4>
<div class="d-block d-lg-none">
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/cookie-solution">Explore</a>
</div>
<div class="d-none d-lg-block">
<p class="text-muted serif text-sm">Manage consent preferences for the ePrivacy, GDPR, and CCPA. Integrated with the IAB TCF and CCPA Compliance Framework.<br/><br/> Our solution allows you to display a fully customizable cookie banner, collect cookie consent, implement prior blocking, set advertising preferences, collect explicit consent to Google personalized ads and more.</p>
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/cookie-solution">Explore</a>
<ul class="list-unstyled mb-3 mt-3">
<li class="list-inline-item mr-2"><a href="https://www.iubenda.com/en/features#cookie-solution" class="link-underline line-highlight">Features</a></li>
<li class="list-inline-item mr-2"><a href="/en/help/1177-cookie-solution-getting-started" class="link-underline line-highlight">Documentation and guides</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-lg">
<div class="d-flex">
<div class="mr-3">
<img alt="Terms and Conditions icon" data-lazy-src="/assets/site/red/products/terms_and_conditions-4d987fcf0d0f40ded83e10884a95a33f.svg" height="72" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="72"/>
<noscript>
<img alt="Terms and Conditions icon" height="72" src="/assets/site/red/products/terms_and_conditions-4d987fcf0d0f40ded83e10884a95a33f.svg" width="72"/>
</noscript>
</div>
<div>
<div class="products_tags mb-3">
<div><i class="i-check mr-1 text-md"></i>For websites/apps</div>
</div>
<h4 class="text-sm mb-1">Terms and Conditions Generator</h4>
<div class="d-block d-lg-none">
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/terms-and-conditions-generator">Explore</a>
</div>
<div class="d-none d-lg-block">
<p class="text-muted serif text-sm">Create your terms and conditions in minutes.<br/><br/>Customizable from hundreds of combinations, available in 8 languages, powerful and precise — our solution is capable of handling even the most complex, individual scenarios. Optimized for e-commerce, marketplace, SaaS, apps and more.</p>
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/terms-and-conditions-generator">Explore</a>
<ul class="list-unstyled mb-3 mt-3">
<li class="list-inline-item mr-2"><a href="https://www.iubenda.com/en/features#terms-and-conditions" class="link-underline line-highlight">Features</a></li>
<li class="list-inline-item mr-2"><a href="/en/help/19461-how-to-generate-terms-and-conditions" class="link-underline line-highlight">Documentation and guides</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<hr class="m-0">
<div class="p-4">
<div class="row line-between-columns">
<div class="col-lg">
<div class="d-flex">
<div class="mr-3">
<img alt="Consent Solution icon" data-lazy-src="/assets/site/red/products/consent_solution-d27adebd6cbe24b25c555ab837f09632.svg" height="72" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="72"/>
<noscript>
<img alt="Consent Solution icon" height="72" src="/assets/site/red/products/consent_solution-d27adebd6cbe24b25c555ab837f09632.svg" width="72"/>
</noscript>
</div>
<div>
<div class="products_tags mb-3">
<div><i class="i-check mr-1 text-md"></i>For websites/apps</div>
<div><i class="i-check mr-1 text-md"></i>For organizations</div>
</div>
<h4 class="text-sm mb-1">Consent Solution</h4>
<div class="d-block d-lg-none">
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/consent-solution">Explore</a>
</div>
<div class="d-none d-lg-block">
<p class="text-muted serif text-sm">Collect GDPR consent, document opt-ins and <a href="/en/help/19133#right-to-opt-out" class="link-underline text-dark">CCPA opt-outs</a> via your web forms.<br/><br/> Our solution smoothly integrates with your consent collection forms, syncs with your legal documents and includes a user-friendly dashboard for reviewing consent records of your activities.</p>
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/consent-solution">Explore</a>
<ul class="list-unstyled mb-3 mt-3">
<li class="list-inline-item mr-2"><a href="https://www.iubenda.com/en/features#consent-solution" class="link-underline line-highlight">Features</a></li>
<li class="list-inline-item"><a href="/en/help/6469-consent-solution-getting-started" class="link-underline line-highlight">Documentation and guides</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-lg">
<div class="d-flex">
<div class="mr-3">
<img alt="IPM icon" data-lazy-src="/assets/site/red/products/ipm-e6c022b14e395deed846696ea97434db.svg" height="72" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="72"/>
<noscript>
<img alt="IPM icon" height="72" src="/assets/site/red/products/ipm-e6c022b14e395deed846696ea97434db.svg" width="72"/>
</noscript>
</div>
<div>
<div class="products_tags mb-3">
<div><i class="i-check mr-1 text-md"></i>For websites/apps</div>
<div><i class="i-check mr-1 text-md"></i>For organizations</div>
</div>
<h4 class="text-sm mb-1">Internal Privacy Management</h4>
<div class="d-block d-lg-none">
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/internal-privacy-management">Explore</a>
</div>
<div class="d-none d-lg-block">
<p class="text-muted serif text-sm">Document all the data processing activity within your organization.<br/><br/> To comply with privacy laws, and particularly the GDPR, companies need to record how they store and use the data they collect from their users. Our solution allows you to easily document all the data processing activities within your organization.</p>
<a class="btn btn-primary btn-sm text-white rarr" href="https://www.iubenda.com/en/internal-privacy-management">Explore</a>
<ul class="list-unstyled mb-3 mt-3">
<li class="list-inline-item mr-2"><a href="https://www.iubenda.com/en/features#internal-privacy-management" class="link-underline line-highlight">Features</a></li>
<li class="list-inline-item"><a href="/en/help/6311-internal-privacy-management-getting-started" class="link-underline line-highlight">Documentation and guides</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="p-2 bg-lighter-gray text-dark" style="border-top: 1px solid rgba(0,0,0,0.1)">
<div class="d-block d-lg-flex align-items-center justify-content-between text-md">
<div class="col-lg">
Not sure what you need?
<a href="/en/help/5463" class="rarr link-underline line-highlight line-light-blue text-secondary">
Getting started guide
</a>
</div>
<div class="col-lg text-right">
<a href="https://www.iubenda.com/blog/" class="btn btn-dark-gray text-dark d-block d-md-inline-block mb-2 mb-lg-0">Blog</a>
<a href="mailto:info@iubenda.com" data-elevio-module="2" data-elevio-style="nothing" class="btn btn-dark-gray text-dark d-block d-md-inline-block">Contact us</a>
</div>
</div>
</div>
</nav>
</li>
<li class="align-self-center has-nav">
<span class="lh-2 p-3">iubenda for...</span>
<nav class="text-sm sm">
<div class="p-4">
<div class="mb-4">
<h3 class="text-lg">Use cases</h3>
<p class="serif text-light">Some of the ways you can use iubenda</p>
<ul class="list-unstyled mb-3 mt-3">
<li>
<a href="https://www.iubenda.com/en/ccpa" class="link-underline line-highlight line-green text-primary rarr">
iubenda for CCPA
</a>
</li>
<li>
<a href="https://www.iubenda.com/en/gdpr" class="link-underline line-highlight line-green text-primary rarr">
iubenda for GDPR
</a>
</li>
<li>
<a href="https://www.iubenda.com/en/lgpd" class="link-underline line-highlight line-green text-primary rarr">
iubenda for LGPD
</a>
</li>
<li>
<a href="https://www.iubenda.com/en/mobile" class="link-underline line-highlight line-green text-primary rarr">
iubenda for mobile apps
</a>
</li>
<li>
<a href="https://www.iubenda.com/en/facebook" class="link-underline line-highlight line-green text-primary rarr">
iubenda for Facebook apps
</a>
</li>
<li>
<a href="https://www.iubenda.com/en/partner-program" class="link-underline line-highlight line-green text-primary rarr">
iubenda for Agencies
</a>
</li>
</ul>
</div>
</div>
</nav>
</li>
</ul>
</div>
<div class="col text-right">
<a href="https://www.iubenda.com/en/start-generating" class="btn btn-primary text-white d-none d-lg-inline-block lightbox">
Start generating
</a>
<div id="hamburgerButton" class="hamburger d-inline-block d-lg-none">
<span></span>
<span></span>
<span></span>
</div>
<script>
$('#hamburgerButton').on('click', function () {
$(this).toggleClass('active');
$('#mainMenu').toggleClass('show');
});
</script>
</div>
</div>
</div>
</div>
</header>
<script>
$(document).ready(function() {
$('#headerContainer').find('[data-toggle="tooltip"]').tooltip()
$('#team-select-mobile, #team-select-desktop').on('change', function() {
var switchPath = $(this).val();
$.post(switchPath, {}, function(response) {
window.location = response.redirect_url;
});
});
$('.select-team').on('click', function(e) {
// avoid triggering the toggle of the parent dropdown
e.stopPropagation();
});
});
</script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="5">
var vueVariables = {
loginUrl : '/en/login?for=custom_do',
signupUrl : '/en/signup?for=custom_do',
checkoutGDPRUrl : "https://www.iubenda.com/en/billing/subscriptions/new/39",
privacyPolicies : [{"urls":{"edit":"https://www.iubenda.com/en/privacy-policy-generator/1924650/edit","view":"https://www.iubenda.com/privacy-policy/77803790","api":{"normal":"https://www.iubenda.com/api/privacy-policy/77803790","no_markup":"https://www.iubenda.com/api/privacy-policy/77803790/no-markup","only_legal":"https://www.iubenda.com/api/privacy-policy/77803790/only-legal","sections":{"data-processing-detailed-info":{"normal":"https://www.iubenda.com/api/privacy-policy/77803790/section/data-processing-detailed-info","no_markup":"https://www.iubenda.com/api/privacy-policy/77803790/section/data-processing-detailed-info/no-markup","only_legal":"https://www.iubenda.com/api/privacy-policy/77803790/section/data-processing-detailed-info/only-legal"},"further-data":{"normal":"https://www.iubenda.com/api/privacy-policy/77803790/section/further-data","no_markup":"https://www.iubenda.com/api/privacy-policy/77803790/section/further-data/no-markup","only_legal":"https://www.iubenda.com/api/privacy-policy/77803790/section/further-data/only-legal"}}}},"title":"Terms and Conditions","basic_info":{"id":1924650,"go_pro_modal_url":"https://www.iubenda.com/en/1924650/go_pro_modal","lang":"en","public_id":77803790,"site_id":2175924,"active":true,"is_pro":true},"badge_info":{"doc_type":"Physical::PrivacyPolicy","url_for_update":"https://www.iubenda.com/en/flow/2175924/badge_change/1924650","url_for_opts_change":"https://www.iubenda.com/en/flow/2175924/embed_opts_change/1924650","id":1924650,"no_brand":true,"checked":true,"pp_simplified":true,"badge_class":"iubenda-nostyle no-brand","iubenda_badge_styles":["white","black","no_style"],"needs_pro":{"no_brand":false,"white":false,"black":false,"no_style":false,"widget_footer":false,"direct_link":true,"direct_embed":true},"only_legal":false,"no_markup":true,"badge_style":"nostyle","embed_each_part_separately":false},"button_title":"Privacy policy","panel_title":"Privacy Policy","name":"Privacy Policy","document_type":"privacy_policy","activated":true}],
cookiePolicies : [{"urls":{"edit":"https://www.iubenda.com/en/privacy-policy-generator/1924650/edit","view":"https://www.iubenda.com/privacy-policy/77803790/cookie-policy","api":{"normal":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy","no_markup":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/no-markup","only_legal":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy","sections":{"technical-cookies":{"normal":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/section/technical-cookies","no_markup":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/section/technical-cookies/no-markup","only_legal":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/section/technical-cookies/only-legal"},"other-types-cookies":{"normal":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/section/other-types-cookies","no_markup":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/section/other-types-cookies/no-markup","only_legal":"https://www.iubenda.com/api/privacy-policy/77803790/cookie-policy/section/other-types-cookies/only-legal"}}}},"title":"Terms and Conditions","basic_info":{"id":1924650,"go_pro_modal_url":"https://www.iubenda.com/en/1924650/go_pro_modal","lang":"en","public_id":77803790,"site_id":2175924,"active":true,"is_pro":true},"badge_info":{"doc_type":"Physical::PrivacyPolicy","url_for_update":"https://www.iubenda.com/en/flow/2175924/badge_change/1924650","url_for_opts_change":"https://www.iubenda.com/en/flow/2175924/embed_opts_change/1924650","id":1924650,"no_brand":true,"checked":true,"badge_class":"iubenda-nostyle no-brand","iubenda_badge_styles":["white","black","no_style"],"needs_pro":{"no_brand":false,"white":false,"black":false,"no_style":false,"widget_footer":false,"direct_link":true,"direct_embed":true},"no_markup":true,"badge_style":"nostyle","embed_each_part_separately":false},"button_title":"Cookie policy","panel_title":"Cookie Policy","name":"Cookie policy","document_type":"cookie_policy","activated":true}],
cookieSolutions : [{"urls":{"edit":"https://www.iubenda.com/en/cookie_solutions/509939/configurator","view":{"cookie_solution":"#cookie_solution_view_url"}},"basic_info":{"id":509939,"lang":"en","public_id":77803790,"site_id":2175924,"active":true,"prior_consent":false,"enabled":false,"request_url":"https://www.iubenda.com/en/cookie_solutions/509939","configuration":"{\"consentOnContinuedBrowsing\":false,\"banner\":{\"acceptButtonDisplay\":true,\"customizeButtonDisplay\":true,\"position\":\"float-top-center\"},\"whitelabel\":false,\"lang\":\"en\",\"siteId\":2175924,\"callback\":{\"onConsentGiven\":\"function iubenda_adsense_unblock() {\\nvar t = 1;\\n$('._iub_cs_activate_google_ads').each(function() {\\nvar banner = $(this);\\nsetTimeout(function() {\\nvar client = banner.data('client');\\nvar slot = banner.data('slot');\\nvar width = banner.data('width');\\nvar height = banner.data('height');\\nvar adsense_script = '<scr' + 'ipt type=\\\"text/javascript\\\">\\\\n' +\\n'google_ad_client = \\\"' + client + '\\\";\\\\n' +\\n'google_ad_slot = \\\"' + slot + '\\\";\\\\n' +\\n'google_ad_width = ' + width + ';\\\\n' +\\n'google_ad_height = ' + height + ';\\\\n' +\\n'</scr' + 'ipt>';\\nvar script = document.createElement('script');\\nvar ads = document.createElement('ads');\\nvar w = document.write;\\n\\n// override and replace with our version\\ndocument.write = (function(params) {\\n// replace our placeholder with real ads\\nads.innerHTML = params;\\n// put the old implementation back in place\\n// Aristos, add this check because called more than ones\\n// and ends, with this symbol.\\nif (params.indexOf(\\\"</ins>\\\") != -1)\\ndocument.write = w;\\n});\\nscript.setAttribute('type', 'text/javascript');\\nscript.setAttribute('src', 'http://pagead2.googlesyndication.com/pagead/show_ads.js');\\nscript.setAttribute('async', 'async');\\nbanner.html(adsense_script).append(ads).append(script);\\n}, t);\\nt += 200;\\n});\\n}\"}}","updated_at":"2021-06-10T08:42:24Z","created_at":"2021-06-08T15:31:51Z"}}],
termsAndConditions : [{"urls":{"edit":"/en/terms-and-conditions-generator/98695/edit","view":"https://www.iubenda.com/terms-and-conditions/77803790","api":{"normal":"https://www.iubenda.com/api/terms-and-conditions/77803790","no_markup":"https://www.iubenda.com/api/terms-and-conditions/77803790/no-markup","only_legal":"https://www.iubenda.com/api/terms-and-conditions/77803790","sections":{}}},"title":"Terms and Conditions","basic_info":{"id":98695,"go_pro_modal_url":"https://www.iubenda.com/en/98695/go_pro_modal","lang":"en","public_id":77803790,"site_id":2175924,"active":true,"is_pro":true},"badge_info":{"doc_type":"Terms::Term","url_for_update":"https://www.iubenda.com/en/flow/2175924/badge_change/98695","url_for_opts_change":"https://www.iubenda.com/en/flow/2175924/embed_opts_change/98695","id":98695,"no_brand":true,"checked":true,"badge_class":"iubenda-white no-brand","iubenda_badge_styles":["white","black","no_style"],"needs_pro":{"no_brand":false,"white":false,"black":false,"no_style":false,"widget_footer":false,"direct_link":true,"direct_embed":true},"no_markup":false,"badge_style":"white","embed_each_part_separately":false},"button_title":"Terms and conditions","panel_title":"Terms and Conditions","name":"Terms and conditions","document_type":"terms_and_conditions","activated":true}],
consentSolution : {"consent_solution":{"id":17298,"site_id":2175924,"user_id":851449,"public_api_key":"UaAH5BPyKGRqin7Y1dNlWxZeVvU37Hjz","private_api_key":"SoVcee37XWgfJkvx8UbjoL78QQTjdW1w","created_at":"2021-04-15T08:17:34Z","updated_at":"2021-06-03T14:40:20Z","docs_versioning_enabled":true,"owner_id":null,"enabled":true,"deleted_at":null,"installed":false},"urls":{"dashboard":"/en/consent-dashboard/2175924"}},
resumeGenerationPP : [],
resumeGenerationTerm : [],
cookieAnalyticsUrl : 'https://www.iubenda.com/en/cookie-analytics',
docVersioningEnabledSUrl: 'https://www.iubenda.com/en/consent_solutions/17298',
customizeCSUrl : 'https://www.iubenda.com/en/cookie_solutions/509939/configurator',
csConfigurations : {"consentOnContinuedBrowsing":false,"banner":{"acceptButtonDisplay":true,"customizeButtonDisplay":true,"position":"float-top-center"},"whitelabel":false,"lang":"en","siteId":2175924,"callback":{"onConsentGiven":"function iubenda_adsense_unblock() {\nvar t = 1;\n$('._iub_cs_activate_google_ads').each(function() {\nvar banner = $(this);\nsetTimeout(function() {\nvar client = banner.data('client');\nvar slot = banner.data('slot');\nvar width = banner.data('width');\nvar height = banner.data('height');\nvar adsense_script = '<scr' + 'ipt type=\"text\/javascript\">\\n' +\n'google_ad_client = \"' + client + '\";\\n' +\n'google_ad_slot = \"' + slot + '\";\\n' +\n'google_ad_width = ' + width + ';\\n' +\n'google_ad_height = ' + height + ';\\n' +\n'<\/scr' + 'ipt>';\nvar script = document.createElement('script');\nvar ads = document.createElement('ads');\nvar w = document.write;\n\n\/\/ override and replace with our version\ndocument.write = (function(params) {\n\/\/ replace our placeholder with real ads\nads.innerHTML = params;\n\/\/ put the old implementation back in place\n\/\/ Aristos, add this check because called more than ones\n\/\/ and ends, with this symbol.\nif (params.indexOf(\"<\/ins>\") != -1)\ndocument.write = w;\n});\nscript.setAttribute('type', 'text\/javascript');\nscript.setAttribute('src', 'http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js');\nscript.setAttribute('async', 'async');\nbanner.html(adsense_script).append(ads).append(script);\n}, t);\nt += 200;\n});\n}"}},
userHasActiveGDPRSubscription : true,
showConsentSolution : true,
tcEnabled : true,
userLogged : true,
loginUrl : '/en/login',
siteId : 2175924,
iabEnabled : false,
askConsent : false,
locale : 'en',
siteLanguages : [{"code":"en","code_not_converted":"en","value":"English","active":true}],
availLanguages : ["it","en","fr","es","de","pt-br","ru","nl"],
appKind : 'Site',
iubendaJsUrl : 'https://cdn.iubenda.com/iubenda.js',
channels : ['beta', 'current', 'stable'],
consentChannels : ['current', 'beta'],
siteInfo: {
addLanguageUrl : 'https://www.iubenda.com/en/sites/2175924/languages',
addedLanguages : [{"code":"en","value":"English"}],
addableLanguages : [{"code":"nl","value":"Dutch"},{"code":"fr","value":"French"},{"code":"de","value":"German"},{"code":"it","value":"Italian"},{"code":"pt-BR","value":"Portuguese (Br)"},{"code":"ru","value":"Russian"},{"code":"es","value":"Spanish"}],
isPro : true,
isUltra : true,
UserUnderMT : true,
goProModalUrl: 'https://www.iubenda.com/en/upgrade_modal/2175924?id=2175924',
editUrl : 'https://www.iubenda.com/en/sites/2175924/check_edit',
siteName : 'My website',
appType : 'Site',
appOwner : 'Name',
appBasedIn : 'Somewhere',
deleteUrl : 'https://www.iubenda.com/en/sites/2175924',
deleteLanguageUrl : 'https://www.iubenda.com/en/sites/2175924/languages',
href : 'https://www.iubenda.com/en/sites/2175924/check_edit',
appLanguages : [{"code":"en","code_not_converted":"en","value":"English","active":true}],
policiesWithCp : {"en":77803790}
},
embeddingTypes : [
{
kind : 'widget_footer',
buttonPreviews : true,
chooseStyle : true,
showStyleSelection : true,
render : {
active : true,
siteApp : true,
facebookApp : false,
mobileApp : false
}
},
{
kind : 'direct_link',
buttonPreviews : false,
chooseStyle : false,
showStyleSelection : false,
render : {
active : false,
siteApp : true,
facebookApp : false,
mobileApp : true
}
},
{
kind : 'direct_embed',
buttonPreviews : false,
chooseStyle : false,
showStyleSelection : false,
render : {
active : false,
siteApp : true,
facebookApp : false,
mobileApp : true
}
}
],
integrations: [
{
key : 'privacy_policy',
src : '/assets/site/red/products/privacy_policy-13ad873060825cd9da3b4f7824f0a4db.svg',
url : 'https://www.iubenda.com/en/sites/2175924/documents',
remove_url : 'https://www.iubenda.com/en/sites/2175924/documents?document_type=privacy_policies',
activated : true,
embedded : true,
documentContainer : 'documents-integration',
href:{
moreInfo : '/en/privacy-and-cookie-policy-generator',
doINeedIt : '/en/help/5720-legal-requirements-overview#gen',
},
labels : {
name : 'Privacy and Cookie Policy',
tryBefore : 'You can try before you pay',
moreInfo : 'More info',
description : 'Privacy policies are legally required almost everywhere in the world, and cookie policies are a central requirement under the ePrivacy Directive (Cookie Law). Our generator allows you to create beautiful, precise policies and seamlessly integrate them with your website or app. Getting started is easy, simply click below to begin.',
doINeedIt : 'Do I need it?',
notEmbedded : 'Status: not embedded',
resumeGeneration : 'Resume the generation',
generateNow : 'Generate now',
remove : 'Delete'
}
},
{
key : 'cookie_solution',
src : '/assets/site/red/products/cookie_solution-883626f757c849e1474c128cb4a776b6.svg',
url : 'https://www.iubenda.com/en/cookie_solutions/new?site_id=2175924',
remove_url : 'https://www.iubenda.com/en/cookie_solutions/509939',
activated : true,
embedded : true,
documentContainer : 'cookie-solution-integration',
href:{
moreInfo : '/en/cookie-solution',
doINeedIt : '/en/help/5720-legal-requirements-overview#cookielaw',
},
labels : {
name : 'Cookie Solution',
tryBefore : 'You can try before you pay',
moreInfo : 'More info',
description : 'If you operate in the EU or could potentially have EU users, you need to comply with the Cookie Law. Our Cookie Solution complies with provisions of the Cookie Law; it allows you to easily inform users, facilitate their consent and includes the option to preemptively block any scripts that could install cookies prior to consent (required in many EU countries). ',
doINeedIt : 'Do I need it?',
notEmbedded : 'Status: not embedded',
resumeGeneration: 'Resume the generation',
generateNow : 'Generate now',
remove : 'Delete'
}
},
{
key : 'terms_and_conditions',
src : '/assets/site/red/products/terms_and_conditions-4d987fcf0d0f40ded83e10884a95a33f.svg',
url : 'https://www.iubenda.com/en/sites/2175924/documents',
remove_url : 'https://www.iubenda.com/en/sites/2175924/documents?document_type=terms_and_conditions',
activated : true,
embedded : true,
documentContainer : 'documents-integration',
href:{
moreInfo : '/en/terms-and-conditions-generator',
doINeedIt : '/en/help/5720-legal-requirements-overview#tos',
},
labels : {
name : 'Terms and Conditions',
tryBefore : 'You can try before you pay',
moreInfo : 'More info',
description : 'Terms and Conditions are used to govern the relationship with your users, such as specifying any "limitations of liability", and are mandatory for e-commerce. Our generator allows you to create beautiful, precise documents and seamlessly integrate them with your website or app. Getting started is easy, simply click below to begin.',
doINeedIt : 'Do I need it?',
notEmbedded : 'Status: not integrato',
resumeGeneration: 'Resume the generation',
generateNow : 'Generate now',
remove : 'Delete'
}
},
{
key : 'consent_solution',
src : '/assets/site/red/products/consent_solution-d27adebd6cbe24b25c555ab837f09632.svg',
url : 'https://www.iubenda.com/en/consent_solutions',
remove_url : 'https://www.iubenda.com/en/consent_solutions/17298',
activated : true,
embedded : true,
documentContainer : 'consent-solution-integration',
href:{
moreInfo : '/en/consent-solution',
doINeedIt : '/en/help/5428#consent',
},
labels : {
name : 'Consent Solution',
tryBefore : 'You can try before you pay',
moreInfo : 'More info',
description : 'This solution helps you store all user preferences, conveniently retrieve them, and store proof of consent. It\'s a must not only for organizations looking to comply with EU laws and the GDPR, but also for companies that need to securely store proof that they\'ve received consent in relation to their privacy notice or to an online contract.',
doINeedIt : 'Do I need it?',
notEmbedded : 'Status: not integrate',
resumeGeneration: 'Resume the generation',
generateNow : 'Activate now',
remove : 'Delete'
}
}
]
};
var LABELS = {
generic: {
link: {
moreInfo : 'More info',
},
nav: {
hide : 'Hide',
expand : 'Expand',
copy : 'Copy',
copied : 'Copied',
},
messages: {
generic_error: I18n.t("js.generator.facebook.generic_error")
}
},
site: {
addLang : 'Add',
switchToPro : 'Switch to Pro',
upgradeButton : 'Upgrade',
edit : 'Edit',
type : 'Type',
owner : 'Owner',
basedIn : 'Based in',
documentLanguages : 'Document languages:',
addLanguage : 'Add',
removeLanguage : 'Remove'
},
integrations: {
generateNow : 'Generate now'
},
documentIntegration: {
guides : {
widget_footer: {
video: '&lt;div class=&quot;video_wistia_inline mb-3&quot;&gt; &lt;script src=&quot;https://fast.wistia.com/embed/medias/eyikgd4z95.jsonp&quot; async&gt;&lt;/script&gt;&lt;script src=&quot;https://fast.wistia.com/assets/external/E-v1.js&quot; async&gt;&lt;/script&gt;&lt;div class=&quot;wistia_responsive_padding&quot; style=&quot;padding:65.0% 0 0 0;position:relative;&quot;&gt;&lt;div class=&quot;wistia_responsive_wrapper&quot; style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;&gt;&lt;span class=&quot;wistia_embed wistia_async_eyikgd4z95 popover=true popoverAnimateThumbnail=true videoFoam=true&quot; style=&quot;display:inline-block;height:100%;position:relative;width:100%&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;clearfix&quot;&gt; &lt;div class=&quot;oh&quot;&gt; &lt;h4 class=&quot;mb-0 text-lg&quot; &gt; How to integrate a policy - Example&lt;/h4&gt; &lt;span class=&quot;text-gray&quot;&gt; 7:46 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt;',
articles: {
title : 'Guides',
list : '<li><a href="/en/help/5463" class="link-underline text-dark rarr">Getting started with iubenda</a></li>\n<li>Integrate with <a href="/en/help/48" class="link-underline text-dark"> WordPress</a> | <a href="/en/help/546" class="link-underline text-dark">Joomla!</a> | <a href="/en/help/1502" class="link-underline text-dark">PrestaShop</a></li>\n<li><a href="/en/help/231" class="link-underline text-dark rarr">Guide for embedding code option</a></li>\n<li><a href="/en/help/228" class="link-underline text-dark rarr">Guide for direct link option</a></li>\n<li><a href="/en/help/78" class="link-underline text-dark rarr">Guide for direct text embedding option</a></li>\n<li><a href="/en/help/2905" class="link-underline text-dark rarr">Customize and localize the iubenda button</a></li>',
all: {
href : '/en/help',
caption : 'See all articles',
}
}
},
direct_link: {
video: '&lt;div class=&quot;video_wistia_inline mb-3&quot;&gt; &lt;script src=&quot;https://fast.wistia.com/embed/medias/eyikgd4z95.jsonp&quot; async&gt;&lt;/script&gt;&lt;script src=&quot;https://fast.wistia.com/assets/external/E-v1.js&quot; async&gt;&lt;/script&gt;&lt;div class=&quot;wistia_responsive_padding&quot; style=&quot;padding:65.0% 0 0 0;position:relative;&quot;&gt;&lt;div class=&quot;wistia_responsive_wrapper&quot; style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;&gt;&lt;span class=&quot;wistia_embed wistia_async_eyikgd4z95 popover=true popoverAnimateThumbnail=true videoFoam=true&quot; style=&quot;display:inline-block;height:100%;position:relative;width:100%&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;clearfix&quot;&gt; &lt;div class=&quot;oh&quot;&gt; &lt;h4 class=&quot;mb-0 text-lg&quot; &gt;How to integrate a policy - Example&lt;/h4&gt; &lt;span class=&quot;text-gray&quot;&gt; 7:46 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt;',
articles: {
title : 'Guides',
list : '<li><a href="/en/help/5463" class="link-underline text-dark rarr">Getting started with iubenda</a></li><li>Integrate with <a href="/en/help/48" class="link-underline text-dark"> WordPress</a> | <a href="/en/help/546" class="link-underline text-dark">Joomla!</a> | <a href="/en/help/1502" class="link-underline text-dark">PrestaShop</a></li><li><a href="/en/help/231" class="link-underline text-dark rarr">Guide for embedding code option</a></li><li><a href="/en/help/228" class="link-underline text-dark rarr">Guide for direct link option</a></li><li><a href="/en/help/78" class="link-underline text-dark rarr">Guide for direct text embedding option</a></li><li><a href="/en/help/2905" class="link-underline text-dark rarr">Customize and localize the iubenda button</a></li>',
all: {
href : '/en/help',
caption : 'See all articles',
}
}
},
direct_embed: {
video: '&lt;div class=&quot;video_wistia_inline mb-3&quot;&gt; &lt;script src=&quot;https://fast.wistia.com/embed/medias/eyikgd4z95.jsonp&quot; async&gt;&lt;/script&gt;&lt;script src=&quot;https://fast.wistia.com/assets/external/E-v1.js&quot; async&gt;&lt;/script&gt;&lt;div class=&quot;wistia_responsive_padding&quot; style=&quot;padding:65.0% 0 0 0;position:relative;&quot;&gt;&lt;div class=&quot;wistia_responsive_wrapper&quot; style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;&gt;&lt;span class=&quot;wistia_embed wistia_async_eyikgd4z95 popover=true popoverAnimateThumbnail=true videoFoam=true&quot; style=&quot;display:inline-block;height:100%;position:relative;width:100%&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;clearfix&quot;&gt; &lt;div class=&quot;oh&quot;&gt;&lt;h4 class=&quot;mb-0 text-lg&quot; &gt;How to integrate a policy - Example&lt;/h4&gt; &lt;span class=&quot;text-gray&quot;&gt;7:46&lt;/span&gt; &lt;/div&gt; &lt;/div&gt;',
articles: {
title : 'Guides',
list : '<li><a href="/en/help/5463" class="link-underline text-dark rarr">Getting started with iubenda</a></li><li>Integrate with <a href="/en/help/48" class="link-underline text-dark"> WordPress</a> | <a href="/en/help/546" class="link-underline text-dark">Joomla!</a> | <a href="/en/help/1502" class="link-underline text-dark">PrestaShop</a></li><li><a href="/en/help/231" class="link-underline text-dark rarr">Guide for embedding code option</a></li><li><a href="/en/help/228" class="link-underline text-dark rarr">Guide for direct link option</a></li><li><a href="/en/help/78" class="link-underline text-dark rarr">Guide for direct text embedding option</a></li><li><a href="/en/help/2905" class="link-underline text-dark rarr">Customize and localize the iubenda button</a></li>',
all: {
href : '/en/help',
caption : 'See all articles',
}
}
}
},
globals: {
view : 'View',
edit : 'Edit',
embed : 'Embed',
consentsList : 'Consent Solution Dashboard',
cookieLawAnalitics: 'Cookie Solution Analytics',
integrateLegalDocuments : 'Integrate the documents',
embeddingTypes: {
widget_footer : 'Add a widget to the footer',
direct_link : 'Use a direct link',
direct_embed : 'Embed the text in the body'
},
useJavascript : 'Use javascript',
callOurApi : 'Call our API from your backend',
howItWorks : 'How it works',
howItWorksDescription : 'This code embeds the full privacy policy text in the section of the page where you place it.',
exampleOfHelp : 'Examples, help and documentation',
urlForHelp : '/en/help/78',
},
siteApp: {
badgeChange: {
noBrand : 'White label',
white : 'White',
black : 'Black',
no_style : 'No style',
style : 'Style',
options : 'Options'
},
optsChange: {
usePlainHTML : 'Use plain HTML with no styling (only shows the legal version)',
ppSimplified: 'Simplified privacy policy',
embedEachPartSeparately : 'Embed dynamic sections only'
},
globalSettings : 'Glogal settings',
previewTitles : {
privacy_policy : 'Privacy Policy',
cookie_policy : 'Cookie Policy',
terms_and_conditions : 'Terms and Conditions'
},
placeThisCode : 'Place this code in the <strong>&#x3C;body&#x3E;</strong>, where you want the link to appear',
placeThisCodeText : 'Place this code in the <strong>&#x3C;body&#x3E;</strong>, where you want the text to appear',
},
facebookApp: {
integratePrivacyPolicy : "Integrate the privacy policy",
copyThePolicy : "1. Copy the privacy policy link below",
ppAddress : "This is the address of your privacy policy, in case you want to integrate it manually, for example into your app\'s code.",
openTheSettings : "2. Open the settings page and paste the link",
clickFollowingButton : "Click the following button to automatically open your app\'s settings page and then place the link in the &quot;Privacy Policy URL&quot; field.",
openAppSettings : "Open your app\'s settings",
inCaseYouWant : "If you want, you can also place the privacy policy link anywhere else in your app, but don\'t forget to edit the settings as explained above.",
options : "Options",
branding : "Branding",
help : "Help",
noBrandingLabel : "No Branding (remove the iubenda branding from the privacy policy)",
guideIntegrating : "Guide on integrating your policy",
integrateDirectLink : "Help on the direct link option",
integrateDirectText : "Help on the direct text embedding option",
},
mobileApp: {
integratePP : "Integrate the privacy policy",
integratePPDescription : "To use your privacy policy get the link below and use it in both your app and the app store settings. Follow the steps below.",
copyPPLink : "Copy the privacy policy link below",
copyPPLinkDescription : "Here you can get your privacy policy\'s unique link. Use it to link to the text in an app store, or from the app.",
alernativePPLink : "<strong>Text embedding into the app:</strong> alternatively, embed the privacy policy text directly onto a view in your app by using the below javascript snippet. That way you can make it your own and style it completely using simple CSS.",
clickFollowingButton : "Click the following button to automatically open your app\'s settings page and then place the link in the &quot;Privacy Policy URL&quot; field.",
openAppSettings : "Open your app\'s settings",
inCaseYouWant : "If you want, you can also place the privacy policy link anywhere else in your app, but don\'t forget to edit the settings as explained above.",
options : "Options",
branding : "Branding",
help : "Help",
noBrandingLabel : "No Branding (remove the iubenda branding from the privacy policy)",
guideIntegrating : "Guide on integrating your policy",
integrateDirectLink : "Help on the direct link option",
integrateDirectText : "Help on the direct text embedding option",
}
},
consentSolution: {
instructionsJavascriptApi : 'The Consent Solution Javascript library has the following features: \n<ul> \n<li>Directly writes into the Consent Solution API</li> \n<li>Writes both synchronously or asynchronously, optionally leveraging localStorage</li> \n<li>Can be set to watch a specific form and track consent at submit, or programmatically</li> \n<li>Supports most browsers (IE8+)</li> \n<li>Provides callbacks</li> \n<li>Logging</li> \n</ul> \nFor a general introduction to our Consent Solution API and to its methods, read our <a href="/en/help/6469-guide-to-the-consent-solution">introduction documentation</a>.',
instructionsHTTPApi : 'You can directly file proofs of consents and update preferences by writing into our API via HTTP.<br />\nThe API also allows you to read data, for instance if you want to populate your privacy preferences dashboard with the latest consent information.<br />\nFor a general introduction to our Consent Solution API and to its methods, read our <a href="/en/help/6469-guide-to-the-consent-solution">introduction documentation</a>.<br />\nFor more specific documentation on the HTTP API, check the <a href="/en/help/6484-consent-solution-http-api-documentation">HTTP API documentation</a>.',
implementConsentSolution : 'Implement Consent Solution',
checkJSDocumentation : 'Check the <a href="/en/help/6473-consent-solution-js-documentation">Javascript library documentation</a> to learn how to set things up.',
jsAcceptsPublicKey : 'The Javascript library will only accept the public API key, this is yours&#58;',
httpAcceptsPrivateKey : 'The HTTP API will only accept the private API key, this is yours&#58;',
disclaimer : '<p class="m-0">If you have installed the Consent Solution before the <strong>12/4/2019</strong> please <strong><a href="/en/help/6473-consent-solution-js-documentation">check our documentation here</a></strong> to make sure that your usage of the <code>load</code> and <code>init</code> methods are correct</p>',
addToTheHead : 'Add to the head',
example : 'Example',
createConsent : 'Create Consent',
createSubjects : 'Create Subjects',
placeThisCode : 'Add this code to all your pages, inside the <strong>&#x3C;head&#x3E;</strong> tag',
guides : {
javascript: {
video: '&lt;div class=&quot;video_wistia_inline mb-3&quot;&gt;&lt;script src=&quot;https://fast.wistia.com/embed/medias/c6fxyrqd5c.jsonp&quot; async&gt;&lt;/script&gt;&lt;script src=&quot;https://fast.wistia.com/assets/external/E-v1.js&quot; async&gt;&lt;/script&gt;&lt;div class=&quot;wistia_responsive_padding&quot; style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;div class=&quot;wistia_responsive_wrapper&quot; style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;&gt;&lt;span class=&quot;wistia_embed wistia_async_c6fxyrqd5c popover=true popoverAnimateThumbnail=true videoFoam=true&quot; style=&quot;display:inline-block;height:100%;position:relative;width:100%&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class=&quot;clearfix&quot;&gt;&lt;div class=&quot;oh&quot;&gt; &lt;h4 class=&quot;mb-0 text-lg&quot; &gt;Full Intro to the Consent Solution&lt;/h4&gt; &lt;span class=&quot;text-gray&quot;&gt; 20:34 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt;',
articles: {
title : 'Guides',
list : '<li><a href="/en/help/6469-guide-to-the-consent-solution" class="link-underline text-dark"> Consent Solution – Getting Started</a></li><li> <a href="/en/help/6473-consent-solution-js-documentation" class="link-underline text-dark">Consent Solution – JS Documentation</a> </li><li><a href="/en/help/6484-consent-solution-http-api-documentation" class="link-underline text-dark">Consent Solution – HTTP API Documentation</a> </li><li><a href="/en/help/7379" class="link-underline text-dark">Auto-sync legal documents with the Consent Solution</a> </li><li><a href="/en/help/5428-gdpr-guide#consent" class="link-underline text-dark">Consent under the GDPR</a></li>\n',
all: {
href : '/en/help',
caption : 'See all articles',
}
}
},
api: {
video: '&lt;!-- &lt;div class=&quot;video_wistia_inline mb-3&quot;&gt;&lt;script src=&quot;https://fast.wistia.com/embed/medias/9m4qq2sobc.jsonp&quot; async&gt;&lt;/script&gt;&lt;script src=&quot;https://fast.wistia.com/assets/external/E-v1.js&quot; async&gt;&lt;/script&gt;&lt;div class=&quot;wistia_responsive_padding&quot; style=&quot;padding:60.31% 0 0 0;position:relative;&quot;&gt;&lt;div class=&quot;wistia_responsive_wrapper&quot; style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;&gt;&lt;span class=&quot;wistia_embed wistia_async_9m4qq2sobc popover=true popoverAnimateThumbnail=true videoFoam=true&quot; style=&quot;display:inline-block;height:100%;position:relative;width:100%&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class=&quot;clearfix&quot;&gt;&lt;div class=&quot;oh&quot;&gt; &lt;h4 class=&quot;mb-0 text-lg&quot; &gt;Configuring the Cookie Solution&lt;/h4&gt; &lt;span class=&quot;text-gray&quot;&gt; 1:25 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; --&gt;',
articles: {
title : 'Guides',
list : '<li><a href="/en/help/6469-guide-to-the-consent-solution" class="link-underline text-dark"> Consent Solution – Getting Started</a></li><li><a href="/en/help/6484-consent-solution-http-api-documentation" class="link-underline text-dark">Consent Solution – HTTP API Documentation</a> </li><li> <a href="/en/help/6473-consent-solution-js-documentation" class="link-underline text-dark">Consent Solution – JS Documentation</a> </li><li><a href="/en/help/7379" class="link-underline text-dark">Auto-sync legal documents with the Consent Solution</a></li><li><a href="/en/help/5428-gdpr-guide#consent" class="link-underline text-dark">Consent under the GDPR</a></li>\n',
all: {
href : '/en/help',
caption : 'See all articles',
}
}
}
}
},
cookieSolution: {
guides : {
video: '&lt;div class=&quot;video_wistia_inline mb-3&quot;&gt;&lt;script src=&quot;https://fast.wistia.com/embed/medias/9m4qq2sobc.jsonp&quot; async&gt;&lt;/script&gt;&lt;script src=&quot;https://fast.wistia.com/assets/external/E-v1.js&quot; async&gt;&lt;/script&gt;&lt;div class=&quot;wistia_responsive_padding&quot; style=&quot;padding:60.31% 0 0 0;position:relative;&quot;&gt;&lt;div class=&quot;wistia_responsive_wrapper&quot; style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;&gt;&lt;span class=&quot;wistia_embed wistia_async_9m4qq2sobc popover=true popoverAnimateThumbnail=true videoFoam=true&quot; style=&quot;display:inline-block;height:100%;position:relative;width:100%&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class=&quot;clearfix&quot;&gt;&lt;div class=&quot;oh&quot;&gt; &lt;h4 class=&quot;mb-0 text-lg&quot; &gt;Configuring the Cookie Solution&lt;/h4&gt; &lt;span class=&quot;text-gray&quot;&gt; 1:25 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt;',
articles: {
title : 'Guides',
list : '<li><a href="/en/help/1177" class="link-underline text-dark">Cookie Solution – Getting started</a></li>\n<li>Integrate with <a href="/en/help/1215" class="link-underline text-dark"> WordPress</a> | <a href="/en/help/1323" class="link-underline text-dark">Joomla</a> | <a href="/en/help/4338" class="link-underline text-dark">PrestaShop</a> | <a href="/en/help/9591" class="link-underline text-dark">Magento</a></li>\n<li><a href="/en/help/3831" class="link-underline text-dark">How to customize the look and behavior of the cookie Banner</a></li>\n<li><a href="/en/help/7440" class="link-underline text-dark">How to enable advertising preference management (IAB TCF)</a> </li>\n<li><a href="/en/help/3081" class="link-underline text-dark">Introduction to the prior blocking of scripts</a></li>',
all: {
href : '/en/help',
caption : 'See all articles',
}
}
},
embedTheBanner : 'Embed the banner',
whatIs : 'Read more about prior blocking',
customize : 'Customize',
placeThisCode : 'Place this code in the <strong>&#x3C;head&#x3E;</strong>',
implementCookieSolution : 'Implement Cookie Solution',
whatIs : 'Read more about prior blocking',
priorBlocking : 'Prior blocking and asynchronous re-activation',
},
sections: {
cookie_policy: {"technical-cookies":"Technical cookies","other-types-cookies":"Clauses and services"},
privacy_policy: {"data-processing-detailed-info":"Clauses and services","further-data":"Custom clauses and services"}
}
};
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
// handle case of empty input
return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue;
}
LABELS.cookieSolution.guides.video = htmlDecode(LABELS.cookieSolution.guides.video);
LABELS.documentIntegration.guides.widget_footer.video = htmlDecode(LABELS.documentIntegration.guides.widget_footer.video);
LABELS.documentIntegration.guides.direct_link.video = htmlDecode(LABELS.documentIntegration.guides.direct_link.video);
LABELS.documentIntegration.guides.direct_embed.video = htmlDecode(LABELS.documentIntegration.guides.direct_embed.video);
LABELS.consentSolution.guides.javascript.video = htmlDecode(LABELS.consentSolution.guides.javascript.video);
LABELS.consentSolution.guides.api.video = htmlDecode(LABELS.consentSolution.guides.api.video);
var vueBus = new Vue({
data: {
currentLanguage : 'en',
pageLang : 'en'
}
});
(function(w , $) {
w.JsFlowPage = {
checkoutAnchor: function(element){
window.onload = function(){
if (element){
JsFlowPage.goTo(element);
}
var url = window.location.toString();
if (history.pushState){
history.pushState(null, null, url.split('#')[0]);
}
};
},
goTo: function(where){
setTimeout(function(){
$('html, body').animate(
{scrollTop: where.offset().top},
500
);
}, 200)
},
loadPage: function(url){
window.location.href = url;
},
iubendaJsScript: function(element, iubendaJsUrl) {
$(element).replaceWith(
'<script>(function (w,d) {var loader = function () {var s = d.createElement("script"), tag = d.getElementsByTagName("script")[0]; s.src = "' + iubendaJsUrl + '"; tag.parentNode.insertBefore(s,tag);}; ' +
'if (w.addEventListener) { w.addEventListener("load", loader, false); } else if (w.attachEvent) { w.attachEvent("onload", loader); } else { w.onload = loader; } loader(); })(window, document);<\/script>');
},
copyToClipboard: function() {
var init = function(params) {
var clipBoardClass = params.clipBoardAddedClass ? params.clipBoardAddedClass : '';
$('.copy_to_clipboard'+clipBoardClass+':not(.active)').each(function() {
$(this).addClass('active');
var el = $(this), timeout = false;
if(params.style){
el.css(params.style);
}
var button = $('<button>').click(function(){
var elContainer = el.find('textarea');
elContainer.copyToClipboard();
button.addClass('copied');
clearInterval(timeout);
timeout = setTimeout(function(){
button
.removeClass('copied');
},2000);
});
if(params.labels)
$.each(params.labels,function(i,v){
button.attr('data-label-'+i,v);
});
el
.wrapInner('<div></div>')
.append(button);
});
},
reset = function () {
console.log('reset');
};
return {
init: init,
reset: reset
}
},
openPopUp: function(event, url){
event.preventDefault ? event.preventDefault() : null;
var newWindow = window.open(url,'name','width=1024,height=600');
if (window.focus) {newWindow.focus()}
return false;
},
// temp loadBadge:
loadBadge: function(url, embedLegalOnly){
var targetSelector = url + (
embedLegalOnly
? "/full-legal"
: ""
) + "?preview=true&an=no"
var options = {
'linkA': typeof(targetSelector) == "string"
? null
: targetSelector[0],
'embedP': $("body")[0],
'iFrUrl': typeof(targetSelector) == "string"
? targetSelector
: targetSelector.attr('href'),
'inParent': true,
'cdnBaseUrl': "https://cdn.iubenda.com/",
'straightShow': true,
'shortHeightBy': typeof(shortHeightBy) == "number"
? shortHeightBy
: null,
'addClass': typeof(addClass) == "string"
? addClass
: null
}
var iBadges = $(".iubenda-ibadge");
if (iBadges.length > 0) {
return iBadges[0].contentWindow._iub.ifr.iubendaStartIFrame(options);
} else {
return _iub.ifr.iubendaStartIFrame(options);
};
}
}
})(window, jQuery);
if (!vueVariables.userLogged){
window.loginCustomDo = function() {
window.location = window.location.href;
};
$(document).ready(function(){
Modal.lightbox(vueVariables.signupUrl, {size:'large',closeOnClick:false,noEsc:true} )
});
}
</script>
<script type="text/x-template" id="cs-enabled-template">
<form id="prior-blocking" method="post" accept-charset="UTF-8">
<div class="float-left mr-2">
<div class="form-check">
<label class="form-check-label align-top">
<input
name="pConsentPreference"
type="checkbox"
class="form-check-input"
v-bind:value="pConsentPreference.enabled"
v-model="pConsentPreference.enabled"
v-bind:checked="pConsentPreference.enabled"
v-on:change="pConsentPreferenceChange">
</label>
</div>
</div>
</form>
</script>
<script type="text/x-template" id="cs-code-template">
<div class="p-4">
<div class="embed-cs copy_to_clipboard cp_clipboard" v-bind:id="tagId(cookieSolution.lang)">
<textarea readonly class="embedTextArea" v-model="snippet"></textarea>
</div>
</div>
</script>
<script type="text/x-template" id="select-channel-template">
<select v-on:change="showSnippetChannel" v-model="selected" class="form-control custom-select" id="selectChannelSnippet">
<option v-for="channel in channels" v-bind:value="channel">
{{ channel }}
</option>
</select>
</script>
<script type="text/x-template" id="cookie-solution-implementations-template">
<div class="tab-content mb-5">
<div class="tab-pane fade show"
v-bind:aria-labelledby="labelledBy(cookieSolution.basic_info.lang.toLowerCase())"
v-for="cookieSolution in cookieSolutions">
<cs-code v-bind:embedding-type-kind="embeddingTypeKind" v-bind:cookie-solution="cookieSolution" v-bind:cs-configurations="csConfigurations"></cs-code>
</div>
<div v-if="showUpdateBanner" class="px-4">
<div class="alert alert-warning rounded mb-0" role="alert">
We have updated the HTML/CSS of our cookie notice in order to improve your users' experience. This change will only be effective if you update the embedding code to the newest version provided above. Since, according to your saved configuration, you were using the Cookie Solution with custom CSS, you may have to test again your CSS. For further information <u><a href="https://www.iubenda.com/en/help/1205-banner-and-prior-consent-setup-and-customization">read our documentation</a></u>.
</div>
</div>
</div>
</script>
<script type="text/x-template" id="embed-the-banner-template">
<div>
<div class="px-4 mt-4 clearfix">
<div class="float-right">
<div class="form-group">
<select-channel></select-channel>
</div>
</div>
<div class="oh">
<h4 class="text-md" v-html="labelEmbedTheBanner"></h4>
</div>
</div>
<language-nav-tabs legal-document-suffix="cs" embedding-type-kind="channel"></language-nav-tabs>
<div class="cs_channels"
v-bind:id="containerDivId(channel)"
v-for="channel in channels">
<cookie-solution-implementations v-bind:embedding-type-kind="channel" v-bind:cs-configurations="csConfigurations"></cookie-solution-implementations>
</div>
</div>
</script>
<script type="text/x-template" id="enable-iab-template">
<div class="p-4 bt-1-light-gray">
<div class="form-check">
<input name="iab_enabled" type="checkbox" class="form-check-input" v-model="enabled" v-on:change="update">
<label class="ml-2" v-html="enable_iab_cmp_framework"></label>
</div>
<div class="form-check form-check-sub" v-if="enabled==true">
<div class="clearfix mb-3">
<label style="margin-left: -2.25rem !important; float:none;" v-html="stub_explanation"></label>
</div>
<input name="remove_consent" type="checkbox" class="form-check-input" v-model="askConsent" v-on:change="update">
<label class="ml-2" v-html="enable_remove_consent"></label>
</div>
</div>
</script>
<script type="text/x-template" id="integration-for-site-template">
<div class="collapse" id="collapseDocumentIntegration" aria-labelledby="headingOne" data-parent="#policies">
<fieldset class="mb-4">
<legend class="mb-3 text-uppercase text-sm text-muted font-weight-bold" v-html="label.globalSettings"> </legend>
<ul class="list-unstyled d-inline">
<badge-change-brand v-bind:doc="privacyPolicies[0] || termsAndConditions[0]" v-bind:no-brand-layout="true"></badge-change-brand>
<opts-change v-if="privacyPolicies" v-bind:doc="privacyPolicies[0]"></opts-change>
</ul>
</fieldset>
<div class="tab custom-box-2 rounded" id="embedding_code">
<embedding-style-tabs v-bind:doc="privacyPolicies[0] || termsAndConditions[0]" v-bind:render="'siteApp'" v-bind:embedding-types="embeddingTypes"></embedding-style-tabs>
<div class="tab-content">
<div class="tab-pane fade show" v-bind:class="{ 'active': embeddingType.render.active }" v-bind:id="embeddingType.kind" role="tabpanel" v-bind:aria-labelledby="embeddingType.kind" v-for="embeddingType in embeddingTypes">
<div class="p-3 button_previews" v-show.visible="embeddingType.buttonPreviews">
<div class="px-4 rounded border border-dark-gray bg-dark-gray pb-4">
<div class="bg-white p-4 lh-2 mb-3">
<div class="row">
<div class="col-md-3">
<span style="width:6rem" class="blokk d-block bg-light m-2 p-1"></span>
<div class="clearfix">
<span style="width: 38%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 20%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 32%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 14%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 49%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 35%" class="blokk float-left bg-dark-gray m-2"></span>
</div>
</div>
<div class="col-md-3">
<span style="width:6rem" class="blokk d-block bg-light m-2 p-1"></span>
<div class="clearfix">
<span style="width: 38%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 28%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 33%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 21%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 34%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 31%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 48%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 49%" class="blokk float-left bg-dark-gray m-2"></span>
</div>
</div>
<div class="col-md-3">
<span style="width:6rem" class="blokk d-block bg-light m-2 p-1"></span>
<div class="clearfix">
<span style="width: 25%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 18%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 31%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 45%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 48%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 44%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 18%" class="blokk float-left bg-dark-gray m-2"></span><span style="width: 17%" class="blokk float-left bg-dark-gray m-2"></span>
</div>
</div>
<badge-previews></badge-previews>
</div>
</div>
</div>
</div>
<div class="row no-gutters">
<div class="col-lg-8" v-bind:class="{ 'py-4': !embeddingType.showStyleSelection }" id="embedding-code-container">
<badge-change-brand v-bind:no-brand-layout="false" v-bind:embedding-type="embeddingType" v-if="embeddingType.showStyleSelection" v-bind:doc="privacyPolicies[0] || termsAndConditions[0]" ></badge-change-brand>
<language-nav-tabs legal-document-suffix="policies" v-bind:embedding-type-kind="embeddingType.kind"></language-nav-tabs>
<legal-documents-panel v-bind:embedding-type-kind="embeddingType.kind"></legal-documents-panel>
</div>
<help-section-doc @sub-tab-opened="subTabSelected" :key="tab" v-if="isTheTabOpen" v-bind:opened-tab="tab" v-bind:guide="guides" v-bind:id-for-script="'site-app'" v-bind:embedding-type="embeddingType.kind"></help-section-doc>
</div>
</div>
</div>
</div>
</div>
</script>
<script type="text/x-template" id="integration-for-mobile-app-template">
<div class="collapse" id="collapseDocumentIntegration" aria-labelledby="headingOne" data-parent="#policies">
<div class="tab custom-box-2 rounded" id="embedding_code">
<div class="row no-gutters">
<div class="col-lg-8">
<div class="p-4">
<div class="mb-5">
<h3 class="text-lg" v-html="labels.integratePP"></h3>
<p class="text-sm text-light" v-html="labels.integratePPDescription"></p>
</div>
<div>
<h4 class="text-lg" v-html="labels.copyPPLink"></h4>
<p class="text-sm text-light" v-html="labels.copyPPLinkDescription"></p>
<p class="text-sm text-light" v-html="labels.alernativePPLink">
</p>
</div>
</div>
<embedding-style-tabs v-bind:doc="privacyPolicies[0] || termsAndConditions[0]" v-bind:render="'mobileApp'" v-bind:embedding-types="embeddingTypes"></embedding-style-tabs>
<div class="tab-content pt-4">
<div class="tab-pane fade show"
v-bind:class="{ 'active': embeddingType.render.active }"
v-bind:id="embeddingType.kind"
role="tabpanel"
v-bind:aria-labelledby="embeddingType.kind"
v-if="embeddingType.render.mobileApp"
v-for="embeddingType in embeddingTypes">
<language-nav-tabs legal-document-suffix="policies" v-bind:embedding-type-kind="embeddingType.kind"></language-nav-tabs>
<legal-documents-panel v-bind:no-place-alert-warning="true" v-bind:document-to-show="'privacyPolicy'" v-bind:embedding-type-kind="embeddingType.kind"></legal-documents-panel>
</div>
</div>
<div class="px-4 pb-4">
<opts-change v-bind:doc="privacyPolicies[0]" v-if="privacyPolicies[0] != null"></opts-change>
</div>
</div>
<help-section-doc @sub-tab-opened="subTabSelected" :key=tab v-if="isTheTabOpen" v-bind:opened-tab="tab" class="help-section" id="mobile-help-section-direct_link" v-bind:guide="guides" v-bind:id-for-script="'mobile-app'" v-bind:embedding-type="embedSection" ></help-section-doc>
</div>
</div>
</div>
</script>
<script type="text/x-template" id="collapse-template">
<h3 @click="click" class="text-lg mb-4 clearfix collapsed" data-toggle="collapse" aria-expanded="false">
<div class="ml-2 float-right">
<button class="btn btn-dark-gray btn-sm text-dark collapsed-anchor"> {{ nav.hide }} </button>
<button class="btn btn-dark-gray btn-sm text-dark collapse-anchor"> {{ nav.expand }} </button>
</div>
<span class="oh"> {{ title }} </span>
</h3>
</script>
<script type="text/x-template" id="help-section-doc-template">
<div class="col-lg-4 p-4 aside-right">
<div v-if="isTheTabActive" v-bind:id="getScriptIdForHtmlWistiaSource()"></div>
<div class="mt-5">
<h3 class="text-lg" v-html="guide[embeddingType].articles.title"></h3>
<ul class="list-unstyled mb-3 p-2 list-item-mb-2" v-html="guide[embeddingType].articles.list"></ul>
<p>
<a v-bind:href="guide[embeddingType].articles.all.href" class="btn btn-outline-light btn-sm">
{{ guide[embeddingType].articles.all.caption }}
</a>
</p>
</div>
</div>
</script>
<script type="text/x-template" id="help-section-template">
<div class="col-lg-4 p-4 aside-right">
<div v-if="isTheTabActive" v-bind:id="getScriptIdForHtmlWistiaSource()"></div>
<div class="mt-5">
<h3 class="text-lg" v-html="guide.articles.title"></h3>
<ul class="list-unstyled mb-3 p-2 list-item-mb-2" v-html="guide.articles.list"></ul>
<p>
<a v-bind:href="guide.articles.all.href" class="btn btn-outline-light btn-sm">
{{ guide.articles.all.caption }}
</a>
</p>
</div>
</div>
</script>
<script type="text/x-template" id="badge-change-brand-template">
<li v-if="noBrandLayout" class="list-inline-item mr-lg-2">
<form method="post" id="no-brand-form" accept-charset="UTF-8">
<div
@mouseover="onMouseOn($event, doc)"
@mouseleave="onMouseOut($event)"
v-bind:class="getCssClassForLabelContainer('no_brand')">
<label class="form-check-label">
<input
class="form-check-input"
v-model="doc.badge_info.no_brand"
type="checkbox"
@mouseover="onMouseOn($event, doc)"
@mouseleave="onMouseOut($event)"
v-bind:value="doc.badge_info.no_brand"
name="optionsBrand"
v-bind:checked="doc.badge_info.no_brand"
v-on:change="onStyleChanged('no_brand')">
{{ labels.noBrand }}
</label>
</div>
</form>
</li>
<div v-else id="style-and-brand" class="p-4 style" v-show.visible="embeddingType">
<h4 class="mb-2 text-uppercase text-sm text-muted font-weight-bold"> {{ labels.style }} </h4>
<form method="post" id="badge-change-form" accept-charset="UTF-8">
<ul class="list-unstyled d-inline">
<li class="list-inline-item mr-lg-3" v-for="iubendaBadgeStyle in doc.badge_info.iubenda_badge_styles">
<div
@mouseover="onMouseOn($event, doc)"
@mouseleave="onMouseOut($event)"
v-bind:class="getCssClassForLabelContainer(iubendaBadgeStyle)">
<label class="form-check-label">
<input
class="form-check-input"
type="radio"
name="optionsStyle"
@mouseover="onMouseOn($event, doc)"
@mouseleave="onMouseOut($event)"
v-model="doc.badge_info.badge_style"
v-on:change="onStyleChanged('badge_style')"
v-bind:value="iubendaBadgeStyle === 'no_style' ? 'nostyle' : iubendaBadgeStyle">
{{ labels[iubendaBadgeStyle] }}
</label>
</div>
</li>
</ul>
</form>
</div>
</script>
<script type="text/x-template" id="opts-change-template">
<li class="list-inline-item mr-lg-2">
<form method="post" accept-charset="UTF-8">
<div class="mt-3" v-if="noMarkup">
<div class="mb-5">
<h5 class="text-lg text-light mb-2">{{labels.siteApp.badgeChange.options}}</h5>
<!--<p v-html="labels.globals.howItWorksDescription ">
<a v-bind:href="labels.globals.urlForHelp" @click="displayAlertMsg(false); popItUp('labels.global.urlForHelp')"> {{labels.globals.exampleOfHelp}} </a>
</p>-->
</div>
<div>
<div class="form-check">
<label class="form-check-label">
<input
class="form-check-input"
type="checkbox"
v-model="doc.badge_info.no_markup"
v-bind:value="doc.badge_info.no_markup"
name="embedLegalTextOnly"
v-bind:checked="doc.badge_info.no_markup"
v-on:change="onStyleChanged('plain_html')">
{{ labels.siteApp.optsChange.usePlainHTML}}
</label>
</div>
</div>
<div class="mt-3" v-if="noMarkup">
<div class="mb-5">
<!--<h5 class="text-lg text-light mb-2" v-html="labels.globals.howItWorks"></h5>
<p v-html="labels.globals.howItWorksDescription ">
<a v-bind:href="labels.globals.urlForHelp" @click="displayAlertMsg(false); popItUp('labels.global.urlForHelp')"> {{labels.globals.exampleOfHelp}} </a>
</p>-->
</div>
<div v-if="isTheSectionOptionVisible">
<div class="form-check">
<label class="form-check-label">
<input
class="form-check-input"
type="checkbox"
v-model="doc.badge_info.embed_each_part_separately"
v-bind:value="doc.badge_info.embed_each_part_separately"
name="embedLegalTextOnly"
v-bind:checked="doc.badge_info.embed_each_part_separately"
v-on:change="onStyleChanged('embed_each_part_separately')">
{{ labels.siteApp.optsChange.embedEachPartSeparately }}
</label>
</div>
</div>
</div>
</div>
<div v-else class="form-check">
<label class="form-check-label">
<input
class="form-check-input"
type="checkbox"
v-model="doc.badge_info.pp_simplified"
v-bind:value="doc.badge_info.pp_simplified"
name="embedLegalTextOnly"
v-bind:checked="doc.badge_info.pp_simplified"
v-on:change="onStyleChanged('pp_simplified')">
{{ labels.siteApp.optsChange.ppSimplified }}
</label>
</div>
</form>
</li>
</script>
<script type="text/x-template" id="embedding-style-tabs-template">
<nav class="nav nav-tabs text-center scrollable" id="embedding-styles-tab" role="tablist">
<a
class="nav-item nav-link text-dark p-3"
v-bind:class="getCssClass(embeddingType)"
v-bind:id="getId(embeddingType.kind)"
data-toggle="tab"
v-bind:href="getHref(embeddingType.kind)"
role="tab"
@mouseover="onMouseOn($event, doc)"
@mouseleave="onMouseOut($event)"
v-bind:aria-controls="embeddingType.kind"
v-bind:aria-selected="embeddingType.active"
v-if="embeddingType.render[render]"
v-for="embeddingType in tabs">
{{ labels[embeddingType.kind] }}
</a>
</nav>
</script>
<script type="text/x-template" id="badge-previews-template">
<div class="col-md-3" id="badge-previews">
<div v-bind:id="containerBadgeIdElement( privacy_policy , privacy_policy.privacy_policy_info )" v-if="privacy_policy">
<div v-bind:id="badgeIdElement( privacy_policy , privacy_policy.privacy_policy_info )">
</div>
</div>
<div v-bind:id="containerBadgeIdElement( cookie_policy , cookie_policy.cookie_policy_info )" v-if="cookie_policy">
<div v-bind:id="badgeIdElement( cookie_policy , cookie_policy.cookie_policy_info )">
</div>
</div>
<div v-bind:id="containerBadgeIdElement(term_and_condition, term_and_condition.term_and_condition_info )" v-if="term_and_condition">
<div v-bind:id="badgeIdElement(term_and_condition, term_and_condition.term_and_condition_info )">
</div>
</div>
</div>
</script>
<script type="text/x-template" id="embedding-code-template">
<div>
<div class="copy_to_clipboard pp_clipboard" v-if="embeddingTypeKind === 'widget_footer'">
<h5 class="text-md mb-2">{{ doc.panel_title }}</h5>
<textarea readonly class="embedTextArea" v-model="getWidgetFooterSnippet()"></textarea>
</div>
<div class="alert alert-warning text-sm d-inline-block" role="alert" v-html="link"
v-if="!noPlaceAlertWarning && embeddingTypeKind === 'widget_footer'"></div>
<div class="copy_to_clipboard pp_clipboard" v-if="embeddingTypeKind === 'direct_link'">
<h5 class="text-md mb-2">{{ doc.panel_title }}</h5>
<textarea readonly class="embedTextArea sm" v-model="docUrlForDirect()"></textarea>
</div>
<div v-if="embeddingTypeKind === 'direct_embed' && isEmbedEachPartSeparatelyActive">
<h5 v-show="sectionsAvailableForThisProduct" class="text-md mb-2">{{ doc.panel_title }}</h5>
<div class="entry_content entry_body_content doc_body accordion"
:id="'sectionsAccordion' + '-' + getSectionType(title) + '-' + getTabLang()">
<div class="card" v-for="(item, index) in doc.urls.api.sections">
<div class="card-header" :id="'header_' + getSectionType(title) + '-' + index">
<h5 class="mb-0 text-decoration-none">
<div class="px-1 py-3 text-md collapsed"
data-toggle="collapse"
:data-target="'#' + getSectionType(title)+ '-' + index" aria-expanded="true"
:aria-controls="getSectionType(title) + '-' + index">
{{ getSectionLabel(index, getSectionType(title)) }}
</div>
</h5>
</div>
<div :id="getSectionType(title) + '-' + index"
class="collapse"
:aria-labelledby="'header_' + getSectionType(title) + '-' + index"
:data-parent="'#sectionsAccordion' + '-' + getSectionType(title) + '-' + getTabLang()">
<div class="card-body">
<div>
<!--
<h5 class="text-xs text-uppercase text-light">{{ labels.globals.useJavascript }} </h5>
<div class="copy_to_clipboard pp_clipboard">
<textarea readonly class="embedTextArea"
v-model="getSnippetForEachPartSeparately(index)"></textarea>
</div>
-->
<h5 class="text-xs text-uppercase text-light">{{ labels.globals.callOurApi }}</h5>
<div class="copy_to_clipboard pp_clipboard">
<textarea readonly class="embedTextArea sm"
v-model="docSectionApiUrl(index)"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="rounded w-100 mt-4" v-else-if="embeddingTypeKind === 'direct_embed'">
<h5 class="text-md mb-2">{{ doc.panel_title }} </h5>
<h5 class="text-xs text-uppercase text-light">{{ labels.globals.useJavascript }} </h5>
<div class="copy_to_clipboard pp_clipboard">
<textarea readonly class="embedTextArea" v-model="getDirectEmbedSnippet()"></textarea>
</div>
<div class="alert alert-warning mb-4 text-sm d-inline-block" role="alert" v-html="text" v-if="!noPlaceAlertWarning"></div>
<h5 class="text-xs text-uppercase text-light">{{ labels.globals.callOurApi }}</h5>
<div class="copy_to_clipboard pp_clipboard">
<textarea readonly class="embedTextArea sm" v-model="docApiUrl()"></textarea>
</div>
</div>
</div>
</script>
<script type="text/x-template" id="legal-document-template">
<div class="p-4" v-if="doc">
<embedding-code
v-bind:embedding-type-kind="embeddingTypeKind"
v-bind:doc="doc"
v-bind:title="title"></embedding-code>
</div>
<div class="p-4" v-else>
{{ t("embedding.cannot_create_for_language") }}
</div>
</script>
<script type="text/x-template" id="legal-documents-panel-template">
<div class="tab-content">
<div class="tab-pane fade show"
v-bind:aria-labelledby="labelledBy(lang.code)"
v-for="lang in siteLanguages">
<legal-document v-bind:title="getPrivacyPolicyTitleByLang(lang.code_not_converted)"
v-bind:doc="getPrivacyPolicyByLang(lang.code)"
v-bind:embedding-type-kind="embeddingTypeKind"
v-bind:no-place-alert-warning="noPlaceAlertWarning"
v-if="privacyPolicies && docIsCompleted('privacy_policies')"
></legal-document>
<legal-document v-bind:title="getCookiePolicyTitleByLang(lang.code_not_converted)"
v-bind:doc="getCookiePolicyByLang(lang.code)"
v-bind:embedding-type-kind="embeddingTypeKind"
v-bind:no-place-alert-warning="noPlaceAlertWarning"
v-if="cookiePolicies && docIsCompleted('privacy_policies')"
></legal-document>
<legal-document v-bind:title="getTermsAndConditionsTitleByLang(lang.code)"
v-bind:doc="getTermsAndConditionsByLang(lang.code)"
v-bind:embedding-type-kind="embeddingTypeKind"
v-bind:no-place-alert-warning="noPlaceAlertWarning"
v-if="termsAndConditions && docIsCompleted('terms_and_conditions')"
></legal-document>
<div class="p-4" v-if="embeddingTypeKind === 'direct_embed' && (getPrivacyPolicyByLang(lang.code) || getCookiePolicyByLang(lang.code) || getTermsAndConditionsByLang(lang.code))">
<opts-change v-bind:no-markup="true" v-bind:doc="getPrivacyPolicyByLang(lang.code) || getCookiePolicyByLang(lang.code) || getTermsAndConditionsByLang(lang.code)"></opts-change>
</div>
</div>
</div>
</script>
<script type="text/x-template" id="syncronize-doc-template">
<div>
<form id="versioning-docs" method="put" accept-charset="UTF-8">
<div class="float-left mr-2">
<div class="form-check">
<label class="form-check-label align-top">
<input
name="docsVersioningEnabled"
type="checkbox"
class="form-check-input"
:value="docsVersioningEnabled"
v-model="docsVersioningEnabled"
:checked="docsVersioningEnabled"
v-on:change="syncronizeDocChange">
</label>
Sync your iubenda legal documents with the Consent Solution – <a href="/en/help/7379" class="entry_content">Learn More</a>
</div>
</div>
</form>
<div class="float-right">
<div class="form-group">
<select-channel-consent/>
</div>
</div>
</div>
</script>
<script type="text/x-template" id="select-channel-consent-template">
<select @change="setConsentChannel" v-model="selected" class="form-control custom-select">
<option v-for="channel in channels" :value="channel">
{{ channel }}
</option>
</select>
</script>
<script type="text/x-template" id="consent-solution-code-template">
<!-- <div class="p-4" v-if="embeddingType === 'snippet'">
<div class="consent-solution_clipboard copy_to_clipboard consent_clipboard">
<textarea readonly class="embedTextArea sm" v-model="getSnippet(embeddingType)"></textarea>
</div>
<div class="alert alert-warning text-sm d-inline-block" role="alert" v-html="labels.placeThisCode"></div>
</div>
<div class="p-4" v-else-if="embeddingType === 'widget'">
<div class="consent-solution_clipboard copy_to_clipboard consent_clipboard">
<textarea readonly class="embedTextArea sm" v-model="getSnippet(embeddingType)"></textarea>
</div>
<p v-html="labels.instructionsJavascriptWidget"></p>
</div>
<div class="p-4" v-else-if="embeddingType === 'sdk'">
<div class="consent-solution_clipboard copy_to_clipboard ">
<textarea readonly class="embedTextArea sm" v-model="getSnippet(embeddingType)"></textarea>
</div>
<p v-html="labels.instructionsJavascriptApi"></p>
</div>
</div> -->
<div class="p-4" v-if="embeddingType === 'public-key'">
<div>
<h5 class="text-md mb-2"> Public Api Key </h5>
<p v-html="labels.jsAcceptsPublicKey"></p>
<div class="consent_clipboard copy_to_clipboard ">
<textarea readonly class="embedTextArea sm" v-model="publicApiKey"></textarea>
</div>
</div>
</div>
<div class="p-4" v-else-if="embeddingType === 'private-key'">
<div>
<h5 class="text-md mb-2"> Private Api Key </h5>
<p v-html="labels.httpAcceptsPrivateKey"></p>
<div class="consent_clipboard copy_to_clipboard ">
<textarea readonly class="embedTextArea sm" v-model="privateApiKey"></textarea>
</div>
</div>
</div>
<div class="p-4 entry_content" v-else-if="embeddingType === 'javascript'">
<div>
<p class="mb-4" v-html="labels.instructionsJavascriptApi"></p>
<h5 class="text-md mb-3" v-html="labels.addToTheHead"></h5>
<div class="consent_clipboard copy_to_clipboard">
<textarea readonly class="embedTextArea" v-model="scriptSnippet"></textarea>
</div>
<div class="alert alert-warning mb-4 text-sm d-inline-block" role="alert" v-html="labels.placeThisCode"></div>
<p class="mt-3" v-html="labels.checkJSDocumentation"></p>
</div>
</div>
<div class="p-4" v-else-if="embeddingType === 'http-api'">
<div>
<h5 class="text-md mb-2" v-html="labels.example"></h5>
<h5 class="text-md mb-3" v-html="labels.createConsent"></h5>
<div class="consent_clipboard copy_to_clipboard">
<textarea readonly class="embedTextArea sm" v-model="apiSnippetConsent"></textarea>
</div>
<h5 class="text-md mb-3" v-html="labels.createSubjects"></h5>
<div class="consent_clipboard copy_to_clipboard">
<textarea readonly class="embedTextArea sm" v-model="apiSnippetSubject"></textarea>
</div>
</div>
</div>
</script>
<script>
var self = this;
$(document).ready(function(){
var listOfTextAreaElements = $(".embedTextArea");
self.DomUtils.trimInputValue(listOfTextAreaElements);
});
</script>
<script type="text/x-template" id="integration-for-facebook-template">
<div class="collapse" id="collapseDocumentIntegration" aria-labelledby="headingOne" data-parent="#policies">
<div class="tab custom-box-2 rounded" id="embedding_code">
<div class="tab-content">
<div class="row no-gutters">
<div class="col-lg-8" >
<!--{{ labels.integratePrivacyPolicy }}-->
<div class="cf">
<div class="p-4">
<h3 class="text-lg" v-html="labels.copyThePolicy"></h3>
<p class="text-sm text-light" v-html="labels.ppAddress">
</p>
</div>
<language-nav-tabs legal-document-suffix="policies" v-bind:embedding-type-kind="'direct_link'"></language-nav-tabs>
<legal-documents-panel v-bind:embedding-type-kind="'direct_link'" v-bind:no-place-alert-warning="true" v-bind:document-to-show="'privacyPolicy'"></legal-documents-panel>
<div class="p-4">
<h3 class="text-lg" v-html="labels.openTheSettings"></h3>
<p class="text-sm text-light mb-3" v-html="labels.clickFollowingButton">
</p>
<!-- provide a tag builder -->
<button
class="btn btn-highlighted-blue text-secondary azure"
@click="goToFacebookPanel($event)">
{{ labels.openAppSettings }}
</button>
<p class="text-xs text-light mt-3" v-html="labels.inCaseYouWant"></p>
</div>
<div id="style-and-brand">
<div class="p-4">
<h3 class="text-lg mb-3" v-html="labels.options"></h3>
<badge-change-brand v-bind:doc="privacyPolicies[0] || termsAndConditions[0] " v-bind:no-brand-layout="true"></badge-change-brand>
<!--
<h4>{{ labels.help }}</h4>
<small><a href="/en/help/posts/231" class="smalltext" onclick="displayAlertMsg(false); return popItUp('/en/help/posts/231')"> {{ labels.guideIntegrating }} </a></small><br />
<small><a href="/en/help/posts/228" class="smalltext" onclick="displayAlertMsg(false); return popItUp('/en/help/posts/228')"> {{ labels.integrateDirectLink }} </a></small><br />
<small><a href="/en/help/posts/78" class="smalltext" onclick="displayAlertMsg(false); return popItUp('/en/help/posts/78')"> {{ labels.integrateDirectText }} </a></small>
-->
</div>
</div>
</div>
</div>
<help-section-doc :key="tab" v-if="isTheTabOpen" :opened-tab="tab" v-bind:guide="guides" :id-for-script="'facebook-app'" :embedding-type="'widget_footer'"></help-section-doc>
</div>
</div>
</div>
</div>
</div>
</script>
<script type="text/javascript"> // services modal => instantiates AvailableProductsHandler component
(function(global, Modal) {
"use strict";
var aph = (function() {
var availableProductsModalUrl = '/en/sites/2175924/subscribed_services';
var servicesData = {
activatePrivacyPolicyUrl: "https://www.iubenda.com/en/sites/2175924/documents",
activateCookiePolicyUrl: "/en/privacy-policy-generator/1924650/activate_cookie_policy",
activateCookieSolutionUrl: "/en/cookie_solutions/new?site_id=2175924",
activateConsentSolutionUrl: "https://www.iubenda.com/en/consent_solutions",
activateTermsConditionsUrl: "/en/sites/2175924/documents?document_type=terms_and_conditions",
defaultServicesModalAcceptUrl: "/en/flow/2175924",
siteId: "2175924"
};
// close action functions used by services modal depending on the wanted action
var actions = {
closeActions: {
acceptFlowAction: function acceptFlowAction() {}, // populated at initAcceptAction execution
blankAction: function blankAction() {}, //blank action;
cookieSolutionBtnClicked: function cookieSolutionBtnClicked() {
Modal.lightbox(servicesData.activateCookieSolutionUrl, {
size: 'full'
});
},
consentSolutionBtnClicked: function consentSolutionBtnClicked() {
global.location.href = servicesData.defaultServicesModalAcceptUrl + '#consent_solution';
},
gdprActivation: function gdprActivation() {
var callback = function() {
global.checkoutGdpr('consent_flow', servicesData.siteId);
};
global.showConfirm(callback, actions.closeActions.acceptFlowAction);
},
showIPMDialog: function showIPMDialog() {
Modal.lightbox('/en/enable_gdpr_modal/2175924', {
onClose: actions.hideAction
});
},
reloadPage: function reloadPage() {
global.location.reload();
}
},
chosenAction: null,
hideAction: function() {},
};
var showAvailableProductsModal = function() {
$.ajax({
url: availableProductsModalUrl,
dataType:'json',
success: function(data) {
if (data.all_activated) {
window.location.href = servicesData.defaultServicesModalAcceptUrl;
} else {
Modal.lightbox(availableProductsModalUrl, {
headers: {
'Accept': 'text/html'
},
onClose: function() {
actions.chosenAction ? actions.chosenAction() : actions.hideAction();
}
});
}
}
});
};
return {
initActions: function(data) {
if (data.acceptFlowAction) {
actions.closeActions.acceptFlowAction = data.acceptFlowAction;
}
else {
actions.closeActions.acceptFlowAction = function() {
global.location = servicesData.defaultServicesModalAcceptUrl + (data.anchor ? '#' + data.anchor : '');
};
}
if (data.chosenAction) {
actions.chosenAction = typeof data.chosenAction === 'function' ?
data.chosenAction :
actions.closeActions[data.chosenAction];
}
if (data.hideAction) {
actions.hideAction = typeof data.hideAction === 'function' ?
data.hideAction :
actions.closeActions[data.hideAction];
}
},
getServiceData: function(prop) {
return servicesData[prop];
},
setChosenAction: function(action) {
actions.chosenAction = actions.closeActions[action];
},
closeModalWith: function(action) {
aph.setChosenAction(action);
Modal.close();
},
showModal: function(data) {
aph.initActions(data);
showAvailableProductsModal();
}
}
})();
global.AvailableProductsHandler = aph;
})(window, Modal);
</script>
<script>
/* eslint-disable */
/* global $, Modal, enhancedDialog, I18n */
(function(bus, Vue, data, AlertMessage, AvailableProductsHandler) {
'use strict';
// if we declare this mixin as a variable to pass to the compontents (eg: mixins: [const], the Basic here explained: https://vuejs.org/v2/guide/mixins.html),
// the showPopUpIfDenied method will not be directly available on templates, and the solution is pass the mixin to Vue instances too.
// We can avoid this issue problem above explained by declaring the mixin as global instance
// PAY ATTENTION: mixin method will available along the whole Vue instances and components.
Vue.mixin({
data: function() {
return {
siteId : data.siteId,
userIsLogged : data.userLogged,
loginUrl : data.loginUrl
};
},
methods: {
askConfirm: function(confirmFor, callback){
var dialogOptions = {
rationale: I18n.t('js.generator.delete.' + confirmFor),
showXBtn: true
};
dialogOptions = $.extend(dialogOptions, {
confirm: {
text: I18n.t('js.generator.delete.confirm'),
cssClass: 'btn btn-sm btn-danger',
close: true,
callback: callback
},
cancel: {
text: I18n.t('js.generator.delete.cancel'),
close: true,
cssClass: 'btn btn-sm btn-dark-gray d-block d-lg-inline-block m-2 link_btn'
}
});
enhancedDialog(dialogOptions);
},
startEdit: function(event){
var elem = $(event.target);
var _this = this;
event.preventDefault();
if (!this.userIsLogged) {
window.loginCustomDo = function() {
window.location = window.location.href;
};
Modal.lightbox(this.loginUrl + '&assign_site_id=' + this.siteId );
} else {
this.$http.get(elem[0].href, {}).then(
function(result){
_this.handleResponse(elem, result);
},
function(){ }
);
}
},
updateSite: function(event){
var _this = this;
var elem = $(event.target);
var requestUrl = elem[0].href || elem.parent()[0].href || elem.data('href');
event.preventDefault();
_this.$http.get(requestUrl, {}).then(
function(result){
_this.handleResponse(elem, result);
}
);
},
deleteSite: function(event){
var _this = this;
event.preventDefault();
this.askConfirm('site', function(){
var elem = $(event.target);
var requestUrl = elem[0].href || elem.parent()[0].href || elem.data('href');
_this.$http.delete(requestUrl, {}).then(
function(result){
_this.handleResponse(elem, result);
}
);
});
},
deleteDoc: function(event, integration){
var _this = this;
event.preventDefault();
this.askConfirm(integration.key, function(){
var elem = $(event.target);
_this.$http.delete(elem[0].href, {}).then(
function(result){
_this.handleResponse(elem, result);
}
);
});
},
/*
// TODO keep it for now, probably gonna need later while optimizing scripts load
injectScript: function injectScript(src) {
var doc = document;
var newScript = doc.createElement('script');
var anyScript = doc.getElementsByTagName('script')[0];
newScript.type = 'text/javascript';
newScript.async = true;
newScript.defer = true;
newScript.src = src;
return anyScript.parentNode.insertBefore(newScript, anyScript);
},
*/
startGenerate: function(event, integration) {
event.preventDefault();
if ($(event.target).hasClass('busy') || $(event.target.parentElement).hasClass('busy')) {
return;
}
var elem = $(event.target);
var text = elem[0].text;
var failCb = function(){};
var origin = '';
var _this = this;
var data = {
site_id : this.siteId,
document_type : integration.key
};
window.DomUtils.preventDoubleClicksOnSelectedElement(event.target,true);
var successCb = function(result) {
_this.handleResponse(elem, result);
};
elem.formSubmit('spin');
// check if site still exists, if so, continue as normal:
if (_this.userIsLogged) {
if (integration.key === 'cookie_solution') {
var csUrl = (integration.url.indexOf("?") !== -1 ? integration.url + "&no_lay=true" : integration.url + "?no_lay=true");
/**
* New CS Configurator.
* Add extra XHR's GET-parameters `new_csc=true` in case it's present in browser search string
*/
if (window.location.search.indexOf('new_csc') > -1) {
csUrl += '&new_csc=true'
}
_this.$http.get(csUrl, {}).then(function(result) {
if (result.body.success === false ){
_this.handleResponse(elem, result);
} else {
Modal.dialog(result.body, {
size: 'full',
onClose: function(){
elem.children().remove();
elem.text(text); // formSubmit(false) won't remove the created span container.
}
});
// TODO keep it for now, probably gonna need later while optimizing scripts load
// Code for html template:
//
//
//
// New CSC app injection -------------------------
// Modal.dialog('<div id="cs-conf-app"></div>', {
// size: 'full',
// title: 'CS Configurator',
// onOpen: function onDialogOpen() {
// // Inject CSC app's script into the page by the value of already preloaded script in the html page
// var cscScript = _this.injectScript(document.getElementById('link-cs-conf-script').href);
//
// cscScript.onload = function onCscScriptLoad() {
// window.cscApp.$mount('#cs-conf-app');
// };
// },
// onClose: function onDialogClose() {
// elem.children().remove();
// elem.text(text); // formSubmit(false) won't remove the created span container.
// },
// });
}
});
} else {
if (integration.key === 'consent_solution'){
if (!_this.userHasActiveGDPRSubscription){
origin = 'consent_flow';
window.startGDPRRequest(event, origin, _this.siteId, function(){ _this.$http.post(integration.url, data).then(successCb, failCb); });
elem.formSubmit(false);
} else {
_this.$http.post(integration.url, data).then(function(result) {
if (result.body.success === false ) {
_this.handleResponse(elem, result);
} else {
var acceptAction = function() {
successCb(result);
};
AvailableProductsHandler.showModal({
acceptFlowAction: acceptAction,
closeAction: acceptAction,
hideAction: 'reloadPage',
chosenAction: acceptAction
});
}
}, failCb);
}
} else {
_this.$http.post(integration.url, data).then(successCb, failCb);
}
}
} else {
if (integration.key === 'consent_solution'){
if (!_this.userHasActiveGDPRSubscription){
origin = 'consent_flow';
window.startGDPRRequest(event, origin, _this.siteId, function(){ _this.$http.post(integration.url, data).then(successCb, failCb); });
elem.formSubmit(false);
} else {
_this.$http.post(integration.url, data).then(successCb, failCb);
}
} else {
window.loginCustomDo = function() {
window.location = window.location.href;
};
Modal.lightbox(_this.loginUrl + '&assign_site_id=' + _this.siteId, { size:'large' } );
elem.formSubmit(false);
}
}
}
}
});
})( window.vueBus, window.Vue, window.vueVariables, window.AlertMessage, window.AvailableProductsHandler);
/* eslint-disable */
/* global I18n, AlertMessage, JSON */
(function(global, Vue, data, bus) {
'use strict';
Vue.component('enable-iab', {
data: function() {
return {
csId: data.cookieSolutions[0].basic_info.id,
enabled: data.iabEnabled,
askConsent: data.askConsent,
configuration: data.cookieSolutions[0].basic_info.configuration,
locale: data.locale
};
},
methods: {
buildDataForServer: function(input){
var data = { cookie_solution: { configuration: {} } };
var configuration = JSON.parse(this.configuration || '{}');
var iabData = {enableCMP: this.enabled};
if (input === 'remove_consent'){
iabData.askConsentIfCMPNotFound = this.askConsent === false ? false : null;
}
if (iabData.askConsentIfCMPNotFound === null){
delete iabData.askConsentIfCMPNotFound;
}
if (iabData.enableCMP !== true){
delete iabData.enableCMP;
}
delete configuration.enableCMP;
delete configuration.askConsentIfCMPNotFound;
var dataForServer = Object.assign({}, configuration, iabData);
data.cookie_solution.configuration = JSON.stringify( dataForServer);
return data;
},
update: function(event) {
var inputName = event.target.name;
var data = this.buildDataForServer(inputName);
this.$http.put('/cookie_solutions/' + this.csId,
data
).then(function(res) {
var jsonRes = res.body;
if (jsonRes.success === false){
AlertMessage.show({message: jsonRes.message, type: 'error', timerHide: 4000});
} else {
this.enabled = jsonRes.cookie_solution.iab_enabled;
this.askConsent = jsonRes.cookie_solution.ask_consent_if_cmp_not_found;
bus.$emit('enable-cmp', this.enabled, this.askConsent ); // add proper option to embedding code
}
}, function(result){
var jsonRes = result.body;
if (jsonRes.success === false){
AlertMessage.show({message: jsonRes.message, type: 'error', timerHide: 4000});
}
}
);
}
},
computed: {
enable_iab_cmp_framework: function() {
return I18n.t('js.iab.enable_iab_cmp_framework', { locale: this.locale });
},
enable_remove_consent: function() {
return I18n.t('js.iab.enable_remove_consent', { locale: this.locale });
},
stub_explanation: function() {
return I18n.t('js.iab.stub_text', { locale: this.locale });
}
},
mounted: function(){
if (this.enabled){
bus.$emit('change-channel', 'current'); // switch to Current channel
}
},
template: '#enable-iab-template'
});
})(window, window.Vue, window.vueVariables, window.vueBus);
/* eslint-disable */
/* global $ */
(function(w) {
'use strict';
w.selectChannel = {
template: '#select-channel-template',
data: function() {
return {
currentLanguage: '',
selected: 'current',
channels: w.vueVariables.channels
};
},
methods: {
showSnippetChannel: function(){
$('.cs_channels').hide();
$('#cs_channel_' + this.selected + '_container').show();
}
},
mounted: function() {
var _this = this;
window.vueBus.$on('change-channel', function(channel){
_this.selected = channel;
_this.showSnippetChannel();
});
window.vueBus.$on('language-default', function (lang) {
_this.currentLanguage = lang;
});
window.vueBus.$on('language-cs-chosen', function (lang) {
_this.currentLanguage = lang;
});
$('.cs_channels').hide();
$('#cs_channel_' + this.selected + '_container').show();
}
};
})(window);
/* eslint-disable */
(function(w, $, navLabels) {
'use strict';
w.collapse = {
template: '#collapse-template',
props: ['title', 'target'],
data: function() {
return {
nav : navLabels
};
},
mounted: function() {
$(this.$el).attr('data-target', '#collapse' + this.target );
$(this.$el).attr('aria-controls','collapse' + this.target );
},
methods: {
click: function() {
this.$emit("tab-opened", { tab: this.target});
}
}
};
})(window, window.$, window.LABELS.generic.nav);
/* eslint-disable */
/* global $ */
(function(w, bus) {
'use strict';
w.helpSectionDoc = {
template: '#help-section-doc-template',
props: ['guide', 'idForScript','embeddingType', 'openedTab'],
methods: {
getScriptIdForHtmlWistiaSource: function() {
return 'html-source-' + this.idForScript + '-' + this.embeddingType;
},
tabSelected: function(el) {
this.$emit("sub-tab-opened",{el});
}
},
computed: {
isTheTabActive: function() {
return this.openedTab === this.embeddingType + '-tab';
}
},
mounted: function() {
var self = this;
$('#embedding-styles-tab a.nav-item').on('click', function(e) {
self.tabSelected(e.target.id);
});
$('#' + this.getScriptIdForHtmlWistiaSource()).html(this.guide[this.embeddingType].video);
}
};
})(window, window.vueBus);
/* eslint-disable */
(function(w, bus, iubendaJsUrl, labels) {
'use strict';
w.embeddingCode = {
template: '#embedding-code-template',
props: ['title','embeddingTypeKind', 'doc', 'noPlaceAlertWarning'],
data: function() {
return {
iubendaJsUrl : iubendaJsUrl,
labels : labels,
link : labels.siteApp.placeThisCode,
text : labels.siteApp.placeThisCodeText
};
},
computed: {
isEmbedEachPartSeparatelyActive: function() {
return this.doc.badge_info.embed_each_part_separately;
},
sectionsAvailableForThisProduct: function() {
return Object.keys(this.doc.urls.api.sections).length > 0;
}
},
methods: {
getSectionType: function(title) {
return title === 'Privacy Policy' ? 'privacy_policy': 'cookie_policy';
},
getSectionLabel: function(index, type) {
return LABELS['sections'][type][index];
},
getTabLang: function() {
return this.doc.basic_info.lang;
},
docUrlForDirect: function() {
var onlyLegal = '';
if (this.doc.badge_info.only_legal ) {
onlyLegal = '/full-legal';
}
return this.doc.urls.view + onlyLegal;
},
getDirectEmbedSnippet : function() {
return StringUtils.decodeEntities('&#x3C;a href=&#x22;' + this.docUrl() + '&#x22; class=&#x22;' + this.classForElement('directEmbed') + ' iubenda-noiframe iub-body-embed&#x22; title=&#x22;' + this.title + '&#x22;&#x3E;' + this.title + '&#x3C;/a&#x3E;&#x3C;script type=&#x22;text/javascript&#x22;&#x3E;(function (w,d) {var loader = function () {var s = d.createElement(&#x22;script&#x22;), tag = d.getElementsByTagName(&#x22;script&#x22;)[0]; s.src=&#x22;' + this.iubendaJsUrl + '&#x22;; tag.parentNode.insertBefore(s,tag);}; if(w.addEventListener){w.addEventListener(&#x22;load&#x22;, loader, false);}else if(w.attachEvent){w.attachEvent(&#x22;onload&#x22;, loader);}else{w.onload = loader;}})(window, document);&#x3C;/script&#x3E');
},
getSnippetForEachPartSeparately : function(index) {
return StringUtils.decodeEntities('&#x3C;a href=&#x22;' + this.docSectionUrl(index) + '&#x22; class=&#x22;' + this.classForElement('directEmbed', true) + ' iubenda-noiframe iub-body-embed&#x22; title=&#x22;' + this.title + '&#x22;&#x3E;' + this.title + '&#x3C;/a&#x3E;&#x3C;script type=&#x22;text/javascript&#x22;&#x3E;(function (w,d) {var loader = function () {var s = d.createElement(&#x22;script&#x22;), tag = d.getElementsByTagName(&#x22;script&#x22;)[0]; s.src=&#x22;' + this.iubendaJsUrl + '&#x22;; tag.parentNode.insertBefore(s,tag);}; if(w.addEventListener){w.addEventListener(&#x22;load&#x22;, loader, false);}else if(w.attachEvent){w.attachEvent(&#x22;onload&#x22;, loader);}else{w.onload = loader;}})(window, document);&#x3C;/script&#x3E');
},
getWidgetFooterSnippet : function() {
return StringUtils.decodeEntities('&#x3C;a href=&#x22;' + this.docUrl() + '&#x22; class=&#x22;' + this.classForElement('widgetEmbed') + ' iubenda-noiframe &#x22; title=&#x22;' + this.title + ' &#x22;&#x3E;' + this.title + '&#x3C;/a&#x3E;&#x3C;script type=&#x22;text/javascript&#x22;&#x3E;(function (w,d) {var loader = function () {var s = d.createElement(&#x22;script&#x22;), tag = d.getElementsByTagName(&#x22;script&#x22;)[0]; s.src=&#x22;' + this.iubendaJsUrl + '&#x22;; tag.parentNode.insertBefore(s,tag);}; if(w.addEventListener){w.addEventListener(&#x22;load&#x22;, loader, false);}else if(w.attachEvent){w.attachEvent(&#x22;onload&#x22;, loader);}else{w.onload = loader;}})(window, document);&#x3C;/script&#x3E;');
},
docUrl: function(){
return this.doc.urls.view;
},
docApiUrl: function() {
var info = this.doc.badge_info;
if (info.no_markup) {
return this.doc.urls.api.no_markup;
}
if (info.only_legal) {
return this.doc.urls.api.only_legal;
}
return this.doc.urls.api.normal;
},
docSectionApiUrl: function(index) {
var info = this.doc.badge_info;
if (info.no_markup) {
return this.doc.urls.api.sections[index].no_markup;
}
return this.doc.urls.api.sections[index].only_legal;
},
docSectionUrl: function(index) {
return this.doc.urls.view + '/section/' + index;
}
},
mounted: function() {
var _this = this;
bus.$on('pp-code-embed-changed', function (data) {
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
if (_this.doc.badge_info[prop] !== undefined ){
_this.doc.badge_info[prop] = data[prop];
}
}
}
_this.$forceUpdate();
});
}
};
})(window, window.vueBus, window.vueVariables.iubendaJsUrl, window.LABELS.documentIntegration);
/* eslint-disable */
(function(w, Vue, $, iubendaJsUrl) {
'use strict';
w.badgeTagA = Vue.extend({
template: '#badge-tag-a-template',
methods: {
idForDivScript: function(doc){
return 'script-for-' + doc.document_type + '-' + doc.basic_info.public_id;
}
},
render: function (createElement) {
return createElement('a', {
attrs: {
title : this.doc.name,
href : this.doc.urls.view,
'class' : this.classForElement()
}
}, this.doc.button_title);
},
mounted: function() {
var classForScript = this.idForDivScript(this.doc );
// $(this.$el).after('<div id="' + classForScript + '"></div>'); // append script too
setTimeout(function(){
w.JsFlowPage.iubendaJsScript('#' + classForScript, iubendaJsUrl); // 'cdn.iubenda.com/iubenda.js');
}, 100);
}
});
})(window, window.Vue, window.$, window.vueVariables.iubendaJsUrl );
/* eslint-disable */
/* global $ */
(function(w) {
'use strict';
w.helpSection = {
template: '#help-section-template',
props: ['guide', 'idForScript', 'embeddingType', 'openedTab'],
methods: {
getScriptIdForHtmlWistiaSource: function() {
return 'html-source-' + this.idForScript;
},
},
computed: {
isTheTabActive: function() {
return this.openedTab !== null && typeof this.openedTab !== 'undefined';
}
},
mounted: function() {
$('#' + this.getScriptIdForHtmlWistiaSource()).html(this.guide.video);
},
};
})(window);
/* eslint-disable */
(function(w, bus, labels, snippetBuilder, data) {
'use strict';
w.csCode = {
template: '#cs-code-template',
props: ['cookieSolution', 'title', 'iubendaJsUrl', 'embeddingTypeKind', 'csEnabled'],
data: function() {
return {
labels : labels,
snippet : '',
cmpStub : '',
cmpSnippetEnabled : '',
csConfigurations : data.csConfigurations,
enableCMP : data.iabEnabled,
askConsentIfCMPNotFound : data.askConsent,
newCsConf : {} // default empty object
};
},
methods: {
addBasicInfoToCsConfigurations: function(newCsConf) {
this.newCsConf = newCsConf || this.newCsConf;
this.newCsConf.cookiePolicyId = this.cookieSolution.basic_info.public_id;
this.newCsConf.siteId = this.cookieSolution.basic_info.site_id;
this.newCsConf.lang = this.cookieSolution.basic_info.lang;
this.newCsConf.enableCMP = this.enableCMP;
if (this.newCsConf.enableCMP) {
this.newCsConf.askConsentIfCMPNotFound = this.askConsentIfCMPNotFound;
} else {
this.newCsConf.askConsentIfCMPNotFound = false;
}
var filteredConf = getLanguageSpecificConfig(this.newCsConf);
this.snippet = snippetBuilder.getSnippet(filteredConf, this.embeddingTypeKind);
},
tagId: function(lang) {
return 'embed-cs-' + lang + '-' + this.embeddingTypeKind;
}
},
created: function(){
this.addBasicInfoToCsConfigurations(this.csConfigurations);
},
mounted: function() {
var _this = this;
bus.$on('enable-cmp', function(enableCMP, removeConsentForIab) {
_this.enableCMP = false; // always false
_this.askConsentIfCMPNotFound = false;
_this.enableCMP = enableCMP;
_this.askConsentIfCMPNotFound = removeConsentForIab;
_this.addBasicInfoToCsConfigurations(null);
});
bus.$on('cs-configurations-changed', function(csConfs) {
_this.addBasicInfoToCsConfigurations(csConfs);
});
}
};
})(window, window.vueBus, window.LABELS.cookieSolution, window.csSnippetBuilder, window.vueVariables);
/* eslint-disable */
/* global $, JSON, Modal, AlertMessage */
(function(bus, Vue, data, JsFlowPage, labels) {
'use strict';
// if we declare this mixin as a variable to pass to the compontents (eg: mixins: [const], the Basic here explained: https://vuejs.org/v2/guide/mixins.html),
// the showPopUpIfDenied method will not be directly available on templates, and the solution is pass the mixin to Vue instances too.
// We can avoid this issue problem above explained by declaring the mixin as global instance
// PAY ATTENTION: mixin method will available along the whole Vue instances and components.
Vue.mixin({
data: function() {
return {
tcEnabled : data.tcEnabled,
userLogged : data.userLogged,
siteHasGDPR : data.siteHasGDPR,
showConsentSolution : data.showConsentSolution,
appKind : data.appKind,
resumeGenerationPP : data.resumeGenerationPP,
resumeGenerationTerm : data.resumeGenerationTerm,
hasPP : (data.privacyPolicies !== false),
hasTerm : (data.termsAndConditions !== false),
userHasActiveGDPRSubscription : data.userHasActiveGDPRSubscription
};
},
methods: {
classForElement: function(snippetType, sections) { // used in badge_tag_a and badge_change_brand for snippet creation.
var info = this.doc.badge_info;
return 'iubenda-' + info.badge_style + // style
(info.no_brand ? ' no-brand' : '') + // no-brand
' iubenda-noiframe iubenda-embed' + // default class
(info.only_legal || sections ? ' iub-legal-only' : '') + // legal only class / always true for sections
((info.no_markup && snippetType === 'directEmbed') ? ' iub-no-markup' : ''); // iubenda no markup
},
/*
getContentIntegrationClass return css class to be applied on integration box div container.
It returns:
- "col-lg colum" (default)
- "col-lg-6 colum" in case all four integration boxes should be shown.
- This could happen when:
If ConsentSolution is activated or if user has already activated it +
If Terms And Conditions are activated ( for now if isSuperUser == true) +
If Cookie Solution is already activated or site type != Mobile.
- or simply, when user've actived them all
*/
getContentIntegrationClass: function(integrations){
var addClass = '';
if ( this.userLogged ){
if ( ((this.showConsentSolution || integrations[3].activated) && (this.appKind !== 'MobileApplication' || integrations[1].activated) && this.tcEnabled) /* && !this.siteHasGDPR */ ){
addClass = '-6';
} else if ( integrations[0].activated && integrations[1].activated && integrations[2].activated && integrations[3].activated /* && !this.siteHasGDPR */ ){
addClass = '-6';
}
} else {
addClass = '-6';
}
return 'col-lg' + addClass + ' column';
},
allDocsToResume: function(){
if ( this.hasPP && this.hasTerm ) {
if (typeof this.resumeGenerationPP[0] === 'string' && typeof this.resumeGenerationTerm[0] === 'string' ) {
return true;
}
} else if ( this.hasPP && typeof this.resumeGenerationPP[0] === 'string') {
return true;
} else if ( this.hasTerm && typeof this.resumeGenerationTerm[0] === 'string') {
return true;
}
return false;
},
getResumeHref: function(docKind){
if (docKind === 'privacy_policy'){
return this.resumeGenerationPP[0];
} else if (docKind === 'terms_and_conditions'){
return this.resumeGenerationTerm[0];
}
},
docIsCompleted: function(docKind){
if (docKind === 'privacy_policy'){
if (this.resumeGenerationPP.length !== 0){
return false;
}
} else if (docKind === 'terms_and_conditions'){
if (this.resumeGenerationTerm.length !== 0){
return false;
}
}
return true;
},
showIntegration: function(integration){
var key = integration.key;
var activated = integration.activated;
if ( this.appKind === 'MobileApplication' && key === 'cookie_solution' && !activated) {
return false;
}
if (key === 'terms_and_conditions' && !this.tcEnabled) {
if (activated){
return true;
}
return false;
}
if (key === 'consent_solution'){
// this.userlogged check: if a day GDPR will be available for normal user too, they must be logged-in.
if (this.showConsentSolution || activated){
return true;
}
return false;
}
return true;
},
mountPPCopyToClipBoard: function(){
JsFlowPage.copyToClipboard().init({
clipBoardAddedClass: '.pp_clipboard',
labels : {
default : labels.copy,
success : labels.copied
}
});
},
mountCPCopyToClipBoard: function(){
JsFlowPage.copyToClipboard().init({
clipBoardAddedClass: '.cp_clipboard',
labels: {
default: labels.copy,
success: labels.copied
}
});
},
mountConsentSolutionCopyToClipBoard: function(){
JsFlowPage.copyToClipboard().init({
clipBoardAddedClass: '.consent_clipboard',
labels : {
default : labels.copy,
success : labels.copied
}
});
},
handleResponse: function(elem, result){
var _this = this;
var timeToReload = 0;
result = result.body;
elem.formSubmit(false);
if (result.message) {
timeToReload = 3000;
AlertMessage.show({
message: result.message,
type: result.success ? 'success' : 'error',
timerHide: timeToReload
});
}
setTimeout(function(){
_this.checkRedirect(result, elem);
}, timeToReload);
},
checkRedirect: function(result, elem) {
if (result.action) {
if (result.action.redirect_to){
window.location = result.action.redirect_to;
if (result.action.redirect_to.indexOf('#') + 1) { // if new url has anchor, window won't be reloaded.
window.location.reload(true);
}
} else if (result.action.facebox) {
// Modal.lightbox(result.action.facebox);
var size = 'large';
var faceboxUrl = result.action.facebox;
if (faceboxUrl.indexOf('start_edit') !== -1 ) {
// modal for edit site is medium
size = 'medium';
}
if (elem) {
elem.data('modal-size', size);
elem.data('lightbox','');
}
var onClose = function(elem){
if (elem) {
elem.removeData('modal-size');
elem.removeData('lightbox');
}
};
Modal.lightbox(faceboxUrl, {
size: size,
onClose: function(){ onClose(elem); }
});
} else {
window.location.reload();
}
}
}
}
});
})( window.vueBus, window.Vue, window.vueVariables, window.JsFlowPage, window.LABELS.generic.nav);
/* eslint-disable */
(function(w, $, bus, values ) {
'use strict';
w.languageNavTabs = {
template: '<div></div>',
props: ['embeddingTypeKind', 'legalDocumentSuffix'],
data: function() {
return {
tabToChange: {
cs: values.channels,
policies: [ 'widget_footer', 'direct_link','direct_embed']
},
siteLanguages: values.siteLanguages,
currentLanguage: ''
};
},
methods: {
languageSelected: function(lang) {
bus.$emit('language-' + this.legalDocumentSuffix + '-chosen', lang);
if (this.currentLanguage) {
this.getContent(this.currentLanguage).removeClass('active');
}
this.currentLanguage = lang;
this.getContent(lang).addClass('active');
},
getContent: function(lang) {
return $('[aria-labelledby="nav-' + lang + '-' + this.embeddingTypeKind + '-' + this.legalDocumentSuffix + '-tab"]');
}
},
mounted: function() {
var _this = this;
var selected = '';
var languages = [];
var i;
for (i = 0; i < this.siteLanguages.length; ++i){
var siteLanguage = this.siteLanguages[i];
languages.push(siteLanguage.code);
if (siteLanguage.active) {
selected = siteLanguage.code;
}
}
var lt = new LanguageTabs(languages, selected);
var callback = function(lang) {
_this.languageSelected(lang);
};
lt.onTabChanged(callback);
lt.onUserTabChanged(callback);
var tabs = lt.render();
tabs.addClass('px-4');
this.$nextTick(function() {
$(this.$el).append(tabs);
});
}
};
})(window, window.$, window.vueBus, window.vueVariables);
/* eslint-disable */
(function(bus, Vue, labels, AlertMessage) {
'use strict';
// if we declare this mixin as a variable to pass to the compontents (eg: mixins: [const], the Basic here explained: https://vuejs.org/v2/guide/mixins.html),
// the showPopUpIfDenied method will not be directly available on templates, and the solution is pass the mixin to Vue instances too.
// We can avoid this issue problem above explained by declaring the mixin as global instance
// PAY ATTENTION: mixin method will available along the whole Vue instances and components.
Vue.mixin({
methods: {
errorOnForm: function(data){
var message = '';
var cb = data.cbForRollback || function(){};
try {
message = data.message || JSON.parse(data.body).message;
} catch (e) {
message = labels.generic_error;
}
AlertMessage.show( { message: message, type:'error' } );
cb();
}
},
mounted: function() {
var _this = this;
bus.$on('error-on-form', function (data) {
_this.errorOnForm(data);
});
}
});
})( window.vueBus, window.Vue, window.LABELS.generic.messages, window.AlertMessage);
/* eslint-disable */
/* global goProModalUrl */
(function(w, $, Vue) {
'use strict';
var tmpProModalUrl = '';
// if we declare this mixin as a variable to pass to the compontents (eg: mixins: [const], the Basic here explained: https://vuejs.org/v2/guide/mixins.html),
// the showPopUpIfDenied method will not be directly available on templates, and the solution is pass the mixin to Vue instances too.
// We can avoid this issue problem above explained by declaring the mixin as global instance
// PAY ATTENTION: mixin method will available along the whole Vue instances and components.
Vue.mixin({
methods: {
classForDenied: function(style, id) {
if (style === 'nostyle'){
style = 'no_style';
}
return ' feature_denied ' + style + ' pp_' + id;
},
removeClassForDenied: function(){ // TO DO: in case of user payment
},
restoreGoProModalUrl: function(){
// window.goProModalUrl = tmpProModalUrl;
},
denied: function(elem){
if ( elem.hasClass('feature_denied') ) {
return true;
}
},
blockIfDenied: function(event, doc){
var elem = $(event.target);
if ( this.denied(elem) ) {
tmpProModalUrl = goProModalUrl;
// little hack: PopoverManager.init need the go_pro_modal_url string
// for "learn more button" but this info is not available on /flow
// page. So it need to implemented runtime
window.goProModalUrl = doc.basic_info.go_pro_modal_url;
// prevent click
this.removeDataToggle(elem);
elem.click(function(e) {
e.preventDefault();
});
}
},
removeDataToggle: function(el){
$(el).removeAttr('data-toggle');
},
addDataToggle: function(){ // TO DO: in case of user payment
}
}
});
})(window, window.$, window.Vue);
/* eslint-disable */
(function(w, Vue, $, bus, datas, labels) {
'use strict';
Vue.component('badge-change-brand', {
template: '#badge-change-brand-template',
props: ['embeddingType', 'noBrandLayout', 'doc'],
data: function () {
return {
labels : labels
};
},
methods: {
onMouseOn: function(event, doc){
this.blockIfDenied(event, doc);
},
onMouseOut: function(event){
this.restoreGoProModalUrl(event);
},
rollBack: function(what){
if (what === 'no_brand'){
this.doc.badge_info.no_brand = !this.doc.badge_info.no_brand;
} else {
this.doc.badge_info.badge_style = this.currentStyle;
}
bus.$emit('pp-code-embed-changed', this.doc.badge_info );
},
getCssClassForLabelContainer: function(iubendaBadgeStyle){
var cssClass = 'form-check';
var doc = this.doc;
if (!doc.basic_info.is_pro && doc.badge_info.needs_pro[iubendaBadgeStyle] ){
cssClass += this.classForDenied(iubendaBadgeStyle, doc.basic_info.id);
}
return cssClass;
},
onStyleChanged: function(whatIsChanged){
whatIsChanged = whatIsChanged || 'no_brand';
var _this = this;
var badgeChange = this.doc.badge_info;
var currentBadgeStyles = {
no_brand : badgeChange.no_brand,
doc_type : badgeChange.doc_type,
badge_style : badgeChange.badge_style === 'no_style' ? 'nostyle' : badgeChange.badge_style,
changed : ($(this.$el).hasClass('style') ? 'style' : 'brand') // TO DO
};
var data = {badge_change_params: currentBadgeStyles};
var url = badgeChange.url_for_update;
bus.$emit('pp-code-embed-changed', this.doc.badge_info );
this.$http.post(url, data)
.then(
function(result){
var jsonParsed = result.body;
if (jsonParsed.success) {
bus.$emit('reload-badge', currentBadgeStyles);
this.currentStyle = currentBadgeStyles.badge_style;
} else {
bus.$emit('error-on-form', {
body: jsonParsed.data,
cbForRollback: function(){_this.rollBack(whatIsChanged);}
}
);
}
}, function(){
bus.$emit('error-on-form', {
body: '',
cbForRollback: function(){_this.rollBack(whatIsChanged);}
}
);
}
);
}
},
mounted: function() {
this.currentStyle = this.doc.badge_info.badge_style;
}
});
})(window, window.Vue, window.$, window.vueBus, window.vueVariables, window.LABELS.documentIntegration.siteApp.badgeChange);
/* eslint-disable */
/* global console */
(function(w, $, bus, values, labels ) {
'use strict';
w.badgePreviews = {
template: '#badge-previews-template',
data: function() {
return {
privacy_policy : values.privacyPolicies[0] || false, // || false is little hack for better handle conditions
cookie_policy : values.cookiePolicies[0] || false, // || false is little hack for better handle conditions
term_and_condition : values.termsAndConditions[0] || false // || false is little hack for better handle conditions
};
},
methods: {
badgeIdElement: function(doc ){
return 'badge-for-' + doc.document_type + '-' + doc.basic_info.public_id;
},
containerBadgeIdElement: function(doc){
return 'container-badge-for-' + doc.document_type + '-' + doc.basic_info.public_id;
},
idForDivScript: function(doc){
return 'script-for-' + doc.document_type + '-' + doc.basic_info.public_id;
},
mountPreviews: function(_this){
var docs = [_this.privacy_policy, _this.cookie_policy, _this.term_and_condition ];
$.each( docs, function( key, doc ) {
if (doc && typeof _this.getResumeHref(doc.document_type) === 'undefined' ) {
// build template element
_this.buildTemplates(doc);
// mount template badgeTagA
var dataForBadgeTagA = {
doc : doc,
privacyPolicyButtonTitle : labels[key],
iubendaJsUrl : values.iubendaJsUrl
};
new w.badgeTagA({
data: dataForBadgeTagA
}).$mount('#' + _this.badgeIdElement(doc) );
}
});
},
buildTemplates: function(doc){
var idContainerBadgeElement = this.containerBadgeIdElement(doc);
var idBadgeElement = this.badgeIdElement(doc);
var idForScript = this.idForDivScript(doc);
$('#' + idContainerBadgeElement).empty(); // remove old badge preview if exists
$('#' + idContainerBadgeElement).append('<div id="' + idBadgeElement + '"></div>'); // append div for badge (tag a)
$('#' + idBadgeElement).after('<div id="' + idForScript + '"></div>'); // append script too
}
},
mounted: function() {
var _this = this;
_this.mountPreviews(_this);
bus.$on('reload-badge', function () {
_this.mountPreviews(_this); // mount template badgeTagA (extend) whenever badge style changes.
});
}
};
})(window, window.$, window.vueBus, window.vueVariables, window.LABELS.documentIntegration.siteApp.previewTitles);
/* eslint-disable */
(function(w, $, Vue, datas, bus, labels) {
'use strict';
Vue.component('embedding-style-tabs', {
template: '#embedding-style-tabs-template',
props: ['doc', 'render'],
data: function(){
return {
tabs : datas.embeddingTypes,
labels : labels
};
},
methods: {
onMouseOn: function(event, doc){
this.blockIfDenied(event, doc);
},
onMouseOut: function(event){
this.restoreGoProModalUrl(event);
},
getId: function(kind) {
return kind + '-tab';
},
getCssClass: function(embeddingStyle){
var kindOfEmbedding = embeddingStyle.kind;
var cssClass = (embeddingStyle.render.active ? 'active' : '');
if (!this.doc.basic_info.is_pro && this.doc.badge_info.needs_pro[kindOfEmbedding] ){
cssClass += this.classForDenied(kindOfEmbedding, this.doc.basic_info.id);
}
return cssClass;
},
getHref: function(kind){
return '#' + kind;
},
labelledBy: function(kind){
return kind;
},
getAriaSelected: function(kind){
return kind;
},
}
});
})(window, window.$, window.Vue, window.vueVariables, window.vueBus, window.LABELS.documentIntegration.globals.embeddingTypes);
/* eslint-disable */
(function(w, $, labels, ns) {
'use strict';
w.legalDocument = {
template: '#legal-document-template',
mixins: [ns.translatable],
props: ['legalDocumentUrl', 'embeddingTypeKind', 'title', 'doc', 'noPlaceAlertWarning'],
data: function(){
return {
link : labels.placeThisCode,
text : labels.placeThisCodeText
};
},
components: {
'embedding-code' : w.embeddingCode
},
mounted: function(){
this.mountPPCopyToClipBoard();
}
};
})(window, window.$, window.LABELS.documentIntegration.siteApp, namespace("vueComponents"));
/* eslint-disable */
(function(w, $, datas) {
'use strict';
w.legalDocumentsPanel = {
template: '#legal-documents-panel-template',
props: ['embeddingTypeKind', 'noPlaceAlertWarning', 'documentToShow'],
data: function(){
return {
siteLanguages : datas.siteLanguages,
privacyPolicies : datas.privacyPolicies || false,
cookiePolicies : datas.cookiePolicies || false,
termsAndConditions : datas.termsAndConditions || false,
availLanguages : datas.availLanguages || ['en', 'it']
};
},
methods: {
getPrivacyPolicyByLang: function(lang){
return this.getDocByLang(this.privacyPolicies, lang);
},
getCookiePolicyByLang: function(lang){
return this.getDocByLang(this.cookiePolicies, lang);
},
getTermsAndConditionsByLang: function(lang){
return this.getDocByLang(this.termsAndConditions, lang);
},
getTermsAndConditionsTitleByLang: function(lang){
var useLang = (this.availLanguages.indexOf(lang) > -1 ? lang : 'en');
var doc = this.getDocByLang(this.termsAndConditions, useLang);
return doc && doc.title;
},
getPrivacyPolicyTitleByLang: function(lang){
return I18n.t('js.embedding.privacy_policy', { locale: lang });
},
getCookiePolicyTitleByLang: function(lang){
return I18n.t('js.embedding.cookie_policy', { locale: lang });
},
getDocByLang: function(docs, lang){
var found = null;
$.each( docs, function( key, doc ) {
if (doc.basic_info.lang.toLowerCase() === lang.toLowerCase() ) {
found = doc;
return false;
}
});
return found;
},
labelledBy: function(lang){
return 'nav-' + lang + '-' + this.embeddingTypeKind + '-policies-tab';
}
},
beforeMount: function(){
// ensure current locale is set
I18n.locale = I18n.locale || vueVariables.locale;
},
components: {
'legal-document' : w.legalDocument
}
};
})(window, window.$, window.vueVariables);
/* eslint-disable */
(function(Vue, bus, datas, labels) {
'use strict';
Vue.component('opts-change', {
template: '#opts-change-template',
props: ['noMarkup', 'doc'],
data: function () {
return {
labels : labels
};
},
computed: {
isTheSectionOptionVisible: function() {
return Object.keys(this.doc.urls.api.sections).length > 0;
}
},
methods: {
rollBackSimplifiedPrivacyPolicy: function(){
this.doc.badge_info.pp_simplified = !this.doc.badge_info.pp_simplified;
bus.$emit('pp-code-embed-changed', this.doc.badge_info );
},
onStyleChanged: function(what) {
var badgeInfo = this.doc.badge_info;
if (what === 'embed_each_part_separately') {
if (this.doc.badge_info.embed_each_part_separately) {
this.doc.badge_info.pp_simplified = false;
}
what = 'pp_simplified';
}
if (what === 'pp_simplified') {
badgeInfo.only_legal = !badgeInfo.only_legal;
if (this.doc.badge_info.pp_simplified) {
this.doc.badge_info.embed_each_part_separately = false;
}
}
var currentBadgeStyles = {
no_markup : badgeInfo.no_markup,
doc_type : badgeInfo.doc_type,
badge_style : badgeInfo.badge_style,
changed : 'brand', // ($(event.target).hasClass('style') ? 'style' : 'brand'), // TO DO
embed_legal_only : badgeInfo.only_legal,
embed_each_part_separately : badgeInfo.embed_each_part_separately
};
var data = {opts_badge_change_params: currentBadgeStyles};
var url = badgeInfo.url_for_opts_change;
var _this = this;
bus.$emit('pp-code-embed-changed', this.doc.badge_info);
this.$http.post(url, data)
.then(
function(result){
var jsonParsed = result.body;
if (jsonParsed.success) {
bus.$emit('reload-badge', currentBadgeStyles );
this.mountPPCopyToClipBoard();
if ( what === 'pp_simplified') {
this.doc.badge_info.only_legal = !this.doc.badge_info.pp_simplified;
}
} else {
bus.$emit('error-on-form', {
body: jsonParsed.data,
cbForRollback: _this.rollBackSimplifiedPrivacyPolicy
}
);
}
},function(){
bus.$emit('error-on-form', {
body: '',
cbForRollback: _this.rollBackSimplifiedPrivacyPolicy
}
);
}
);
}
},
});
})(window.Vue, window.vueBus, window.vueVariables, window.LABELS.documentIntegration);
/* eslint-disable */
(function(w, variables, CSConfiguratorVersionChecker) {
'use strict';
var csConfigChecker = new CSConfiguratorVersionChecker(1552320000000);
w.cookieSolutionImplementations = {
template: '#cookie-solution-implementations-template',
props: ['embeddingTypeKind', 'csConfigurations'],
data: function() {
return {
cookieSolutions: w.vueVariables.cookieSolutions,
csConfig: variables.csConfigurations
};
},
methods: {
labelledBy: function(lang) {
return 'nav-' + lang + '-channel-cs-tab';
}
},
computed: {
showUpdateBanner: function() {
if (!this.csConfig.banner) {
return false;
}
return csConfigChecker.isCssWarningNecessary(this.csConfig.banner.applyStyles, new Date(this.cookieSolutions[0].basic_info.updated_at).getTime(), this.csConfig.banner.css);
}
},
components: {
'cs-code': w.csCode
}
};
})(window, window.vueVariables, CSConfiguratorVersionChecker);
/* eslint-disable */
(function(w, bus, variables ) {
'use strict';
w.csEnabledComponent = {
template: '#cs-enabled-template',
data: function () {
return {
pConsentPreference: variables.cookieSolutions[0].basic_info,
configuration: variables.cookieSolutions[0].basic_info.configuration
};
},
methods: {
rollBack: function(){
this.pConsentPreference.enabled = !this.pConsentPreference.enabled;
},
pConsentPreferenceChange: function(){
var _this = this;
var enabled = this.pConsentPreference.enabled;
var data = {cookie_solution: {pconsent_preference: enabled, configuration: this.configuration} };
this.$http.put(this.pConsentPreference.request_url, data )
.then(
function(result){
var body = result.body;
if (result.status === 200) {
var csNum = variables.cookieSolutions.length;
for (var i = 0; i < csNum; i++){
variables.cookieSolutions[i].basic_info.enabled = body.cookie_solution.pconsent_preference;
}
} else {
bus.$emit('error-on-form', {
body: body,
cbForRollback: _this.rollBack
}
);
}
}, function(){
bus.$emit('error-on-form', {
body: '',
cbForRollback: _this.rollBack
}
);
}
);
}
}
};
})(window, window.vueBus, window.vueVariables);
/* eslint-disable */
/* global CSConfigurator */
(function(w, bus, JsFlowPage, data, Modal, labelEmbedTheBanner) {
'use strict';
w.embedTheBanner = {
template: '#embed-the-banner-template',
props: ['embeddingTypeKind'],
data: function() {
return {
labelEmbedTheBanner: labelEmbedTheBanner,
csConfigurations: data.csConfigurations,
channels: data.channels
};
},
methods: {
containerDivId: function(channel) {
return 'cs_channel_' + channel + '_container';
}
},
components: {
'cookie-solution-implementations': w.cookieSolutionImplementations,
'select-channel': w.selectChannel,
'language-nav-tabs': w.languageNavTabs
},
mounted: function() {
this.mountCPCopyToClipBoard();
Modal.registerCallback('open', function() {
setTimeout(function() {
if (typeof CSConfigurator !== 'undefined'){
CSConfigurator.registerOnConfigPersistedCallback(function(CSConfig) {
bus.$emit('cs-configurations-changed', CSConfig);
});
}
}, 1000);
});
}
};
})(window, window.vueBus, window.JsFlowPage, window.vueVariables, window.Modal, window.LABELS.cookieSolution.embedTheBanner);
/* eslint-disable */
(function(w, $, labels, datas ) {
'use strict';
w.integrationForFacebook = {
template: '#integration-for-facebook-template',
props: ['legalDocumentUrl', 'embeddingTypeKind', 'title', 'privacyPolicy'],
data: function(){
return {
labels : labels.facebookApp,
privacyPolicies : datas.privacyPolicies,
termsAndConditions : datas.termsAndConditions,
siteId : datas.siteId,
guides : labels.guides,
tab : null
};
},
methods: {
facebookPanelUrl: function(){
return 'https://developers.facebook.com/apps/' + this.siteId + '/appdetails';
},
goToFacebookPanel: function(event){
w.JsFlowPage.openPopUp(event, this.facebookPanelUrl());
}
},
components: {
'language-nav-tabs' : w.languageNavTabs,
'badge-previews' : w.badgePreviews,
'legal-documents-panel' : w.legalDocumentsPanel,
'embedding-code' : w.embeddingCode,
'help-section-doc' : w.helpSectionDoc
},
mounted: function(){
var self = this;
this.mountPPCopyToClipBoard();
$(window).on('main-tab-clicked', function(event, data) {
self.tab = 'widget_footer-tab';
});
this.mountPPCopyToClipBoard();
},
computed: {
isTheTabOpen: function() {
return this.tab !== null;
}
}
};
})(window, window.$, window.LABELS.documentIntegration, window.vueVariables );
/* eslint-disable */
(function(w, $, labels, datas ) {
'use strict';
w.integrationForMobileApp = {
template: '#integration-for-mobile-app-template',
props: ['legalDocumentUrl', 'embeddingTypeKind', 'title', 'privacyPolicy'],
data: function(){
return {
labels : labels.mobileApp,
privacyPolicies : datas.privacyPolicies,
termsAndConditions : datas.termsAndConditions,
siteId : datas.siteId,
embeddingTypes : datas.embeddingTypes,
guides : labels.guides,
tab : null,
embedSection : 'direct_link'
};
},
components: {
'language-nav-tabs' : w.languageNavTabs,
'badge-previews' : w.badgePreviews,
'legal-documents-panel' : w.legalDocumentsPanel,
'embedding-code' : w.embeddingCode,
'help-section-doc' : w.helpSectionDoc
},
mounted: function() {
var self = this;
$(window).on('main-tab-clicked', function(event, data) {
self.tab = data.tab;
self.embedSection = data.tab === 'direct_link-tab' ? 'direct_link': 'direct_embed';
});
this.mountPPCopyToClipBoard();
},
methods: {
subTabSelected: function(data) {
this.embedSection = data.el === 'direct_link-tab' ? 'direct_link': 'direct_embed';
this.tab = data.el;
}
},
computed: {
isTheTabOpen: function() {
return this.tab !== null;
}
}
};
})(window, window.$, window.LABELS.documentIntegration, window.vueVariables );
/* eslint-disable */
(function(w, $, label, data ) {
'use strict';
w.integrationForSite = {
template: '#integration-for-site-template',
props: ['legalDocumentUrl', 'embeddingTypeKind', 'title', 'privacyPolicy'],
data: function(){
return {
label : label,
privacyPolicies : data.privacyPolicies,
termsAndConditions : data.termsAndConditions,
siteLanguages : data.siteLanguages,
integrations : data.integrations,
embeddingTypes : data.embeddingTypes,
iubendaJsUrl : data.iubendaJsUrl,
appKind : data.appKind,
guides : label.guides,
tab : null,
};
},
components: {
'help-section-doc' : w.helpSectionDoc,
'language-nav-tabs' : w.languageNavTabs,
'badge-previews' : w.badgePreviews,
'legal-documents-panel' : w.legalDocumentsPanel,
'embedding-code' : w.embeddingCode
},
mounted: function() {
var self = this;
this.mountPPCopyToClipBoard();
$(window).on('main-tab-clicked', function(event, data) {
self.tab = data.tab;
});
},
methods: {
subTabSelected: function(data) {
this.tab = data.el;
}
},
computed: {
isTheTabOpen: function() {
return this.tab !== null;
}
}
};
})(window, window.$, window.LABELS.documentIntegration, window.vueVariables);
/* eslint-disable */
(function(w, bus, data) {
'use strict';
w.consentSolutionCode = {
template: '#consent-solution-code-template',
props: ['embeddingType'],
data: function() {
return {
bus: bus,
labels: w.LABELS.consentSolution,
snippet: '',
consentSolutionConfiguration: data.consentSolution,
selectedChannel: 'current',
scriptSnippetUrls: {
current: 'https://cdn.iubenda.com/cons/iubenda_cons.js',
beta: 'https://cdn.iubenda.com/cons/beta/iubenda_cons.js'
},
apiSnippetUrls: {
current: {
consent: 'https://consent.iubenda.com/consent/',
subject: 'https://consent.iubenda.com/subjects/'
},
beta: {
consent: 'https://consent.iubenda.com/beta/consent/',
subject: 'https://consent.iubenda.com/beta/subjects/'
}
}
};
},
methods: {
getSnippet: function(embeddingType) {
return embeddingType;
}
},
mounted: function() {
this.mountConsentSolutionCopyToClipBoard();
var _this = this;
this.bus.$on('consent-solution-changed', function(csConfs) {
_this.addBasicInfoToCsConfigurations(csConfs);
});
this.bus.$on('consent-channel-changed', function(channel) {
_this.selectedChannel = channel;
});
},
computed: {
snippetArrayInstructions: function() {
return 'var _iub = _iub || {}; _iub.cons_instructions = _iub.cons_instructions || [];';
},
privateApiKey: function() {
return this.consentSolutionConfiguration.consent_solution.private_api_key;
},
publicApiKey: function() {
return this.consentSolutionConfiguration.consent_solution.public_api_key;
},
scriptSnippet: function() {
return '<script type="text/javascript">' + this.snippetArrayInstructions + ' _iub.cons_instructions.push(["init", {api_key: "' + this.publicApiKey + '"}]);'+'</' + 'script>'+'<' + 'script type="text/javascript" src="' + this.scriptSnippetUrls[this.selectedChannel] + '" async>' + '</' + 'script>';
},
apiSnippetConsent: function() {
return 'curl -H "ApiKey: ' + this.privateApiKey + '" -X POST "' + (this.apiSnippetUrls[this.selectedChannel] || {}).consent + '"';
},
apiSnippetSubject: function() {
return 'curl -H "ApiKey: ' + this.privateApiKey + '" -X POST "' + (this.apiSnippetUrls[this.selectedChannel] || {}).subject + '"';
}
}
};
})(window, window.vueBus, window.vueVariables);
/* eslint-disable */
/* global $ */
(function(w) {
'use strict';
w.selectChannelConsent = {
template: '#select-channel-consent-template',
data: function() {
return {
selected: 'current',
channels: w.vueVariables.consentChannels
};
},
methods: {
setConsentChannel: function() {
w.vueBus.$emit('consent-channel-changed', this.selected);
}
}
};
})(window);
/* eslint-disable */
(function(w, bus, variables, label ) {
'use strict';
w.syncronyzeDocComponent = {
template: '#syncronize-doc-template',
data: function () {
return {
docsVersioningEnabled: variables.consentSolution.consent_solution.docs_versioning_enabled,
docVersioningEnabledSUrl: variables.docVersioningEnabledSUrl
};
},
methods: {
rollBack: function(){
this.docsVersioningEnabled = !this.docsVersioningEnabled;
},
syncronizeDocChange: function(){
var _this = this;
var enabled = this.docsVersioningEnabled;
this.$http.put(this.docVersioningEnabledSUrl, { docs_versioning_enabled: enabled } )
.then(
function(result){
var body = result.body;
if (result.status === 200) {
// do nothing
} else {
bus.$emit('error-on-form', {
body: body,
cbForRollback: _this.rollBack
}
);
}
}, function(){
bus.$emit('error-on-form', {
body: '',
cbForRollback: _this.rollBack
}
);
}
);
}
},
components: {
'select-channel-consent': w.selectChannelConsent
}
};
})(window, window.vueBus, window.vueVariables);
</script>
<div class="container position-relative my-5">
<div id="site-info">
<section class="my-5 d-block d-lg-flex">
<div class="text-center text-lg-left pr-0 pr-lg-3 mb-4 mb-lg-0">
<div class="d-inline-block shape xxl circle outline text-dark-gray">
<img src="/assets/site/red/products/website_stroke-5f1cab1338433df2cb34b776aff3a1e3.svg" width="48" height="48" v-if="appKind === 'Site'"/>
<img src="/assets/site/red/products/custom_area_site_stroke-5f1cab1338433df2cb34b776aff3a1e3.svg" width="48" height="48" v-if="appKind === 'CustomAreaSite'"/>
<img src="/assets/site/red/products/facebook_app_stroke-05f2f4847b38e05ad7715bd321ae8b16.svg" width="48" height="48" v-if="appKind === 'FacebookApplication'"/>
<img src="/assets/site/red/products/mobile_app_stroke-cbca3b3ab984f752335100477354012d.svg" width="48" height="48" v-if="appKind === 'MobileApplication'"/>
</div>
</div>
<div class="w-100 min-width-0">
<div>
<div class="d-flex justify-content-between align-items-center mb-2">
<div class="oh">
<h2 class="text-xl mb-0 text-truncate mr-2" v-html="siteInfo.siteName"></h2>
</div>
<div class="ml-2 flex-shrink">
<a class="btn btn-sm btn-highlighted-blue text-secondary edit-site" v-on:click="startEdit($event)" v-bind:href="siteInfo.editUrl">
{{ labels.edit }}
</a>
<a class="btn btn-dark-gray btn-sm text-dark lightbox" href="/en/sites/2175924/duplicate_form" data-toggle="tooltip" data-placement="bottom" title="Duplicate">
<i class="i-duplicate lg"></i>
</a>
<a v-bind:href="siteInfo.deleteUrl" @click="deleteSite($event)" class="btn btn-dark-gray btn-sm text-dark delete-site" data-toggle="tooltip" data-placement="bottom" title="Delete">
<i :data-href="siteInfo.deleteUrl" class="i-trash-fill lg"></i>
</a>
</div>
</div>
<hr class="mt-2 mb-2">
<div class="row no-gutters">
<div class="col-lg">
<ul class="list-unstyled">
<template v-if="appKind !== 'CustomAreaSite'">
<li class="list-inline-item mr-lg-4" v-if="!siteInfo.isUltra && siteInfo.isPro">
<div class="text-right text-secondary text-sm font-weight-bold">
<div class="shape sm bg-secondary d-inline-block circle bullet_spark text-secondary mr-2"></div> Pro
</div>
</li>
<li class="list-inline-item mr-lg-4" v-else-if="siteInfo.isUltra">
<div class="text-right text-ultra text-sm font-weight-bold">
<div class="shape sm bg-ultra d-inline-block circle bullet_spark text-ultra mr-2"></div> Ultra
</div>
</li>
<!-- TODO|ULTRA: when ultra billing hits production, remove ultraBillingEnabled check -->
<!-- when ultraBillingEnabled is enabled, upgrade button is shown if site is not ULTRA -->
<!-- when ultraBillingEnabled is disabled, upgrade button is shown when site is not PRO and it has PPS -->
<!-- the check if site is empty depends on the fact that the update button MUSTN'T be shown -->
<li class="list-inline-item mr-lg-4" v-if="showUpgradeButton">
<a v-bind:href="siteInfo.goProModalUrl" @click="updateSite($event)" class="btn btn-sm btn-primary px-2 py-0 switch_pro_header lightbox"> {{ labels.upgradeButton }} </a>
</li>
</template>
<li class="list-inline-item mr-lg-4">
<span class="text-light" v-html="labels.type + ':'"></span>
<span> {{ siteInfo.appType }} </span>
</li>
<li class="list-inline-item mr-lg-4" v-if="siteInfo.appOwner != ''">
<span class="text-light" v-html="labels.owner + ':'"></span>
<span v-html="ownerText"></span>
</li>
<li class="list-inline-item mr-lg-4" v-if="labels.basedIn" style="display: none">
<span class="text-light" v-html="labels.basedIn + ':'"></span>
<span> {{ siteInfo.appBasedIn}} </span>
</li>
</ul>
</div>
<div class="col-lg text-lg-right">
<div v-if="appKind !== 'CustomAreaSite'" class="language-handler-wrapper d-inline-flex justify-content-lg-end flex-wrap">
<span class="text-light mr-2" v-html="labels.documentLanguages"></span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- </site-info> -->
</div>
<script>
/* eslint-disable */
/* global $, Modal */
(function(w, Vue, bus, data, labels, LanguageHandler) {
'use strict';
w.SiteInfo = new Vue({
el: '#site-info',
data: {
siteInfo : data.siteInfo,
ppsEmpty : (data.privacyPolicies === false || typeof data.privacyPolicies === 'undefined') ? true : false,
labels : labels,
deleteLangRequested: false
},
methods: {
getAddedLanguages: function() {
return (this.siteInfo.appLanguages || []).map(function(lang) {
return {label: lang.value, value: lang.code}
});
},
getAddableLanguages: function() {
return (this.siteInfo.addableLanguages || []).map(function(lang) {
return {label: lang.value, value: lang.code}
});
}
},
computed: {
ownerText: function () {
var appOwner = this.$data.siteInfo.appOwner;
var firstRow = appOwner.split('\n')[0];
var ellypses = '';
if (firstRow.length > 30){
ellypses = '...';
firstRow = firstRow.substr(0, 29);
}
firstRow = firstRow.replace(/<\/?[^>]+(>|$)/g, '');
return firstRow + ellypses;
},
showUpgradeButton: function() {
if(this.siteInfo.UserUnderMT) {
return false;
}
if (!this.siteInfo.isUltra) {
return true;
}
return false;
},
},
mounted: function() {
var _this = this;
var lh = new LanguageHandler(
_this.getAddedLanguages(),
_this.getAddableLanguages(),
_this.siteInfo.addLanguageUrl,
_this.siteInfo.deleteLanguageUrl
);
bus.$on('owner-changed', function(newOwnerText) {
_this.siteInfo.appOwner = newOwnerText;
});
bus.$on('site-name-changed', function(siteName) {
_this.siteInfo.siteName = siteName;
});
$(_this.$el).find('.language-handler-wrapper').append(lh.render());
}
});
})(window, window.Vue, window.vueBus, window.vueVariables, window.LABELS.site, window.LanguageHandler);
</script>
<div id="site-recap">
<!-- <site-recap inline-template> -->
<section class="mt-5 mb-5">
<div class="custom-box-2 rounded flow-box-products">
<div class="row no-gutters columns-border-right main-row">
<div class="text-center" v-bind:class="getContentIntegrationClass(integrations)" v-for="integration in integrations" v-if="showIntegration(integration)">
<div class="p-4 text-center bg-lighter-gray">
<img v-bind:src="integration.src" width="72" height="72"/>
<h3 class="text-lg mt-2" v-html="integration.labels.name"></h3>
</div>
<div class="px-4 py-5" v-if="integration.activated">
<div class="pb-5">
<div class="btn-group custom-btn-group-1 radius-2 mb-2" role="group" aria-label="#" v-if="docIsCompleted(integration.key)">
<button type="button" class="btn btn-light-gray p-2 px-3 text-light" @click="openPreview($event, integration)" v-if="integration.key !== 'cookie_solution' && integration.key !== 'consent_solution'">
<i class="i-eye lg"></i>
<span class="d-none d-lg-inline ml-2 text-xs text-uppercase" v-html="labels.documentIntegration.globals.view"></span>
</button>
<button type="button" class="btn btn-light-gray p-2 px-3 text-light" @click="goOnEditPage($event, integration)" v-if="integration.key !== 'consent_solution'">
<i class="i-pen lg"></i>
<span class="d-none d-lg-inline ml-2 text-xs text-uppercase" v-html="labels.documentIntegration.globals.edit"></span>
</button>
<button type="button" class="btn btn-light-gray p-2 px-3 text-light" v-bind:class="{ 'btn-danger': !integration.embedded }" @click="goOnEmbedSection($event, integration)">
<i class="i-code lg"></i>
<span class="d-none d-lg-inline ml-2 text-xs text-uppercase" v-html="labels.documentIntegration.globals.embed"></span>
</button>
</div>
<div class="mb-2" role="group" aria-label="#" v-else>
<a v-bind:href="getResumeHref(integration.key)" class="alert alert-warning text-sm d-inline-block mb-0" v-html="integration.labels.resumeGeneration"></a>
</div>
<p class="centered mt-2 mb-0" v-if="integration.key === 'cookie_solution' && docIsCompleted(integration.key)">
<a v-bind:href="cookieAnalyticsUrl" class="btn btn-sm m-2 btn-dark-gray fwbtnsidebar" v-html="labels.documentIntegration.globals.cookieLawAnalitics"></a>
</p>
<p class="centered mt-2 mb-0" v-if="integration.key === 'consent_solution'">
<a href class="btn btn-sm m-2 btn-dark-gray fwbtnsidebar" @click="goOnConsentsListSection($event, integration)">
{{labels.documentIntegration.globals.consentsList}}
</a>
</p>
<p class="text-sm text-danger" v-if="!integration.embedded" v-html="integration.labels.notEmbedded"></p>
</div>
<div class="position-absolute pos-bottom-left w-100 p-3">
<div class="text-center" v-if="integration.activated">
<a class="text-light" v-bind:class="classDelete(integration.key)" v-on:click="deleteDoc($event, integration)" v-bind:href="integration.remove_url" v-html="integration.labels.remove">
<i class="i-trash-fill"></i>
</a>
</div>
</div>
</div>
<div class="px-4 py-5 text-left" v-else>
<p class="text-light" v-html="integration.labels.description"></p>
<ul class="list-unstyled mb-4 p-2 list-item-mb-1">
<li>
<a v-bind:href="integration.href.moreInfo" class="link-underline text-dark">
→ {{ integration.labels.moreInfo }}
</a>
</li>
<li>
<a v-bind:href="integration.href.doINeedIt" class="link-underline text-dark">
→ {{ integration.labels.doINeedIt }}
</a>
</li>
</ul>
<div class="text-center" v-if="!integration.activated">
<a class="btn btn-primary text-white px-5 py-2" v-bind:class="classGenerate(integration.key)" v-on:click="startGenerate($event, integration)" v-bind:href="integration.url" v-html="integration.labels.generateNow" rel="nofollow"></a>
<br/>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- </site-recap> -->
</div>
<script>
/* eslint-disable */
/* global Modal, AlertMessage */
(function (w, $, Vue, bus, data, labels) {
'use strict';
w.SiteRecap = new Vue({
el: '#site-recap',
props: ['integration'],
data: {
labels : labels,
siteId : data.siteId,
integrations : data.integrations,
privacyPolicies : data.privacyPolicies,
cookieSolutions : data.cookieSolutions,
consentSolution : data.consentSolution,
termsAndConditions : data.termsAndConditions,
currentDocument : {},
cookieAnalyticsUrl: data.cookieAnalyticsUrl + (data.siteId ? '#' + data.siteId : "")
},
methods: {
classGenerate: function (integration_key) {
return {
'js-privacy-policy-generate-now': integration_key === 'privacy_policy',
'js-terms-generate-now': integration_key === 'terms_and_conditions',
'js-consent-generate-now': integration_key === 'consent_solution',
'js-cookie-solution-generate-now': integration_key === 'cookie_solution'
};
},
classDelete: function (integration_key) {
return {
'js-privacy-policy-delete': integration_key === 'privacy_policy',
'js-terms-delete': integration_key === 'terms_and_conditions',
'js-consent-delete': integration_key === 'consent_solution',
'js-cookie-solution-delete': integration_key === 'cookie_solution'
};
},
openPreview: function (event, integration) {
event.preventDefault();
var documentType = integration.key;
var embedLegalOnly = documentType === 'privacy_policy' ? this.currentDocument[documentType].badge_info.only_legal : false;
w.JsFlowPage.loadBadge( this.currentDocument[documentType].urls.view , embedLegalOnly );
},
goOnEditPage: function (event, integration) {
var _this = this;
var documentType = integration.key;
var elem = $(event.target);
event.preventDefault();
if (documentType === 'cookie_solution') {
var url = this.currentDocument[documentType].urls.edit;
url = (url.indexOf("?") !== -1 ? url + "&no_lay=true" : url + "?no_lay=true");
/**
* New CS Configurator.
* Add extra XHR's GET-parameters `new_csc=true` in case it's present in browser search string
*/
if (window.location.search.indexOf('new_csc') > -1) {
url += '&new_csc=true'
}
this.$http.get(url, {}).then(function(result) {
if (result.body.success === false ){
_this.handleResponse(elem, result);
} else {
Modal.dialog(result.body, {
size: 'full'
});
}
});
} else {
w.JsFlowPage.loadPage(this.currentDocument[documentType].urls.edit);
}
},
goOnConsentsListSection: function(event, integration) {
var documentType = integration.key;
event.preventDefault();
w.JsFlowPage.loadPage(this.currentDocument[documentType].urls.dashboard);
},
goOnEmbedSection: function (event, integration) {
event.preventDefault();
var where = $('#' + integration.documentContainer);
var div = where.find("div.collapse");
var divId = div.attr("id");
var collapse = where.find('.collapsed[data-target="#' + divId + '"]');
collapse.attr('aria-expanded', true);
collapse.removeClass('collapsed');
div.addClass('show');
w.JsFlowPage.goTo(where);
/** The following event will notify to the help section the correct wistia video to render
* in order to prevent an exception with the wistia popover options.
* **/
switch (integration.documentContainer) {
case 'documents-integration':
$(window).trigger('main-tab-clicked', { tab: $('#embedding-styles-tab a.nav-item.active')[0].id });
break;
case 'cookie-solution-integration':
w.cookieTabOpenedEvent();
break;
case 'consent-solution-integration':
$(window).trigger('main-cons-tab-clicked', { tab: 'consentSolutionTabOpened'});
break;
}
},
setCurrentDocument: function(currentLanguage){
var _this = this;
currentLanguage = currentLanguage.toLowerCase();
$.each(_this.privacyPolicies, function (key, privacyPolicy) {
if (privacyPolicy.basic_info.lang.toLowerCase() === currentLanguage) {
_this.currentDocument.privacy_policy = privacyPolicy;
return;
}
});
$.each(_this.cookieSolutions, function (key, cookieSolution) {
if (cookieSolution.basic_info.lang.toLowerCase() === currentLanguage) {
_this.currentDocument.cookie_solution = cookieSolution;
return;
}
});
$.each(_this.termsAndConditions, function (key, termsAndCondition) {
if (termsAndCondition.basic_info.lang.toLowerCase() === currentLanguage) {
_this.currentDocument.terms_and_conditions = termsAndCondition;
return;
}
});
_this.currentDocument.consent_solution = _this.consentSolution;
}
},
mounted: function () {
var _this = this;
_this.setCurrentDocument(bus.currentLanguage);
}
});
})(window, window.$, window.Vue, window.vueBus, window.vueVariables, window.LABELS);
</script>
<div class="bg-white box-shadow-1 py-5 px-3 rounded">
<div class="row ">
<div class="col-lg">
<div class="d-block d-lg-flex text-center text-lg-left align-items-center justify-content-center">
<div class="mr-lg-4 mb-3 mb-lg-0">
<img src="/assets/site/red/products/gdpr-94c281203a438c867c694029c81f7ff2.svg" width="112" height="112"/>
</div>
<div class="w-100 mb-4 mb-lg-0">
<p v-html=<h3 class="text-lg">Internal Privacy Management</h3>
<p>If you operate in the EU or could potentially have EU users, you need to comply with the GDPR's Internal Privacy Management requirements. Our solution helps you to easily record all the data processing activity within your organization so that you can easily comply with <a href="/en/help/5428-gdpr-guide#gdprsuite" class="entry_content">requirements</a> and meet your legal obligations.</p></p>
<p class="m-0">
<a href="https://www.iubenda.com/en/internal-privacy-management" class="link-underline text-light rarr">More info</a>
</p>
</div>
</div>
</div>
<div class="col-lg-4 d-block d-lg-flex text-center text-lg-right align-items-center justify-content-center">
<a href="/en/enable_gdpr_modal/2175924" id="open-gdpr-modal" class="btn btn-primary btn-lg px-5 js-login-wall"> Activate </a>
</div>
</div>
</div>
<script>
// in case user has an active GDPR subscription
$('#open-gdpr-modal').click(function(e){
e.preventDefault();
// used in case site doesn't exist anymore.
$.get('/en/enable_gdpr_modal/2175924' + '?no_lay=true', {}).then(function(result) {
if ( result.success === false ) {
var timeToReload = 3000;
if (result.message) {
AlertMessage.show({message: result.message, type: 'error', timerHide: timeToReload});
}
if (result.action && result.action.redirect_to){
window.location = result.action.redirect_to;
if (result.action.redirect_to.indexOf('#') + 1) { // if new url has anchor, window won't be reloaded.
setTimeout(function(){
window.location.reload(true);
}, timeToReload);
}
}
} else {
Modal.dialog(result, { size:'large' }, false);
}
})
});
</script>
<div id="documents-integration" v-if="!allDocsToResume()">
<section class="mt-5 mb-5" id="policies">
<collapse @tab-opened="tabOpened" v-bind:title="label" v-bind:target="'DocumentIntegration'"></collapse>
<integration-for-site v-if="appKind=='Site'"></integration-for-site>
<integration-for-facebook v-if="appKind=='FacebookApplication'"></integration-for-facebook>
<integration-for-mobile-app v-if="appKind=='MobileApplication'"></integration-for-mobile-app>
</section>
</div>
<script>
/* eslint-disable */
(function(w, Vue, data, labels) {
'use strict';
w.DocumentsIntegrations = new Vue({
el: '#documents-integration',
props: ['privacyPolicy'],
data: {
label: labels.documentIntegration.globals.integrateLegalDocuments,
appKind: data.appKind,
},
components: {
'integration-for-site': w.integrationForSite,
'integration-for-mobile-app': w.integrationForMobileApp,
'integration-for-facebook': w.integrationForFacebook,
collapse: w.collapse
},
methods: {
tabOpened: function() {
/** We can't force the vue component render for a problem with the bootstrap-accordion
* (bootstrap is closing it automatically after the rendering),
* we need to communicate via JS events with the sub-component.
**/
$(window).trigger('main-tab-clicked', { tab: $('#embedding_code a.nav-item.active')[0].id });
}
}
});
})(window, window.Vue, window.vueVariables, window.LABELS);
</script>
<hr class="m-0">
<section class="mt-5 mb-5" id="cookie-solution-integration"> <!-- v-if="appKind==='Site'"> -->
<a name="cookie_solution"></a>
<collapse @tab-opened="tabOpened" v-bind:title="labels.implementCookieSolution" v-bind:target="'CookieSolutionIntegration'"></collapse>
<div class="collapse" id="collapseCookieSolutionIntegration" aria-labelledby="headingOne" data-parent="#cookie-solution-integration">
<div class="custom-box-2 rounded">
<div class="p-3 mb-3">
<h4 class="text-md mb-2" v-html="'Banner'"></h4>
<div class="rounded bg-dark-gray pb-4 position-relative">
<div class="bg-dark p-4 lh-2 mb-3 rounded-top position-relative">
<div class="position-absolute pos-top-right text-white px-4 text-xl lh-0 mt-3">&times;</div>
<span style="width:6rem" class="blokk d-block bg-light m-2 p-1"></span>
<div class="clearfix">
<span style="width: 48%" class="blokk float-left bg-white m-2"></span><span style="width: 23%" class="blokk float-left bg-white m-2"></span><span style="width: 12%" class="blokk float-left bg-white m-2"></span><span style="width: 42%" class="blokk float-left bg-white m-2"></span><span style="width: 46%" class="blokk float-left bg-white m-2"></span><span style="width: 11%" class="blokk float-left bg-white m-2"></span>
</div>
</div>
<div class="position-absolute pos-top-left w-100 h-100 bg-fade-half rounded">
<div class="position-absolute pos-center">
<a v-bind:href="urlToCustomizeCsConfiguration" data-lightbox data-modal-size="full" class="btn btn-white btn-sm text-lg px-5 py-2">{{ labels.customize }}</a>
</div>
</div>
</div>
</div>
<div class="row no-gutters">
<div class="col-lg-8">
<div class="p-4 clearfix">
<cs-enabled></cs-enabled>
<div class="oh">
<h4 class="text-md" v-html="labels.priorBlocking"></h4>
<a href="/en/help/3081" class="link-underline text-light">{{ labels.whatIs }}</a>
</div>
</div>
<embed-the-banner></embed-the-banner>
<div class="mb-4">
<div class="px-4 pt-0 pb-4 text-md">
<h4 class="text-md">Step 1: Installation</h4>
<p>To display the cookie banner on your site, copy and paste the snippet above at the end of the HEAD tag of your pages, <strong>or</strong> use one of our plugins for:</p>
<ul>
<li><a href="https://www.iubenda.com/en/help/1215" class="link-underline text-light">WordPress</a></li>
<li><a href="https://www.iubenda.com/en/help/1323" class="link-underline text-light">Joomla!</a></li>
<li><a href="https://www.iubenda.com/en/help/4338" class="link-underline text-light">PrestaShop</a></li>
<li><a href="https://www.iubenda.com/en/help/9591" class="link-underline text-light">Magento</a></li>
</ul>
<p>We also have step-by-step integration guides for <a href="https://www.iubenda.com/en/help/36226" class="link-underline text-light">custom websites</a>, <a href="https://www.iubenda.com/en/help/10811" class="link-underline text-light">Shopify</a>, <a href="https://www.iubenda.com/en/help/18531" class="link-underline text-light">Webflow</a>, <a href="https://www.iubenda.com/en/help/24221" class="link-underline text-light">Wix</a> and <a href="https://www.iubenda.com/en/help/12848" class="link-underline text-light">Squarespace</a>.</p>
<p>Drupal users, you can access the class via <a href="https://iubenda.link/php-class" class="link-underline text-light">direct download</a> or <a href="https://packagist.org/packages/iubenda/iubenda-cookie-class" class="link-underline text-light">Packagist</a>, and find full instructions in the <a href="https://www.iubenda.com/en/help/1976" class="link-underline text-light">PHP class guide</a>.</p>
<h4 class="text-md mt-5">Step 2: Set-up Prior Blocking (Required)</h4>
<p>In addition to displaying a cookie banner, you must also block cookies <strong>prior</strong> to consent:</p>
<ul>
<li>Our plugins for <a href="https://www.iubenda.com/en/help/1215" class="link-underline text-light">WordPress</a>, <a href="https://www.iubenda.com/en/help/1323" class="link-underline text-light">Joomla!</a>, <a href="https://www.iubenda.com/en/help/4338" class="link-underline text-light">PrestaShop</a> and <a href="https://www.iubenda.com/en/help/9591" class="link-underline text-light">Magento</a> automatically block the most common scripts. More info on the related guides.</li>
<li>If you don’t use one of these platforms, you can block cookies by using any of the blocking methods described in <a href="https://www.iubenda.com/en/help/3081" class="link-underline text-light">this guide</a> (most popular are: <a href="https://www.iubenda.com/en/help/1235" class="link-underline text-light">Google Tag Manager</a>, <a href="https://www.iubenda.com/en/help/1229" class="link-underline text-light">manual tagging</a> and <a href="https://www.iubenda.com/en/help/27137" class="link-underline text-light">Google Consent Mode</a>).</li>
</ul>
</div>
</div>
<enable-iab></enable-iab>
</div>
<help-section :key="tab" v-if="isTheTabOpen" :opened-tab="tab" :guide="guide" :id-for-script="'cs-integration'"></help-section>
</div>
</div>
</div>
</section>
<script>
/* eslint-disable */
(function (w, Vue, data, labels) {
'use strict';
w.cookieSolution = new Vue({
el: '#cookie-solution-integration',
data: {
siteLanguages : data.siteLanguages,
channels : data.channels,
labels : labels.cookieSolution,
navLabels : labels.generic.nav,
iubendaJsUrl : data.iubendaJsUrl,
cookieSolutions : data.cookieSolutions,
appKind : data.appKind,
customizeCSUrl : data.customizeCSUrl,
guide : labels.cookieSolution.guides,
tab: null
},
components: {
'language-nav-tabs' : w.languageNavTabs,
'embed-the-banner' : w.embedTheBanner,
'cs-enabled' : w.csEnabledComponent,
'help-section' : w.helpSection,
collapse : w.collapse
},
mounted: function() {
var _this = this;
$(window).on('main-cs-tab-clicked', function(event, data) {
_this.tab = data.tab;
});
},
computed: {
isTheTabOpen: function() {
return this.tab === 'cookieTabOpened'
},
/**
* TODO Temporary code for new CSC app.
* The computed must be removed when new CSC app goes to production and replaced with `customizeCSUrl` prop.
*
* Adds `new_csc=true` parameter to `customizeCSUrl` value if this parameter exists in browser search string.
* Such allows to open new CSC ap instead of old one, currently for testing purposes only.
*/
urlToCustomizeCsConfiguration: function() {
var newCscParam = 'new_csc=true';
var searchParams = this.customizeCSUrl.split('?')[1] || '';
if (location.search.indexOf(newCscParam) > 0) {
searchParams = (searchParams ? '&' : '?') + newCscParam;
}
return this.customizeCSUrl + searchParams;
},
},
methods: {
containerDivId: function(embeddingTypeKind) {
return 'cs_channel_' + embeddingTypeKind + '_container';
},
tabOpened: function(data) {
if (data.tab === '#collapseCookieSolutionIntegration') {
this.tab = 'cookieTabOpened'
}
}
},
});
})(window, window.Vue, window.vueVariables, window.LABELS );
</script>
<hr class="m-0">
<div id="consent-solution-integration">
<section class="mt-5 mb-5" id="consent-solutionC">
<collapse @tab-opened="tabOpened" :title="implementConsentSolution" :target="'ConsentSolutionIntegration'"></collapse>
<div class="collapse" id="collapseConsentSolutionIntegration" aria-labelledby="headingOne" data-parent="#consent-solution-integration">
<fieldset class="mb-4">
<legend class="mb-3 text-uppercase text-sm text-muted font-weight-bold"> </legend>
<ul class="list-unstyled d-inline">
<syncronize-doc></syncronize-doc>
</ul>
</fieldset>
<div id="consentsolution_embedding_code" class="tab custom-box-2 rounded">
<nav id="embedding-styles-tab" role="tablist" class="nav nav-tabs text-center scrollable">
<a id="javascript-embed-tab" data-toggle="tab" href="#javascript-embed" role="tab" aria-controls="javascript-embed" class="nav-item nav-link text-dark p-3 active show" aria-selected="true">
Javascript
</a>
<a id="httpapi-embed-tab" data-toggle="tab" href="#httpapi-embed" role="tab" aria-controls="httpapi-embed" class="nav-item nav-link text-dark p-3" aria-selected="false">
HTTP API
</a>
</nav>
<div class="tab-content">
<div id="javascript-embed" role="tabpanel" aria-labelledby="javascript-embed" class="tab-pane fade active show">
<div class="row no-gutters">
<div class="col-lg-8">
<consent-solution-code :embedding-type="'javascript'"></consent-solution-code>
<consent-solution-code :embedding-type="'public-key'"></consent-solution-code>
</div>
<help-section :key="tab" v-if="isTheTabOpen" :opened-tab="tab" :guide="guides.javascript" :id-for-script="'consent-javascript'" :embedding-type="'javascript'"></help-section>
</div>
</div>
<div id="httpapi-embed" role="tabpanel" aria-labelledby="httpapi-embed" class="tab-pane fade">
<div class="row no-gutters">
<div class="col-lg-8 entry_content">
<div class="p-4">
<p v-html="instructionsHTTPApi"></p>
</div>
<consent-solution-code :embedding-type="'private-key'"></consent-solution-code>
<consent-solution-code :embedding-type="'http-api'"></consent-solution-code>
</div>
<help-section :guide="guides.api" :id-for-script="'consent-http'" :embedding-type="'api'"></help-section>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<script>
/* eslint-disable */
(function (w, Vue, data, labels) {
'use strict';
w.consentSolutionIntegrations = new Vue({
el: '#consent-solution-integration',
props: ['title'],
data: {
implementConsentSolution : labels.implementConsentSolution,
useJsWidget : labels.useJsWidget,
useJsSnippet : labels.useJsSnippet,
useJsSDK : labels.useJsSDK,
appKind : data.appKind,
guides : labels.guides,
embeddingTypes : data.consentEmbeddingTypes,
instructionsHTTPApi : labels.instructionsHTTPApi,
tab : null
},
components: {
collapse : w.collapse,
'help-section' : w.helpSection,
'consent-solution-code' : w.consentSolutionCode,
'syncronize-doc' : w.syncronyzeDocComponent
},
mounted: function() {
var _this = this;
$(window).on('main-cons-tab-clicked', function(event, data) {
_this.tab = data.tab;
});
},
methods: {
tabOpened: function(data) {
if (data.tab === '#collapseConsentSolutionIntegration') {
this.tab = 'consentSolutionTabOpened';
}
},
},
computed: {
isTheTabOpen: function() {
return this.tab === 'consentSolutionTabOpened';
},
},
});
})(window, window.Vue, window.vueVariables, window.LABELS.consentSolution);
</script>
</div>
<script>
$(document).ready(function(){
var csPageViews = 0;
var consInstalled = false;
window.cookieTabOpenedEvent = function cookieTabOpenedEvent() {
$(window).trigger('main-cs-tab-clicked', { tab: 'cookieTabOpened'});
}
function quickShow(id) {
var divSelector = '#collapse' + id;
var collapse = $("[data-target='" + divSelector + "']");
var div = $(divSelector);
if (collapse.hasClass('collapsed')) {
collapse.attr('aria-expanded', true);
collapse.removeClass('collapsed');
div.addClass('show');
/** Trigging the event to correctly render the Help section relative to opened integration **/
switch (id) {
case 'CookieSolutionIntegration':
cookieTabOpenedEvent();
break;
case 'ConsentSolutionIntegration':
$(window).trigger('main-cons-tab-clicked', { tab: 'consentSolutionTabOpened'});
break;
case 'DocumentIntegration':
$(window).trigger( "main-tab-clicked", { tab: $('#embedding-styles-tab a.nav-item')[0].id });
break;
}
}
}
if (csPageViews === 0) {
quickShow('CookieSolutionIntegration');
}
if (!consInstalled) {
quickShow('ConsentSolutionIntegration');
}
switch (window.location.hash) {
case '#cookie_solution':
quickShow('CookieSolutionIntegration');
JsFlowPage.checkoutAnchor($('#cookie-solution-integration'));
break;
case '#show_activate_ipm':
Modal.lightbox('/en/enable_gdpr_modal/2175924');
break;
case '#consent_solution':
quickShow('ConsentSolutionIntegration');
JsFlowPage.checkoutAnchor($('#consent-solution-integration'));
break;
case '#privacy_policy':
quickShow('DocumentIntegration');
JsFlowPage.checkoutAnchor($('#collapseDocumentIntegration'));
break;
case '#terms_and_conditions':
quickShow('DocumentIntegration');
JsFlowPage.checkoutAnchor($('#documents-integration'));
break;
default:
if (getParameterByName('services_modal_for')) {
AvailableProductsHandler.showModal({
anchor: getParameterByName('services_modal_for'),
closeAction: 'acceptFlowAction' // forces redirect on modal close
});
}
}
});
</script>
<script type="text/javascript">
(function() {
window._iub = window._iub || [];
_iub.csConfiguration = {
"cookiePolicyId": 252372,
"siteId": 1,
"lang": 'en',
"logLevel": 'error',
"enableRemoteConsent": false,
"consentOnScroll": false,
"enableCcpa": true,
"countryDetection": true,
"perPurposeConsent": true,
"whitelabel": false,
"floatingPreferencesButtonDisplay": true,
"banner": {
"position": "float-top-center",
"acceptButtonDisplay": true,
"customizeButtonDisplay": true,
"rejectButtonDisplay": true,
"useCustomBrand": true,
"brandTextColor": "#FFF",
"brandBackgroundColor": "#1CC691",
"acceptButtonColor": "#0073CE",
"acceptButtonCaptionColor": "white",
"customizeButtonColor": "#DADADA",
"customizeButtonCaptionColor": "#4D4D4D",
"rejectButtonColor": "#0073CE",
"rejectButtonCaptionColor": "white",
"textColor": "black",
"backgroundColor": "white",
"logo": "/assets/site/red/general/logo-whiteongreen-a5081dfc483dd99dd4f2a46ab84182b9.svg"
},
callback: {
onActivationDone: function() {
window.csActivationCompleted.resolve();
}
}
};
window.csActivationCompleted = jQuery.Deferred();
})();
</script>
<script src="//cdn.iubenda.com/cs/debugger.js"></script>
<script type="text/javascript" src="//cdn.iubenda.com/cs/nightly/iubenda_cs.js" charset="UTF-8" async></script>
<footer class="bg-light-gray text-sm">
<div class="container">
<div class="row line-between-columns gutter-lg">
<div class="col-md-6 col-sm-12 mt-5 mb-5">
<div class="mb-3">
<h4 class="text-default text-uppercase">Product and services</h4>
</div>
<div class="mb-5">
<h5 class="text-default">Compliance for websites and apps</h5>
<ul class="list-unstyled mb-0">
<li class="list-inline-item d-block d-md-inline-block mr-md-0 mb-md-2">
<a href="https://www.iubenda.com/en/overview" class="btn btn-sm btn-outline-primary d-block">Overview</a>
</li>
<li class="list-inline-item d-block d-md-inline-block mr-md-0 mb-md-2">
<a href="https://www.iubenda.com/en/pricing" class="btn btn-sm btn-outline-primary d-block">Pricing</a>
</li>
<li class="list-inline-item d-block d-md-inline-block mb-md-2">
<a href="/en/help/5463" class="btn btn-sm btn-outline-primary d-block">Getting started guide</a>
</li>
</ul>
</div>
<div class="row justify-content-between mb-4">
<div class="col-lg mb-4 mb-lg-0">
<h4 class="text-default mb-3">Privacy and Cookie Policy Generator</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/features#privacy-and-cookie-policy">Features</a></li>
<li><a href="/en/help/463-generate-privacy-policy">Help and guides</a></li>
<li><a href="https://www.iubenda.com/en/privacy-and-cookie-policy-generator">Explore</a></li>
</ul>
</div>
<div class="col-lg mb-4 mb-lg-0">
<h4 class="text-default mb-3">Cookie Solution</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/features#cookie-solution">Features</a></li>
<li><a href="/en/help/1177-cookie-solution-getting-started">Help and guides</a></li>
<li><a href="https://www.iubenda.com/en/cookie-solution">Explore</a></li>
</ul>
</div>
<div class="col-lg mb-4 mb-lg-0">
<h4 class="text-default mb-3">Terms and Conditions Generator</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/features#terms-and-conditions">Features</a></li>
<li><a href="/en/help/19461-how-to-generate-terms-and-conditions">Help and guides</a></li>
<li><a href="https://www.iubenda.com/en/terms-and-conditions-generator">Explore</a></li>
</ul>
</div>
</div>
<div class="row justify-content-between">
<div class="col-lg mb-4 mb-lg-0">
<h4 class="text-default mb-3">Consent Solution</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/features#consent-solution">Features</a></li>
<li><a href="/en/help/6469-consent-solution-getting-started">Help and guides</a></li>
<li><a href="https://www.iubenda.com/en/consent-solution">Explore</a></li>
</ul>
</div>
<div class="col-lg mb-4 mb-lg-0">
<h4 class="text-default mb-3">Internal Privacy Management</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/features#internal-privacy-management">Features</a></li>
<li><a href="/en/help/6311-internal-privacy-management-getting-started">Help and guides</a></li>
<li><a href="https://www.iubenda.com/en/internal-privacy-management">Explore</a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-6 col-sm-12 mt-5 mb-5 footer-right">
<div class="row mb-4">
<div class="col mb-4">
<h4 class="text-default text-uppercase mb-3">Company</h4>
<ul class="list-unstyled mb-3 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/help/posts/1812">Work with us</a></li>
<li><a href="https://www.iubenda.com/blog/">Blog</a></li>
<li><a href="https://www.iubenda.com/en/partner-program">Get certified as a Compliance Expert</a></li>
<li><a href="/en/help/15138-partner-directory">Partner directory</a></li>
</ul>
<a href="https://www.capterra.com/reviews/156938/iubenda?utm_source=vendor&utm_medium=badge&utm_campaign=capterra_reviews_badge" target="_blank" rel="noopener">
<img border="0" data-lazy-src="https://assets.capterra.com/badge/de52ae1b9de89ae468a920af39e7ace6.png?v=2110097&p=156938" width="100" height="32" alt="Capterra rating"/>
</a>
</div>
<div class="col mb-4">
<h4 class="text-default text-uppercase mb-3">Legal</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li>
<a href="https://www.iubenda.com/privacy-policy/252372" class="iubenda-white iubenda-embed" title="Privacy Policy">Privacy Policy</a>
<script type="text/javascript">(function (w,d) {var loader = function () {var s = d.createElement("script"), tag = d.getElementsByTagName("script")[0];
s.src = "https://cdn.iubenda.com/iubenda.js";tag.parentNode.insertBefore(s,tag);};
w.addEventListener ? w.addEventListener("load", loader, false) : w.attachEvent("onload", loader);})(window, document);</script>
</li>
<li><a href="//www.iubenda.com/en/user/tos" class="show-in-iframe" title="Terms of service">Terms and Conditions</a></li>
<li class="pb-3"><a href="/en/help/158">Imprint/Impressum</a></li>
<li><a href="https://www.iubenda.com/privacy-policy/94654098">Consent Solution Privacy Notice</a></li>
<li><a href="https://www.iubenda.com/privacy-policy/36700132">Cookie Solution Privacy Notice</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="col-6 mb-4">
<h4 class="text-default text-uppercase mb-3">Help</h4>
<ul class="list-unstyled mb-0 pl-2 text-xs">
<li><a href="https://www.iubenda.com/en/help">Documentation</a></li>
<li><a href="https://support.iubenda.com">Feedback & support forum</a></li>
<li><a href="mailto:info@iubenda.com" data-elevio-module="2" data-elevio-style="nothing">Contact support</a></li>
<li><a href="/en/help/13053">Webinars</a></li>
<li><a href="/en/help/30560">Partner Academy</a></li>
</ul>
</div>
<div class="col-6 mb-4">
<h4 class="text-default text-uppercase mb-2"><label for="user_country">Country</label></h4>
<div class="mb-4">
<select class="form-control custom-select" id="user_country" name="iubenda_current_user[country_code]" remote="true">
</select>
</div>
</div>
</div>
<div class="mt-5">
<div class="footer_social_buttons">
<iframe title="Facebook Like" data-suppressedsrc="//www.facebook.com/v3.2/plugins/like.php?app_id=124765724272783&amp;href=http%3A%2F%2Fwww.facebook.com%2Fiubenda&amp;send=false&amp;layout=button_count&amp;width=220&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=lucida+grande&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:220px; height:20px;" allowTransparency="true" class="_iub_cs_activate" data-iub-purposes="3"></iframe>
<a href="https://twitter.com/iubenda" class="twitter-follow-button" data-show-count="true" data-lang="en" data-width="220px">Follow @iubenda</a>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="3">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div>
<script type="text/javascript">
$(window).on('load',function(){
if(typeof(twttr)!='undefined' && typeof(twttr.widgets)!='undefined'){twttr.widgets.load();}
})
</script>
</div>
</div>
</div>
</div>
<div class="language-country-selectors"></div>
<hr class="p-0">
<div class="p-4 text-xs">
<div class="container">
<div class="row">
<div class="col-md-3">
<address>
<strong>iubenda s.r.l</strong><br>Via San Raffaele, 1 - 20121 Milan (Italia)<br>EU VAT No: IT07347120961<br>UK VAT No: GB370904694<br>Milan Chamber of Commerce<br>CS: 12987 Eur (I.V.)
</address>
</div>
<div class="col-md-9">
Content available on iubenda.com and documents generated using the Service are intended for general information purposes only. Although all clauses and provisions inside the generator database have been drafted by a team of highly qualified legal experts and regularly undergo reviews and updates, documents are generated in a fully automated manner and therefore do not constitute or substitute the rendering of legal advice, nor does any assistance and customer support provided by iubenda establish an attorney-client relationship. This is why, despite all efforts in offering the best possible service, iubenda cannot guarantee generated documents to be fully compliant with applicable law. Users should therefore not rely upon documents generated using iubenda without seeking legal advice from an attorney licensed in the relevant jurisdiction(s).
</div>
</div>
</div>
</div>
</footer>
<script>
$(document).ready(function() {
$(".show-in-iframe").click(function(event) {
if(!event.ctrlKey && !event.metaKey){
if (document.getElementById('iubenda-pp-popup')) {
return;
}
showInIframe($(this).attr('href')/*,null,null,null,null,$('.container')[0],name*/);
event.preventDefault();
}
});
});
</script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="3">(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:"5795135"};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");</script><noscript><img src="//bat.bing.com/action/0?ti=5795135&Ver=2" height="0" width="0" style="display:none; visibility: hidden;" class="_iub_cs_activate" data-iub-purposes="3"/></noscript>
<script src="https://www.artfut.com/static/tagtag.min.js?campaign_code=bfee066fd9" async onerror='var self = this;window.ADMITAD=window.ADMITAD||{},ADMITAD.Helpers=ADMITAD.Helpers||{},ADMITAD.Helpers.generateDomains=function(){for(var e=new Date,n=Math.floor(new Date(2020,e.getMonth(),e.getDate()).setUTCHours(0,0,0,0)/1e3),t=parseInt(1e12*(Math.sin(n)+1)).toString(30),i=["de"],o=[],a=0;a<i.length;++a)o.push({domain:t+"."+i[a],name:t});return o},ADMITAD.Helpers.findTodaysDomain=function(e){function n(){var o=new XMLHttpRequest,a=i[t].domain,D="https://"+a+"/";o.open("HEAD",D,!0),o.onload=function(){setTimeout(e,0,i[t])},o.onerror=function(){++t<i.length?setTimeout(n,0):setTimeout(e,0,void 0)},o.send()}var t=0,i=ADMITAD.Helpers.generateDomains();n()},window.ADMITAD=window.ADMITAD||{},ADMITAD.Helpers.findTodaysDomain(function(e){if(window.ADMITAD.dynamic=e,window.ADMITAD.dynamic){var n=function(){return function(){return self.src?self:""}}(),t=n(),i=(/campaign_code=([^&]+)/.exec(t.src)||[])[1]||"";t.parentNode.removeChild(t);var o=document.getElementsByTagName("head")[0],a=document.createElement("script");a.src="https://www."+window.ADMITAD.dynamic.domain+"/static/"+window.ADMITAD.dynamic.name.slice(1)+window.ADMITAD.dynamic.name.slice(0,1)+".min.js?campaign_code="+i,o.appendChild(a)}});' type="text/plain" class="_iub_cs_activate" data-iub-purposes="5"></script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="5">
ADMITAD = window.ADMITAD || {};
ADMITAD.Invoice = ADMITAD.Invoice || {};
ADMITAD.Invoice.accountId = 'herve.tatche@iubenda.com';
</script>
<script type="text/javascript">
dataLayer.push({
event: "trigger_conversion",
google_conversion_id: 1036022355,
google_custom_params: window.google_tag_params,
google_remarketing_only: true
});
</script>
<script type="text/javascript">
var HW_config = {
selector: ".unread-wrap",
account: "EyoVWJ",
translations: {
title: "Latest updates"
}
};
</script>
<script async src="//cdn.headwayapp.co/widget.js" type="text/plain" class="_iub_cs_activate" data-iub-purposes="2"></script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="2">
!function(e,l,v,i,o,n){e[i]||(e[i]={}),e[i].account_id=n;var g,h;g=l.createElement(v),g.type="text/javascript",g.async=1,g.src=o+n,h=l.getElementsByTagName(v)[0],h.parentNode.insertBefore(g,h);e[i].q=[];e[i].on=function(z,y){e[i].q.push([z,y])}}(window,document,"script","_elev","https://cdn.elev.io/sdk/bootloader/v4/elevio-bootloader.js?cid=","5b0d50ab36803");
window._elev.on('load', function (_elev) {
var userSettings = { groups: ['Language=EN']}
userSettings.email = "herve.tatche@iubenda.com";
userSettings.user_hash = "d0f73faf2f42b498468ac99e1ac220ffe3054b65f8e6377e13d3c360ee0af9bf";
_elev.setUser(userSettings);
_elev.setLanguage('en');
_elev.setSettings({disablePushState: true});
});
window._elev.on('page:view', function(pageUrl) {
if (typeof (analytics) !== 'undefined') {
analytics.track('elevioPageView', pageUrl);
}
});
</script>
<script type="text/javascript">
var userLocationPrefs = {"locale":"en","country":"AD"};
var cdnBaseUrl = "https://cdn.iubenda.com/";
var goProModalUrl = "https://www.iubenda.com/en/upgrade_modal/2175924";
var upToProUrl = "https://www.iubenda.com/private/privacy-policy/1924650/up_to_pro";
var upgradeSiteUrl = "/en/sites/2175924/up_to_pro";
var dashboardUrl = "/en/dashboard";
var accountUrl = "https://www.iubenda.com/en/account"
var mtToPaygConversionFormUrl = "https://www.iubenda.com/en/billing/subscriptions/mt_to_payg_conversion_form";
var moveToPaygUrl = "https://www.iubenda.com/en/billing/subscriptions/move_to_payg";
var gopro_upgrade_to_remove = "Upgrade this privacy policy to Pro to remove the limit";
var gopro_upgrade_now = "Upgrade now";
var gopro_learn_more = "Learn more";
var gopro_free_limit_reached = "Free limit reached";
var gopro_only_four_services = "Upgrade this privacy policy to Pro to add more than 4 services.";
var gopro_service_pro_only = "Upgrade this privacy policy to Pro to add this service."
var gopro_switch_to_pro = "Switch to Pro to enable it";
var gopro_no_custom_text = "In order to add custom text, your privacy policy has to be ugpraded to Pro.";
var gopro_no_style_limit = "Only Pro privacy policies allow removal of the button style and free modification.";
var gopro_no_brand_limit = "If you want to remove the iubenda logo, upgrade this privacy policy to Pro.";
var gopro_direct_link_limit = "If you want to directly link the privacy policy, without using the embedding code, upgrade this privacy policy to Pro.";
var gopro_direct_embed_limit = "If you want to directly embed the privacy policy text, so that it's printed right on your website's page, upgrade this privacy policy to Pro. <a href='/en/help/posts/78' onclick=\"displayAlertMsg(false); return popItUp('/en/help/posts/78')\">Display an example</a>";
var notify_non_responsive_url = "https://www.iubenda.com/en/site/notify-non-responsive-url";
var gopro_add_language = "The license of this site is valid for a single language. If you want to add an additional language, you can purchase another License for the same price as the first :)";
var gopro_add_language_payg = "Free accounts only allow a single free Basic License. In order to add another language, please purchase a Pro License or a Mulit-license plan.";
var mt_expired_add_language = "Your Multi-license plan expired, go to your dashboard to renew or go back to Pay Per License.";
var mt_emptied_add_language = "Your Multi-license plan has no more available slots, please upgrade to a larger plan.";
var mt_add_language_upgrade_now = "Upgrade now";
var buy_second_language = "Buy additional language";
var permissions_tooltip_title = "Reserved for Pro policies";
var permissions_tooltip_paragraph = "In order to add this permission to your privacy policy, you must first upgrade it to Pro.";
var pro_service_tooltip_title = "Reserved for Pro policies";
var pro_service_tooltip_paragraph = "In order to add this service to your privacy policy, you must first upgrade it to Pro.";
var pro_cookiepp_tooltip_title = "Reserved for Pro policies";
var pro_cookiepp_tooltip_paragraph = "In order to add a cookie policy to your privacy policy, you must first upgrade it to Pro. <a href='/en/help/posts/1175' onclick=\"displayAlertMsg(false); return popItUp('/en/help/posts/1175')\">Display an example</a>";
var hint_tooltip_title = "Hints about this service";
var fbLoginUrl = "https://www.iubenda.com/en/facebook_login";
var facebookConnectUrl = "https://www.iubenda.com/en/facebook/connect";
</script>
<script type="text/javascript">
</script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="2">
(function(d, id) {
var fcJS;
function initFreshChat() {
window.fcWidget.init({
token: "6946a656-b4d1-4304-80ca-a527ec430aa5",
host: "https://wchat.freshchat.com",
locale: "en",
config: {
hideFAQ: true,
headerProperty: {
hideChatButton: true,
direction: "ltr"
},
}
});
window.fcWidget.user.setLocale('en');
window.fcWidget.user.setEmail("herve.tatche@iubenda.com");
window.fcWidget.setExternalId("b77d2773b390747a281a");
}
if (d.getElementById(id)) {
initFreshChat();
return;
}
fcJS = d.createElement('script');
fcJS.id = id;
fcJS.async = true;
fcJS.src = 'https://wchat.freshchat.com/js/widget.js';
fcJS.onload = initFreshChat;
d.head.appendChild(fcJS);
}(document, 'freshchat-js-sdk'));
</script>
<script type="text/plain" class="_iub_cs_activate" data-iub-purposes="4">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
analytics.load("I3NXz3izR35DLS79spUfv1GjBa3oixqy");
analytics.page('', '', {"admin_account_id":75});
}}();
analytics.ready(function() {
analytics.user().traits({}); // clear all data user saved in localStorage because it can overwrite updates.
});
</script>
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.iubenda.com"]);
_paq.push(["setDomains", ["*.iubenda.com"]]);
_paq.push(['enableLinkTracking']);
(function() {
var u="//athena.iubenda.com/";
_paq.push(['setTrackerUrl', u+'js/']);
_paq.push(['setSiteId', 1]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'js/'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="//athena.iubenda.com/js?idsite=1" style="border:0;" alt=""/></p></noscript>
<script type="text/javascript">
_paq.push(['setUserId', 'herve.tatche@iubenda.com']);
_paq.push(['trackPageView']);
</script>
<noscript>
<img src="https://ws.zoominfo.com/pixel/vnT4Hl7evP9WD5fG5CmL" width="1" height="1" style="display: none;"/>
</noscript>
<script type='text/plain' class='_iub_cs_activate' data-iub-purposes='4'>
try{
analytics.identify("b77d2773b390747a281a", {"email":"herve.tatche@iubenda.com","createdAt":"2020-11-13T11:27:44Z","site_lang":"en","pcp_user":1,"fide_user":0,"verified":1,"consent_global_email_nl":1,"consent_global_email_drip":1,"consent_fide_email_nl":0,"consent_fide_email_drip":0,"locale":"en","timezone":1,"pricing_variant":"2020","admin_url":"https://www.iubenda.com/admin/users/b77d2773b390747a281a","country_code":"AD","city":null,"cs_pageviews_total":25000,"autoupgrade":false,"value":"0.00","email_paypal":null,"autorenewal":true,"pcp_status":null,"value_arr":"0.00","active_plans":[{"sku":"PCP-Multi","name":"Multi-license Plan - [100] Slots | Monthly","category":"PCP","period":"Monthly","price":0.0,"lang":"en"},{"sku":"IPM-ConS-intro","name":"IPM + ConS Introductory Plan | Yearly","category":"IPM-ConS","period":"Yearly","price":0.0,"lang":"en"},{"sku":"CS","name":"Cookie Solution w/ prior consent Free - [25000] Pageviews | Yearly","category":"CS","period":"Yearly","price":0.0,"lang":"en"}],"pcp_licenses_pro":0,"pcp_licenses_ultra":0,"mt_slots_total":100,"mt_slots_used":68,"cs_pageviews_used":0,"fide_status":null,"api_source":null,"email_bcc_admin":null,"pcp_licenses_totalslots":68}, { integrations: {} })
;}catch(err){console.log(err)};
</script>
<script>
if (window.csActivationCompleted){
window.csActivationCompleted.then(function() {
_iub.cs.api.activateSnippets({runOnActivationDoneCallback: false});
});
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment