forms
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
Все важные изменения этого проекта будут документированы в этом файле.
|
||||||
|
|
||||||
|
## [Неопубликованное]
|
||||||
|
|
||||||
|
### Добавлено
|
||||||
|
- Выпадающий список с предустановленными темами в форме "Задать вопрос":
|
||||||
|
- работа сайта
|
||||||
|
- запланированные мероприятия
|
||||||
|
- пройденные маршруты
|
||||||
|
- условия участия
|
||||||
|
- условия сотрудничества
|
||||||
|
- хочу предложить поездку
|
||||||
|
- контакты для связи
|
||||||
|
|
||||||
|
### Изменено
|
||||||
|
- Обновлен чекбокс согласия на обработку персональных данных в обеих формах (вопросов и планирования поездок)
|
||||||
|
- Добавлен полный юридический текст согласия в соответствии с ФЗ №152
|
||||||
|
- Включена информация о передаче данных третьим лицам для получения разрешений на полеты БВС
|
||||||
|
- Улучшено оформление блока согласия с подсветкой и детальной информацией
|
||||||
|
- Заменены радио-кнопки согласия на единый чекбокс в форме планирования поездок
|
||||||
|
|
||||||
|
### Исправлено
|
||||||
|
- Исправлена проблема со сборкой Hugo на VPS (добавлен исключающий путь для scripts темы в .gitignore)
|
||||||
|
- Добавлена JavaScript валидация для новых элементов форм
|
||||||
+28
-1
@@ -69,7 +69,16 @@ disableComments = true
|
|||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="subject">Тема *</label>
|
<label for="subject">Тема *</label>
|
||||||
<input type="text" id="subject" name="subject" placeholder="Например: Вопрос о поездке в Карелию" required>
|
<select id="subject" name="subject" required>
|
||||||
|
<option value="">Выберите тему...</option>
|
||||||
|
<option value="работа сайта">Работа сайта</option>
|
||||||
|
<option value="запланированные мероприятия">Запланированные мероприятия</option>
|
||||||
|
<option value="пройденные маршруты">Пройденные маршруты</option>
|
||||||
|
<option value="условия участия">Условия участия</option>
|
||||||
|
<option value="условия сотрудничества">Условия сотрудничества</option>
|
||||||
|
<option value="хочу предложить поездку">Хочу предложить поездку</option>
|
||||||
|
<option value="контакты для связи">Контакты для связи</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -77,6 +86,24 @@ disableComments = true
|
|||||||
<textarea id="message" name="message" placeholder="Задайте ваш вопрос или предложите свою идею для поездки..." required></textarea>
|
<textarea id="message" name="message" placeholder="Задайте ваш вопрос или предложите свою идею для поездки..." required></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group checkbox-group">
|
||||||
|
<label class="checkbox-container">
|
||||||
|
<input type="checkbox" id="privacy_consent" name="privacy_consent" required>
|
||||||
|
<span class="checkmark"></span>
|
||||||
|
<span class="privacy-text">
|
||||||
|
Я согласен на обработку персональных данных
|
||||||
|
<div class="privacy-details">
|
||||||
|
<p><strong>СОГЛАСИЕ на обработку персональных данных</strong></p>
|
||||||
|
<p>Заполнение чек-бокса и нажатие кнопки является подтверждением Вашего согласия на обработку персональных данных с целью ответа на вопрос, заданный на сайте sleeptrip.ru.</p>
|
||||||
|
<p>Предоставленные персональные данные будут обрабатываться в соответствии с положениями Федерального закона РФ №152-ФЗ от 27.07.2006 «О персональных данных».</p>
|
||||||
|
<p>Я выражаю свое согласие на обработку (включая: сбор, запись, систематизацию, накопление, хранение, уточнение, извлечение, использование, передачу, блокирование, обезличивание, удаление, уничтожение) моих персональных данных Оператором (владельцем сайта sleeptrip.ru) для цели ответа на вопрос, заданный на сайте.</p>
|
||||||
|
<p>Настоящее Согласие действует до момента достижения целей обработки или отзыва согласия на обработку, но не более 1 (одного) месяца с момента предоставления Согласия.</p>
|
||||||
|
<p>Заявление об уточнении персональных данных, отзыве настоящего согласия может быть направлено по электронной почте: <a href="mailto:sleep-trip@ya.ru">sleep-trip@ya.ru</a></p>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button type="submit" class="submit-btn">
|
<button type="submit" class="submit-btn">
|
||||||
Отправить вопрос
|
Отправить вопрос
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
+43
-20
@@ -49,6 +49,26 @@ disableComments = true
|
|||||||
messageDiv.textContent = error;
|
messageDiv.textContent = error;
|
||||||
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Русские сообщения валидации
|
||||||
|
const inputs = document.querySelectorAll('input[required], select[required], textarea[required]');
|
||||||
|
inputs.forEach(function(input) {
|
||||||
|
input.addEventListener('invalid', function() {
|
||||||
|
if (input.type === 'checkbox') {
|
||||||
|
input.setCustomValidity('Пожалуйста, отметьте этот пункт для продолжения');
|
||||||
|
} else if (input.type === 'email') {
|
||||||
|
input.setCustomValidity('Пожалуйста, введите корректный email адрес');
|
||||||
|
} else if (input.tagName === 'SELECT') {
|
||||||
|
input.setCustomValidity('Пожалуйста, выберите один из вариантов');
|
||||||
|
} else {
|
||||||
|
input.setCustomValidity('Пожалуйста, заполните это поле');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
input.addEventListener('input', function() {
|
||||||
|
input.setCustomValidity('');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -86,24 +106,31 @@ disableComments = true
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group checkbox-group">
|
||||||
<label style="font-weight: 600; margin-bottom: 1rem; display: block;">Согласие на обработку персональных данных *<sup>1</sup></label>
|
<label class="checkbox-container">
|
||||||
<div style="border: 1px solid #e0e0e0; border-radius: 8px; padding: 1rem; background: #fafafa;">
|
<input type="checkbox" id="privacy_consent" name="privacy_consent" required>
|
||||||
<label style="display: flex; align-items: flex-start; font-weight: normal; margin-bottom: 0.75rem; cursor: pointer;">
|
<span class="checkmark"></span>
|
||||||
<span style="font-size: 18px; margin-right: 0.5rem; margin-top: 0.1rem;">✅</span>
|
<span class="privacy-text">
|
||||||
<input type="radio" name="consent" value="agree" required style="margin-right: 0.75rem; margin-top: 0.3rem; width: 16px; height: 16px; accent-color: #28a745;">
|
Я согласен на обработку персональных данных
|
||||||
<span style="line-height: 1.5;">Я согласен на <strong>обработку персональных данных</strong> для оформления заявки и гарантирую, что передаю свои персональные данные</span>
|
<div class="privacy-details">
|
||||||
</label>
|
<p><strong>СОГЛАСИЕ на обработку персональных данных</strong></p>
|
||||||
<label style="display: flex; align-items: center; font-weight: normal; cursor: pointer;">
|
<p>Заполнение чек-бокса и нажатие кнопки является подтверждением Вашего согласия на обработку персональных данных с целью получения разрешения на полёты БВС и/или организации поездки на сайте sleeptrip.ru.</p>
|
||||||
<span style="font-size: 18px; margin-right: 0.5rem;">❌</span>
|
<p>Предоставленные персональные данные будут обрабатываться в соответствии с положениями Федерального закона РФ №152-ФЗ от 27.07.2006 «О персональных данных».</p>
|
||||||
<input type="radio" name="consent" value="disagree" style="margin-right: 0.75rem; width: 16px; height: 16px; accent-color: #dc3545;">
|
<p>Я выражаю свое согласие на обработку (включая: сбор, запись, систематизацию, накопление, хранение, уточнение, извлечение, использование, передачу, блокирование, обезличивание, удаление, уничтожение) моих персональных данных Оператором (владельцем сайта sleeptrip.ru) для целей:</p>
|
||||||
<span><strong>Не согласен</strong> на обработку персональных данных</span>
|
<ul style="margin: 0.5rem 0; padding-left: 1.5rem;">
|
||||||
</label>
|
<li>обеспечения получения разрешения на полёты БВС и направления информационных сообщений о статусе получения разрешения;</li>
|
||||||
</div>
|
<li>организации поездки и направления информации о поездке.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Я согласен с тем, что мои персональные данные могут быть переданы третьим лицам – Единой системе организации воздушного движения, сервису "Небосвод" (skyarc.ru) или сервису СППИ (https://sppi.ivprf.ru), а также сотрудникам полиции (при необходимости) для получения разрешения на полёты БВС.</p>
|
||||||
|
<p>Настоящее Согласие действует до момента достижения целей обработки или отзыва согласия на обработку, но не более 1 (одного) месяца с момента предоставления Согласия.</p>
|
||||||
|
<p>Заявление об уточнении персональных данных, отзыве настоящего согласия может быть направлено по электронной почте: <a href="mailto:sleep-trip@ya.ru">sleep-trip@ya.ru</a></p>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label style="font-weight: 600; margin-bottom: 1rem; display: block;">Укажите свой возраст *<sup>2</sup></label>
|
<label style="font-weight: 600; margin-bottom: 1rem; display: block;">Укажите свой возраст *</label>
|
||||||
<div style="border: 1px solid #e0e0e0; border-radius: 8px; padding: 1rem; background: #fafafa;">
|
<div style="border: 1px solid #e0e0e0; border-radius: 8px; padding: 1rem; background: #fafafa;">
|
||||||
<label style="display: flex; align-items: center; font-weight: normal; margin-bottom: 0.75rem; cursor: pointer;">
|
<label style="display: flex; align-items: center; font-weight: normal; margin-bottom: 0.75rem; cursor: pointer;">
|
||||||
<span style="font-size: 18px; margin-right: 0.5rem;">✅</span>
|
<span style="font-size: 18px; margin-right: 0.5rem;">✅</span>
|
||||||
@@ -129,11 +156,7 @@ disableComments = true
|
|||||||
|
|
||||||
### Пояснения к форме:
|
### Пояснения к форме:
|
||||||
|
|
||||||
**<sup>1</sup> Согласие на обработку персональных данных:**
|
**Подтверждение совершеннолетия:**
|
||||||
|
|
||||||
Предоставленные персональные данные будут обрабатываться в соответствии с положениями № 152-ФЗ от 27.07.2006 «О персональных данных». Настоящее согласие предоставляется путем заполнения «чек-бокса» (проставления «галочки»/ «веб-метки» в графе «Я гарантирую, что передаю свои персональные данные, согласен на их обработку для оформления заявки» в форме обратной связи на сайте sleeptrip.ru) и нажатия соответствующей кнопки. Более подробная информация будет направлена на электронную почту.
|
|
||||||
|
|
||||||
**<sup>2</sup> Подтверждение совершеннолетия:**
|
|
||||||
|
|
||||||
Участие в поездках и мероприятиях разрешено только лицам, достигшим совершеннолетия (18 лет). В случае, если Вам менее 18 лет, для участия в поездке необходимо согласие и личное присутствие законных представителей (родителей, опекунов).
|
Участие в поездках и мероприятиях разрешено только лицам, достигшим совершеннолетия (18 лет). В случае, если Вам менее 18 лет, для участия в поездке необходимо согласие и личное присутствие законных представителей (родителей, опекунов).
|
||||||
|
|
||||||
|
|||||||
@@ -270,6 +270,72 @@
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Стили для согласия на обработку персональных данных */
|
||||||
|
.checkbox-group {
|
||||||
|
background: rgba(52, 152, 219, 0.05);
|
||||||
|
border: 1px solid rgba(52, 152, 219, 0.2);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-container input[type="checkbox"] {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin-right: 1rem;
|
||||||
|
margin-top: 0.2rem;
|
||||||
|
accent-color: #3498db;
|
||||||
|
cursor: pointer;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-text {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #2c3e50;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details {
|
||||||
|
margin-top: 1rem;
|
||||||
|
padding: 1rem;
|
||||||
|
background: rgba(255, 255, 255, 0.8);
|
||||||
|
border: 1px solid rgba(52, 152, 219, 0.2);
|
||||||
|
border-radius: 8px;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
line-height: 1.4;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details p {
|
||||||
|
margin: 0 0 0.75rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details strong {
|
||||||
|
color: #2c3e50;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details a {
|
||||||
|
color: #3498db;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
/* Интеграция с темой сайта */
|
/* Интеграция с темой сайта */
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
.travel-form-container, .contact-form-container {
|
.travel-form-container, .contact-form-container {
|
||||||
@@ -293,4 +359,23 @@
|
|||||||
.form-group textarea:focus {
|
.form-group textarea:focus {
|
||||||
border-color: #4a9eff;
|
border-color: #4a9eff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.checkbox-group {
|
||||||
|
background: rgba(52, 152, 219, 0.1);
|
||||||
|
border-color: rgba(52, 152, 219, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-text {
|
||||||
|
color: #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details {
|
||||||
|
background: rgba(40, 40, 40, 0.8);
|
||||||
|
border-color: rgba(52, 152, 219, 0.3);
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-details strong {
|
||||||
|
color: #e0e0e0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user