[LON-CAPA-cvs] cvs: loncom /imspackages imsimport.pm imsimportdocs.pm imsprocessor.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Mon, 13 Dec 2004 20:01:09 -0000
This is a MIME encoded message
--raeburn1102968069
Content-Type: text/plain
raeburn Mon Dec 13 15:01:09 2004 EDT
Modified files:
/loncom/imspackages imsimport.pm imsimportdocs.pm imsprocessor.pm
Log:
Save each set of imported questions in a page (for an assessment) or in a sequence (for a pool). Make sure directories are created, and replicated (if using DOCS to import into a course). Distinguish between question import for CSTR and DOCS. Also some minor improvements in appearance.
--raeburn1102968069
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20041213150109.txt"
Index: loncom/imspackages/imsimport.pm
diff -u loncom/imspackages/imsimport.pm:1.7 loncom/imspackages/imsimport.pm:1.8
--- loncom/imspackages/imsimport.pm:1.7 Thu Aug 5 19:21:49 2004
+++ loncom/imspackages/imsimport.pm Mon Dec 13 15:01:09 2004
@@ -679,7 +679,7 @@
my @topnames = ();
my @packages = ();
- &Apache::imsprocessor::process_resinfo($cms,'CSTR',$tempdir,$destdir,\%items,\%resources,\@boards,\@announcements,\@quizzes,\@surveys,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$newdir,$seqstem,\@resrcfiles,\@packages,\%hrefs);
+ &Apache::imsprocessor::process_resinfo($cms,'CSTR',$tempdir,$destdir,\%items,\%resources,\@boards,\@announcements,\@quizzes,\@surveys,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$newdir,$seqstem,\@resrcfiles,\@packages,\%hrefs,\@pages,\@sequences);
my $copy_result = &Apache::imsprocessor::copy_resources('CSTR',$cms,\%hrefs,$tempdir,\@targets,\%urls,$crs,$cdom,$chome,$destdir,$timenow);
Index: loncom/imspackages/imsimportdocs.pm
diff -u loncom/imspackages/imsimportdocs.pm:1.7 loncom/imspackages/imsimportdocs.pm:1.8
--- loncom/imspackages/imsimportdocs.pm:1.7 Thu Aug 5 19:21:49 2004
+++ loncom/imspackages/imsimportdocs.pm Mon Dec 13 15:01:09 2004
@@ -158,7 +158,7 @@
my $allowed=&Apache::lonnet::allowed('mdc',$ENV{'request.course.id'});
unless ($allowed) {
$r->print("<html><head><title>The LearningOnline Network with CAPA</title></head>");
- $r->print(&Apache::loncommon::bodytag('Import IMS package'));
+ $r->print(&Apache::loncommon::bodytag('Import IMS package',undef,'',1));
$r->print('<h3>'.&mt('Modification of Course Contents Disallowed').'</h3>'.&mt('Your current role does not grant you the right to modify course content in this course.').'</body></html>');
return OK;
}
@@ -187,7 +187,7 @@
</head>
ENDHEAD
# -------------------------------------------------------------------- Body tag
- $r->print(&Apache::loncommon::bodytag('Import IMS package'));
+ $r->print(&Apache::loncommon::bodytag('Import IMS package',undef,'',1));
if ($ENV{'form.phase'} eq 'one') {
&display_one($r);
} elsif ($ENV{'form.phase'} eq 'two') {
@@ -542,9 +542,9 @@
if (defined($ENV{'form.foldername'}) ) {
$foldername = $ENV{'form.foldername'};
}
-
+
foreach my $area (@{$areas}) {
- if (defined($ENV{"form.$area"}) ) {
+ if (defined($ENV{"form.$area"}) && ($ENV{'form.'.$area} ne '')) {
if ($cms eq 'angel' && $area eq 'doc') {
foreach (@{$cmsmap{$cms}{$area}}) {
$imports{$_} = 1;
@@ -590,7 +590,7 @@
my @topnames = ();
my @packages = ();
- &Apache::imsprocessor::process_resinfo($cms,'DOCS',$tempdir,$destdir,\%items,\%resources,\@boards,\@announcements,\@quizzes,\@surveys,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$seqstem,$seqstem,\@resrcfiles,\@packages,\%hrefs);
+ &Apache::imsprocessor::process_resinfo($cms,'DOCS',$tempdir,$destdir,\%items,\%resources,\@boards,\@announcements,\@quizzes,\@surveys,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$seqstem,$seqstem,\@resrcfiles,\@packages,\%hrefs,\@pages,\@sequences);
my $copy_result = &Apache::imsprocessor::copy_resources('DOCS',$cms,\%hrefs,$tempdir,\@targets,\%urls,$crs,$cdom,$chome,$destdir,$timenow);
@@ -630,7 +630,7 @@
$Apache::lonratedt::order[0]=1;
$Apache::lonratedt::resources[1]='';
}
- my ($errtext,$fatal)=&Apache::londocs::group_import($crs, $cdom, $folder,@imports);
+ my ($errtext,$fatal)=&Apache::londocs::group_import($crs,$cdom,$folder,'sequence','imsimport',@imports);
if ($fatal) {
print STDERR "Fatal error during group_import\n";
}
@@ -670,7 +670,7 @@
<input type="button" value="|;
$initblock .= &mt('re-initializing course');
$initblock .= qq|" onClick="javascript:init(this.form)"/>|;
- $initblock .= &mt('or the next time you log in.');
+ $initblock .= ', '.&mt('or the next time you log in.');
$initblock .= qq|</font></h3></form>|;
$r->print($initblock);
$r->print(<<ENDBLOCKTWO);
Index: loncom/imspackages/imsprocessor.pm
diff -u loncom/imspackages/imsprocessor.pm:1.10 loncom/imspackages/imsprocessor.pm:1.11
--- loncom/imspackages/imsprocessor.pm:1.10 Thu Aug 5 19:21:49 2004
+++ loncom/imspackages/imsprocessor.pm Mon Dec 13 15:01:09 2004
@@ -41,10 +41,8 @@
survey => 'assessment/x-bb-survey',
users => 'course/x-bb-user',
);
-
%{$$cmsmap{bb6}} = %{$$cmsmap{bb5}};
$$cmsmap{bb6}{conference} = 'resource/x-bb-conference';
-
%{$$cmsmap{angel}} = (
board => 'BOARD',
extlink => 'LINK',
@@ -52,10 +50,7 @@
quiz => 'QUIZ',
survey => 'FORM',
);
-
@{$$cmsmap{angel}{doc}} = ('FILE','PAGE');
-
-
%{$areaname} = (
announce => 'Announcements',
board => 'Discussion Boards',
@@ -67,7 +62,6 @@
survey => 'Surveys',
users => 'Enrollment',
);
-
}
sub create_tempdir {
@@ -173,7 +167,6 @@
$$resources{'toplevel'}{type} = 'resource/x-bb-document';
}
-
unless (-e "$tempdir/imsmanifest.xml") {
return 'nomanifest';
}
@@ -259,14 +252,14 @@
}
} elsif ("@state" eq "manifest resources resource" ) {
$identifier = $attr->{identifier};
- if ($cms eq 'bb5' || $cms eq 'bb6') {
+ if ($cms eq 'bb5' || $cms eq 'bb6') {
$$resources{$identifier}{file} = $attr->{file};
$$resources{$identifier}{type} = $attr->{type};
} elsif ($cms eq 'angel') {
$identifier = substr($identifier,3);
if ($attr->{href} =~ m-^_assoc/$identifier/(.+)$-) {
$$resources{$identifier}{file} = $1;
- }
+ }
}
@{$$hrefs{$identifier}} = ();
} elsif ("@state" eq "manifest resources resource file") {
@@ -277,7 +270,7 @@
push @{$$hrefs{$identifier}},$1;
} elsif ($attr->{href} =~ m/^Icons\\icon(\w+)\.gif/) {
$$resources{$identifier}{type} = $1;
- }
+ }
}
}
}, "tagname, attr"],
@@ -401,7 +394,7 @@
}
sub process_resinfo {
- my ($cms,$context,$docroot,$destdir,$items,$resources,$boards,$announcements,$quizzes,$surveys,$groups,$messages,$timestamp,$boardnum,$resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,$total,$dirname,$seqstem,$resrcfiles,$packages,$hrefs) = @_;
+ my ($cms,$context,$docroot,$destdir,$items,$resources,$boards,$announcements,$quizzes,$surveys,$groups,$messages,$timestamp,$boardnum,$resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,$total,$dirname,$seqstem,$resrcfiles,$packages,$hrefs,$pagesfiles,$sequencesfiles) = @_;
my $board_id = time;
my $board_count = 0;
my $announce_handling = 'include';
@@ -461,14 +454,14 @@
}
} elsif ($$resources{$key}{type} eq "assessment/x-bb-pool") {
%{$$resinfo{$key}} = ();
- &process_assessment($key,$docroot,'pool',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname);
+ &process_assessment($context,$key,$docroot,'pool',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname,$pagesfiles,$sequencesfiles);
} elsif ($$resources{$key}{type} eq "assessment/x-bb-quiz") {
%{$$resinfo{$key}} = ();
- &process_assessment($key,$docroot,'quiz',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname);
+ &process_assessment($context,$key,$docroot,'quiz',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname,$pagesfiles,$sequencesfiles);
push @{$quizzes}, $key;
} elsif ($$resources{$key}{type} eq "assessment/x-bb-survey") {
%{$$resinfo{$key}} = ();
- &process_assessment($key,$docroot,'survey',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname);
+ &process_assessment($context,$key,$docroot,'survey',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname,$pagesfiles,$sequencesfiles);
push @{$surveys}, $key;
} elsif ($$resources{$key}{type} eq "assessment/x-bb-group") {
%{$$resinfo{$key}} = ();
@@ -1511,7 +1504,7 @@
}
# ---------------------------------------------------------------- Process Blackboard Assessments - pools, quizzes, surveys
sub process_assessment {
- my ($res,$docroot,$container,$dirname,$destdir,$settings,$total,$udom,$uname) = @_;
+ my ($context,$res,$docroot,$container,$dirname,$destdir,$settings,$total,$udom,$uname,$pagesfiles,$sequencesfiles) = @_;
my $xmlfile = $docroot.'/'.$res.".dat";
# print "XML file is $xmlfile\n";
my @state = ();
@@ -1567,9 +1560,7 @@
}
if ("@state" eq "$toptag{$container} QUESTIONLIST QUESTION") {
$id = $attr->{id};
- unless ($container eq 'pool') {
- push @allids, $id;
- }
+ push @allids, $id;
%{$$settings{$id}} = ();
@{$allanswers{$id}} = ();
$$settings{$id}{class} = $attr->{class};
@@ -1669,46 +1660,77 @@
my $dirtitle = $$settings{'title'};
$dirtitle =~ s/\W//g;
$dirtitle .= '_'.$res;
+ if (!-e "$destdir/problems") {
+ mkdir("$destdir/problems",0755);
+ }
if (!-e "$destdir/problems/$dirtitle") {
mkdir("$destdir/problems/$dirtitle",0755);
}
my $newdir = "$destdir/problems/$dirtitle";
+ my $seqdir = "$destdir/sequences";
my $pagedir = "$destdir/pages";
my $curr_id = 0;
my $next_id = 1;
- unless ($container eq 'pool') {
- open(PAGEFILE,">$pagedir/$res.page");
- print PAGEFILE qq|<map>
-|;
- $$total{page} ++;
- print PAGEFILE qq|<resource id="1" src="/res/$udom/$uname/$resdir/problems/$dirtitle/$allids[0].problem" type="start"></resource>|;
- if (@allids == 1) {
- print PAGEFILE qq|
+ my $fh;
+ my $containerdir;
+ if ($container eq 'pool') {
+ $containerdir = $seqdir.'/'.$res.'.sequence';
+ if (!-e "$seqdir") {
+ mkdir("$seqdir",0770);
+ }
+ open($fh,">$containerdir");
+ $$total{seq} ++;
+ push @{$sequencesfiles},$res.'.sequence';
+ } else {
+ $containerdir = $pagedir.'/'.$res.'.page';
+ if (!-e "$destdir/pages") {
+ mkdir("$destdir/pages",0770);
+ }
+ open($fh,">$containerdir");
+ $$total{page} ++;
+ push @{$pagesfiles},$res.'.page';
+ }
+ print $fh qq|<map>
+|;
+ my $probsrc="/res/$udom/$uname/$resdir/problems/$dirtitle/$allids[0].problem";
+ print $fh qq|<resource id="1" src="$probsrc" type="start" title="question_0001"></resource>|;
+ if (@allids == 1) {
+ print $fh qq|
<link from="1" to="2" index="1"></link>
<resource id="2" src="" type="finish">\n|;
- } else {
- for (my $j=1; $j<@allids; $j++) {
- $curr_id = $j;
- $next_id = $curr_id + 1;
- print PAGEFILE qq|
+ } else {
+ for (my $j=1; $j<@allids; $j++) {
+ my $qntitle = $j;
+ while (length($qntitle) <4) {
+ $qntitle = '0'.$qntitle;
+ }
+ $curr_id = $j;
+ $next_id = $curr_id + 1;
+ if ($context eq 'CSTR') {
+ $probsrc = "/res/$udom/$uname/$resdir/problems/$dirtitle/$allids[$j].problem";
+ }
+ print $fh qq|
<link from="$curr_id" to="$next_id" index="$curr_id"></link>
-<resource id="$next_id" src="/res/$udom/$uname/$resdir/problems/$dirtitle/$allids[$j].problem"|;
- if ($next_id == @allids) {
- print PAGEFILE qq| type="finish"></resource>\n|;
- } else {
- print PAGEFILE qq|></resource>|;
- }
+<resource id="$next_id" src="$probsrc" title="question_$qntitle"|;
+ if ($next_id == @allids) {
+ print $fh qq| type="finish"></resource>\n|;
+ } else {
+ print $fh qq|></resource>|;
}
}
- print PAGEFILE qq|</map>|;
- close(PAGEFILE);
}
+ print $fh qq|</map>|;
+ close($fh);
foreach my $id (@allids) {
- my $output = qq|<problem>
+ my $output;
+ if ($context eq 'CSTR') {
+ $output = qq|<problem>
|;
+ }
$$total{prob} ++;
if ($$settings{$id}{class} eq "QUESTION_ESSAY") {
- $output .= qq|<startouttext />$$settings{$id}{text}<endouttext />
+ if ($context eq 'CSTR') {
+ $output .= qq|<startouttext />$$settings{$id}{text}<endouttext />
<essayresponse>
<textfield></textfield>
</essayresponse>
@@ -1716,26 +1738,34 @@
$$settings{$id}{feedbackcorr}
</postanswerdate>
|;
+ }
} else {
- $output .= qq|<startouttext />$$settings{$id}{text}\n|;
- if ( defined($$settings{$id}{image}) ) {
+ if ($context eq 'CSTR') {
+ $output .= qq|<startouttext />$$settings{$id}{text}\n|;
+ }
+ my ($image,$imglink,$url);
+ if ( defined($$settings{$id}{image}) ) {
if ( $$settings{$id}{style} eq 'embed' ) {
- $output .= qq|<br /><img src="$dirname/resfiles/$res/$$settings{$id}{image}" /><br />|;
+ $image = qq|<br /><img src="$dirname/resfiles/$res/$$settings{$id}{image}" /><br />|;
} else {
- $output .= qq|<br /><a href="$dirname/resfiles/$res/$$settings{$id}{image}">Link to file</a><br />|;
+ $imglink = qq|<br /><a href="$dirname/resfiles/$res/$$settings{$id}{image}">Link to file</a><br />|;
}
}
if ( defined($$settings{$id}{url}) ) {
- $output .= qq|<br /><a href="$$settings{$id}{url}">$$settings{$id}{name}</a><br />|;
+ $url = qq|<br /><a href="$$settings{$id}{url}">$$settings{$id}{name}</a><br />|;
+ }
+ if ($context eq 'CSTR') {
+ $output .= $image.$imglink.$url.'
+<endouttext />';
}
- $output .= qq|
-<endouttext />|;
if ($$settings{$id}{class} eq 'QUESTION_MULTIPLECHOICE') {
my $numfoils = @{$allanswers{$id}};
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<radiobuttonresponse max="$numfoils" randomize="yes">
<foilgroup>
|;
+ }
for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
$output .= " <foil name=\"foil".$k."\" value=\"";
if (grep/^$allanswers{$id}[$k]$/,@{$$settings{$id}{correctanswer}}) {
@@ -1749,26 +1779,31 @@
$output .= "random\"";
}
$output .= "\><startouttext />".$$settings{$id}{$allanswers{$id}[$k]}{text};
+ my ($ans_image,$ans_link);
if ( defined($$settings{$id}{$allanswers{$id}[$k]}{image}) ) {
if ( $$settings{$id}{$allanswers{$id}[$k]}{style} eq 'embed' ) {
- $output .= qq|<br /><img src="$dirname/resfiles/$res/$$settings{$id}{$allanswers{$id}[$k]}{image}" /><br />|;
+ $ans_image .= qq|<br /><img src="$dirname/resfiles/$res/$$settings{$id}{$allanswers{$id}[$k]}{image}" /><br />|;
} else {
- $output .= qq|<br /><a href="$dirname/resfiles/$res/$$settings{$id}{$allanswers{$id}[$k]}{image}" />Link to file</a><br/>|;
+ $ans_link .= qq|<br /><a href="$dirname/resfiles/$res/$$settings{$id}{$allanswers{$id}[$k]}{image}" />Link to file</a><br/>|;
}
}
- $output .= qq|<endouttext /></foil>\n|;
+ $output .= $ans_image.$ans_link.'<endouttext /></foil>'."\n";
}
- chomp($output);
- $output .= qq|
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
</foilgroup>
</radiobuttonresponse>
|;
+ }
} elsif ($$settings{$id}{class} eq 'QUESTION_TRUEFALSE') {
my $numfoils = @{$allanswers{$id}};
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<radiobuttonresponse max="$numfoils" randomize="yes">
<foilgroup>
|;
+ }
for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
$output .= " <foil name=\"foil".$k."\" value=\"";
if (grep/^$allanswers{$id}[$k]$/,@{$$settings{$id}{correctanswer}}) {
@@ -1778,17 +1813,21 @@
}
$output .= "\><startouttext />".$$settings{$id}{$allanswers{$id}[$k]}{text}."<endouttext /></foil>\n";
}
- chomp($output);
- $output .= qq|
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
</foilgroup>
</radiobuttonresponse>
|;
+ }
} elsif ($$settings{$id}{class} eq 'QUESTION_MULTIPLEANSWER') {
my $numfoils = @{$allanswers{$id}};
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<optionresponse max="$numfoils" randomize="yes">
<foilgroup options="('True','False')">
|;
+ }
for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
$output .= " <foil name=\"foil".$k."\" value=\"";
if (grep/^$allanswers{$id}[$k]$/,@{$$settings{$id}{correctanswer}}) {
@@ -1798,30 +1837,42 @@
}
$output .= "\><startouttext />".$$settings{$id}{$allanswers{$id}[$k]}{text}."<endouttext /></foil>\n";
}
- chomp($output);
- $output .= qq|
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
</foilgroup>
</optionresponse>
|;
+ }
} elsif ($$settings{$id}{class} eq 'QUESTION_ORDER') {
my $numfoils = @{$allanswers{$id}};
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<rankresponse max="$numfoils" randomize="yes">
<foilgroup>
|;
+ }
for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
- $output .= " <foil location=\"random\" name=\"foil".$k."\" value=\"".$$settings{$id}{$allanswers{$id}[$k]}{order}."\"><startouttext />".$$settings{$id}{$allanswers{$id}[$k]}{text}."<endouttext /></foil>\n";
+ if ($context eq 'CSTR') {
+ $output .= " <foil location=\"random\" name=\"foil".$k."\" value=\"".$$settings{$id}{$allanswers{$id}[$k]}{order}."\"><startouttext />".$$settings{$id}{$allanswers{$id}[$k]}{text}."<endouttext /></foil>\n";
+ }
}
- chomp($output);
- $output .= qq|
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
</foilgroup>
</rankresponse>
|;
+ }
} elsif ($$settings{$id}{class} eq 'QUESTION_FILLINBLANK') {
my $numerical = 1;
- for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
- if ($$settings{$id}{$allanswers{$id}[$k]}{text} =~ m/([^\d\.]|\.\.)/) {
- $numerical = 0;
+ if ($context eq 'DOCS') {
+ $numerical = 0;
+ } else {
+ for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
+ if ($$settings{$id}{$allanswers{$id}[$k]}{text} =~ m/([^\d\.]|\.\.)/) {
+ $numerical = 0;
+ }
}
}
if ($numerical) {
@@ -1844,7 +1895,8 @@
$numans = ($max + $min)/2;
$tol = 100*($max - $min)/($numans*2);
}
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<numericalresponse answer="$numans">
<responseparam type="tolerance" default="$tol%" name="tol" description="Numerical Tolerance" />
<responseparam name="sig" type="int_range,0-16" default="0,15" description="Significant Figures"
@@ -1852,64 +1904,79 @@
<textline />
</numericalresponse>
|;
+ }
} else {
- if (@{$allanswers{$id}} == 1) {
- $output .= qq|
+ if ($context eq 'CSTR') {
+ if (@{$allanswers{$id}} == 1) {
+ $output .= qq|
<stringresponse answer="$$settings{$id}{$allanswers{$id}[0]}{text}" type="ci">
<textline>
</textline>
</stringresponse>
|;
- } else {
- my @answertext = ();
- for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
- $$settings{$id}{$allanswers{$id}[$k]}{text} =~ s/\|/\|/g;
- push @answertext, $$settings{$id}{$allanswers{$id}[$k]}{text};
- }
- my $regexpans = join('|',@answertext);
- $regexpans = '/^('.$regexpans.')\b/';
- $output .= qq|
+ } else {
+ my @answertext = ();
+ for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
+ $$settings{$id}{$allanswers{$id}[$k]}{text} =~ s/\|/\|/g;
+ push @answertext, $$settings{$id}{$allanswers{$id}[$k]}{text};
+ }
+ my $regexpans = join('|',@answertext);
+ $regexpans = '/^('.$regexpans.')\b/';
+ $output .= qq|
<stringresponse answer="$regexpans" type="re">
<textline>
</textline>
</stringresponse>
|;
- }
+ }
+ }
}
} elsif ($$settings{$id}{class} eq "QUESTION_MATCH") {
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<matchresponse max="10" randomize="yes">
<foilgroup>
<itemgroup>
|;
+ }
for (my $k=0; $k<@{$allchoices{$id}}; $k++) {
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<item name="$allchoices{$id}[$k]">
<startouttext />$$settings{$id}{$allchoices{$id}[$k]}{text}<endouttext />
</item>
|;
+ }
}
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
</itemgroup>
|;
+ }
for (my $k=0; $k<@{$allanswers{$id}}; $k++) {
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
<foil location="random" value="$$settings{$id}{$allanswers{$id}[$k]}{choice_id}" name="$allanswers{$id}[$k]">
<startouttext />$$settings{$id}{$allanswers{$id}[$k]}{text}<endouttext />
</foil>
|;
+ }
}
- $output .= qq|
+ if ($context eq 'CSTR') {
+ $output .= qq|
</foilgroup>
</matchresponse>
|;
+ }
}
}
- $output .= qq|</problem>
+ if ($context eq 'CSTR') {
+ $output .= qq|</problem>
|;
- open(PROB,">$newdir/$id.problem");
- print PROB $output;
- close PROB;
+ open(PROB,">$newdir/$id.problem");
+ print PROB $output;
+ close PROB;
+ }
}
}
--raeburn1102968069--