version 1.26, 2005/07/13 21:21:01
|
version 1.29, 2005/10/14 22:28:56
|
Line 1827 sub parse_bb5_assessment {
|
Line 1827 sub parse_bb5_assessment {
|
} |
} |
|
|
sub parse_bb6_assessment { |
sub parse_bb6_assessment { |
my ($res,$docroot,$container,$settings,$allanswers,$allchoices,$allids) = @_; |
my ($res,$docroot,$container,$settings,$allanswers,$allchoices,$allids) = @_; |
return; |
my $xmlfile = $docroot.'/'.$res.".dat"; |
|
my @state = (); |
|
my $id; # the current question ID |
|
my $list; # the current list ID for multiple choice questions |
|
my $response; # the current response ID |
|
my $currtexttype; |
|
my @curr_block = (); |
|
my $curr_shuffle; |
|
my $curr_class; |
|
my $curr_matchitem; |
|
my $curr_block_type; |
|
my $curr_feedback_type; |
|
my $p = HTML::Parser->new |
|
( |
|
xml_mode => 1, |
|
start_h => |
|
[sub { |
|
my ($tagname, $attr) = @_; |
|
push @state, $tagname; |
|
if ("@state" eq "questestinterop assessment") { |
|
$$settings{title} = $attr->{title}; |
|
} |
|
if ("@state" eq "questestinterop assessment rubric flow_mat material mat_extension mat_formattedtext") { |
|
$currtexttype = $attr->{type}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow") { |
|
$curr_block[0] = $attr->{class}; |
|
if ($curr_block[0] eq 'RESPONSE_BLOCK') { |
|
$curr_block_type = 'response'; |
|
} elsif ($curr_block[0] eq 'RIGHT_MATCH_BLOCK') { |
|
$curr_block_type = 'rightmatch'; |
|
} |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow flow") { |
|
$curr_block[1] = $attr->{class}; |
|
if ($curr_block[1] eq 'QUESTION_BLOCK') { |
|
$curr_block_type = 'question'; |
|
} |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow flow flow") { |
|
$curr_block[2] = $attr->{class}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow flow flow material mat_extension mat_formatted_text") { |
|
$$settings{$id}{$curr_block_type}{texttype} = $attr->{texttype}; |
|
$currtexttype = $attr->{texttype}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow flow flow material matapplication") { |
|
$$settings{$id}{$curr_block_type}{image} = $attr->{uri}; |
|
$$settings{$id}{$curr_block_type}{style} = $attr->{embedded}; |
|
$$settings{$id}{$curr_block_type}{label} = $attr->{label}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow flow flow material mattext") { |
|
$$settings{$id}{$curr_block_type}{link} = $attr->{uri}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid render_choice") { |
|
$curr_shuffle = $attr->{shuffle}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid") { $response = $attr->{ident}; |
|
if ($curr_class eq 'Matching') { |
|
%{$$settings{$id}{$response}} = (); |
|
foreach my $key (keys(%{$$settings{$id}{$curr_block_type}})) { |
|
$$settings{$id}{$response}{$key} = $$settings{$id}{$curr_block_type}{$key}; |
|
} |
|
%{$$settings{$id}{$curr_block_type}} = (); |
|
} |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid render_choice flow response_label") { |
|
if (($curr_class eq 'Multiple Choice') || ($curr_class eq 'Multiple Answer') || ($curr_class eq 'Order')) { |
|
$list = $attr->{ident}; |
|
push(@{$$settings{$id}{lists}},$list); |
|
$$settings{$id}{$list}{randomize} = $curr_shuffle; |
|
%{$$settings{$id}{$list}} = (); |
|
@{$$allanswers{$id}{$list}} = (); |
|
@{$$settings{$id}{$list}{correctanswer}} = (); |
|
} elsif ($curr_class eq 'Matching') { |
|
push(@{$$settings{$id}{$response}{items}},$list); |
|
} |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid render_choice flow response_label flow_mat material matapplication") { |
|
$$settings{$id}{$list}{filetype} = $attr->{embedded}; |
|
$$settings{$id}{$list}{label} = $attr->{label}; |
|
$$settings{$id}{$list}{uri} = $attr->{uri}; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid render_choice flow response_label flow_mat material mattext") { |
|
$$settings{$id}{$list}{link} = $attr->{uri}; |
|
} |
|
if ("@state" eq "questestinterop section item resprocessing respcondition conditionvar varequal") { |
|
if ($curr_class eq 'Matching') { |
|
$curr_matchitem = $attr->{respident}; |
|
} |
|
} |
|
if ("@state" eq "questestinterop section item itemfeedback") { |
|
$curr_feedback_type = $attr->{ident}; |
|
} |
|
if ("@state" eq "questestinterop section item itemfeedback flow_mat flow_mat material matapplication") { |
|
$$settings{$id}{$curr_feedback_type.'feedback'}{filetype} = $attr->{'embedded'}; |
|
$$settings{$id}{$curr_feedback_type.'feedback'}{label} = $attr->{label}; |
|
$$settings{$id}{$curr_feedback_type.'feedback'}{uri} = $attr->{uri}; |
|
} |
|
if ("@state" eq "questestinterop section item itemfeedback flow_mat flow_mat material mattext") { |
|
$$settings{$id}{$curr_feedback_type.'feedback'}{link} = $attr->{uri}; |
|
} |
|
}, "tagname, attr"], |
|
text_h => |
|
[sub { |
|
my ($text) = @_; |
|
$text =~ s/^\s+//g; |
|
$text =~ s/\s+$//g; |
|
if ("@state" eq "questestinterop assessment rubric flow_mat material mat_extension mat_formattedtext") { |
|
$$settings{description} = $text; |
|
} elsif ("@state" eq "questestinterop assessment presentation_material flow_mat material mat_extension mat_formattedtext") { |
|
$$settings{instructions}{text} = $text; |
|
} |
|
if ("@state" eq "questestinterop assessment section item itemmetadata bbmd_asi_object_id") { |
|
$id = $text; |
|
push @{$allids}, $id; |
|
%{$$settings{$id}} = (); |
|
@{$$settings{$id}{lists}} = (); |
|
%{$$settings{$id}{question}} = (); |
|
%{$$settings{$id}{correctfeedback}} = (); |
|
%{$$settings{$id}{incorrectfeedback}} = (); |
|
%{$$settings{$id}{solutionfeedback}} = (); |
|
%{$$settings{$id}{question}} = (); |
|
%{$$settings{$id}{response}} = (); |
|
} |
|
if ("@state" eq "questestinterop assessment section item itemmetadata bbmd_questiontype") { |
|
$$settings{$id}{class} = $text; |
|
$curr_class = $text; |
|
} |
|
if ("@state" eq "questestinterop assessment section item presentation flow flow flow material mat_extension mat_formatted_text") { |
|
$$settings{$id}{$curr_block_type}{text} = $text; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow flow flow material mattext") { |
|
$$settings{$id}{$curr_block_type}{linktext} = $text; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid render_choice flow response_label flow_mat material mat_extension mat_formatted_text") { |
|
$$settings{$id}{$list}{text} = $text; |
|
} |
|
if ("@state" eq "questestinterop section item presentation flow response_lid render_choice flow response_label flow_mat material mattext") { |
|
$$settings{$id}{$list}{linktext} = $text; |
|
} |
|
if ("@state" eq "questestinterop section item resprocessing respcondition conditionvar varequal") { |
|
if ($curr_class eq 'Multiple Choice') { |
|
$$settings{$id}{$list}{correctanswer}[0] = $text; |
|
} elsif ($curr_class eq 'True/False') { |
|
$$settings{$id}{correctanswer} = $text; |
|
} elsif ($curr_class eq 'Matching') { |
|
$$settings{$id}{$curr_matchitem}{correctanswer} = $text; |
|
} elsif ($curr_class eq 'Fill in the Blank') { |
|
push(@{$$settings{$id}{$list}{correctanswer}},$text); |
|
} |
|
} |
|
if ("@state" eq "questestinterop section item resprocessing respcondition conditionvar and varequal") { |
|
push(@{$$settings{$id}{$list}{correctanswer}},$text); |
|
} |
|
if ("@state" eq "questestinterop section item itemfeedback flow_mat flow_mat material mat_extension mat_formattedtext") { |
|
$$settings{$id}{$curr_feedback_type.'feedback'}{text} = $text; |
|
} |
|
if ("@state" eq "questestinterop section item itemfeedback flow_mat flow_mat material mattext") { |
|
$$settings{$id}{$curr_feedback_type.'feedback'}{linkname} = $text; |
|
} |
|
}, "dtext"], |
|
end_h => |
|
[sub { |
|
my ($tagname) = @_; |
|
pop @state; |
|
}, "tagname"], |
|
); |
|
$p->unbroken_text(1); |
|
$p->marked_sections(1); |
|
$p->parse_file($xmlfile); |
|
$p->eof; |
|
return; |
} |
} |
|
|
sub parse_webct4_assessment { |
sub parse_webct4_assessment { |
Line 2864 sub write_webct4_questions {
|
Line 3036 sub write_webct4_questions {
|
$allfeedback .= $feedback; |
$allfeedback .= $feedback; |
} |
} |
if ($$settings{$id}{texttype} eq 'text/html') { |
if ($$settings{$id}{texttype} eq 'text/html') { |
$$settings{$id}{text} = &HTML::Entities::decode($$settings{$id}{text}); |
$$settings{$id}{text} =~ s/(\&)(nbsp|gt|lt)(?!;)/$1$2;$3/gi; |
$$settings{$id}{text} = &Apache::loncleanup::htmlclean($$settings{$id}{text}); |
$$settings{$id}{text} = &Apache::loncleanup::htmlclean($$settings{$id}{text}); |
$$settings{$id}{text} =~ s#(<img src=["']?)([^>]+)(/?>)#$1../../resfiles/$2 />#gi; |
$$settings{$id}{text} =~ s#(<img src=["']?)([^>]+?)(/?>)#$1../../resfiles/$2 />#gi; |
$$settings{$id}{text} =~ s#<([bh])r>#<$1r />#g; |
$$settings{$id}{text} =~ s#<([bh])r>#<$1r />#g; |
# $$settings{$id}{text} =~ s#<p>#</p><p>#g; |
|
# $$settings{$id}{text} =~ s#</p></p>#</p>#; |
|
# $$settings{$id}{text} =~ s#<p></p>##g; |
|
$$settings{$id}{text} =~ s#<p>#<br /><br />#g; |
$$settings{$id}{text} =~ s#<p>#<br /><br />#g; |
$$settings{$id}{text} =~ s#</p>##g; |
$$settings{$id}{text} =~ s#</p>##g; |
} |
} |