Tickets и checkbox

Добрый день всем! Кто-нибудь может уже решал такую задачу — буду рада если поделитесь решением. В форме комментирования нужно добавить checkbox «Согласие на обработку персональных данных» — с 1 июля если кто не знает это обязательное требование (152-ФЗ). И конечно нужна проверка, что этот checkbox нажат.
Любовь
06 июля 2017, 06:43
modx.pro
2 321
0

Комментарии: 8

Василий Stepanov
06 июля 2017, 13:28
+1
Можно сделать так:
1. Добавляем чекбокс в форму добавления комментария. Для этого редактируем чанк tpl.Tickets.comment.form.guest.
После
<div class="form-group">
	<label for="comment-email">[[%ticket_comment_email]]</label>
	<input type="text" name="email" value="[[+email]]" requiredid="comment-email" class="form-control" />
	<span class="error"></span>
</div>

добавляем наш чекбокс:
<div class="form-group"> 
	<label for="comment-pdata"><input name="comment-pdata" id="comment-pdata" type="checkbox"> Даю свое согласие на обработку персональных данных</label>
	<span class="error"></span>
</div>
Жмем Сохранить.

2. Создаем плагин ticketsCommentPersonalDate:

if ($modx->event->name == 'OnBeforeCommentSave') {
	if (!isset($_REQUEST['comment-pdata'])) { 
		$modx->event->output('Вы не дали согласие на обработку персональных данных');
	}
}

И в системных событиях плагина не забываем поставить галочку напротив события OnBeforeCommentSave.
Жмем Сохранить.

Теперь, если при добавлении коммента пользователь не поставит галочку, то всплывет предупреждение справа сверху и коммент не добавится.
    Сергей Шлоков
    06 июля 2017, 20:18
    +2
    Можно сделать проще — добавить обработчик события на чекбокс и в зависимости от состояния чекбокса делать кнопку добавления комментария доступной или нет.

    Преимущества
    1. С точки зрения UX данный способ предпочтительней, так как пользователь понимает, что от него требуется. Именно так cделано, например, у РЖД и у многих других.
    2. Не надо гнать форму на сервер и ждать ответа.
    Василий Stepanov
    06 июля 2017, 15:47
    0
    Помогло?)
      Любовь
      06 июля 2017, 15:49
      0
      Спасибо за ответ) Пока нет… Но у меня есть подозрение, что у меня плагины не работают. Потому что есть плагин, который должен присылать письмо когда регистрируется новый пользователь, но в какой-то момент он перестал работать и с этим пока тоже не получилось. Посижу еще, попробую.
        Василий Stepanov
        06 июля 2017, 15:52
        0
        Сделал себе тоже такой чекбокс. Можно тут протестировать http://naukograd28.ru/stroitelyam-kosmodroma...
          Любовь
          06 июля 2017, 15:56
          +1
          Спасибо большое! Буду знать теперь к чему стремиться))
          Кстати если интересует — вот сервис (ссылка на всякий случай рефферальная, вдруг че)), который поможет правильно составить все документы для внутреннего пользования, а также письма в роспоребнадзор. Мы там все документы делали.
      Дмитрий Кондаков
      06 июля 2017, 22:20
      +2
      Вот как посоветовал Сергей:
      <form>
      	...
      	<label for="agree">
      		<input type="checkbox" name="agree" id="agree"> 
      		 Даю свое согласие на обработку персональных данных</a>
      	</label>
      	<button type="submit" class="submit">Отправить</button>
      </form>
      
      <script>
      	$(window).load(function() {
      		$("button.submit").prop("disabled", true);
      		$("#agree").change(function() {
      		  state = $(this).prop("checked");
      		  if (state) {
      		    $("button.submit").prop("disabled", false).removeClass("disabled");
      		  } else {
      		    $("button.submit").prop("disabled", true).addClass("disabled");
      		  }
      		});
      	});
      </script>
        Любовь
        06 июля 2017, 23:15
        0
        Всем огромное спасибо! Первый вариант сработал.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8