minor changes to drag and drop

This commit is contained in:
Kaleb Murphy 2008-09-30 16:26:33 +00:00
parent c812705537
commit 9c5082f450
2 changed files with 31 additions and 20 deletions

View file

@ -316,22 +316,29 @@ $self->session->errorHandler->error("In Drag Drop ".Dumper $p);
$self->helper->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 == 1){#moved to a new section or head of current section
if($bid[0] == $tid[0]){#moved to top of current section
if($bid[0] == $tid[0]){
#moved to top of current section
$bid[1] = -1;
}else{
#else move to the end of the selected section
$bid[1] = $#{$self->helper->questions([$bid[0]])};
}
}
$self->helper->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]){
if(@bid == 2 and $bid[1] == $tid[1]){
$bid[2] = -1;
$self->helper->insertObject($target, [$bid[0],$bid[1],$bid[2]]);
}elsif(@$bid == 3){
}elsif(@bid == 3){
$self->helper->insertObject($target, [$bid[0],$bid[1],$bid[2]]);
}else{
$self->helper->insertObject($target, \@tid);#else put it back where it was
#else put it back where it was
$self->helper->insertObject($target, \@tid);
}
}
$self->saveSurveyJSON();
$self->session->errorHandler->error("Finsihed Drag Drop ".Dumper $self->helper->freeze());
return $self->www_loadSurvey({address => $address});
}
@ -353,13 +360,13 @@ $self->session->errorHandler->error("Entering loadSurvey");
}
}
my $message = defined $options->{message} ? $options->{message} : '';
$self->session->errorHandler->error("Getting edit vars:".join(',',@$address));
#$self->session->errorHandler->error("Getting edit vars:".join(',',@$address));
my $var = defined $options->{var} ? $options->{var} : $self->helper->getEditVars($address);
$self->session->errorHandler->error("Got edit vars");
$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'){
@ -369,7 +376,7 @@ $self->session->errorHandler->error("The edit vars:".Dumper $var);
my %buttons;
my $data = $self->helper->getDragDropList($address);
$self->session->errorHandler->error("The DD data :".Dumper $data);
#$self->session->errorHandler->error("The DD data :".Dumper $data);
my $html;
my ($scount,$qcount,$acount) = (-1,-1,-1);
my $lastType;
@ -449,7 +456,7 @@ $self->session->errorHandler->error("The DD data :".Dumper $data);
$buttons{'section'} = "$lastId{section}";
}
}
$self->session->errorHandler->error($html);
#$self->session->errorHandler->error($html);
#address is the address of the focused object
#buttons are the data to create the Add buttons
@ -458,11 +465,11 @@ $self->session->errorHandler->error($html);
#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);
#$self->session->errorHandler->error(Dumper $return);
eval{
$self->session->errorHandler->error(encode_json($return));
# $self->session->errorHandler->error(encode_json($return));
};
$self->session->errorHandler->error($@);
#$self->session->errorHandler->error($@);
$self->session->errorHandler->error("Returning from loadSurvey");
return encode_json($return);

View file

@ -58,11 +58,11 @@ eval{
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'});
}
}
@ -71,7 +71,7 @@ $self->log("dd'ing answers".$#{$self->answers});
}
};
$self->log($@);
$self->log('finished dding');
#$self->log('finished dding');
return \@data;
}
@ -166,25 +166,29 @@ $self->log("$object didn't exist");
# ref should contain all the information for the new
sub insertObject{
my ($self,$object,$address) = @_;
$self->log("Inserting ".join(',',@$address));
if(@$address == 1){
splice(@{$self->sections($address)},$$address[0] + 1, 0, $object);
}elsif(@$address == 2)
}elsif(@$address == 2){
splice(@{$self->questions($address)},$$address[1] + 1, 0, $object);
}elsif(@$address == 3)
}elsif(@$address == 3){
splice(@{$self->answers($address)},$$address[2] + 1, 0, $object);
}
$self->log("Finished inserting ");
}
sub remove{
my ($self,$address,$movingOverride) = @_;
if(@$address == 1){
splice(@{$self->{sections}},$$address[0],1) if($$address[0] != 0 and ! defined $movingOverride);#can't delete the first section
$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});
}elsif(@$address == 2){
$self->log('removing here');
$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]");
splice(@{$self->answers($address)},$$address[2],1);
}
}