--- loncom/publisher/testbankimport.pm 2004/04/23 22:42:05 1.4 +++ loncom/publisher/testbankimport.pm 2005/04/07 06:56:27 1.6 @@ -1,5 +1,5 @@ # Handler for parsing text upload problem descriptions into .problems -# $Id: testbankimport.pm,v 1.4 2004/04/23 22:42:05 raeburn Exp $ +# $Id: testbankimport.pm,v 1.6 2005/04/07 06:56:27 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,8 +40,8 @@ use File::Basename(); # ---------------------------------------------------------------- Display Control sub display_control { # figure out what page we're on and where we're heading. - my $page = $ENV{'form.page'}; - my $command = $ENV{'form.go'}; + my $page = $env{'form.page'}; + my $command = $env{'form.go'}; my $current_page = &calculate_page($page,$command); return $current_page; } @@ -86,13 +86,13 @@ function setElements() { var iter = 0 var selParam = 0 END_SCRIPT - if (exists($ENV{'form.blocks'}) ) { + if (exists($env{'form.blocks'}) ) { $$jsref .= qq| - document.forms.display.blocks.value = $ENV{'form.blocks'}\n|; - } elsif (exists($ENV{'form.qnumformat'}) ) { + document.forms.display.blocks.value = $env{'form.blocks'}\n|; + } elsif (exists($env{'form.qnumformat'}) ) { $$jsref .= <<"TO_HERE"; for (iter=0; iter "Multiple Choice", @@ -858,10 +867,10 @@ END_OF_FUNC # ---------------------------------------------------------------- Display Three sub display_three { my ($r,$uname,$fn,$page,$textref,$qcount) = @_; - my $qnumformat = $ENV{'form.qnumformat'}; - my $filename = $ENV{'form.filename'}; - my $source = $ENV{'form.go'}; - my $blocks = $ENV{'form.blocks'}; + my $qnumformat = $env{'form.qnumformat'}; + my $filename = $env{'form.filename'}; + my $source = $env{'form.go'}; + my $blocks = $env{'form.blocks'}; my @items = (); my @bgcolors = ('#ffffff','#eeeeee'); my @types = ("MC","MA","TF","Ess","FIB","Ord"); @@ -876,18 +885,18 @@ sub display_three { my %multparts = (); my $numitems = 0; for (my $i=0; $i<$blocks; $i++) { - if (($ENV{"form.start_$i"} ne '') && ($ENV{"form.end_$i"} ne '')) { - $start[$i] = $ENV{"form.start_$i"}; - $end[$i] = $ENV{"form.end_$i"}; + if (($env{"form.start_$i"} ne '') && ($env{"form.end_$i"} ne '')) { + $start[$i] = $env{"form.start_$i"}; + $end[$i] = $env{"form.end_$i"}; $nums[$i] = $end[$i]-$start[$i] +1; - $qtype[$i] = $ENV{"form.qtype_$i"}; + $qtype[$i] = $env{"form.qtype_$i"}; if (($qtype[$i] eq "MC") || ($qtype[$i] eq "MA") || ($qtype[$i] eq "Ord")) { - $foilformats[$i] = $ENV{"form.foilformat_$i"}; + $foilformats[$i] = $env{"form.foilformat_$i"}; } else { $foilformats[$i] = ''; } if (($qtype[$i] eq "MA") || ($qtype[$i] eq "FIB") || ($qtype[$i] eq "TF") || ($qtype[$i] eq "Ord")) { - $ansrtypes[$i] = $ENV{"form.ansr_$i"}; + $ansrtypes[$i] = $env{"form.ansr_$i"}; } else { $ansrtypes[$i] = ''; } @@ -950,17 +959,31 @@ END_OF_ONE $foiltag = $alphabet[$k-1].'.'; } elsif ($foilformats[$i] eq "lcparen") { $foiltag = '('.$alphabet[$k-1].')'; + } elsif ($foilformats[$i] eq "lconeparen") { + $foiltag = $alphabet[$k-1].')'; + } elsif ($foilformats[$i] eq "lcdotparen") { + $foiltag = $alphabet[$k-1].'.)'; } elsif ($foilformats[$i] eq "ucperiod") { $foiltag = $alphabet[$k-1].'.'; $foiltag =~ tr/a-z/A-Z/; } elsif ($foilformats[$i] eq "ucparen") { $foiltag = '('.$alphabet[$k-1].')'; $foiltag =~ tr/a-z/A-Z/; + } elsif ($foilformats[$i] eq "uconeparen") { + $foiltag = $alphabet[$k-1].')'; + $foiltag =~ tr/a-z/A-Z/; + } elsif ($foilformats[$i] eq "ucdotparen") { + $foiltag = $alphabet[$k-1].'.)'; + $foiltag =~ tr/a-z/A-Z/; } elsif ($foilformats[$i] eq "romperiod") { $foiltag = $romans[$k-1].'.'; } elsif ($foilformats[$i] eq "romparen") { $foiltag = '('.$romans[$k-1].')'; - } + } elsif ($foilformats[$i] eq "romoneparen") { + $foiltag = $romans[$k-1].')'; + } elsif ($foilformats[$i] eq "romdotparen") { + $foiltag = $romans[$k-1].'.)'; + } $r->print(qq|$foiltag $multparts{$j}[$k]
\n|); } } @@ -1071,9 +1094,9 @@ Please choose a destination LON-CAPA dir # ---------------------------------------------------------------- Final Display sub final_display { my ($r,$uname,$fn,$page,$textref) = @_; - my $qnumformat = $ENV{'form.qnumformat'}; - my $blocks = $ENV{'form.blocks'}; - my $newdir = $ENV{'form.newdir'}; + my $qnumformat = $env{'form.qnumformat'}; + my $blocks = $env{'form.blocks'}; + my $newdir = $env{'form.newdir'}; my $linkdir = $newdir; if ($linkdir =~ m#^/home/$uname/public_html/(.+)$#) { $linkdir = '/priv/'.$uname.'/'.$1; @@ -1090,21 +1113,21 @@ sub final_display { my %multparts = (); my $numitems = 0; for (my $i=0; $i<$blocks; $i++) { - $start[$i] = $ENV{"form.start_$i"}; - $end[$i] = $ENV{"form.end_$i"}; + $start[$i] = $env{"form.start_$i"}; + $end[$i] = $env{"form.end_$i"}; if (($end[$i] - $start[$i]) >= 0) { $nums[$i] = $end[$i] - $start[$i]+1; } else { $nums[$i] = 0; } - $qtype[$i] = $ENV{"form.qtype_$i"}; + $qtype[$i] = $env{"form.qtype_$i"}; if (($qtype[$i] eq "MC") || ($qtype[$i] eq "MA") || ($qtype[$i] eq "Ord")) { - $foilformats[$i] = $ENV{"form.foilformat_$i"}; + $foilformats[$i] = $env{"form.foilformat_$i"}; } else { $foilformats[$i] = ''; } if (($qtype[$i] eq "MA") || ($qtype[$i] eq "FIB") || ($qtype[$i] eq "TF") || ($qtype[$i] eq "Ord")) { - $ansrtypes[$i] = $ENV{"form.ansr_$i"}; + $ansrtypes[$i] = $env{"form.ansr_$i"}; } $numitems += $nums[$i]; } @@ -1132,14 +1155,14 @@ sub final_display { if ($qtype[$i] eq "MC") { $items[$k] =~ tr/A-Z/a-z/; $items[$k] =~ s/\W//g; - if ($foilformats[$i] eq "lcperiod" || $foilformats[$i] eq "lcparen" || $foilformats[$i] eq "ucparen" || $foilformats[$i] eq "ucperiod") { + if ($foilformats[$i] eq "lcperiod" || $foilformats[$i] eq "lcparen" || $foilformats[$i] eq "lconeparen" || $foilformats[$i] eq "lcdotparen" || $foilformats[$i] eq "ucparen" || $foilformats[$i] eq "ucperiod" || $foilformats[$i] eq "uconeparen" || $foilformats[$i] eq "ucdotparen") { for (my $j=0; $j<@alphabet; $j++) { if ($alphabet[$j] eq $items[$k]) { push @{$answers{$k}}, $j; last; } } - } elsif (($foilformats[$i] eq "romparen") || ($foilformats[$i] eq "romperiod")) { + } elsif (($foilformats[$i] eq "romparen") || ($foilformats[$i] eq "romperiod") || ($foilformats[$i] eq "romoneparen") || ($foilformats[$i] eq "romdotparen")) { for (my $j=0; $j<@romans; $j++) { if ($romans[$j] eq $items[$k]) { push @{$answers{$k}}, $j; @@ -1159,7 +1182,7 @@ sub final_display { last; } } - } elsif (($foilformats[$i] eq "romparen") || ($foilformats[$i] eq "romperiod")) { + } elsif (($foilformats[$i] eq "romparen") || ($foilformats[$i] eq "romperiod") || ($foilformats[$i] eq "romoneparen") || ($foilformats[$i] eq "romdotparen")) { for (my $j=0; $j<@romans; $j++) { if ($romans[$j] eq $correct) { push @{$answers{$k}}, $j; @@ -1410,7 +1433,7 @@ sub file_split { } elsif ($qnumformat eq "trailparen") { $qpattern = '\d{1'.$numpat.'\)'; } - my @questions = split/[\r\n\f]+\s?$qpattern\s?/,$text_in; + my @questions = split/[\r\n\f]+\s*$qpattern\s*/,$text_in; # my @questions = split/\n\s\d{1,3}\.\s/,$text_in; shift @questions; my %multparts = (); @@ -1422,20 +1445,30 @@ sub file_split { $splitstr = '[a-z]\.'; } elsif (${$foilsref}[$i] eq "lcparen") { $splitstr = '\([a-z]\)'; + } elsif (${$foilsref}[$i] eq "lconeparen") { + $splitstr = '[a-z]\)'; + } elsif (${$foilsref}[$i] eq "lcdotparen") { + $splitstr = '[a-z]\.\)'; } elsif (${$foilsref}[$i] eq "ucperiod") { $splitstr = '[A-Z]\.'; } elsif (${$foilsref}[$i] eq "ucparen") { $splitstr = '\([A-Z]\)'; + } elsif (${$foilsref}[$i] eq "uconeparen") { + $splitstr = '[A-Z]\)'; + } elsif (${$foilsref}[$i] eq "ucdotparen") { + $splitstr = '[A-Z]\.\)'; } elsif (${$foilsref}[$i] eq "romperiod") { $splitstr = '[ivx]+\.'; } elsif (${$foilsref}[$i] eq "romparen") { $splitstr = '\([ivx]+\)'; + } elsif (${$foilsref}[$i] eq "romoneparen") { + $splitstr = '[ivx]+\)'; + } elsif (${$foilsref}[$i] eq "romdotparen") { + $splitstr = '[ivx]+\.\)'; } for (my $j=${$startsref}[$i]-1; $j<${$endsref}[$i]; $j++) { - @{$multparts{$j}} = split/[\r\n\f]+\s?$splitstr\s?/,$questions[$j]; + @{$multparts{$j}} = split/[\r\n\f]+\s*$splitstr\s*/,$questions[$j]; chomp(@{$multparts{$j}}); - foreach my $foil (@{$multparts{$j}}) { - } } } elsif (${$qtyperef}[$i] eq "FIB") { for (my $j=${$startsref}[$i]-1; $j<${$endsref}[$i]; $j++) { @@ -1672,16 +1705,16 @@ sub handler { # # phase two: re-attach user # - if ($ENV{'form.uploaduname'}) { - $ENV{'form.filename'}='/priv/'.$ENV{'form.uploaduname'}.'/'. - $ENV{'form.filename'}; + if ($env{'form.uploaduname'}) { + $env{'form.filename'}='/priv/'.$env{'form.uploaduname'}.'/'. + $env{'form.filename'}; } ($uname,$udom)= - &Apache::loncacc::constructaccess($ENV{'form.filename'}, + &Apache::loncacc::constructaccess($env{'form.filename'}, $r->dir_config('lonDefDomain')); unless (($uname) && ($udom)) { $r->log_reason($uname.' at '.$udom. - ' trying to publish file '.$ENV{'form.filename'}. + ' trying to publish file '.$env{'form.filename'}. ' - not authorized', $r->filename); return HTTP_NOT_ACCEPTABLE; @@ -1689,14 +1722,14 @@ sub handler { my $fn; my $badfile = 0; - if ($ENV{'form.filename'}) { - $fn=$ENV{'form.filename'}; + if ($env{'form.filename'}) { + $fn=$env{'form.filename'}; $fn=~s/^http\:\/\/[^\/]+\///; $fn=~s/^\///; $fn=~s/(\~|priv\/)(\w+)//; $fn=~s/\/+/\//g; } else { - $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. + $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. ' unspecified filename for upload', $r->filename); return HTTP_NOT_FOUND; } @@ -1710,7 +1743,7 @@ sub handler { my @text = (); my $loadentries = ''; - if ($ENV{'form.phase'} eq 'three') { + if ($env{'form.phase'} eq 'three') { if (-e "$dirpath$fn") { open(TESTBANK,"<$dirpath$fn"); @text = ; @@ -1724,7 +1757,7 @@ sub handler { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; - if ($ENV{'form.phase'} eq 'three') { + if ($env{'form.phase'} eq 'three') { $current_page = &display_control(); my @PAGES = ('Welcome','Blocks','Format','Target','Confirmation'); $page_name = $PAGES[$current_page]; @@ -1733,10 +1766,10 @@ sub handler { $loadentries = 'onLoad= "setElements()"'; &jscript_one(\$javascript); } elsif ($page_name eq 'Format') { - $qcount = question_count($ENV{'form.qnumformat'},\@text); + $qcount = question_count($env{'form.qnumformat'},\@text); &jscript_two(\$javascript,$qcount); } elsif ($page_name eq 'Target') { - if ($ENV{'form.go'} eq "PreviousPage") { + if ($env{'form.go'} eq "PreviousPage") { $loadentries = 'onLoad = "setElements()"'; } &jscript_three($fullpath,\$javascript); @@ -1749,12 +1782,12 @@ sub handler { $r->print(&Apache::loncommon::bodytag('Upload testbank questions to Construction Space',undef,$loadentries)); - if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) { + if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { $r->print('

'.&mt('Co-Author').': '.$uname. &mt(' at ').$udom.'

'); } - if ($ENV{'form.phase'} eq 'three') { + if ($env{'form.phase'} eq 'three') { if ($badfile) { &file_error($r,$uname,$fn,$current_page); } else { @@ -1764,7 +1797,7 @@ sub handler { &display_three ($r,$uname,$fn,$current_page,\@text,$qcount) if $page_name eq 'Target'; &final_display ($r,$uname,$fn,$current_page,\@text) if $page_name eq 'Confirmation'; } - } elsif ($ENV{'form.phase'} eq 'two') { + } elsif ($env{'form.phase'} eq 'two') { my $flag = &Apache::lonupload::phasetwo($r,$fn,$uname,$udom,'testbank'); if ($flag eq 'ok') { my $current_page = 0;