mirror of https://github.com/dani/vroom.git
Add client and server side validation for the feedback form
This commit is contained in:
parent
b096c9b1e6
commit
2ccd74d9e3
|
@ -498,6 +498,40 @@ function initIndex(){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The feedback page
|
||||||
|
function initFeedback(){
|
||||||
|
$('#email').on('input', function(){
|
||||||
|
if (!$('#email').val().match(/\S+@\S+/) && $('#email').val() !== ''){
|
||||||
|
$('#email').parent().addClass('has-error');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#email').parent().removeClass('has-error');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#comment').on('input', function(){
|
||||||
|
if ($('#comment').val() === ''){
|
||||||
|
$('#comment').parent().addClass('has-error');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#comment').parent().removeClass('has-error');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#feedback-form').submit(function(){
|
||||||
|
var ok = true;
|
||||||
|
if ($('#email').parent().hasClass('has-error')){
|
||||||
|
ok = false;
|
||||||
|
$('#email').notify(localize('ERROR_MAIL_INVALID'), 'error');
|
||||||
|
}
|
||||||
|
if ($('#comment').parent().hasClass('has-error') || $('#comment').val() === ''){
|
||||||
|
ok = false;
|
||||||
|
$('#comment').notify(localize('ERROR_COMMENT_INVALID'), 'error').parent().addClass('has-error');
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// The documentation page
|
// The documentation page
|
||||||
function initDoc(){
|
function initDoc(){
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
%= include 'public_toolbar'
|
%= include 'public_toolbar'
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="well publicForm">
|
<div class="well publicForm">
|
||||||
<form action="<%= url_for('/feedback') %>" method="post">
|
<form id="feedback-form" action="<%= url_for('/feedback') %>" method="post">
|
||||||
<legend class=text-center">
|
<legend class=text-center">
|
||||||
%= l('GIVE_US_YOUR_FEEDBACK')
|
%= l('GIVE_US_YOUR_FEEDBACK')
|
||||||
</legend>
|
</legend>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<label for="email">
|
<label for="email">
|
||||||
%= l('YOUR_MAIL_OPTIONAL')
|
%= l('YOUR_MAIL_OPTIONAL')
|
||||||
</label>
|
</label>
|
||||||
<input type="email"
|
<input type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
id="email"
|
id="email"
|
||||||
name="email"
|
name="email"
|
||||||
|
@ -29,8 +29,7 @@
|
||||||
name="comment"
|
name="comment"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
rows="10"
|
rows="10"
|
||||||
placeholder="<%= l('VROOM_IS_AWESOME') %>"
|
placeholder="<%= l('VROOM_IS_AWESOME') %>"></textarea>
|
||||||
required></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
<button type="submit"
|
<button type="submit"
|
||||||
class="btn btn-primary">
|
class="btn btn-primary">
|
||||||
|
@ -44,4 +43,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
%= include 'js_common'
|
%= include 'js_common'
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
initFeedback();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
%= include 'footer'
|
%= include 'footer'
|
||||||
|
|
9
vroom.pl
9
vroom.pl
|
@ -1487,7 +1487,14 @@ any [ qw(GET POST) ] => '/feedback' => sub {
|
||||||
page => 'feedback'
|
page => 'feedback'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
my $email = $self->param('email') || '';
|
my $email = $self->param('email');
|
||||||
|
if ($email && $email ne '' && !$self->valid_email($email)){
|
||||||
|
return $self->render('error',
|
||||||
|
err => 'ERROR_MAIL_INVALID',
|
||||||
|
msg => $self->l('ERROR_MAIL_INVALID'),
|
||||||
|
room => ''
|
||||||
|
);
|
||||||
|
}
|
||||||
my $comment = $self->param('comment');
|
my $comment = $self->param('comment');
|
||||||
my $sent = $self->mail(
|
my $sent = $self->mail(
|
||||||
to => $config->{'email.contact'},
|
to => $config->{'email.contact'},
|
||||||
|
|
Loading…
Reference in New Issue