version 1.380, 2005/07/26 10:50:32
|
version 1.381, 2005/08/12 21:33:41
|
Line 1244 ENDPART
|
Line 1244 ENDPART
|
my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'}; |
my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'}; |
my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'}; |
my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'}; |
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'}; |
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'}; |
|
|
|
my $code_option=$helper->{'VARS'}->{'CODE_OPTION'}; |
|
open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab'); |
|
my ($code_type,$code_length)=('letter',6); |
|
foreach my $line (<FH>) { |
|
my ($name,$type,$length) = (split(/:/,$line))[0,2,4]; |
|
if ($name eq $code_option) { |
|
$code_length=$length; |
|
if ($type eq 'number') { $code_type = 'number'; } |
|
} |
|
} |
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); |
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
my $seed=time+($$<<16)+($$); |
my $seed=time+($$<<16)+($$); |
my @allcodes; |
my @allcodes; |
if ($old_name) { |
if ($old_name) { |
my %result=&Apache::lonnet::get('CODEs',[$old_name],$cdom,$cnum); |
my %result=&Apache::lonnet::get('CODEs', |
|
[$old_name,"type\0$old_name"], |
|
$cdom,$cnum); |
|
$code_type=$result{"type\0$old_name"}; |
@allcodes=split(',',$result{$old_name}); |
@allcodes=split(',',$result{$old_name}); |
$num_todo=scalar(@allcodes); |
$num_todo=scalar(@allcodes); |
} else { |
} else { |
my %allcodes; |
my %allcodes; |
srand($seed); |
srand($seed); |
for (my $i=0;$i<$num_todo;$i++) { |
for (my $i=0;$i<$num_todo;$i++) { |
$moreenv{'CODE'}=&get_CODE(\%allcodes,$i,$seed,'6'); |
$moreenv{'CODE'}=&get_CODE(\%allcodes,$i,$seed,$code_length, |
|
$code_type); |
} |
} |
if ($code_name) { |
if ($code_name) { |
&Apache::lonnet::put('CODEs', |
&Apache::lonnet::put('CODEs', |
{$code_name =>join(',',keys(%allcodes))}, |
{ |
|
$code_name =>join(',',keys(%allcodes)), |
|
"type\0$code_name" => $code_type |
|
}, |
$cdom,$cnum); |
$cdom,$cnum); |
} |
} |
@allcodes=keys(%allcodes); |
@allcodes=keys(%allcodes); |
Line 1276 ENDPART
|
Line 1294 ENDPART
|
my $count=0; |
my $count=0; |
foreach my $code (sort(@allcodes)) { |
foreach my $code (sort(@allcodes)) { |
my $file_num=int($count/$number_per_page); |
my $file_num=int($count/$number_per_page); |
$moreenv{'CODE'}=&num_to_letters($code); |
if ($code_type eq 'number') { |
|
$moreenv{'CODE'}=$code; |
|
} else { |
|
$moreenv{'CODE'}=&num_to_letters($code); |
|
} |
my ($output,$fullname, $printed)= |
my ($output,$fullname, $printed)= |
&print_resources($r,$helper,'anonymous',$type,\%moreenv, |
&print_resources($r,$helper,'anonymous',$type,\%moreenv, |
\@master_seq,$flag_latex_header_remove, |
\@master_seq,$flag_latex_header_remove, |
Line 1479 sub num_to_letters {
|
Line 1501 sub num_to_letters {
|
} |
} |
|
|
sub get_CODE { |
sub get_CODE { |
my ($all_codes,$num,$seed,$size)=@_; |
my ($all_codes,$num,$seed,$size,$type)=@_; |
my $max='1'.'0'x$size; |
my $max='1'.'0'x$size; |
my $newcode; |
my $newcode; |
while(1) { |
while(1) { |
$newcode=sprintf("%06d",int(rand($max))); |
$newcode=sprintf("%06d",int(rand($max))); |
if (!exists($$all_codes{$newcode})) { |
if (!exists($$all_codes{$newcode})) { |
$$all_codes{$newcode}=1; |
$$all_codes{$newcode}=1; |
return &num_to_letters($newcode); |
if ($type eq 'number' ) { |
|
return $newcode; |
|
} else { |
|
return &num_to_letters($newcode); |
|
} |
} |
} |
} |
} |
} |
} |
Line 1939 CHOOSE_STUDENTS
|
Line 1965 CHOOSE_STUDENTS
|
my $namechoice='<choice></choice>'; |
my $namechoice='<choice></choice>'; |
foreach my $name (sort {uc($a) cmp uc($b)} @names) { |
foreach my $name (sort {uc($a) cmp uc($b)} @names) { |
if ($name =~ /^error: 2 /) { next; } |
if ($name =~ /^error: 2 /) { next; } |
|
if ($name =~ /^type\0/) { next; } |
$namechoice.='<choice computer="'.$name.'">'.$name.'</choice>'; |
$namechoice.='<choice computer="'.$name.'">'.$name.'</choice>'; |
} |
} |
|
open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab'); |
|
my $codechoice=''; |
|
foreach my $line (<FH>) { |
|
my ($name,$description,$code_type,$code_length)= |
|
(split(/:/,$line))[0,1,2,4]; |
|
if ($code_length > 0 && |
|
$code_type =~/^(letter|number|-1)/) { |
|
$codechoice.='<choice computer="'.$name.'">'.$description.'</choice>'; |
|
} |
|
} |
|
if ($codechoice eq '') { |
|
$codechoice='<choice computer="default">Default</choice>'; |
|
} |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>PAGESIZE</nextstate> |
Line 1959 CHOOSE_STUDENTS
|
Line 1999 CHOOSE_STUDENTS
|
<message><b>Names to store the CODEs under for later:</b></message> |
<message><b>Names to store the CODEs under for later:</b></message> |
<message></td><td></message> |
<message></td><td></message> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Bubble sheet type:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_OPTION" multichoice="0" allowempty="0"> |
|
$codechoice |
|
</dropdown> |
<message></td></tr></table></message> |
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
Line 2026 CHOOSE_STUDENTS1
|
Line 2072 CHOOSE_STUDENTS1
|
<message><b>Names to store the CODEs under for later:</b></message> |
<message><b>Names to store the CODEs under for later:</b></message> |
<message></td><td></message> |
<message></td><td></message> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Bubble sheet type:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_OPTION" multichoice="0" allowempty="0"> |
|
$codechoice |
|
</dropdown> |
<message></td></tr></table></message> |
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |