Editor is done except for prettifying it, but you can now build a survey with the new data layer

This commit is contained in:
Kaleb Murphy 2008-09-30 19:25:38 +00:00
parent 9c5082f450
commit 2de1d83d65
4 changed files with 73 additions and 62 deletions

View file

@ -110,10 +110,17 @@ sub definition {
questionEditTemplateId => {
tab => 'display',
fieldType => 'template',
label => "Section Edit Tempalte",
label => "Question Edit Tempalte",
defaultValue => 'wAc4azJViVTpo-2NYOXWvg',
namespace => 'Survey/Edit',
},
answerEditTemplateId => {
tab => 'display',
fieldType => 'template',
label => "Answer Edit Tempalte",
defaultValue => 'AjhlNO3wZvN5k4i4qioWcg',
namespace => 'Survey/Edit',
}
);
push(@{$definition}, {
@ -183,10 +190,12 @@ sub loadSurveyJSON{
my $jsonHash = $self->session->db->quickScalar("select surveyJSON from Survey where assetId = ?",[$self->getId]);
$self->session->errorHandler->error("LOADING JSON");
eval{
$self->{jsonHelper} = 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->helper->freeze);
}
#-------------------------------------------------------------------
@ -206,7 +215,7 @@ sub saveSurveyJSON{
my $data = $self->helper->freeze();
$self->session->errorHandler->error("Saving THIS DATA\n\n".$data);
$self->session->errorHandler->error("Saving THIS DATA");#\n\n".$data);
$self->session->db->write("update Survey set surveyJSON = ? where assetId = ?",[$data,$self->getId]);
}
@ -315,7 +324,14 @@ $self->session->errorHandler->error("In Drag Drop ".Dumper $p);
$bid[0] = -1 if(! defined $bid[0]);
$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] !~ /\d/){
$bid[0] = $tid[0];
$bid[1] = $tid[1];
}elsif(@bid == 1){#moved to a new section or head of current section
if($bid[0] !~ /\d/){
$bid[0] = $tid[0];
$bid[1] = $tid[1];
}
if($bid[0] == $tid[0]){
#moved to top of current section
$bid[1] = -1;
@ -363,18 +379,25 @@ $self->session->errorHandler->error("Entering loadSurvey");
#$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("Got edit vars".Dumper $self->helper->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'){
$editHtml = $self->processTemplate($var,$self->get("questionEditTemplateId"));
}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];
if(@$address == 2 or @$address == 3){
$buttons{answer} = "$$address[0]-$$address[1]";
}
my $data = $self->helper->getDragDropList($address);
#$self->session->errorHandler->error("The DD data :".Dumper $data);
my $html;
@ -388,26 +411,17 @@ $self->session->errorHandler->error("Loaded beginning params ".join(',',@$addres
if($_->{type} eq 'section'){
$lastId{section} = ++$scount;
if($lastType eq 'answer'){
$html .= "<span id='newAnswer'></span><br>";
$buttons{answer} = "$lastId{section}-$lastId{question}";
$a = 1;
}
elsif($lastType eq 'question'){
$html .= "<span id='newQuestion'></span><br>";
$buttons{'question'} = "$lastId{section}-$lastId{question}";
$q = 1;
}
$html .= "<li id='$scount' class='section'>S". ($scount + 1). ": $_->{text}<\/li><br>\n";
push(@ids,$scount);
$lastType = 'section';
$qcount = -1;
$acount = -1;
}
elsif($_->{type} eq 'question'){
$lastId{question} = ++$qcount;
if($lastType eq 'answer'){
$html .= "<span id='newAnswer'></span><br>";
$buttons{answer} = "$lastId{section}-$lastId{question}";
$a = 1;
}
$html .= "<li id='$scount-$qcount' class='question'>Q". ($qcount + 1). ": $_->{text}<\/li><br>\n";
@ -422,40 +436,6 @@ $self->session->errorHandler->error("Loaded beginning params ".join(',',@$addres
$lastType = 'answer';
}
}
if($lastType eq 'answer'){
if(!$a){
$html .= "<span id='newAnswer'></span><br>";
$buttons{'answer'} = "$lastId{section}-$lastId{question}";
}
if(!$b){
$html .= "<span id='newQuestion'></span><br>";
$buttons{'question'} = "$lastId{section}";
}
if(!$s){
$html .= "<span id='newSection'></span><br>";
$buttons{'section'} = "$lastId{section}";
}
}
elsif($lastType eq 'question'){
if(!$b){
$html .= "<span id='newQuestion'></span><br>";
$buttons{'question'} = "$lastId{section}";
}
if(!$s){
$html .= "<span id='newSection'></span><br>";
$buttons{'section'} = "$lastId{section}";
}
}
elsif($lastType eq 'section'){
if(!$b){
$html .= "<span id='newQuestion'></span><br>";
$buttons{'question'} = "$lastId{section}";
}
if(!$s){
$html .= "<span id='newSection'></span><br>";
$buttons{'section'} = "$lastId{section}";
}
}
#$self->session->errorHandler->error($html);
#address is the address of the focused object

View file

@ -13,7 +13,6 @@ sub new{
my $temp = decode_json($json) if defined $json;
$self->{sections} = defined $temp->{sections} ? $temp->{sections} : [];
$self->{survey} = defined $temp->{survey} ? $temp->{survey} : {};
$self->{gotoMap} = defined $temp->{gotoMap} ? $temp->{gotoMap} : {};
bless($self,$class);
if(@{$self->sections} == 0){
$self->newObject([]);
@ -25,7 +24,6 @@ sub freeze{
my %temp;
$temp{sections} = $self->{sections};
$temp{survey} = $self->{survey};
$temp{gotoMap} = $self->{gotoMap};
return encode_json(\%temp);
}
sub newObject{
@ -40,7 +38,7 @@ sub newObject{
return $address;
}elsif(@$address == 2){
push(@{$self->answers($address)}, $self->newAnswer($address));
$$address[2] = $#{$self->answers($$address)};
$$address[2] = $#{$self->answers($address)};
return $address;
}
}
@ -138,6 +136,13 @@ sub getQuestionEditVars{
return \%var;
}
sub getAnswerEditVars{
my $self = shift;
my $address = shift;
my $object = $self->answer($address);
my %var = %{$object};
$var{id} = $address->[0]."-".$address->[1]."-".$address->[2];
$var{displayed_id} = $address->[2]+1;
return \%var;
}
sub update{
@ -157,6 +162,12 @@ $self->log("$object didn't exist");
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);
}
}
for my $key(keys %$object){
$object->{$key} = $ref->{$key} if(defined $$ref{$key});
@ -234,6 +245,23 @@ sub newQuestion{
return \%members;
}
sub newAnswer{
my %members = (
'text', '',
'verbatim',0,
'textCols',10,
'textRows',5,
'goto','',
'recordedAnswer','',
'isCorrect',1,
'min',1,
'max',10,
'step',1,
'value',1,
'terminal',0,
'terminalUrl','',
'type','answer'
);
return \%members;
}

View file

@ -56,16 +56,19 @@ console.log('adding handler for '+ d.ids[x]);
}
//add the add object buttons
if(d.buttons['section']){
var button = new YAHOO.widget.Button({ label:"Add Section", id:"addsection", container:"newSection" });
// if(d.buttons['section']){
document.getElementById('addSection').innerHTML = '';
document.getElementById('addQuestion').innerHTML = '';
document.getElementById('addAnswer').innerHTML = '';
var button = new YAHOO.widget.Button({ label:"Add Section", id:"addsection", container:"addSection" });
button.on("click", this.addSection);
}
if(d.buttons['question']){
var button = new YAHOO.widget.Button({ label:"Add Question", id:"addquestion", container:"newQuestion" });
// }
// if(d.buttons['question']){
var button = new YAHOO.widget.Button({ label:"Add Question", id:"addquestion", container:"addQuestion" });
button.on("click", this.addQuestion,d.buttons['question']);
}
// }
if(d.buttons['answer']){
var button = new YAHOO.widget.Button({ label:"Add Answer", id:"addanswer", container:"newAnswer" });
var button = new YAHOO.widget.Button({ label:"Add Answer", id:"addanswer", container:"addAnswer" });
button.on("click", this.addAnswer,d.buttons['answer']);
}

View file

@ -46,7 +46,7 @@ div.entry {
ul.draglist {
position: relative;
width: 300px;
width: 340px;
background: #f7f7f7;
border: 1px solid gray;
list-style: none;