Add privacy policy page and consent checkbox to both modals (152-FZ compliance)
This commit is contained in:
@@ -142,6 +142,12 @@
|
||||
<div class="access-products-loading">Загрузка...</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="access-consent-field">
|
||||
<label class="access-consent-label">
|
||||
<input type="checkbox" id="am-consent" />
|
||||
<span>Согласен на <a href="/privacy" target="_blank" class="access-consent-link">обработку персональных данных</a></span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="am-error" class="access-modal-error" style="display:none"></div>
|
||||
</div>
|
||||
<div class="access-modal-footer">
|
||||
@@ -168,6 +174,7 @@
|
||||
<div class="access-field"><label>Телефон <span class="req">*</span></label><input id="am-phone" type="tel" placeholder="+7 (999) 000-00-00" /></div>
|
||||
<div class="access-field"><label>Ваш менеджер в MONT</label><input id="am-manager" type="text" placeholder="Если известно — укажите имя" /></div>
|
||||
<div class="access-field"><label>Интересующие продукты</label><div id="am-products" class="access-products-wrap"><div class="access-products-loading">Загрузка...</div></div></div>
|
||||
<div class="access-consent-field"><label class="access-consent-label"><input type="checkbox" id="am-consent" /><span>Согласен на <a href="/privacy" target="_blank" class="access-consent-link">обработку персональных данных</a></span></label></div>
|
||||
<div id="am-error" class="access-modal-error" style="display:none"></div>`;
|
||||
document.querySelector('.access-modal-footer').innerHTML = `<button type="button" class="access-btn-cancel" id="am-cancel">Отмена</button><button type="button" class="access-btn-submit" id="am-submit">Запросить доступ</button>`;
|
||||
document.getElementById('am-cancel').addEventListener('click', closeModal);
|
||||
@@ -241,6 +248,7 @@
|
||||
const emailRe = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
const phoneRe = /^[\+\d][\d\s\-\(\)]{6,18}$/;
|
||||
|
||||
const consentEl = document.getElementById('am-consent');
|
||||
const fields = [
|
||||
{ el: nameEl, check: () => !!name, msg: 'Введите имя и фамилию' },
|
||||
{ el: companyEl, check: () => !!company, msg: 'Введите название компании' },
|
||||
@@ -253,6 +261,14 @@
|
||||
if (f.el && !f.check()) { f.el.classList.add('am-invalid'); errors.push(f.msg); }
|
||||
else if (f.el) f.el.classList.remove('am-invalid');
|
||||
});
|
||||
if (!consentEl || !consentEl.checked) {
|
||||
errors.push('Необходимо согласие на обработку персональных данных');
|
||||
const cf = document.querySelector('.access-consent-field');
|
||||
if (cf) cf.classList.add('am-invalid-consent');
|
||||
} else {
|
||||
const cf = document.querySelector('.access-consent-field');
|
||||
if (cf) cf.classList.remove('am-invalid-consent');
|
||||
}
|
||||
|
||||
if (errors.length) {
|
||||
if (errorEl) { errorEl.textContent = errors.join(' • '); errorEl.style.display = 'block'; }
|
||||
@@ -336,6 +352,12 @@
|
||||
<label>Сообщение <span class="req">*</span></label>
|
||||
<textarea id="cm-text" class="access-textarea" placeholder="Ваш вопрос или предложение..." rows="4"></textarea>
|
||||
</div>
|
||||
<div class="access-consent-field">
|
||||
<label class="access-consent-label">
|
||||
<input type="checkbox" id="cm-consent" />
|
||||
<span>Согласен на <a href="/privacy" target="_blank" class="access-consent-link">обработку персональных данных</a></span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="cm-error" class="access-modal-error" style="display:none"></div>
|
||||
</div>
|
||||
<div class="access-modal-footer" id="cm-footer">
|
||||
@@ -359,7 +381,8 @@
|
||||
<div class="access-field"><label>Email <span class="req">*</span></label><input id="cm-email" type="email" placeholder="ivan@company.ru" /></div>
|
||||
<div class="access-field"><label>Телефон <span class="req">*</span></label><input id="cm-phone" type="tel" placeholder="+7 (999) 000-00-00" /></div>
|
||||
<div class="access-field"><label>Сообщение <span class="req">*</span></label><textarea id="cm-text" class="access-textarea" placeholder="Ваш вопрос или предложение..." rows="4"></textarea></div>
|
||||
<div id="cm-error" class="access-modal-error" style="display:none"></div>`;
|
||||
<div class="access-consent-field"><label class="access-consent-label"><input type="checkbox" id="cm-consent" /><span>Согласен на <a href="/privacy" target="_blank" class="access-consent-link">обработку персональных данных</a></span></label></div>
|
||||
<div id="cm-error" class="access-modal-error" style="display:none"></div>`;
|
||||
document.getElementById('cm-footer').innerHTML = `<button type="button" class="access-btn-cancel" id="cm-cancel">Отмена</button><button type="button" class="access-btn-submit" id="cm-submit">Отправить</button>`;
|
||||
document.getElementById('cm-cancel').addEventListener('click', closeContact);
|
||||
document.getElementById('cm-submit').addEventListener('click', submitContact);
|
||||
@@ -401,6 +424,7 @@
|
||||
const emailRe = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
const phoneRe = /^[\+\d][\d\s\-\(\)]{6,18}$/;
|
||||
|
||||
const consentEl = document.getElementById('cm-consent');
|
||||
const fields = [
|
||||
{ el: nameEl, check: () => !!name, msg: 'Введите имя' },
|
||||
{ el: emailEl, check: () => emailRe.test(email), msg: 'Введите корректный email' },
|
||||
@@ -413,6 +437,14 @@
|
||||
if (f.el && !f.check()) { f.el.classList.add('am-invalid'); errors.push(f.msg); }
|
||||
else if (f.el) f.el.classList.remove('am-invalid');
|
||||
});
|
||||
if (!consentEl || !consentEl.checked) {
|
||||
errors.push('Необходимо согласие на обработку персональных данных');
|
||||
const cf = document.querySelector('#contact-modal .access-consent-field');
|
||||
if (cf) cf.classList.add('am-invalid-consent');
|
||||
} else {
|
||||
const cf = document.querySelector('#contact-modal .access-consent-field');
|
||||
if (cf) cf.classList.remove('am-invalid-consent');
|
||||
}
|
||||
|
||||
if (errors.length) {
|
||||
if (errorEl) { errorEl.textContent = errors.join(' • '); errorEl.style.display = 'block'; }
|
||||
|
||||
Reference in New Issue
Block a user