Diff for /loncom/imspackages/imsprocessor.pm between versions 1.39 and 1.40

version 1.39, 2006/04/05 23:36:52 version 1.40, 2006/04/15 16:44:56
Line 2178  sub parse_webctvista4_assessment { Line 2178  sub parse_webctvista4_assessment {
         my ($tagname, $attr) = @_;          my ($tagname, $attr) = @_;
         push @state, $tagname;          push @state, $tagname;
         my @seq = ();          my @seq = ();
           if ("@state" eq "questestinterop assessment") {
               $$qzparams{$res}{id} = $attr->{'ident'};
               $$qzparams{$res}{title} = $attr->{'title'};
           }
         if ("@state" eq "questestinterop assessment section itemref") {          if ("@state" eq "questestinterop assessment section itemref") {
             $id = $attr->{linkrefid};              $id = $attr->{linkrefid};
             push(@{$allids},$id);              push(@{$allids},$id);
Line 2186  sub parse_webctvista4_assessment { Line 2190  sub parse_webctvista4_assessment {
         if ("@state" eq "questestinterop assessment section selection_ordering order") {          if ("@state" eq "questestinterop assessment section selection_ordering order") {
            $$qzparams{$res}{order_type} = $attr->{order_type};             $$qzparams{$res}{order_type} = $attr->{order_type};
         }          }
   
      }, "tagname, attr"],       }, "tagname, attr"],
      text_h =>       text_h =>
      [sub {       [sub {
Line 2414  sub parse_webctvista4_question { Line 2417  sub parse_webctvista4_question {
             %{$$settings{$id}{$str_id}{$label}} = ();              %{$$settings{$id}{$str_id}{$label}} = ();
             $$settings{$id}{$str_id}{$label}{fibtype} = $fibtype;              $$settings{$id}{$str_id}{$label}{fibtype} = $fibtype;
             if ($$settings{$id}{class} eq 'string') {              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          if ("@state" eq "questestinterop item presentation flow response_str render_fib response_label material mattext") { # Paragraph
Line 2448  sub parse_webctvista4_question { Line 2451  sub parse_webctvista4_question {
             } elsif (($$settings{$id}{class} eq 'string') ||              } elsif (($$settings{$id}{class} eq 'string') ||
                      ($$settings{$id}{class} eq 'shortanswer')) {                       ($$settings{$id}{class} eq 'shortanswer')) {
                 $label = $attr->{respident};                  $label = $attr->{respident};
                   $$settings{$id}{$label}{case} = $attr->{'case'};
             } elsif ($$settings{$id}{class} eq 'match') {              } elsif ($$settings{$id}{class} eq 'match') {
                 $grp = $attr->{respident};                  $grp = $attr->{respident};
             }              }
Line 3140  sub process_assessment { Line 3144  sub process_assessment {
         unless($$dbparse) {          unless($$dbparse) {
             foreach my $res (sort keys %{$allquestions}) {              foreach my $res (sort keys %{$allquestions}) {
                 my $parent = $$allquestions{$res};                  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);              &build_category_sequences($destdir,$catinfo,$sequencesfiles,$pagesfiles,$destresdir,$newdir,$cms,$total,$randompickflag,$context,$udom,$uname,$dirname,$cid,$cdom,$cnum,$qzdbsettings);
             $$dbparse = 1;              $$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) {          if ($qzparams{$res}{numpick} < @allids) {
             $$randompicks{$$resources{$res}{revitm}} = $qzparams{$res}{numpick};              $$randompicks{$$resources{$res}{revitm}} = $qzparams{$res}{numpick};
             $randompickflag = 1;              $randompickflag = 1;
         }          }
     }      }
     my $dirtitle;      my $dirtitle;
     unless ($cms eq 'webctce4') {      unless ($cms eq 'webctce4' || $cms eq 'webctvista4') {
         $dirtitle = $$settings{'title'};          $dirtitle = $$settings{'title'};
         $dirtitle =~ s/\W//g;          $dirtitle =~ s/\s+/_/g;
           $dirtitle =~ s/:/_/g;
         $dirtitle .= '_'.$res;          $dirtitle .= '_'.$res;
         if (!-e "$destdir/problems") {          if (!-e "$destdir/problems") {
             mkdir("$destdir/problems",0755);              mkdir("$destdir/problems",0755);
Line 3168  sub process_assessment { Line 3173  sub process_assessment {
     if ($cms eq 'webctce4') {      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);          &build_problem_container($cms,$dirtitle,$destdir,$container,$res,$total,$sequencesfiles,$pagesfiles,$randompickflag,$context,\@allids,$udom,$uname,$dirname,\$containerdir,$cid,$cdom,$cnum,$catinfo,$qzdbsettings);
     } else {      } 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') {      if ($cms eq 'bb5') {
         &write_bb5_questions(\@allids,$containerdir,$context,$settings,$dirname,$destdir,$res,\%allanswers,\%allchoices,$total,$newdir,$cid,$cdom,$cnum,$docroot);          &write_bb5_questions(\@allids,$containerdir,$context,$settings,$dirname,$destdir,$res,\%allanswers,\%allchoices,$total,$newdir,$cid,$cdom,$cnum,$docroot);
     } elsif ($cms eq 'bb6') {      } elsif ($cms eq 'bb6') {
         &write_bb6_questions(\@allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$total,$newdir,$cid,$cdom,$cnum,$docroot);          &write_bb6_questions(\@allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$total,$newdir,$cid,$cdom,$cnum,$docroot);
     } elsif ($cms eq 'webctvista4') {      } 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);
     }      }
 }  }
   
Line 3191  sub build_category_sequences { Line 3196  sub build_category_sequences {
     open($fh,">$destdir/sequences/question_database.sequence");      open($fh,">$destdir/sequences/question_database.sequence");
     push @{$sequencesfiles},'question_database.sequence';      push @{$sequencesfiles},'question_database.sequence';
     foreach my $category (sort keys %{$catinfo}) {      foreach my $category (sort keys %{$catinfo}) {
         my $seqname = $$catinfo{$category}{title}.'_'.$category;          my $seqname;
         $seqname =~ s/\s/_/g;          if ($cms eq 'webct4ce') { 
         $seqname =~ s/\W//g;              $seqname = $$catinfo{$category}{title}.'_'.$category;
           } else {
               $seqname = $$catinfo{$category}{title};
           }
           $seqname =~ s/\s+/_/g;
           $seqname =~ s/:/_/g;
         push(@{$sequencesfiles},$seqname.'.sequence');          push(@{$sequencesfiles},$seqname.'.sequence');
         my $catsrc = "$destresdir/sequences/$seqname.sequence";          my $catsrc = "$destresdir/sequences/$seqname.sequence";
         if ($curr_id == 0) {          if ($curr_id == 0) {
Line 3231  sub build_category_sequences { Line 3241  sub build_category_sequences {
 }  }
   
 sub build_problem_container {  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 $seqdir = "$destdir/sequences";
     my $pagedir = "$destdir/pages";      my $pagedir = "$destdir/pages";
     my $curr_id = 0;      my $curr_id = 0;
     my $next_id = 1;      my $next_id = 1;
     my $fh;      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') {      if ($container eq 'pool' || $randompickflag || $container eq 'database') {
         $$containerdir = $seqdir.'/'.$res.'.sequence';          $$containerdir = $seqdir.'/'.$mapname.'.sequence';
         if (!-e "$seqdir") {          if (!-e "$seqdir") {
             mkdir("$seqdir",0770);              mkdir("$seqdir",0770);
         }          }
         open($fh,">$$containerdir");          open($fh,">$$containerdir");
         $$total{seq} ++;          $$total{seq} ++;
         push @{$sequencesfiles},$res.'.sequence';          push @{$sequencesfiles},$mapname.'.sequence';
     } else {      } else {
         $$containerdir = $pagedir.'/'.$res.'.page';          $$containerdir = $pagedir.'/'.$mapname.'.page';
         if (!-e "$destdir/pages") {          if (!-e "$destdir/pages") {
             mkdir("$destdir/pages",0770);              mkdir("$destdir/pages",0770);
         }          }
         open($fh,">$$containerdir");          open($fh,">$$containerdir");
         $$total{page} ++;          $$total{page} ++;
         push @{$pagesfiles},$res.'.page';          push @{$pagesfiles},$mapname.'.page';
     }      }
     print $fh qq|<map>      print $fh qq|<map>
 |;  |;
Line 3265  sub build_problem_container { Line 3282  sub build_problem_container {
             } else {              } else {
                 $probtitle{$id} = $$settings{title};                  $probtitle{$id} = $$settings{title};
             }              }
             $probtitle{$id} =~ s/\s/_/g;              $probtitle{$id} =~ s/\s+/_/g;
             $probtitle{$id} =~ s/\W//g;              $probtitle{$id} =~ s/:/_/g;
             $probtitle{$id} .= '_'.$id;              $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 $catid = $$settings{$$allids[0]}{category};
             my $probdir = $$catinfo{$catid}{title}.'_'.$catid;              if ($catid) {
             $probdir =~ s/\s/_/g;                  if ($cms eq 'webct4ce') { 
             $probdir =~ s/\W//g;                      $probdir = $$catinfo{$catid}{title}.'_'.$catid;
             $probsrc = "$dirname/problems/$probdir/$probtitle{$$allids[0]}.problem";                  } 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 {          } else {
             $probsrc="$dirname/problems/$dirtitle/$probtitle{$$allids[0]}.problem";              $probsrc="$dirname/problems/$dirtitle/$probtitle{$$allids[0]}.problem";
         }          }
Line 3293  sub build_problem_container { Line 3320  sub build_problem_container {
             $curr_id = $j;              $curr_id = $j;
             $next_id = $curr_id + 1;              $next_id = $curr_id + 1;
             if ($context eq 'CSTR') {              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 $catid = $$settings{$$allids[$j]}{category};
                     my $probdir = $$catinfo{$catid}{title}.'_'.$catid;                      if ($catid) {
                     $probdir =~ s/\s/_/g;                          if ($cms eq 'webct4ce') {
                     $probdir =~ s/\W//g;                              $probdir = $$catinfo{$catid}{title}.'_'.$catid;
                     $probsrc = "$dirname/problems/$probdir/$probtitle{$$allids[$j]}.problem";                          } 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 {                  } else {
                     $probsrc = "$dirname/problems/$dirtitle/$probtitle{$$allids[$j]}.problem";                      $probsrc = "$dirname/problems/$dirtitle/$probtitle{$$allids[$j]}.problem";
                 }                  }
Line 3696  sub write_bb5_questions { Line 3733  sub write_bb5_questions {
 }  }
   
 sub write_webct4_questions {  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;      my $qnum = 0;
     foreach my $id (@{$alldbquestids}) {      foreach my $id (@{$alldbquestids}) {
         $qnum ++;          $qnum ++;
Line 4265  $$settings{$id}{$list}{jumbledtext}[$k] Line 4302  $$settings{$id}{$list}{jumbledtext}[$k]
             }              }
         }          }
         if ($context eq 'CSTR') {          if ($context eq 'CSTR') {
               my $probdir;
             my $catid = $$settings{$id}{category};              my $catid = $$settings{$id}{category};
             my $probdir = $$catinfo{$catid}{title}.'_'.$catid;              if ($catid) {
             $probdir =~ s/\s/_/g;                  if ($cms eq 'webct4ce') {
             $probdir =~ s/\W//g;                      $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") {              if (!-e "$destdir/problems/$probdir") {
                 mkdir("$destdir/problems/$probdir",0755);                  mkdir("$destdir/problems/$probdir",0755);
             }              }
Line 4276  $$settings{$id}{$list}{jumbledtext}[$k] Line 4322  $$settings{$id}{$list}{jumbledtext}[$k]
 |;  |;
             my $title = $$settings{$id}{title};              my $title = $$settings{$id}{title};
             $title =~ s/\s/_/g;              $title =~ s/\s/_/g;
             $title =~ s/\W//g;              $title =~ s/:/_/g;
             $title .= '_'.$id;               $title .= '_'.$id;
             open(PROB,">$destdir/problems/$probdir/$title.problem");              open(PROB,">$destdir/problems/$probdir/$title.problem");
             print PROB $output;              print PROB $output;
             close PROB;              close PROB;

Removed from v.1.39  
changed lines
  Added in v.1.40


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>