From c2fc74ae85606b761a4a01414fe40cb8667640ce Mon Sep 17 00:00:00 2001 From: Kaleb Murphy Date: Tue, 14 Oct 2008 03:07:53 +0000 Subject: [PATCH] Need to finish the template packages, reports, fix up a small branching issue, copying, and an upgrade path. --- lib/WebGUI/Asset/Wobject/Survey.pm | 978 +++--------------- lib/WebGUI/Asset/Wobject/Survey/AnswerJSON.pm | 60 -- .../Asset/Wobject/Survey/QuestionJSON.pm | 101 -- .../Asset/Wobject/Survey/SectionJSON.pm | 155 --- lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm | 118 ++- www/extras/wobject/Survey/administersurvey.js | 90 +- .../wobject/Survey/administersurvey/comm.js | 1 + www/extras/wobject/Survey/survey.css | 1 - 8 files changed, 329 insertions(+), 1175 deletions(-) delete mode 100644 lib/WebGUI/Asset/Wobject/Survey/AnswerJSON.pm delete mode 100644 lib/WebGUI/Asset/Wobject/Survey/QuestionJSON.pm delete mode 100644 lib/WebGUI/Asset/Wobject/Survey/SectionJSON.pm diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index 99c2f3c7c..7b81ad953 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -184,18 +184,18 @@ Loads the survey collateral into memory so that the survey objects can be create sub loadSurveyJSON{ my $self = shift; + my $jsonHash = shift; + if(defined $self->survey){return;}#already loaded - if(defined $self->helper){return;}#already loaded - - my $jsonHash = $self->session->db->quickScalar("select surveyJSON from Survey where assetId = ?",[$self->getId]); + $jsonHash = $self->session->db->quickScalar("select surveyJSON from Survey where assetId = ?",[$self->getId]) if(! defined $jsonHash); $self->session->errorHandler->error("LOADING JSON"); eval{ - $self->{jsonHelper} = WebGUI::Asset::Wobject::Survey::SurveyJSON->new($jsonHash,$self->session->errorHandler); + $self->{survey} = WebGUI::Asset::Wobject::Survey::SurveyJSON->new($jsonHash,$self->session->errorHandler); }; $self->session->errorHandler->error("Loaded JSON".$@); -#$self->session->errorHandler->error("Loaded JSON\n\n".Dumper $self->helper->freeze); +#$self->session->errorHandler->error("Loaded JSON\n\n".Dumper $self->survey->freeze); } #------------------------------------------------------------------- @@ -205,15 +205,15 @@ $self->session->errorHandler->error("Loaded JSON".$@); Saves the survey collateral to the DB =cut -sub helper{ return shift->{jsonHelper}; } -sub littleBuddy{ return shift->{jsonHelper}; } -sub allyourbases{ return shift->{jsonHelper}; } -sub helpmehelpme{ return shift->{jsonHelper}; } +sub survey{ return shift->{survey}; } +sub littleBuddy{ return shift->{survey}; } +sub allyourbases{ return shift->{survey}; } +sub helpmehelpme{ return shift->{survey}; } sub saveSurveyJSON{ my $self = shift; - my $data = $self->helper->freeze(); + my $data = $self->survey->freeze(); $self->session->errorHandler->error("Saving THIS DATA");#\n\n".$data); @@ -256,7 +256,7 @@ $self->session->errorHandler->error("Deleting ".join(',',@address)); } $self->session->errorHandler->error("Updating ".join(',',@address)); #each object checks the ref and then either updates or passes it to the correct child. New objects will have an index of -1. - my $message = $self->helper->update(\@address,$responses); + my $message = $self->survey->update(\@address,$responses); $self->saveSurveyJSON(); @@ -270,7 +270,7 @@ sub deleteObject{ $self->loadSurveyJSON(); - my $message = $self->helper->remove($address);#each object checks the ref and then either updates or passes it to the correct child. New objects will have an index of -1. + my $message = $self->survey->remove($address);#each object checks the ref and then either updates or passes it to the correct child. New objects will have an index of -1. $self->saveSurveyJSON(); #The parent address of the deleted object is returned. @@ -294,7 +294,7 @@ $self->session->errorHandler->error("Address is:".join(',', @inAddress)); $self->loadSurveyJSON(); #Don't save after this as the new object should not stay in the survey - my $address = $self->helper->newObject(\@inAddress); + my $address = $self->survey->newObject(\@inAddress); $self->session->errorHandler->error("New objects address is:".join(',', @$address)); @@ -316,13 +316,13 @@ $self->session->errorHandler->error("In Drag Drop ".Dumper $p); my @bid = split/-/,$p->{before}->{id}; $self->loadSurveyJSON(); - my $target = $self->helper->getObject(\@tid); - $self->helper->remove(\@tid,1); + my $target = $self->survey->getObject(\@tid); + $self->survey->remove(\@tid,1); my $address = [0]; if(@tid == 1){ $#bid = 0;#sections can only be inserted after another section so chop off the question and answer portion of $bid[0] = -1 if(! defined $bid[0]); - $self->helper->insertObject($target, [$bid[0]]); + $self->survey->insertObject($target, [$bid[0]]); }elsif(@tid == 2){#questions can be moved to any section, but a pushed to the end of a new section. if($bid[0] !~ /\d/){ $bid[0] = $tid[0]; @@ -337,24 +337,24 @@ $self->session->errorHandler->error("In Drag Drop ".Dumper $p); $bid[1] = -1; }else{ #else move to the end of the selected section - $bid[1] = $#{$self->helper->questions([$bid[0]])}; + $bid[1] = $#{$self->survey->questions([$bid[0]])}; } } - $self->helper->insertObject($target, [$bid[0],$bid[1]]); + $self->survey->insertObject($target, [$bid[0],$bid[1]]); }elsif(@tid == 3){#answers can only be rearranged in the same question if(@bid == 2 and $bid[1] == $tid[1]){ $bid[2] = -1; - $self->helper->insertObject($target, [$bid[0],$bid[1],$bid[2]]); + $self->survey->insertObject($target, [$bid[0],$bid[1],$bid[2]]); }elsif(@bid == 3){ - $self->helper->insertObject($target, [$bid[0],$bid[1],$bid[2]]); + $self->survey->insertObject($target, [$bid[0],$bid[1],$bid[2]]); }else{ #else put it back where it was - $self->helper->insertObject($target, \@tid); + $self->survey->insertObject($target, \@tid); } } $self->saveSurveyJSON(); -$self->session->errorHandler->error("Finsihed Drag Drop ".Dumper $self->helper->freeze()); +$self->session->errorHandler->error("Finsihed Drag Drop ".Dumper $self->survey->freeze()); return $self->www_loadSurvey({address => $address}); } @@ -377,12 +377,12 @@ $self->session->errorHandler->error("Entering loadSurvey"); } my $message = defined $options->{message} ? $options->{message} : ''; #$self->session->errorHandler->error("Getting edit vars:".join(',',@$address)); - my $var = defined $options->{var} ? $options->{var} : $self->helper->getEditVars($address); + my $var = defined $options->{var} ? $options->{var} : $self->survey->getEditVars($address); -$self->session->errorHandler->error("Got edit vars".Dumper $self->helper->freeze); -$self->session->errorHandler->error("Loaded beginning params ".join(',',@$address)); +#$self->session->errorHandler->error("Got edit vars".Dumper $self->survey->freeze); +#$self->session->errorHandler->error("Loaded beginning params ".join(',',@$address)); my $editHtml; -$self->session->errorHandler->error("The edit vars:".Dumper $var); +#$self->session->errorHandler->error("The edit vars:".Dumper $var); if($var->{type} eq 'section'){ $editHtml = $self->processTemplate($var,$self->get("sectionEditTemplateId")); }elsif($var->{type} eq 'question'){ @@ -390,7 +390,7 @@ $self->session->errorHandler->error("The edit vars:".Dumper $var); }elsif($var->{type} eq 'answer'){ $editHtml = $self->processTemplate($var,$self->get("answerEditTemplateId")); } -$self->session->errorHandler->error("The HTML :$editHtml"); +#$self->session->errorHandler->error("The HTML :$editHtml"); my %buttons; $buttons{question} = $$address[0]; @@ -398,7 +398,7 @@ $self->session->errorHandler->error("The HTML :$editHtml"); $buttons{answer} = "$$address[0]-$$address[1]"; } - my $data = $self->helper->getDragDropList($address); + my $data = $self->survey->getDragDropList($address); #$self->session->errorHandler->error("The DD data :".Dumper $data); my $html; my ($scount,$qcount,$acount) = (-1,-1,-1); @@ -455,94 +455,6 @@ $self->session->errorHandler->error("Returning from loadSurvey"); return encode_json($return); } -#------------------------------------------------------------------- -sub getSpecificSection{ - my $self = shift; - my $Id = shift; - my $responseId = shift; - my $section = $self->session->db->quickHashRef( - "select * from Survey_section where Survey_sectionId = ?", - [ $Id ]); - if($responseId){ - $section = $self->fillSectionTextVariables($responseId,$section); - } - - return $section; -} -#------------------------------------------------------------------- -sub getSpecificQuestion{ - my $self = shift; - my $Id = shift; - return $self->session->db->quickHashRef( - "select * from Survey_question where Survey_questionId = ?", - [ $Id ]); -} -#------------------------------------------------------------------- -sub getSpecificAnswer{ - my $self = shift; - my $Id = shift; - return $self->session->db->quickHashRef( - "select * from Survey_answer where Survey_answerId = ?", - [ $Id ]); -} - -#------------------------------------------------------------------- -sub getAnswers{ - my $self = shift; - my $qId = shift; - if(! $qId){ return;} - return $self->session->db->buildArrayRefOfHashRefs( - "select substr(answerText,1,40) as text, Survey_answerId, Survey_questionId - from Survey_answer - where Survey_questionId = ? - order by sequenceNumber ASC" - ,[ $qId ]); -} - -#------------------------------------------------------------------- -sub getQuestions{ - my $self = shift; - my $sId = shift; - if(! $sId){ return;} - return $self->session->db->buildArrayRefOfHashRefs( - "select substr(questionText,1,40) as text, Survey_questionId, Survey_sectionId - from Survey_question - where Survey_sectionId = ? - order by sequenceNumber ASC" - ,[ $sId ]); -} - - - - -#------------------------------------------------------------------- -sub getSections{ - my $self = shift; - return $self->session->db->buildArrayRefOfHashRefs( - "select Survey_sectionId, sectionName - from Survey_section - where assetId = ? - order by sequenceNumber ASC" - ,[ $self->getId() ]); -} - -#------------------------------------------------------------------- -sub getFirstSection{ - my $self = shift; - $self->session->errorHandler->warn("In get first section with assid as ".$self->getId()); - return $self->session->db->quickScalar( - "select Survey_sectionId from Survey_section where assetId = ? order by sequenceNumber asc", - [ $self->getId() ]); -} - -#------------------------------------------------------------------- -sub insertSection{ - my $self = shift; - my $data = shift;#array ref - $self->session->db->write("insert into Survey_section values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",$data); -} - - #------------------------------------------------------------------- =head2 prepareView ( ) @@ -567,9 +479,6 @@ sub prepareView { sub purge { my $self = shift; - $self->session->db->write("delete from Survey_answer where assetId = ?",[$self->getId()]); - $self->session->db->write("delete from Survey_question where assetId = ?",[$self->getId()]); - $self->session->db->write("delete from Survey_section where assetId = ?",[$self->getId()]); $self->session->db->write("delete from Survey_response where assetId = ?",[$self->getId()]); $self->session->db->write("delete from Survey_questionResponse where assetId = ?",[$self->getId()]); return $self->SUPER::purge; @@ -638,11 +547,18 @@ sub www_view { sub www_takeSurvey{ my $self = shift; my %var; -$self->session->errorHandler->warn("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); -# my $out = $self->processStyle($self->processTemplate(\%var,$self->get("surveyEditTemplateId"))); + my $out = $self->processTemplate(\%var,$self->get("surveyTakeTemplateId")); - my $responseId = $self->getResponseId(); -# if(!$responseId){return $self->surveyEnd();} + + eval{ + my $responseId = $self->getResponseId(); + if(!$responseId){ +$self->session->errorHandler->error("\n\nIn takeSurvey with no reponseId $responseId"); + return $self->surveyEnd(); + } + }; + + $self->session->errorHandler->error($@) if defined $@; return $out; } @@ -663,65 +579,46 @@ sub www_submitQuestions{ my $responseId = $self->getResponseId(); if(!$responseId){return $self->surveyEnd();} - $self->session->errorHandler->warn("\n\nIn submitQuestions with reponseId $responseId"); + $self->session->errorHandler->error("\n\nIn submitQuestions with reponseId $responseId"); my $responses = $self->session->form->paramsHashRef(); - +$self->session->errorHandler->error(Dumper $responses); delete $$responses{'func'}; -########### - -# GO THROUGH ALL RESPONSES LOOKING FOR VERBATIMS AND ADD THEM ACCORDINGLY - -####### - my @goodResponses = keys %$responses;#load everything. if(@goodResponses == 0){##nothing to load - return $self->www_loadQuestions($responseId); + return $self->www_loadQuestions(); } - my $sql = "select max(answerOrder) from Survey_questionResponse where Survey_responseId = ?"; - my $lastOrder = $self->session->db->quickScalar($sql, [$responseId]); + $self->loadBothJSON(); + my $termInfo = $self->response->recordResponses($responses); - #handle comments - foreach my $r(@goodResponses){ - if($r =~ /(.*?)comment$/){ - my $t = $1; -$self->session->errorHandler->warn("Inserting a comment: key is $r regex key is $t responseid is $responseId and value is ".$$responses{$r}); - $self->session->db->write("insert into Survey_questionResponseComment values(?,?,?,?)",[$self->getId(),$responseId,$t,$$responses{$r}]); - } + $self->saveResponseJSON(); + + if($termInfo->[0]){ + return $self->surveyEnd($termInfo->[1]); } - if(!$lastOrder){$lastOrder = 0;} + return $self->www_loadQuestions(); - #get order of responses ##Comments will be ignored in this query as they use an id of the questionId concatted with 'comment' which will never match a Survey_answerId - my $orderOf = $self->session->db->buildArrayRefOfHashRefs("select distinct(a.Survey_answerId), q.questionType - from Survey_answer a, Survey_question q where a.Survey_answerId in (". - (join (',',map("?",@goodResponses))). - ") and a.Survey_questionId = q.Survey_questionId order by q.sequenceNumber ASC", - \@goodResponses); -use Data::Dumper; -$self->session->errorHandler->warn("OrderOf".Dumper $orderOf); -$self->session->errorHandler->warn("goodReponses".Dumper @goodResponses); - my $files = 0; - for my $id(@$orderOf){ +# for my $id(@$orderOf){ #if a file upload, write to disk - my $path; - if($id->{'questionType'} eq 'File Upload'){ - $files = 1; - my $storage = WebGUI::Storage->create($self->session); - my $filename = $storage->addFileFromFormPost( $id->{'Survey_answerId'} ); - $path = $storage->getPath($filename); - } -$self->session->errorHandler->warn("Inserting a response ".$id->{'Survey_answerId'}." $responseId, $path, ".$$responses{$id->{'Survey_answerId'}}); - $self->session->db->write("insert into Survey_questionResponse - select ?, Survey_sectionId, Survey_questionId, Survey_answerId, ?, ?, ?, now(), ?, ? from Survey_answer where Survey_answerId = ?", - [$self->getId(), $responseId, $$responses{ $id->{'Survey_answerId'} }, '', $path, ++$lastOrder, $id->{'Survey_answerId'}]); - } +# my $path; +# if($id->{'questionType'} eq 'File Upload'){ +# $files = 1; +# my $storage = WebGUI::Storage->create($self->session); +# my $filename = $storage->addFileFromFormPost( $id->{'Survey_answerId'} ); +# $path = $storage->getPath($filename); +# } +#$self->session->errorHandler->error("Inserting a response ".$id->{'Survey_answerId'}." $responseId, $path, ".$$responses{$id->{'Survey_answerId'}}); +# $self->session->db->write("insert into Survey_questionResponse +# select ?, Survey_sectionId, Survey_questionId, Survey_answerId, ?, ?, ?, now(), ?, ? from Survey_answer where Survey_answerId = ?", +# [$self->getId(), $responseId, $$responses{ $id->{'Survey_answerId'} }, '', $path, ++$lastOrder, $id->{'Survey_answerId'}]); +# } if($files){ ##special case, need to check for more questions in section, if not, more current up one my $lastA = $self->getLastAnswerInfo($responseId); @@ -747,152 +644,44 @@ $self->session->errorHandler->warn("Inserting a response ".$id->{'Survey_answerI #------------------------------------------------------------------- sub www_loadQuestions{ my $self=shift; - my $responseId = shift; - $self->session->errorHandler->warn("\n\n\n\n\t\t\t\t\t\t\t\t\t---In loadQuestions with responseId $responseId"); + $self->session->errorHandler->error("\n\n\n\n\t\t\t\t\t\t\t\t\t---In loadQuestions"); if(!$self->canTakeSurvey()){ return $self->surveyEnd(); -# return encode_json({"type","FAIL LOGIN"}); } - - my $fromSubmit = 0; - - if($responseId){ -$self->session->errorHandler->warn("Setting fromSubmit to true"); - $fromSubmit = 1; - }else{ - $responseId = $self->getResponseId(); - if(!$responseId){ + +$self->session->errorHandler->error("Can take survey"); + + my $responseId = $self->getResponseId();#also loads the survey and response + if(!$responseId){ return $self->surveyEnd(); - } } - my $currentSection = $self->getCurrentSection($responseId); - if(!$currentSection){ - $currentSection = $self->getFirstSection(); + my $questions = $self->response->nextQuestions(); +$self->session->errorHandler->error("Load Questions had ".@$questions." questions"); + + if(@$questions < 1){ + return $self->surveyEnd(); } -$self->session->errorHandler->warn("Current Section is $currentSection"); - - my $lastAfj = $self->getLastAnswerInfoForJump($responseId); - -$self->session->errorHandler->warn("Last Answer for jump was for section: ".$lastAfj->{'Survey_sectionId'}); - - if(exists $lastAfj->{'Survey_sectionId'} and $lastAfj->{'Survey_sectionId'} eq $currentSection){ - my ($sectionId,$questionId) = $self->getJumpTo($lastAfj->{'Survey_answerId'}); - if($sectionId){ - my $section = $self->getSpecificSection($sectionId,$responseId); - my $questions = $self->getQuestionsAndAnswers($responseId,$section,$questionId); - $self->setCurrentSection($responseId,$sectionId); -$self->session->errorHandler->warn("Jump"); - return $self->showQuestions($section,$questions); - } -$self->session->errorHandler->warn("No Jump"); - } - - - my ($section,$questions,$questionId); - - my $lastA = $self->getLastAnswerInfo($responseId); -$self->session->errorHandler->warn("Last Answer was for section: ".$lastA->{'Survey_sectionId'}); - - #if we're called from submit, see if there are anymore questions in section, show them, else go to next section. If not called, then show this section. - $section = $self->getSpecificSection($currentSection,$responseId); - if(exists $lastA->{'Survey_sectionId'} and $lastA->{'Survey_sectionId'} eq $currentSection){ - $questionId = $self->getNextQuestionId($lastA->{'Survey_questionId'}); - } - - if($section->{'randomizeQuestions'} and $self->sectionHasQuestions($section->{'Survey_sectionId'})){#check to see if any questions are left in section to ask -$self->session->errorHandler->warn("Random Questions Section ".$section->{'sequenceNumber'}); - my $questionsAnsweredInSection = $self->questionsAnsweredInSection($section->{'Survey_sectionId'},$responseId); - my $questionsInSection = $self->questionsInSection($section->{'Survey_sectionId'}); - if($questionsInSection == $questionsAnsweredInSection){ -$self->session->errorHandler->warn("1"); - if($section->{'terminal'}){ -$self->session->errorHandler->warn("1-1"); - return $self->surveyEnd($responseId,$section->{'terminalURL'}); - } - my $nextSection = $self->getNextSection($section->{'Survey_sectionId'}); - if(! $nextSection){ -$self->session->errorHandler->warn("1-2"); - return $self->surveyEnd($responseId,$section->{'terminalURL'}); - }else{ -$self->session->errorHandler->warn("1-3"); - $self->setCurrentSection($responseId,$nextSection); - return $self->www_loadQuestions();#We don't pass in the responseId so that it we think it is refresh and are not looking for previous questions in this section - } - } -$self->session->errorHandler->warn("2"); - $questions = $self->getRandomQuestionsAndAnswers($section,$responseId); - } - elsif($fromSubmit){ -$self->session->errorHandler->warn("Not Random"); - if(!$questionId and $section->{'terminal'}){ -$self->session->errorHandler->warn("1"); - return $self->surveyEnd($responseId,$section->{'terminalURL'}); - }elsif(!$questionId){ -$self->session->errorHandler->warn("2"); - $currentSection = $self->getNextSection($currentSection); - if(!$currentSection){ -$self->session->errorHandler->warn("2-2 with $responseId"); - return $self->surveyEnd($responseId,$section->{'terminalURL'}); - }else{ -$self->session->errorHandler->warn("2-3"); - $self->setCurrentSection($responseId,$currentSection); -# return $self->www_loadQuestions($responseId); - return $self->www_loadQuestions(); -# $section = $self->getSpecificSection($currentSection); -# $questions = $self->getQuestionsAndAnswers($responseId,$section); - } - }else{ -$self->session->errorHandler->warn("3"); - $section = $self->getSpecificSection($currentSection,$responseId); - $questions = $self->getQuestionsAndAnswers($responseId,$section,$questionId); - } - }else{ -$self->session->errorHandler->warn("4"); - if($questionId){ -$self->session->errorHandler->warn("4-5"); - $questions = $self->getQuestionsAndAnswers($responseId,$section,$questionId); - }else{ -$self->session->errorHandler->warn("4-6"); - $questions = $self->getQuestionsAndAnswers($responseId,$section); - } - if($self->sectionHasQuestions($currentSection) and @$questions == 0){ -$self->session->errorHandler->warn("5"); - if($section->{'terminal'}){ -$self->session->errorHandler->warn("5-1"); - return $self->surveyEnd($responseId,$section->{'terminalURL'}); - } -$self->session->errorHandler->warn("5-2"); - $currentSection = $self->getNextSection($currentSection); - $section = $self->getSpecificSection($currentSection,$responseId); - $questions = $self->getQuestionsAndAnswers($responseId,$section); - } - } - -$self->session->errorHandler->warn("6"); - $self->setCurrentSection($responseId,$currentSection); - return $self->showQuestions($section,$questions); - -} - - - - -sub sectionHasQuestions{ - my $self=shift; - my $sectionId = shift; - return $self->session->db->quickScalar("select '1' from Survey_question where Survey_sectionId = ? limit 1",[$sectionId]); + my $section = $self->response->nextSection(); +#$self->session->errorHandler->error(Dumper $section); + + #return $self->prepareShowSurveyTemplate($section,$questions); + $section->{id} = $self->response->nextSectionId(); + my $text = $self->prepareShowSurveyTemplate($section,$questions); +$self->session->errorHandler->error("Load Questions returning"); + return $text; } +#------------------------------------------------------------------- #called when the survey is over. sub surveyEnd{ my $self = shift; - my $responseId = shift; my $url = shift; -$self->session->errorHandler->warn("--SurveyEnd There wasn't a responseId $responseId"); +$self->session->errorHandler->error("-------SurveyEnd $url"); + my $responseId = $self->getResponseId();#also loads the survey and response # $self->session->db->write("update Survey_response set endDate = ? and isComplete = 1 where Survey_responseId = ?",[WebGUI::DateTime->now->toDatabase,$responseId]); $self->session->db->setRow("Survey_response","Survey_responseId",{ Survey_responseId=>$responseId, @@ -907,14 +696,15 @@ $self->session->errorHandler->warn("--SurveyEnd There wasn't a responseId $respo $url = "/"; } } -$self->session->errorHandler->warn("-------SurveyEnd $url"); +$self->session->errorHandler->error("-------SurveyEnd $url"); return encode_json({"type","forward","url",$url}); } +#------------------------------------------------------------------- #sends the processed template and questions structure to the client -sub showQuestions{ +sub prepareShowSurveyTemplate{ my ($self,$section,$questions) = @_; my %multipleChoice = ('Multiple Choice',1,'Gender',1,'Yes/No',1,'True/False',1,'Ideology',1, 'Race',1,'Party',1,'Education',1 ,'Scale',1,'Agree/Disagree',1,'Oppose/Support',1,'Importance',1, 'Likelihood',1,'Certainty',1,'Satisfaction',1,'Confidence',1, @@ -925,10 +715,11 @@ sub showQuestions{ my %fileUpload = ('File Upload',1); my %hidden = ('Hidden',1); +$self->session->errorHandler->error("Preparing to insert question for $#$questions questions"); foreach my $q(@$questions){ - +$self->session->errorHandler->error("Question Text is: ".$q->{text}); if($fileUpload{$$q{'questionType'}}){ $q->{'fileLoader'} = 1; } - elsif($text{$$q{'questionType'}}){ $q->{'text'} = 1; } + elsif($text{$$q{'questionType'}}){ $q->{'textType'} = 1; } elsif($hidden{$$q{'questionType'}}){ $q->{'hidden'} = 1; } elsif($multipleChoice{$$q{'questionType'}}){ $q->{'multipleChoice'} = 1; @@ -950,316 +741,109 @@ sub showQuestions{ if($$q{'verticalDisplay'}){ $$q{'verts'} = "

"; $$q{'verte'} = "

"; } } - $section->{'questions'} = $questions; - my $survey = $self->get('surveyQuestionsId'); - -#$self->session->errorHandler->warn(Dumper $section); -#$self->session->errorHandler->warn(Dumper $survey); + +#$self->session->errorHandler->error(Dumper $section); my $out = $self->processTemplate($section,$self->get("surveyQuestionsId")); -use Data::Dumper; -$self->session->errorHandler->warn("Sending Back"); -#$self->session->errorHandler->warn("$out"); - return encode_json({"type","displayquestions","section",$section,"questions",$questions,"html",$out}); } -#Answer text for inserting into quesiton text -sub getPreviousAnswer{ - my ($self,$responseId,$var) = @_; - $var =~ s/^\[\[//g; - $var =~ s/\]\]$//g; -$self->session->errorHandler->warn("getPreviousAnswer for $var"); - my $ref = $self->session->db->buildArrayRefOfHashRefs("select a.answerText, qa.response from Survey_questionResponse qa, Survey_question q, Survey_answer a - where q.questionVariable = ? and q.Survey_questionId = a.Survey_questionId and a.Survey_answerId = qa.Survey_answerId - and qa.Survey_responseId = ? and qa.response != '' and qa.response is not null limit 1",[$var,$responseId]); - my $string; -use Data::Dumper; -$self->session->errorHandler->warn("getPreviousAnswer ".Dumper $ref); - if(@$ref < 1){ - $string = "PREVIOUS ANSWSER"; - }else{ - if($$ref[0]->{'answerText'} ne ""){ - $string = $$ref[0]->{'answerText'}; - }else{ - $string = $$ref[0]->{'response'}; - } - } -$self->session->errorHandler->warn("getPreviousAnswer returning $string"); - return $string; -} -sub getRandomText{ - my ($self,$responseId,$var) = @_; - $var =~ s/^\[\[\%//g; - $var =~ s/\]\]$//g; - my $response = $self->getResponse($responseId); - my %rands; - my $rstring = $response->{'randomWords'}; - if($rstring){ - %rands = %{decode_json($response->{'randomWords'})}; - } - if(! exists($rands{$var})){ - my $string = $self->session->db->quickScalar("select randomizedWords from Survey_question where questionVariable = ?",[$var]); - my @data = split/\n/,$string; - my $picked = int(rand(scalar @data)); - $rands{$var} = $data[$picked]; - my $temp = encode_json(\%rands); - $self->session->db->write("update Survey_response set randomWords = ? where Survey_responseId = ?",[$temp,$responseId]); - } - return $rands{$var}; -} -sub fillSectionTextVariables{ + + +#------------------------------------------------------------------- + +sub loadBothJSON{ my $self = shift; - my $responseId = shift; - my $section = shift; - $section->{'sectionText'} =~ s/(\[\[[^\%]*?\]\])/$self->getPreviousAnswer($responseId,$1)/eg; - $section->{'sectionText'} =~ s/(\[\[\%.*?\]\])/$self->getRandomText($responseId,$1)/eg; -$self->session->errorHandler->warn("Found $1 in ".$$section{'sectionText'}); - return $section; -} -sub fillQuestionTextVariables{ - my $self = shift; - my $responseId = shift; - my $questions = shift; - - foreach my $q(@$questions){ - $q->{'questionText'} =~ s/(\[\[[^\%]*?\]\])/$self->getPreviousAnswer($responseId,$1)/eg; - $q->{'questionText'} =~ s/(\[\[\%.*?\]\])/$self->getRandomText($responseId,$1)/eg; -$self->session->errorHandler->warn("Found $1 in ".$$q{'sequenceNumber'}); - } - return $questions; -} - -sub getRandomQuestionsAndAnswers{ - my ($self,$section,$responseId) = @_; - my @completed = $self->session->db->buildArray("select Survey_questionId from Survey_questionResponse where Survey_sectionId = ? and Survey_responseId = ?", - [$section->{'Survey_sectionId'},$responseId]); - my $placeHolders; -$self->session->errorHandler->warn('In get random questions'); - my @params; - if(@completed > 0){ - map($placeHolders .= "?,",@completed); - chop($placeHolders);#get rid of trailing comma - }else{ - $placeHolders = "?"; - push(@completed,''); - } -$self->session->errorHandler->warn($placeHolders); - -$self->session->errorHandler->warn('Random build survey section'.$section->{'Survey_sectionId'}); - push(@params,$section->{'Survey_sectionId'}); - push(@params, @completed); - push(@params,$section->{'questionsPerPage'}); -$self->session->errorHandler->warn(join(',',@params)); - - my $questions = $self->session->db->buildArrayRefOfHashRefs(" - select q.* - from Survey_question q - where q.Survey_sectionId = ? and q.Survey_questionId not in ($placeHolders) - order by RAND() - LIMIT ? - ",\@params); - - $questions = $self->getAnswersForQuestions($questions); - - $questions = $self->fillQuestionTextVariables($responseId,$questions); - - return $questions; -} -sub getAnswersForQuestions{ - my ($self,$questions) = @_; - for(my $i=0; $i<=$#$questions; $i++){ - my $sql = "select a.* - from Survey_answer a - where a.Survey_questionId = ?"; - if($$questions[$i]{'randomizeAnswers'} eq '0'){ - $sql .= " order by a.sequenceNumber ASC"; - } - else{ - $sql .= " order by RAND()"; - } - $$questions[$i]{'answers'} = $self->session->db->buildArrayRefOfHashRefs( $sql ,[$$questions[$i]{'Survey_questionId'}] ); - } - return $questions; -} -sub getQuestionsAndAnswers{ - my ($self,$responseId,$section,$questionId) = @_; - my $qNeeded = $section->{'questionsPerPage'}; - my $ref; - my $seqNum = $self->session->db->quickScalar("select sequenceNumber from Survey_question where Survey_questionId = ?",[$questionId]); - if(!$seqNum){$seqNum = 1;} - my $questions = $self->session->db->buildArrayRefOfHashRefs(" - select q.* - from Survey_question q - where q.Survey_sectionId = ? and q.sequenceNumber >= ? and q.sequenceNumber < ? - order by q.sequenceNumber ASC - ",[$section->{'Survey_sectionId'},$seqNum,$seqNum+$section->{'questionsPerPage'}]); - - $questions = $self->getAnswersForQuestions($questions); - - $questions = $self->fillQuestionTextVariables($responseId,$questions); - - return $questions; -} - -sub getNextQuestionId{ - my ($self,$qid) = @_; - return $self->session->db->quickScalar("select q1.Survey_questionId from Survey_question q, Survey_question q1 - where q.Survey_questionId = ? and q.assetId = q1.assetId and q.Survey_sectionId = q1.Survey_sectionId and q.sequenceNumber + 1 = q1.sequenceNumber", - [$qid]); -} - -sub getNextRandomQuestions{ - my ($self,$section,$questions) = @_; -} - -sub getNextSection{ - my ($self,$sid) = @_; - my $section; - - my $var = $self->session->db->quickScalar("select goto from Survey_section - where Survey_sectionId = ?", [$sid]); - my @array = split/\s*\,\s*/,$var; - my $picked = int(rand(scalar @array)); - - $section = $self->session->db->quickScalar("select s1.Survey_sectionId from Survey_section s1 - where s1.sectionVariable = ?",[$array[$picked]]); - - if(!$section){ - $section = $self->session->db->quickScalar("select s1.Survey_sectionId from Survey_section s, Survey_section s1 - where s.assetId = ? and s.Survey_sectionId = ? and s1.assetId = ? and s1.sequenceNumber = s.sequenceNumber + 1", - [$self->getId(), $sid, $self->getId()]); - } - return $section; -} - -sub questionsAnsweredInSection{ - my ($self,$sid,$rid) = @_; - return $self->session->db->quickScalar("select count(distinct(Survey_questionId)) - from Survey_questionResponse where Survey_responseId = ? and Survey_sectionId = ?",[$rid,$sid]); -} - -sub questionsInSection{ - my ($self,$sid) = @_; - return $self->session->db->quickScalar("select count(*) from Survey_question where Survey_sectionId = ?",[$sid]); -} - -#last answer not skipped -sub getLastAnswerInfoForJump{ - my ($self,$rId) = @_; - return $self->session->db->quickHashRef(" - select r.Survey_sectionId, r.Survey_questionId, r.Survey_answerId,q.sequenceNumber - from Survey_section s, Survey_question q, Survey_answer a, Survey_questionResponse r - where r.Survey_responseId = ? and r.Survey_answerId = a.Survey_answerId and a.Survey_questionId = q.Survey_questionId and r.response != '' and - q.Survey_sectionId = s.Survey_sectionId and r.answerOrder = (select max(r1.answerOrder) from Survey_questionResponse r1 where r1.Survey_responseId = ? - and r1.response != '') LIMIT 1", - [$rId,$rId]); -} -#last answer, skipped or not -sub getLastAnswerInfo{ - my ($self,$rId) = @_; - return $self->session->db->quickHashRef(" - select r.Survey_sectionId, r.Survey_questionId, r.Survey_answerId,q.sequenceNumber - from Survey_section s, Survey_question q, Survey_answer a, Survey_questionResponse r - where r.Survey_responseId = ? and r.Survey_answerId = a.Survey_answerId and a.Survey_questionId = q.Survey_questionId and - q.Survey_sectionId = s.Survey_sectionId and r.answerOrder = (select max(r1.answerOrder) from Survey_questionResponse r1 where r1.Survey_responseId = ?) LIMIT 1", - [$rId,$rId]); -} - -sub getJumpTo{ - my ($self,$aId) = @_; - my $string = $self->session->db->quickScalar("select gotoQuestion from Survey_answer where Survey_answerId = ?",[$aId]); - if($string !~ /\w/ or $string eq "undefined"){ -$self->session->errorHandler->warn("No string or undefined $string"); - return; - } - my @array = split/\s*\,\s*/,$string; - - my $picked = int(rand(scalar @array)); - -$self->session->errorHandler->warn("Jupm was ".$array[$picked]." and picked was $picked"); + my $rId = shift; + if(defined $self->survey and defined $self->response){return;} my $ref = $self->session->db->buildArrayRefOfHashRefs(" - select Survey_sectionId, Survey_questionId - from Survey_question - where questionVariable = ? - ",[$array[$picked]]); - if(@$ref == 0){ - $ref = $self->session->db->buildArrayRefOfHashRefs(" - select Survey_sectionId - from Survey_section - where sectionVariable = ? - ",[$array[$picked]]); - } - if(@$ref > 0){ -$self->session->errorHandler->warn("JUMPING To ".$array[$picked]); - return ($ref->[0]->{'Survey_sectionId'},$ref->[0]->{'Survey_questionId'}); - } -$self->session->errorHandler->warn("Jump ended"); - return; + select s.surveyJSON,r.responseJSON + from Survey s, Survey_response r + where s.assetId = ? and r.Survey_responseId = ?", + [$self->getId,$rId]); + $self->loadSurveyJSON($ref->[0]->{surveyJSON}); + $self->loadResponseJSON($ref->[0]->{responseJSON}, $rId); } -sub getCurrentSection{ +#------------------------------------------------------------------- +sub loadResponseJSON{ my $self = shift; - my $responseId = shift; - return $self->session->db->quickScalar("select currentSection from Survey_response where Survey_responseId = ?",[$responseId]); + my $jsonHash = shift; + my $rId = shift; + + if(defined $self->response){return;} + + $jsonHash = $self->session->db->quickScalar("select surveyJSON from Survey where assetId = ?",[$self->getId]) if(! defined $jsonHash); + + $self->{response} = WebGUI::Asset::Wobject::Survey::ResponseJSON->new($jsonHash,$self->session->errorHandler, $rId, $self->survey); } -sub setCurrentSection{ +#------------------------------------------------------------------- +sub saveResponseJSON{ my $self = shift; - my $responseId = shift; - my $newSectionId = shift; - $self->session->db->write('update Survey_response set currentSection = ? where Survey_responseId = ?',[$newSectionId, $responseId]); + + my $data = $self->response->freeze(); + +$self->session->errorHandler->error("Saving RESPONSE to ".$self->{responseId}." for $data"); + + $self->session->db->write("update Survey_response set responseJSON = ? where Survey_responseId = ?",[$data,$self->{responseId}]); } -sub getResponse{ - my ($self,$responseId) = @_; - my $ref = $self->session->db->buildArrayRefOfHashRefs("select * from Survey_response where Survey_responseId = ?",[$responseId]); - return $ref->[0]; + + + + +#------------------------------------------------------------------- +sub response{ + my $self = shift; + return $self->{response}; } + +#------------------------------------------------------------------- + sub getResponseId{ my $self = shift; + return $self->{responseId} if(defined $self->{responseId}); + my $ip = $self->session->env->getIp; my $id = $self->session->user->userId(); - my $anonId = $self->session->form->process("id"); - + my $anonId = $self->session->form->process("userid") || $self->session->http->getCookies->{"Survey2AnonId"} || undef; + $self->session->http->setCookie("Survey2AnonId",$anonId) if($anonId); my $responseId; my $string; + + #if there is an anonid or id is for a WG user if($anonId or $id != 1){ -$self->session->errorHandler->warn("Response - 1"); $string = 'userId'; if($anonId){ -$self->session->errorHandler->warn("Response - 1-1"); $string = 'anonId'; $id = $anonId; } $responseId = $self->session->db->quickScalar("select Survey_responseId from Survey_response where $string = ? and assetId = ? and isComplete = 0", [$id,$self->getId()]); + }elsif($id == 1){ -$self->session->errorHandler->warn("Response - 2"); $responseId = $self->session->db->quickScalar("select Survey_responseId from Survey_response where userId = ? and ipAddress = ? and assetId = ? and isComplete = 0", [$id,$ip,$self->getId()]); } if(! $responseId){ -$self->session->errorHandler->warn("Response - 3"); my $allowedTakes = $self->session->db->quickScalar("select maxResponsesPerUser from Survey where assetId = ? order by revisionDate desc limit 1",[$self->getId()]); my $haveTaken; - if($id ==1 ){ -$self->session->errorHandler->warn("Response - 4"); + + if($id == 1 ){ $haveTaken = $self->session->db->quickScalar("select count(*) from Survey_response where userId = ? and ipAddress = ? and assetId = ?", [$id,$ip,$self->getId()]); }else{ -$self->session->errorHandler->warn("Response - 5"); $haveTaken = $self->session->db->quickScalar("select count(*) from Survey_response where $string = ? and assetId = ?", [$id,$self->getId()]); } if($haveTaken < $allowedTakes){ -$self->session->errorHandler->warn("Response - 6"); $responseId = $self->session->db->setRow("Survey_response","Survey_responseId",{ Survey_responseId=>"new", userId=>$id, @@ -1270,19 +854,31 @@ $self->session->errorHandler->warn("Response - 6"); assetId=>$self->getId(), anonId=>$anonId }); +$self->session->errorHandler->error("Creating a new response and survey order"); + $self->loadBothJSON($responseId); + $self->response->createSurveyOrder(); + $self->{responseId} = $responseId; + $self->saveResponseJSON(); }else{ -$self->session->errorHandler->warn("No responses left max=$allowedTakes used up=$haveTaken"); -} +$self->session->errorHandler->error("No responses left max=$allowedTakes used up=$haveTaken"); + } } - $self->session->errorHandler->warn("Survey Response was ".$responseId); + $self->{responseId} = $responseId; + $self->loadBothJSON($responseId); + $self->session->errorHandler->error("Survey Response was ".$responseId); return $responseId; } +#------------------------------------------------------------------- sub canTakeSurvey{ my $self = shift; - + + return $self->{canTake} if(defined $self->{canTake}); + +$self->session->errorHandler->error("Can take was NOT already defined"); + if(!$self->session->user->isInGroup($self->get("groupToTakeSurvey"))){ return 0; } @@ -1301,262 +897,20 @@ sub canTakeSurvey{ $takenCount = $self->session->db->quickScalar("select count(*) from Survey_response where userId = ? and assetId = ? and isComplete = ?",[$id,$self->getId(),1]); } - $self->session->errorHandler->warn("userid is ".$id."\t and ip is ".$ip); - $self->session->errorHandler->warn("max ".$maxTakes." taken ".$takenCount); + $self->session->errorHandler->error("userid is ".$id."\t and ip is ".$ip); + $self->session->errorHandler->error("max ".$maxTakes." taken ".$takenCount); if($takenCount >= $maxTakes){ - return 0; + $self->{canTake} = 0; + }else{ + $self->{canTake} = 1; } + $self->session->errorHandler->error("Can take survey returning ".$self->{canTake}); + return $self->{canTake}; - return 1; } -#------------------------------------------------------------------- -sub createDefaultAnswers{ - my ($self,$sid,$qid,$type) = @_; - $self->session->db->write("delete from Survey_answer where Survey_questionId = ?",[$qid]); - if($type eq 'Gender'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Male', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'Female', 0, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Yes/No'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Yes', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'No', 0, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'True/False'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'True', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'False', 0, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Agree/Disagree'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Strongly disagree', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 4, - undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, 'Strongly agree', 7, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Oppose/Support'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Strongly oppose', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 4, - undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, 'Strongly support', 7, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Importance'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all important', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely important', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Likelihood'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all likely', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely likely', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Certainty'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all certain', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely certain', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Satisfaction'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all satisfied', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Completely satisfied', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Confidence'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all confident', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely confident', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Effectiveness'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all effective', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely effective', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Concern'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all concerned', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely concerned', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Risk'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'No risk', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extreme risk', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Threat'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'No threat', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extreme threat', 10, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Security'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Not at all secure', 0, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, '', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, '', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, '', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, '', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, '', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, '', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, '', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 9, undef, '', 8, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 10, undef, '', 9, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 11, undef, 'Extremely secure', 10, undef, undef,undef,undef,0,20,2]); - - - }elsif($type eq 'Ideology'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Strongly liberal', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'Liberal', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, 'Somewhat liberal', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, 'Middle of the road', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, 'Slightly conservative', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, 'Conservative', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, 'Strongly conservative', 7, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Race'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'American Indian', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'Asian', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, 'Black', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, 'Hispanic', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, 'White non-Hispanic', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, 'Something else (verbatim)', 6, undef, undef,undef,undef,0,,20,2]); - - }elsif($type eq 'Party'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Democratic party', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'Republican party (or GOP)', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, 'Independant party', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, 'Other party (verbatim)', 4, undef, undef,undef,undef,1,,20,2]); - - }elsif($type eq 'Education'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Elementary or some high school', 1, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, 'High school/GED', 2, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 3, undef, 'Some college/vocational school', 3, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 4, undef, 'College graduate', 4, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 5, undef, 'Some graduate work', 5, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 6, undef, 'Master\'s degree', 6, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 7, undef, 'Doctorate (of any type)', 7, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 8, undef, 'Other degree (verbatim)', 8, undef, undef,undef,undef,1,,20,2]); - - }elsif($type eq 'Text'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Email'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Email:', undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Phone Number'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Phone Number:', undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Text Date'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Date:', undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Currency'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, 'Currency Amount:', undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Slider'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, 1,10,1,0,20,2]); - - }elsif($type eq 'Dual Slider - Range'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, 0,10,1,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, undef, undef, undef, 0,10,1,0,20,2]); - - }elsif($type eq 'Multi Slider - Allocate'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, 0,10,1,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, undef, undef, undef, 0,10,1,0,20,2]); - - }elsif($type eq 'Date'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Date Range'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, undef,undef,undef,0,20,2]); - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 2, undef, undef, undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'File Upload'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, undef,undef,undef,0,20,2]); - - }elsif($type eq 'Hidden'){ - $self->AnswersInsert([$self->getId(),$sid,$qid,$self->session->id->generate(), 1, undef, undef, undef, undef, undef,undef,undef,0,20,2]); - } - -} -sub AnswersInsert{ - my ($self,$array) = @_; - $self->session->db->write("insert into Survey_answer values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",$array); -} 1; diff --git a/lib/WebGUI/Asset/Wobject/Survey/AnswerJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/AnswerJSON.pm deleted file mode 100644 index 4029c1e12..000000000 --- a/lib/WebGUI/Asset/Wobject/Survey/AnswerJSON.pm +++ /dev/null @@ -1,60 +0,0 @@ -package WebGUI::Asset::Wobject::Survey::AnswerJSON; - -use strict; -use Data::Structure::Util qw/unbless/; - -sub new{ - my $class = shift; - my $self = shift || {}; - my $posts = shift; - $self->{answers} = $self->{answers} || []; - $self->{text} = $self->{text} || ''; - $self->{verbatim} = $self->{verbatim} || ''; - $self->{textCols} = $self->{textCols} || 10; - $self->{textRows} = $self->{textRows} || 5; - $self->{gotoQuestion} = $self->{gotoQuestion} || ''; - $self->{recordedAnswer} = $self->{recordedAnswer} || ''; - $self->{isCorrect} = $self->{isCorrect} || 1; - $self->{min} = $self->{min} || 1; - $self->{max} = $self->{max} || 10; - $self->{step} = $self->{step} || 1; - $self->{value} = $self->{value} || 1; - $self->{terminal} = $self->{terminal} || 0; - $self->{terminalUrl} = $self->{terminalUrl} || ''; - $self->{type} = 'answer'; - - if(defined $posts and ref $posts eq 'HASH'){ - while(my ($key,$value) = each %$posts){ - if(defined $self->{$key}){ - $self->{$key} = $value; - } - } - } - bless($self,$class); - return $self; -} -sub update{ - my ($self,$ref) = @_; - - while(my ($key,$value) = keys %{$ref->{object}}){ - $self->{$key} = $value; - } -} -sub remove{ - my $self = shift; -} -sub freeze{ - my $self = shift; - my %temp = %{$self}; -# $temp{parent} = undef; -# unbless $self; - return \%temp; -} - -#address is the array of objects currently selected in the edit screen -#data is the array of hash items for displaying -sub getDragDropList{ - my ($self,$data,$address,$selected) = @_; - push(@$data, { "type",$self->{type},"text",$self->{"text"}, "recorded", $self->{'recordedAnswer'} }); -} -1; diff --git a/lib/WebGUI/Asset/Wobject/Survey/QuestionJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/QuestionJSON.pm deleted file mode 100644 index 949ffcc56..000000000 --- a/lib/WebGUI/Asset/Wobject/Survey/QuestionJSON.pm +++ /dev/null @@ -1,101 +0,0 @@ -package WebGUI::Asset::Wobject::Survey::QuestionJSON; - -use strict; -use Data::Structure::Util qw/unbless/; - -sub new{ - my $class = shift; - my $self = shift || {}; - my $posts = shift; - - if(defined $self->{answers}){ - foreach(@{$self->{answers}}){ - $_ = WebGUI::Asset::Wobject::Survey::AnswerJSON->new($_); - } - }else{ - $self->{answers} = []; - } - - $self->{variableName} = $self->{variableName} || ''; - $self->{text} = $self->{text} || ''; - $self->{allowComment} = $self->{allowComment} || 0; - $self->{commentCols} = $self->{commentCols} || 10; - $self->{commentRows} = $self->{commentRows} || 5; - $self->{randomizeAnswers} = $self->{randomizeAnswers} || 0; - $self->{questionType} = $self->{questionType} || ''; - $self->{randomizedWords} = $self->{randomizedWords} || ''; - $self->{verticalDisplay} = $self->{verticalDisplay} || 0; - $self->{required} = $self->{required} || 0; - $self->{maxAnswers} = $self->{maxAnswers} || 1; - $self->{value} = $self->{value} || 1; - $self->{textInButton} = $self->{textInButton} || 0; - $self->{terminal} = $self->{terminal} || 0; - $self->{terminalUrl} = $self->{terminalUrl} || ''; - $self->{type} = 'question'; - - if(defined $posts and ref $posts eq 'HASH'){ - while(my ($key,$value) = each %$posts){ - if(defined $self->{$key}){ - $self->{$key} = $value; - } - } - } - - bless($self,$class); - return $self; -} - -sub update{ - my ($self,$ref) = @_; - #is a question - if(@{$$ref{ids}} == 1){ - while (my ($key,$value) = each %{$ref->{object}}){ - $self->{$key} = $value; - } - #is a new answer - }elsif($$ref{ids}->[2] eq 'NEW'){ - push(@{$self->{answers}}, WebGUI::Assest::Wobject::Survey::AnswerJSON->new( {},$ref) ); - #is updating a answer - }else{ - $self->{answers}->[$$ref{ids}->[2]]->update($ref); - } -} -sub getObject{ - my ($self,$address) = @_; - return $self->{answers}->[$address->[2]]; -} - -sub createTemp{ - my ($self,$ref) = @_; - return WebGUI::Asset::Wobject::Survey::AnswerJSON->new($self); -} - -sub remove{ - my ($self,$address) = @_; - splice(@{$self->{answers}},$$address[2],1); -} - - -sub freeze{ - my $self = shift; - $self->{parent} = undef; - my %temp = %{$self}; - $temp{answers} = []; - foreach(@{$self->{answers}}){ - push(@{$temp{answers}},$_->freeze()); - } - return \%temp; -} -#address is the array of objects currently selected in the edit screen -#data is the array of hash items for displaying -sub getDragDropList{ - my ($self,$data,$address,$selected) = @_; - push(@$data, { "type",$self->{type},"text",$self->{text} }); - if($selected){ - for (@{$self->{answers}}){ - $_->getDragDropList($data, $address); - } - } -} - -1; diff --git a/lib/WebGUI/Asset/Wobject/Survey/SectionJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/SectionJSON.pm deleted file mode 100644 index 87c4edfd9..000000000 --- a/lib/WebGUI/Asset/Wobject/Survey/SectionJSON.pm +++ /dev/null @@ -1,155 +0,0 @@ -package WebGUI::Asset::Wobject::Survey::SectionJSON; - -use strict; -use Data::Structure::Util qw/unbless/; -use WebGUI::Asset::Wobject::Survey::QuestionJSON; - -use Data::Dumper; - -sub new{ - my $class = shift; - my $self = shift || {}; - my $postInfo = shift; - my $log = shift; - if(defined $self->{questions}){ - foreach(@{$self->{questions}}){ - $_ = WebGUI::Asset::Wobject::Survey::QuestionJSON->new($_); - } - }else{ - $self->{questions} = []; - } - $self->{log} = $log if defined $log; - $self->{text} = $self->{text} || ''; - $self->{title} = $self->{title} || 'New Section'; - $self->{variable} = $self->{variable} || ''; - $self->{questionsPerPage} = $self->{questionsPerPage} || 5; - $self->{questionsOnSectionPage} = defined $self->{questionsOnSectionPage} ? $self->{questionsOnSectionPage} : 1; - $self->{randomizeQuestions} = $self->{randomizeQuestions} || 0; - $self->{everyPageTitle} = defined $self->{everyPageTitle} ? $self->{everyPageTitle} : 1; - $self->{everyPageText} = defined $self->{everyPageText} ? $self->{everyPageText} : 1; - $self->{terminal} = $self->{terminal} || 0; - $self->{terminalUrl} = $self->{terminalUrl} || ''; - $self->{goto} = $self->{goto} || ''; - $self->{timeLimit} = $self->{timeLimit} || 0; - $self->{type} = 'section'; - - if(defined $postInfo and ref $postInfo eq 'HASH'){ - while(my ($key,$value) = each %$postInfo){ - if(defined $self->{$key}){ - $self->{$key} = $value; - } - } - } - - bless($self,$class); - return $self; -} -sub getObject{ - my ($self,$address) = @_; - if(@$address == 2){ - return $self->{questions}->[$address->[1]]; - }else{ - return $self->{questions}->[$address->[1]]->getObject($address); - } -} -sub getEditVars{ - my ($self,$address) = @_; -$self->{log}->error("section geteditvars"); - if(@$address > 1){ - return $self->{questions}->[$address->[1]]->getEditVars($address); - } - #Fill in a template var hash and return it - my %var; - while (my ($key,$value) = each %{$self}){ - if($key ne 'questions' and $key ne 'questionsPerPage' and $key ne 'log'){ - $var{$key} = $value; - } - } - for(1 .. 10){ - if($_ == $self->{questionsPerPage}){ - push(@{$var{questionsPerPage}},{'index',$_,'selected',1}); - }else{ - push(@{$var{questionsPerPage}},{'index',$_,'selected',0}); - } - } - return \%var; - -} -sub newQuestion{ - my $self = shift; - push(@{$self->{questions}}, WebGUI::Assest::Wobject::Survey::QuestionJSON->new( $self,@{$self->{questions}}) ); -} -sub remove{ - my ($self,$address) = @_; - if(@$address == 2){ - splice(@{$self->{questions}},$$address[1],1); - }else{ - $self->{questions}->[$$address[1]]->remove($address); - } -} - -sub update{ - my ($self,$address,$ref,$log) = @_; - if(@{$address} == 1){ - while(my ($key,$value) = each %{$ref}){ - $self->{$key} = $value if defined $self->{$key}; - } - #is a new question - }elsif($$ref{ids}->[1] eq 'NEW'){ - push(@{$self->{questions}}, WebGUI::Assest::Wobject::Survey::QuestionJSON->new({},$ref) ); - - #is updating a question or answer - }else{ - $self->{questions}->[$$ref{ids}->[1]]->update($address,$ref); - } -} - -sub loadQuestion{ - my ($self,$questionHash) = @_; - push(@{$self->{questions}}, WebGUI::Assest::Wobject::Survey::QuestionJSON->new( $self,@{$self->{questions}},$questionHash) ); -} - -sub deleteQuestion{ - my $self = shift; - my $index = shift; - splice(@{$self->{questions}},$index,1) if defined $index; -} -#address is the array of objects currently selected in the edit screen -#data is the array of hash items for displaying -sub getDragDropList{ - my ($self,$data,$address,$selected) = @_; - push(@$data,{ "type",$self->{type},"text",$self->{"title"} }); - if($selected){ - for(my $i=0; $i<=$#{$self->{questions}}; $i++){ - $self->{questions}->[$i]->getDragDropList($data, $address, $i == $address->[1]); - } - } -} -sub getQuestion{ - my $self = shift; - my $index = shift; - return $self->{questions}->[$index] if defined $index; -} - -sub freeze{ - my $self = shift; - - my %temp = %{$self}; - - $temp{questions} = []; - foreach(@{$self->{questions}}){ - push(@{$temp{questions}}, $_->freeze()); - } - delete $temp{log}; - return \%temp; -} - -sub createTemp{ - my ($self,$ref) = @_; - if(@{$$ref{ids}} > 1){ - return $self->{questions}->[$$ref{ids}->[1]]->createTemp($ref); - }else{ - return WebGUI::Asset::Wobject::Survey::QuestionJSON->new($self); - } -} -1; diff --git a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm index 64f39bff2..c7d56673c 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm @@ -148,6 +148,7 @@ sub getAnswerEditVars{ sub update{ my ($self,$address,$ref) = @_; my $object; + my $newQuestion = 0; if(@$address == 1){ $object = $self->section($address); if(! defined $object){ @@ -157,18 +158,22 @@ sub update{ }elsif(@$address == 2){ $object = $self->question($address); if(! defined $object){ -$self->log("$object didn't exist"); + my $newQuestion = 1; $object = $self->newQuestion(); push(@{$self->questions($address)},$object); } }elsif(@$address == 3){ $object = $self->answer($address); if(! defined $object){ -$self->log("$object didn't exist"); $object = $self->newAnswer(); push(@{$self->answers($address)},$object); } } + if(@$address == 2 and ! $newQuestion){ + if($ref->{questionType} ne $self->question($address)->{questionType}){ + $self->updateQuestionAnswers($address,$ref->{questionType}); + } + } for my $key(keys %$object){ $object->{$key} = $ref->{$key} if(defined $$ref{$key}); } @@ -264,6 +269,115 @@ sub newAnswer{ return \%members; } +sub updateQuestionAnswers{ + my $self = shift; + my $address = shift; + my $type = shift; + +$self->log("In updateQuestion"); + + my @addy = @{$address}; + my $question = $self->question($address); + $question->{answers} = []; + + if($type eq 'Date Range' or $type eq 'Multi Slider - Allocate' or $type eq 'Dual Slider - Range'){ + push(@{$question->{answers}},$self->newAnswer()); + push(@{$question->{answers}},$self->newAnswer()); + }elsif($type eq 'Currency'){ + push(@{$question->{answers}},$self->newAnswer()); + $addy[2] = 0; + $self->update(\@addy,{'text','Currency Amount'}); + }elsif($type eq 'Text Date'){ + push(@{$question->{answers}},$self->newAnswer()); + $addy[2] = 0; + $self->update(\@addy,{'text','Date:'}); + }elsif($type eq 'Phone Number'){ + push(@{$question->{answers}},$self->newAnswer()); + $addy[2] = 0; + $self->update(\@addy,{'text','Phone Number:'}); + }elsif($type eq 'Email'){ + push(@{$question->{answers}},$self->newAnswer()); + $addy[2] = 0; + $self->update(\@addy,{'text','Email:'}); + }elsif($type eq 'Education'){ + my @ans = ('Elementary or some high school','High school/GED','Some college/vocational school','College graduate', + 'Some graduate work','Master\'s degree','Doctorate (of any type)','Other degree (verbatim)'); + $self->addAnswersToQuestion(\@addy,\@ans,{7,1}); + }elsif($type eq 'Party'){ + my @ans = ('Democratic party','Republican party (or GOP)','Independant party','Other party (verbatim)'); + $self->addAnswersToQuestion(\@addy,\@ans,{3,1}); + }elsif($type eq 'Race'){ + my @ans = ('American Indian','Asian','Black','Hispanic','White non-Hispanic','Something else (verbatim)'); + $self->addAnswersToQuestion(\@addy,\@ans,{5,1}); + }elsif($type eq 'Ideology'){ + my @ans = ('Strongly liberal','Liberal','Somewhat liberal','Middle of the road','Slightly conservative','Conservative','Strongly conservative'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Security'){ + my @ans = ('Not at all secure','','','','','','','','','','Extremely secure'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Threat'){ + my @ans = ('No threat','','','','','','','','','','Extreme threat'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Risk'){ + my @ans = ('No risk','','','','','','','','','','Extreme risk'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Concern'){ + my @ans = ('Not at all concerned','','','','','','','','','','Extremely concerned'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Effectiveness'){ + my @ans = ('Not at all effective','','','','','','','','','','Extremely effective'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Confidence'){ + my @ans = ('Not at all confident','','','','','','','','','','Extremely confident'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Satisfaction'){ + my @ans = ('Not at all satisfied','','','','','','','','','','Extremely satisfied'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Certainty'){ + my @ans = ('Not at all certain','','','','','','','','','','Extremely certain'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Likelihood'){ + my @ans = ('Not at all likely','','','','','','','','','','Extremely likely'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Importance'){ + my @ans = ('Not at all important','','','','','','','','','','Extremely important'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Oppose/Support'){ + my @ans = ('Strongly oppose','','','','','','Strongly Support'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Agree/Disagree'){ + my @ans = ('Strongly disagree','','','','','','Strongly agree'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'True/False'){ + my @ans = ('True','False'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Yes/No'){ + my @ans = ('Yes','No'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }elsif($type eq 'Gender'){ + my @ans = ('Male','Female'); + $self->addAnswersToQuestion(\@addy,\@ans,{}); + }else{ + push(@{$question->{answers}},$self->newAnswer()); + } +} +sub addAnswersToQuestion{ + my $self = shift; + my $addy = shift; + my $ans = shift; + my $verbs = shift; +$self->log(Dumper $verbs); + for(0 .. $#$ans){ + push(@{$self->question($addy)->{answers}},$self->newAnswer()); + $$addy[2] = $_; +$self->log("$_:".defined $$verbs{$_}." ".$$verbs{$_}); + if(defined $$verbs{$_} and $_ == $$verbs{$_}){ + $self->update($addy,{'text',$$ans[$_],'recordedAnswer',$_+1,'verbatim',1}); + }else{ + $self->update($addy,{'text',$$ans[$_],'recordedAnswer',$_+1}); + } + } +} #------------------------------ diff --git a/www/extras/wobject/Survey/administersurvey.js b/www/extras/wobject/Survey/administersurvey.js index f28f7f55e..cfcad3012 100644 --- a/www/extras/wobject/Survey/administersurvey.js +++ b/www/extras/wobject/Survey/administersurvey.js @@ -40,14 +40,14 @@ Survey.Form = new function() { //YAHOO.util.Event.addListener("testB", "click", function(){Survey.Comm.callServer('','loadQuestions');}); if(qs[0] != undefined){ - if(lastSection != s.Survey_sectionId || s.everyPageTitle > 0){ + if(lastSection != s.id|| s.everyPageTitle > 0){ document.getElementById('headertitle').style.display='block'; } - if(lastSection != s.Survey_sectionId || s.everyPageText > 0){ + if(lastSection != s.id|| s.everyPageText > 0){ document.getElementById('headertext').style.display = 'block'; } - if(lastSection != s.Survey_sectionId && s.questionsOnSectionPage != '1'){ + if(lastSection != s.id && s.questionsOnSectionPage != '1'){ var span = document.createElement("div"); span.innerHTML = ""; span.style.display = 'block'; @@ -69,7 +69,7 @@ Survey.Form = new function() { document.getElementById('questions').style.display='inline'; Survey.Form.addWidgets(qs); } - lastSection = s.Survey_sectionId; + lastSection = s.id; }else{ document.getElementById('headertitle').style.display='block'; document.getElementById('headertext').style.display = 'block'; @@ -92,9 +92,9 @@ Survey.Form = new function() { //Check if this question should be validated if(q.required == 1){ - toValidate[q.Survey_questionId] = new Array(); - toValidate[q.Survey_questionId]['type'] = q.questionType; - toValidate[q.Survey_questionId]['answers'] = new Array(); + toValidate[q.id] = new Array(); + toValidate[q.id]['type'] = q.questionType; + toValidate[q.id]['answers'] = new Array(); } @@ -103,37 +103,37 @@ Survey.Form = new function() { verb = 0; for(var x = 0; x < q.answers.length; x++){ var a = q.answers[x]; - if(toValidate[a.Survey_questionId]){ - toValidate[a.Survey_questionId]['answers'][a.Survey_answerId] = 1; + if(toValidate[q.id]){ + toValidate[q.id]['answers'][a.id] = 1; } - var b = document.getElementById(a.Survey_answerId+'button'); + var b = document.getElementById(a.id+'button'); /* - b = new YAHOO.widget.Button({ type: "checkbox", label: a.answerText, id: a.Survey_answerId+'button', name: a.Survey_answerId+'button', - value: a.Survey_answerId, - container: a.Survey_answerId+"container", checked: false }); + b = new YAHOO.widget.Button({ type: "checkbox", label: a.answerText, id: a.id+'button', name: a.id+'button', + value: a.id, + container: a.id+"container", checked: false }); */ -// b.on("click", this.buttonChanged,[b,a.Survey_questionId,q.maxAnswers,butts,qs.length,a.Survey_answerId]); -// YAHOO.util.Event.addListener(a.Survey_answerId+'button', "click", this.buttonChanged,[b,a.Survey_questionId,q.maxAnswers,butts,qs.length,a.Survey_answerId]); +// b.on("click", this.buttonChanged,[b,a.id,q.maxAnswers,butts,qs.length,a.id]); +// YAHOO.util.Event.addListener(a.id+'button', "click", this.buttonChanged,[b,a.id,q.maxAnswers,butts,qs.length,a.id]); if(a.verbatim == 1){ verb = 1; } - YAHOO.util.Event.addListener(a.Survey_answerId+'button', "click", this.buttonChanged,[b,a.Survey_questionId,q.maxAnswers,butts,qs.length,a.Survey_answerId]); - b.hid = a.Survey_answerId; + YAHOO.util.Event.addListener(a.id+'button', "click", this.buttonChanged,[b,a.id,q.maxAnswers,butts,qs.length,a.id]); + b.hid = a.id; butts.push(b); } } else if(dateType[q.questionType]){ for(var x = 0; x < q.answers.length; x++){ var a = q.answers[x]; - if(toValidate[a.Survey_questionId]){ - toValidate[a.Survey_questionId]['answers'][a.Survey_answerId] = 1; + if(toValidate[q.id]){ + toValidate[q.id]['answers'][a.id] = 1; } - var calid = a.Survey_answerId+'container'; + var calid = a.id+'container'; var c = new YAHOO.widget.Calendar(calid,{title:'Choose a date:', close:true}); - c.selectEvent.subscribe(this.selectCalendar,[c,a.Survey_answerId],true); + c.selectEvent.subscribe(this.selectCalendar,[c,a.id],true); c.render(); c.hide(); - var b = new YAHOO.widget.Button({ label:"Select Date", id:"pushbutton"+a.Survey_answerId, container:a.Survey_answerId+'button' }); + var b = new YAHOO.widget.Button({ label:"Select Date", id:"pushbutton"+a.id, container:a.id+'button' }); b.on("click", this.showCalendar,[c]); } } @@ -145,7 +145,7 @@ Survey.Form = new function() { }else{ for(var s in q.answers){ var a = q.answers[s]; - YAHOO.util.Event.addListener(a.Survey_answerId, "blur", this.sliderTextSet); + YAHOO.util.Event.addListener(a.id, "blur", this.sliderTextSet); if(a.max - a.min > max){max = a.max - a.min;} } } @@ -153,9 +153,9 @@ Survey.Form = new function() { //sliderManagers[sliderManagers.length] = new this.sliderManager(q,max); for(var x = 0; x < q.answers.length; x++){ var a = q.answers[x]; - if(toValidate[a.Survey_questionId]){ - toValidate[a.Survey_questionId]['total'] = a.max; - toValidate[a.Survey_questionId]['answers'][a.Survey_answerId] = 1; + if(toValidate[q.id]){ + toValidate[q.id]['total'] = a.max; + toValidate[q.id]['answers'][a.id] = 1; } } new this.sliderManager(q,max); @@ -171,8 +171,8 @@ Survey.Form = new function() { else if(text[q.questionType]){ var a = q.answers[x]; - if(toValidate[a.Survey_questionId]){ - toValidate[a.Survey_questionId]['answers'][a.Survey_answerId] = 1; + if(toValidate[q.id]){ + toValidate[q.id]['answers'][a.id] = 1; } } } @@ -211,6 +211,7 @@ Survey.Form = new function() { } } if(submit == 1){ +console.log("Submitting"); Survey.Comm.callServer('','submitQuestions','surveyForm',hasFile); } } @@ -225,9 +226,9 @@ Survey.Form = new function() { var a2 = q.answers[1]; var scale = sliderWidth/a1.max; - var id = q.Survey_questionId; - var a1id = a1.Survey_answerId; - var a2id = a2.Survey_answerId; + var id = q.id; + var a1id = a1.id; + var a2id = a2.id; var a1h = document.getElementById(a1id); var a2h = document.getElementById(a2id); @@ -237,6 +238,7 @@ Survey.Form = new function() { a1id+"slider-min-thumb", a2id+"slider-max-thumb", sliderWidth, 1*scale, [1,sliderWidth]); sliders[id] = s; +//console.log(1); s.minRange = 4; var updateUI = function () { @@ -263,13 +265,13 @@ Survey.Form = new function() { var distance = Math.round(parseFloat(q.answers[i].max) + (-1 * min)); var scale = Math.round(sliderWidth/distance); var lang = YAHOO.lang; - var id = a.Survey_answerId; + var id = a.id; var s = YAHOO.widget.Slider.getHorizSlider(id+'slider-bg', id+'slider-thumb', 0, sliderWidth, (scale*step)); s.scale = scale; sliders[q.Survey_questionid] = new Array(); sliders[q.Survey_questionid][id] = s; - s.input = a.Survey_answerId; + s.input = a.id; s.scale = scale; document.getElementById(id).value = a.min; var check = function() { @@ -293,20 +295,20 @@ Survey.Form = new function() { var a = q.answers[i]; var Event = YAHOO.util.Event; var lang = YAHOO.lang; - var id = a.Survey_answerId+'slider-bg'; - var s = YAHOO.widget.Slider.getHorizSlider(id, a.Survey_answerId+'slider-thumb', + var id = a.id+'slider-bg'; + var s = YAHOO.widget.Slider.getHorizSlider(id, a.id+'slider-thumb', 0, sliderWidth, scale*step); s.animate = false; - if(sliders[q.Survey_questionId] == undefined){ - sliders[q.Survey_questionId] = new Array(); + if(sliders[q.id] == undefined){ + sliders[q.id] = new Array(); } - sliders[q.Survey_questionId][a.Survey_answerId] = s; - s.input = a.Survey_answerId; + sliders[q.id][a.id] = s; + s.input = a.id; s.lastValue = 0; var check = function() { var t = 0; - for(var x in sliders[q.Survey_questionId]){ - t+= sliders[q.Survey_questionId][x].getValue(); + for(var x in sliders[q.id]){ + t+= sliders[q.id][x].getValue(); } if(t > total){ t -= this.getValue(); @@ -328,9 +330,9 @@ Survey.Form = new function() { // v *= scale; v = ( ( (v-min) / distance))*total; // convert the real value into a pixel offset - for(var sl in sliders[q.Survey_questionId]){ - if(sliders[q.Survey_questionId][sl].input == this.id){ - sliders[q.Survey_questionId][sl].setValue(Math.round(v)); + for(var sl in sliders[q.id]){ + if(sliders[q.id][sl].input == this.id){ + sliders[q.id][sl].setValue(Math.round(v)); } } } diff --git a/www/extras/wobject/Survey/administersurvey/comm.js b/www/extras/wobject/Survey/administersurvey/comm.js index 708233060..c8d0cbe48 100644 --- a/www/extras/wobject/Survey/administersurvey/comm.js +++ b/www/extras/wobject/Survey/administersurvey/comm.js @@ -23,6 +23,7 @@ Survey.Comm= new function(){ alert("Waiting on previous request"); }else{ callMade = 1; +console.log(sUrl); YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); } } diff --git a/www/extras/wobject/Survey/survey.css b/www/extras/wobject/Survey/survey.css index 2c3cae00d..6baeb76f0 100644 --- a/www/extras/wobject/Survey/survey.css +++ b/www/extras/wobject/Survey/survey.css @@ -1,6 +1,5 @@ body { margin: 0; - background-image: url(http://casr.ou.edu/root/import/survey/spacer.gif); background-repeat: repeat-y; background-position: 0px 0px; }