preparing for merge

This commit is contained in:
Kaleb Murphy 2008-11-06 20:18:23 +00:00
parent edd6eb4c38
commit d8bc8f1520
5 changed files with 21 additions and 112 deletions

View file

@ -242,13 +242,9 @@ sub loadSurveyJSON{
$jsonHash = $self->session->db->quickScalar("select surveyJSON from Survey where assetId = ?",[$self->getId]) if(! defined $jsonHash);
$self->session->errorHandler->error("LOADING JSON");
eval{
$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->survey->freeze);
}
#-------------------------------------------------------------------
@ -268,8 +264,6 @@ sub saveSurveyJSON{
my $data = $self->survey->freeze();
$self->session->errorHandler->error("Saving THIS DATA");#\n\n".$data);
$self->session->db->write("update Survey set surveyJSON = ? where assetId = ?",[$data,$self->getId]);
}
@ -295,7 +289,6 @@ sub www_editSurvey {
#-------------------------------------------------------------------
sub www_submitObjectEdit{
my $self = shift;
$self->session->errorHandler->error("Submit Edit Object");
# my $ref = @{decode_json($self->session->form->process("data"))};
my $responses = $self->session->form->paramsHashRef();
@ -304,15 +297,12 @@ $self->session->errorHandler->error("Submit Edit Object");
$self->loadSurveyJSON();
if($responses->{delete}){
$self->session->errorHandler->error("Deleting ".join(',',@address));
return $self->deleteObject(\@address);
}
elsif($responses->{copy}){
$self->session->errorHandler->error("Copying ".join(',',@address));
return $self->copyObject(\@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->survey->update(\@address,$responses);
@ -350,7 +340,6 @@ sub deleteObject{
}else{
pop(@{$address});# unless @$address == 1 and $$address[0] == 0;
}
$self->session->errorHandler->error("returning ".join(',',@$address));
return $self->www_loadSurvey({address => $address, message=>$message});
}
@ -361,18 +350,15 @@ sub www_newObject{
my $self = shift;
my $ref;
$self->session->errorHandler->error("Entering newObject");
my $ids = $self->session->form->process("data");
my @inAddress = split/-/,$ids;
$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->survey->newObject(\@inAddress);
$self->session->errorHandler->error("New objects address is:".join(',', @$address));
#The new temp object has an address of NEW, which means it is not a real final address.
@ -386,7 +372,6 @@ sub www_dragDrop{
my $self = shift;
my $p = decode_json($self->session->form->process("data"));
$self->session->errorHandler->error("In Drag Drop ".Dumper $p);
my @tid = split/-/,$p->{target}->{id};
my @bid = split/-/,$p->{before}->{id};
@ -430,7 +415,6 @@ $self->session->errorHandler->error("In Drag Drop ".Dumper $p);
}
$self->saveSurveyJSON();
$self->session->errorHandler->error("Finsihed Drag Drop ".Dumper $self->survey->freeze());
return $self->www_loadSurvey({address => $address});
}
@ -440,7 +424,6 @@ $self->session->errorHandler->error("Finsihed Drag Drop ".Dumper $self->survey->
sub www_loadSurvey{
my ($self,$options) = @_;
$self->session->errorHandler->error("Entering loadSurvey");
$self->loadSurveyJSON();
my $address = defined $options->{address} ? $options->{address} : undef;
@ -452,13 +435,9 @@ $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->survey->getEditVars($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);
if($var->{type} eq 'section'){
$editHtml = $self->processTemplate($var,$self->get("sectionEditTemplateId"));
}elsif($var->{type} eq 'question'){
@ -466,7 +445,6 @@ $self->session->errorHandler->error("Entering loadSurvey");
}elsif($var->{type} eq 'answer'){
$editHtml = $self->processTemplate($var,$self->get("answerEditTemplateId"));
}
#$self->session->errorHandler->error("The HTML :$editHtml");
my %buttons;
$buttons{question} = $$address[0];
@ -475,7 +453,6 @@ $self->session->errorHandler->error("Entering loadSurvey");
}
my $data = $self->survey->getDragDropList($address);
#$self->session->errorHandler->error("The DD data :".Dumper $data);
my $html;
my ($scount,$qcount,$acount) = (-1,-1,-1);
my $lastType;
@ -512,7 +489,6 @@ $self->session->errorHandler->error("Entering loadSurvey");
$lastType = 'answer';
}
}
#$self->session->errorHandler->error($html);
#address is the address of the focused object
#buttons are the data to create the Add buttons
@ -521,13 +497,6 @@ $self->session->errorHandler->error("Entering loadSurvey");
#ids is a list of all ids passed in which are draggable (for adding events)
#type is the object type
my $return = {"address",$address,"buttons",\%buttons,"edithtml",$editHtml,"ddhtml",$html,"ids",\@ids,"type",$var->{type}};
#$self->session->errorHandler->error(Dumper $return);
eval{
# $self->session->errorHandler->error(encode_json($return));
};
#$self->session->errorHandler->error($@);
$self->session->errorHandler->error("Returning from loadSurvey");
$self->session->http->setMimeType('application/json');
return encode_json($return);
}
@ -632,12 +601,10 @@ sub www_takeSurvey{
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;
}
@ -658,10 +625,8 @@ sub www_submitQuestions{
my $responseId = $self->getResponseId();
if(!$responseId){return $self->surveyEnd();}
$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'};
my @goodResponses = keys %$responses;#load everything.
@ -720,13 +685,11 @@ $self->session->errorHandler->error(Dumper $responses);
sub www_loadQuestions{
my $self=shift;
$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();
}
$self->session->errorHandler->error("Can take survey");
my $responseId = $self->getResponseId();#also loads the survey and response
if(!$responseId){
@ -739,18 +702,14 @@ $self->session->errorHandler->error("Can take survey");
eval{
$questions = $self->response->nextQuestions();
};
$self->session->errorHandler->error($@) if($@);
$self->session->errorHandler->error("Load Questions had ".@$questions." questions") if(ref $questions eq 'ARRAY');
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;
}
@ -759,7 +718,6 @@ $self->session->errorHandler->error("Load Questions returning");
sub surveyEnd{
my $self = shift;
my $url = shift;
$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",{
@ -775,7 +733,6 @@ $self->session->errorHandler->error("-------SurveyEnd $url");
$url = "/";
}
}
$self->session->errorHandler->error("-------SurveyEnd $url");
$self->session->http->setMimeType('application/json');
return encode_json({"type","forward","url",$url});
}
@ -795,9 +752,7 @@ sub prepareShowSurveyTemplate{
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->{'textType'} = 1; }
elsif($hidden{$$q{'questionType'}}){ $q->{'hidden'} = 1; }
@ -823,7 +778,6 @@ $self->session->errorHandler->error("Question Text is: ".$q->{text});
}
$section->{'questions'} = $questions;
#$self->session->errorHandler->error(Dumper $section);
my $out = $self->processTemplate($section,$self->get("surveyQuestionsId"));
$self->session->http->setMimeType('application/json');
@ -849,18 +803,14 @@ sub loadBothJSON{
#-------------------------------------------------------------------
sub loadResponseJSON{
my $self = shift;
$self->log("1");
my $jsonHash = shift;
my $rId = shift;
$rId = defined $rId ? $rId : $self->{responseId};
if(defined $self->response and ! defined $rId){return;}
$self->log("loading $rId");
$jsonHash = $self->session->db->quickScalar("select responseJSON from Survey_response where assetId = ? and Survey_responseId = ?",
[$self->getId,$rId]) if(! defined $jsonHash);
$self->log("jsonhash was ".(length $jsonHash));
$self->{response} = WebGUI::Asset::Wobject::Survey::ResponseJSON->new($jsonHash,$self->session->errorHandler, $self->survey);
}
#-------------------------------------------------------------------
@ -869,7 +819,6 @@ sub saveResponseJSON{
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}]);
}
@ -939,18 +888,15 @@ sub getResponseId{
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->error("No responses left max=$allowedTakes used up=$haveTaken");
}
}
$self->{responseId} = $responseId;
$self->loadBothJSON($responseId);
$self->session->errorHandler->error("Survey Response was ".$responseId);
return $responseId;
}
@ -962,7 +908,6 @@ sub canTakeSurvey{
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;
@ -982,15 +927,12 @@ $self->session->errorHandler->error("Can take was NOT already defined");
$takenCount = $self->session->db->quickScalar("select count(*) from Survey_response where userId = ? and assetId = ? and isComplete = ?",[$id,$self->getId(),1]);
}
$self->session->errorHandler->error("userid is ".$id."\t and ip is ".$ip);
$self->session->errorHandler->error("max ".$maxTakes." taken ".$takenCount);
if($takenCount >= $maxTakes){
$self->{canTake} = 0;
}else{
$self->{canTake} = 1;
}
$self->session->errorHandler->error("Can take survey returning ".$self->{canTake});
return $self->{canTake};
}

View file

@ -1,20 +0,0 @@
CREATE TABLE `Survey` (
`groupToTakeSurvey` varchar(22) character set utf8 collate utf8_bin NOT NULL default '2',
`groupToViewReports` varchar(22) character set utf8 collate utf8_bin NOT NULL default '3',
`responseTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default '',
`overviewTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default '',
`maxResponsesPerUser` int(11) NOT NULL default '1',
`gradebookTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default '',
`assetId` varchar(22) character set utf8 collate utf8_bin NOT NULL default '',
`templateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default '',
`revisionDate` bigint(20) NOT NULL default '0',
`surveyEditTemplateId` varchar(22) NOT NULL,
`answerEditTemplateId` varchar(22) NOT NULL,
`questionEditTemplateId` varchar(22) NOT NULL,
`sectionEditTemplateId` varchar(22) NOT NULL,
`surveyTakeTemplateId` varchar(22) NOT NULL,
`surveyQuestionsId` varchar(22) NOT NULL,
`exitURL` varchar(512) default NULL,
`surveyJSON` longblob,
PRIMARY KEY (`assetId`,`revisionDate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

View file

@ -49,18 +49,18 @@ sub getDragDropList{
my $self = shift;
my $address = shift;
my @data;
#$self->log("dd'ing sections".$#{$self->sections});
##$self->log("dd'ing sections".$#{$self->sections});
eval{
for(my $i = 0; $i <= $#{$self->sections}; $i++){
push(@data,{text=>$self->section([$i])->{title}, type=>'section'});
if($address->[0] == $i){
for(my $x = 0; $x <= $#{$self->questions($address)}; $x++){
##$self->log("dd'ing questions".$#{$self->questions});
###$self->log("dd'ing questions".$#{$self->questions});
push(@data,{text=>$self->question([$i,$x])->{text}, type=>'question'});
if($address->[1] == $x){
for(my $y = 0; $y <= $#{$self->answers($address)}; $y++){
##$self->log("dd'ing answers".$#{$self->answers});
###$self->log("dd'ing answers".$#{$self->answers});
push(@data,{text=>$self->answer([$i,$x,$y])->{text}, type=>'answer'});
}
}
@ -68,8 +68,8 @@ eval{
}
}
};
#$self->log($@);
##$self->log('finished dding');
##$self->log($@);
###$self->log('finished dding');
return \@data;
}
@ -150,14 +150,14 @@ sub update{
my $object;
my $newQuestion = 0;
if(@$address == 1){
#$self->log("A section");
##$self->log("A section");
$object = $self->section($address);
if(! defined $object){
$object = $self->newSection();
push(@{$self->sections},$object);
}
}elsif(@$address == 2){
#$self->log("A question");
##$self->log("A question");
$object = $self->question($address);
if(! defined $object){
my $newQuestion = 1;
@ -165,7 +165,7 @@ sub update{
push(@{$self->questions($address)},$object);
}
}elsif(@$address == 3){
#$self->log("A answer");
##$self->log("A answer");
$object = $self->answer($address);
if(! defined $object){
$object = $self->newAnswer();
@ -178,7 +178,7 @@ sub update{
}
}
for my $key(keys %$object){
#$self->log("$key $$object{$key}");
##$self->log("$key $$object{$key}");
$object->{$key} = $ref->{$key} if(defined $$ref{$key});
}
}
@ -188,7 +188,7 @@ sub update{
# ref should contain all the information for the new
sub insertObject{
my ($self,$object,$address) = @_;
#$self->log("Inserting ".join(',',@$address));
##$self->log("Inserting ".join(',',@$address));
if(@$address == 1){
splice(@{$self->sections($address)},$$address[0] + 1, 0, $object);
}elsif(@$address == 2){
@ -196,7 +196,7 @@ sub insertObject{
}elsif(@$address == 3){
splice(@{$self->answers($address)},$$address[2] + 1, 0, $object);
}
#$self->log("Finished inserting ");
##$self->log("Finished inserting ");
}
@ -206,13 +206,13 @@ sub copy{
my %newSection = %{$self->section($address)};
push(@{$self->sections}, \%newSection);
return [$#{$self->sections}];
#$self->log("copying here $$address[0] :".$#{$self->sections});
##$self->log("copying here $$address[0] :".$#{$self->sections});
}elsif(@$address == 2){
#$self->log("copying question $$address[0] $$address[1]");
##$self->log("copying question $$address[0] $$address[1]");
my %newQuestion = %{$self->question($address)};
push( @{$self->questions($address)}, \%newQuestion);
$$address[1] = $#{$self->questions($address)};
#$self->log("to $$address[0] $$address[1]");
##$self->log("to $$address[0] $$address[1]");
return $address;
}
}
@ -221,14 +221,14 @@ sub copy{
sub remove{
my ($self,$address,$movingOverride) = @_;
if(@$address == 1){
#$self->log("removing here $$address[0] :".$#{$self->sections}) if($$address[0] != 0 or defined $movingOverride);;
##$self->log("removing here $$address[0] :".$#{$self->sections}) if($$address[0] != 0 or defined $movingOverride);;
splice(@{$self->{sections}},$$address[0],1) if($$address[0] != 0 or defined $movingOverride);#can't delete the first section
#$self->log("removing here $$address[0] :".$#{$self->sections});
##$self->log("removing here $$address[0] :".$#{$self->sections});
}elsif(@$address == 2){
#$self->log("removing here $$address[0] $$address[1]");
##$self->log("removing here $$address[0] $$address[1]");
splice(@{$self->questions($address)},$$address[1],1);
}elsif(@$address == 3){
#$self->log("removing here $$address[0] $$address[1] $$address[2]");
##$self->log("removing here $$address[0] $$address[1] $$address[2]");
splice(@{$self->answers($address)},$$address[2],1);
}
}
@ -299,7 +299,7 @@ sub updateQuestionAnswers{
my $address = shift;
my $type = shift;
#$self->log("In updateQuestion");
##$self->log("In updateQuestion");
my @addy = @{$address};
my $question = $self->question($address);
@ -391,11 +391,11 @@ sub addAnswersToQuestion{
my $addy = shift;
my $ans = shift;
my $verbs = shift;
#$self->log(Dumper $verbs);
##$self->log(Dumper $verbs);
for(0 .. $#$ans){
push(@{$self->question($addy)->{answers}},$self->newAnswer());
$$addy[2] = $_;
#$self->log("$_:".defined $$verbs{$_}." ".$$verbs{$_});
##$self->log("$_:".defined $$verbs{$_}." ".$$verbs{$_});
if(defined $$verbs{$_} and $_ == $$verbs{$_}){
$self->update($addy,{'text',$$ans[$_],'recordedAnswer',$_+1,'verbatim',1});
}else{

View file

@ -1,13 +0,0 @@
CREATE TABLE `Survey_response` (
`assetId` varchar(22) character set utf8 collate utf8_bin NOT NULL,
`Survey_responseId` varchar(22) character set utf8 collate utf8_bin NOT NULL default '',
`userId` varchar(22) default NULL,
`username` varchar(255) default NULL,
`ipAddress` varchar(15) default NULL,
`startDate` bigint(20) NOT NULL default '0',
`endDate` bigint(20) NOT NULL default '0',
`isComplete` int(11) NOT NULL default '0',
`anonId` varchar(255) default NULL,
`responseJSON` longblob,
PRIMARY KEY (`Survey_responseId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8