Changed code around so that survey is not bound to the session until the first time the user responds rather than the first time the survey is viewed.

This commit is contained in:
Frank Dillon 2007-07-11 16:25:49 +00:00
parent 0e05bc3f10
commit b367100591

View file

@ -680,7 +680,8 @@ sub view {
$var->{'user.isFirstResponse'} = ($var->{'response.Count'} == 0 && !(exists $var->{'response.id'}));
$var->{'user.canRespondAgain'} = ($var->{'response.Count'} < $self->get("maxResponsesPerUser"));
if (($var->{'user.isFirstResponse'}) || ($self->session->form->process("startNew") && $var->{'user.canRespondAgain'})) {
$var->{'response.Id'} = $self->generateResponseId;
$var->{'response.Id'} = "new"; #Added 7-11-07 by fdillon
#$var->{'response.Id'} = $self->generateResponseId; #Removed 7-11-07 by fdillon
}
if ($var->{'response.Id'}) {
$var->{'questions.soFar.count'} = $self->getQuestionResponseCount($var->{'response.Id'});
@ -698,6 +699,10 @@ sub view {
name=>'func',
value=>'respond'
});
$var->{'form.header'} .= WebGUI::Form::hidden($self->session, { #Added 7-11-07 by fdillon
name=>"startNew",
value=>$self->session->form->process("startNew")
});
$var->{'form.footer'} = WebGUI::Form::formFooter($self->session,);
$var->{'form.submit'} = WebGUI::Form::submit($self->session,{
value=>$i18n->get(50)
@ -1211,7 +1216,16 @@ sub www_moveSectionUp {
sub www_respond {
my $self = shift;
return "" unless ($self->session->user->isInGroup($self->get("groupToTakeSurvey")));
my $varname = $self->getResponseIdString;
#If user has not responded before, create the responseId binding the survey to this session: fdillon 7-11-07
my $responseCount = $self->getResponseCount;
my $responseId = $self->getResponseId();
my $isFirstResponse = ($rc == 0 && !(defined $rid));
my $canRespondAgain = ($rc < $self->get("maxResponsesPerUser"));
if ($isFirstResponse || ($self->session->form->process("startNew") && $canRespondAgain)) {
$self->generateResponseId;
}
my $varname = $self->getResponseIdString;
return "" unless ($self->session->scratch->get($varname));
my $userId = ($self->get("anonymous")) ? substr(md5_hex($self->session->user->userId),0,8) : $self->session->user->userId;
my $terminate = 0;
@ -1231,7 +1245,8 @@ sub www_respond {
".$self->session->db->quote($self->session->form->process("comment_".$id)).", ".$self->session->db->quote($response).", ".$self->session->datetime->time().")");
}
}
my $responseCount = $self->getQuestionResponseCount($self->session->scratch->get($varname));
$responseCount = $self->getQuestionResponseCount($self->session->scratch->get($varname));
if ($terminate || $responseCount >= $self->getValue("questionsPerResponse") || $responseCount >= $self->getQuestionCount) {
$self->session->db->setRow("Survey_response","Survey_responseId",{
isComplete=>1,