[LON-CAPA-cvs] cvs: loncom /imspackages imsprocessor.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Sat, 15 Apr 2006 16:44:57 -0000
This is a MIME encoded message
--raeburn1145119497
Content-Type: text/plain
raeburn Sat Apr 15 12:44:57 2006 EDT
Modified files:
/loncom/imspackages imsprocessor.pm
Log:
Modifications so WebCT Vista 4 learning modules are imported. Change file name modifications so Spanish language characters are preserved in file names.
--raeburn1145119497
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20060415124457.txt"
Index: loncom/imspackages/imsprocessor.pm
diff -u loncom/imspackages/imsprocessor.pm:1.39 loncom/imspackages/imsprocessor.pm:1.40
--- loncom/imspackages/imsprocessor.pm:1.39 Wed Apr 5 19:36:52 2006
+++ loncom/imspackages/imsprocessor.pm Sat Apr 15 12:44:56 2006
@@ -2178,6 +2178,10 @@
my ($tagname, $attr) = @_;
push @state, $tagname;
my @seq = ();
+ if ("@state" eq "questestinterop assessment") {
+ $$qzparams{$res}{id} = $attr->{'ident'};
+ $$qzparams{$res}{title} = $attr->{'title'};
+ }
if ("@state" eq "questestinterop assessment section itemref") {
$id = $attr->{linkrefid};
push(@{$allids},$id);
@@ -2186,7 +2190,6 @@
if ("@state" eq "questestinterop assessment section selection_ordering order") {
$$qzparams{$res}{order_type} = $attr->{order_type};
}
-
}, "tagname, attr"],
text_h =>
[sub {
@@ -2414,7 +2417,7 @@
%{$$settings{$id}{$str_id}{$label}} = ();
$$settings{$id}{$str_id}{$label}{fibtype} = $fibtype;
if ($$settings{$id}{class} eq 'string') {
- $$settings{$id}{text} .= '[blank]';
+ $$settings{$id}{text} .= '________';
}
}
if ("@state" eq "questestinterop item presentation flow response_str render_fib response_label material mattext") { # Paragraph
@@ -2448,6 +2451,7 @@
} elsif (($$settings{$id}{class} eq 'string') ||
($$settings{$id}{class} eq 'shortanswer')) {
$label = $attr->{respident};
+ $$settings{$id}{$label}{case} = $attr->{'case'};
} elsif ($$settings{$id}{class} eq 'match') {
$grp = $attr->{respident};
}
@@ -3140,21 +3144,22 @@
unless($$dbparse) {
foreach my $res (sort keys %{$allquestions}) {
my $parent = $$allquestions{$res};
- &parse_webctvista4_question($res,$docroot,$resources,$hrefs,$settings,\@allquestids,\%allanswers,\%allchoices,$parent,$catinfo);
+ &parse_webctvista4_question($res,$docroot,$resources,$hrefs,$qzdbsettings,\@allquestids,\%allanswers,\%allchoices,$parent,$catinfo);
}
&build_category_sequences($destdir,$catinfo,$sequencesfiles,$pagesfiles,$destresdir,$newdir,$cms,$total,$randompickflag,$context,$udom,$uname,$dirname,$cid,$cdom,$cnum,$qzdbsettings);
$$dbparse = 1;
}
- &parse_webctvista4_assessment($res,$docroot,$hrefs,\@allids,\%qzparams);
+ &parse_webctvista4_assessment($res,$docroot,$$resources{$res}{file},\@allids,\%qzparams);
if ($qzparams{$res}{numpick} < @allids) {
$$randompicks{$$resources{$res}{revitm}} = $qzparams{$res}{numpick};
$randompickflag = 1;
}
}
my $dirtitle;
- unless ($cms eq 'webctce4') {
+ unless ($cms eq 'webctce4' || $cms eq 'webctvista4') {
$dirtitle = $$settings{'title'};
- $dirtitle =~ s/\W//g;
+ $dirtitle =~ s/\s+/_/g;
+ $dirtitle =~ s/:/_/g;
$dirtitle .= '_'.$res;
if (!-e "$destdir/problems") {
mkdir("$destdir/problems",0755);
@@ -3168,14 +3173,14 @@
if ($cms eq 'webctce4') {
&build_problem_container($cms,$dirtitle,$destdir,$container,$res,$total,$sequencesfiles,$pagesfiles,$randompickflag,$context,\@allids,$udom,$uname,$dirname,\$containerdir,$cid,$cdom,$cnum,$catinfo,$qzdbsettings);
} else {
- &build_problem_container($cms,$dirtitle,$destdir,$container,$res,$total,$sequencesfiles,$pagesfiles,$randompickflag,$context,\@allids,$udom,$uname,$dirname,\$containerdir,$cid,$cdom,$cnum,$catinfo,$settings);
+ &build_problem_container($cms,$dirtitle,$destdir,$container,$res,$total,$sequencesfiles,$pagesfiles,$randompickflag,$context,\@allids,$udom,$uname,$dirname,\$containerdir,$cid,$cdom,$cnum,$catinfo,$qzdbsettings,\%qzparams);
}
if ($cms eq 'bb5') {
&write_bb5_questions(\@allids,$containerdir,$context,$settings,$dirname,$destdir,$res,\%allanswers,\%allchoices,$total,$newdir,$cid,$cdom,$cnum,$docroot);
} elsif ($cms eq 'bb6') {
&write_bb6_questions(\@allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$total,$newdir,$cid,$cdom,$cnum,$docroot);
} elsif ($cms eq 'webctvista4') {
- &write_webct4_questions($cms,\@allquestids,$context,$settings,$dirname,\%allanswers,\%allchoices,$total,$cid,$cdom,$cnum,$destdir,$catinfo);
+ &write_webct4_questions($cms,\@allquestids,$context,$qzdbsettings,$dirname,\%allanswers,\%allchoices,$total,$cid,$cdom,$cnum,$destdir,$catinfo,$dirtitle);
}
}
@@ -3191,9 +3196,14 @@
open($fh,">$destdir/sequences/question_database.sequence");
push @{$sequencesfiles},'question_database.sequence';
foreach my $category (sort keys %{$catinfo}) {
- my $seqname = $$catinfo{$category}{title}.'_'.$category;
- $seqname =~ s/\s/_/g;
- $seqname =~ s/\W//g;
+ my $seqname;
+ if ($cms eq 'webct4ce') {
+ $seqname = $$catinfo{$category}{title}.'_'.$category;
+ } else {
+ $seqname = $$catinfo{$category}{title};
+ }
+ $seqname =~ s/\s+/_/g;
+ $seqname =~ s/:/_/g;
push(@{$sequencesfiles},$seqname.'.sequence');
my $catsrc = "$destresdir/sequences/$seqname.sequence";
if ($curr_id == 0) {
@@ -3231,28 +3241,35 @@
}
sub build_problem_container {
- my ($cms,$dirtitle,$destdir,$container,$res,$total,$sequencesfiles,$pagesfiles,$randompickflag,$context,$allids,$udom,$uname,$dirname,$containerdir,$cid,$cdom,$cnum,$catinfo,$settings) = @_;
+ my ($cms,$dirtitle,$destdir,$container,$res,$total,$sequencesfiles,$pagesfiles,$randompickflag,$context,$allids,$udom,$uname,$dirname,$containerdir,$cid,$cdom,$cnum,$catinfo,$settings,$qzparams) = @_;
my $seqdir = "$destdir/sequences";
my $pagedir = "$destdir/pages";
my $curr_id = 0;
my $next_id = 1;
my $fh;
+ my $mapname = $res;
+ if ($cms eq 'webctvista4' && ref($$qzparams{$res}) eq 'HASH') {
+ if ($$qzparams{$res}{title}) {
+ $mapname = $$qzparams{$res}{title};
+ $mapname =~ s/\s+/_/g;
+ }
+ }
if ($container eq 'pool' || $randompickflag || $container eq 'database') {
- $$containerdir = $seqdir.'/'.$res.'.sequence';
+ $$containerdir = $seqdir.'/'.$mapname.'.sequence';
if (!-e "$seqdir") {
mkdir("$seqdir",0770);
}
open($fh,">$$containerdir");
$$total{seq} ++;
- push @{$sequencesfiles},$res.'.sequence';
+ push @{$sequencesfiles},$mapname.'.sequence';
} else {
- $$containerdir = $pagedir.'/'.$res.'.page';
+ $$containerdir = $pagedir.'/'.$mapname.'.page';
if (!-e "$destdir/pages") {
mkdir("$destdir/pages",0770);
}
open($fh,">$$containerdir");
$$total{page} ++;
- push @{$pagesfiles},$res.'.page';
+ push @{$pagesfiles},$mapname.'.page';
}
print $fh qq|<map>
|;
@@ -3265,16 +3282,26 @@
} else {
$probtitle{$id} = $$settings{title};
}
- $probtitle{$id} =~ s/\s/_/g;
- $probtitle{$id} =~ s/\W//g;
+ $probtitle{$id} =~ s/\s+/_/g;
+ $probtitle{$id} =~ s/:/_/g;
$probtitle{$id} .= '_'.$id;
}
- if ($cms eq 'webctce4' && $container ne 'database') {
+ if (($cms eq 'webct4ce' && $container ne 'database') ||
+ ($cms eq 'webctvista4')) {
+ my $probdir;
my $catid = $$settings{$$allids[0]}{category};
- my $probdir = $$catinfo{$catid}{title}.'_'.$catid;
- $probdir =~ s/\s/_/g;
- $probdir =~ s/\W//g;
- $probsrc = "$dirname/problems/$probdir/$probtitle{$$allids[0]}.problem";
+ if ($catid) {
+ if ($cms eq 'webct4ce') {
+ $probdir = $$catinfo{$catid}{title}.'_'.$catid;
+ } else {
+ $probdir = $$catinfo{$catid}{title};
+ }
+ $probdir =~ s/\s+/_/g;
+ $probdir =~ s/:/_/g;
+ $probsrc = "$dirname/problems/$probdir/$probtitle{$$allids[0]}.problem";
+ } else {
+ $probsrc="$dirname/problems/$dirtitle/$probtitle{$$allids[0]}.problem";
+ }
} else {
$probsrc="$dirname/problems/$dirtitle/$probtitle{$$allids[0]}.problem";
}
@@ -3293,12 +3320,22 @@
$curr_id = $j;
$next_id = $curr_id + 1;
if ($context eq 'CSTR') {
- if ($cms eq 'webctce4' && $container ne 'database') {
+ if (($cms eq 'webctce4' && $container ne 'database') ||
+ ($cms eq 'webctvista4')) {
+ my $probdir;
my $catid = $$settings{$$allids[$j]}{category};
- my $probdir = $$catinfo{$catid}{title}.'_'.$catid;
- $probdir =~ s/\s/_/g;
- $probdir =~ s/\W//g;
- $probsrc = "$dirname/problems/$probdir/$probtitle{$$allids[$j]}.problem";
+ if ($catid) {
+ if ($cms eq 'webct4ce') {
+ $probdir = $$catinfo{$catid}{title}.'_'.$catid;
+ } else {
+ $probdir = $$catinfo{$catid}{title};
+ }
+ $probdir =~ s/\s/_/g;
+ $probdir =~ s/:/_/g;
+ $probsrc = "$dirname/problems/$probdir/$probtitle{$$allids[$j]}.problem";
+ } else {
+ $probsrc = "$dirname/problems/$dirtitle/$probtitle{$$allids[$j]}.problem";
+ }
} else {
$probsrc = "$dirname/problems/$dirtitle/$probtitle{$$allids[$j]}.problem";
}
@@ -3696,7 +3733,7 @@
}
sub write_webct4_questions {
- my ($cms,$alldbquestids,$context,$settings,$dirname,$allanswers,$allchoices,$total,$cid,$cdom,$cnum,$destdir,$catinfo) = @_;
+ my ($cms,$alldbquestids,$context,$settings,$dirname,$allanswers,$allchoices,$total,$cid,$cdom,$cnum,$destdir,$catinfo,$dirtitle) = @_;
my $qnum = 0;
foreach my $id (@{$alldbquestids}) {
$qnum ++;
@@ -4265,10 +4302,19 @@
}
}
if ($context eq 'CSTR') {
+ my $probdir;
my $catid = $$settings{$id}{category};
- my $probdir = $$catinfo{$catid}{title}.'_'.$catid;
- $probdir =~ s/\s/_/g;
- $probdir =~ s/\W//g;
+ if ($catid) {
+ if ($cms eq 'webct4ce') {
+ $probdir = $$catinfo{$catid}{title}.'_'.$catid;
+ } else {
+ $probdir = $$catinfo{$catid}{title};
+ }
+ $probdir =~ s/\s/_/g;
+ $probdir =~ s/://g;
+ } elsif (defined($dirtitle)) {
+ $probdir = $dirtitle;
+ }
if (!-e "$destdir/problems/$probdir") {
mkdir("$destdir/problems/$probdir",0755);
}
@@ -4276,8 +4322,8 @@
|;
my $title = $$settings{$id}{title};
$title =~ s/\s/_/g;
- $title =~ s/\W//g;
- $title .= '_'.$id;
+ $title =~ s/:/_/g;
+ $title .= '_'.$id;
open(PROB,">$destdir/problems/$probdir/$title.problem");
print PROB $output;
close PROB;
--raeburn1145119497--