Diff for /loncom/interface/lonprintout.pm between versions 1.384 and 1.386

version 1.384, 2005/08/16 03:34:34 version 1.386, 2005/08/16 10:25:15
Line 44  use Apache::lonlocal; Line 44  use Apache::lonlocal;
   
 my $resources_printed = '';  my $resources_printed = '';
   
   #
   #   Convert a numeric code to letters
   #
   sub num_to_letters {
       my ($num) = @_;
       my @nums= split('',$num);
       my @num_to_let=('A'..'Z');
       my $word;
       foreach my $digit (@nums) { $word.=$num_to_let[$digit]; }
       return $word;
   }
   #   Convert a letter code to numeric.
   #
   sub letters_to_num {
       my ($letters) = @_;
       my @letters = split('', uc($letters));
       my %substitution;
       my $digit = 0;
       foreach my $letter ('A'..'J') {
    $substitution{$letter} = $digit;
    $digit++;
       }
       #  The substitution is done as below to preserve leading
       #  zeroes which are needed to keep the code size exact
       #
       my $result ="";
       foreach my $letter (@letters) {
    $result.=$substitution{$letter};
       }
       return $result;
   }
   
 #  Determine if a code is a valid numeric code.  Valid  #  Determine if a code is a valid numeric code.  Valid
 #  numeric codes must be comprised entirely of digits and  #  numeric codes must be comprised entirely of digits and
 #  have a correct number of digits.  #  have a correct number of digits.
Line 65  sub is_valid_numeric_code { Line 97  sub is_valid_numeric_code {
     if (length($value) != $num_digits) {      if (length($value) != $num_digits) {
  return "Numeric code $value incorrect number of digits (correct = $num_digits)";   return "Numeric code $value incorrect number of digits (correct = $num_digits)";
     }      }
       return undef;
 }  }
 #   Determines if a code is a valid alhpa code.  Alpha codes  #   Determines if a code is a valid alhpa code.  Alpha codes
 #   are ciphers that map  [A-J,a-j] -> 0..9 0..9.  #   are ciphers that map  [A-J,a-j] -> 0..9 0..9.
Line 90  sub is_valid_alpha_code { Line 123  sub is_valid_alpha_code {
     if (length($value) != $num_letters) {      if (length($value) != $num_letters) {
  return "Letter code $value has incorrect number of letters (correct = $num_letters)";   return "Letter code $value has incorrect number of letters (correct = $num_letters)";
     }      }
       return undef;
 }  }
   
 #   Determine if a code entered by the user in a helper is valid.  #   Determine if a code entered by the user in a helper is valid.
Line 121  sub is_code_valid { Line 155  sub is_code_valid {
     }      }
     my $valid;      my $valid;
     if ($code_type eq 'number') {      if ($code_type eq 'number') {
  $valid = &is_valid_numeric_code($code_value, $code_length);   return &is_valid_numeric_code($code_value, $code_length);
     } else {      } else {
  $valid = &is_valid_alpha_code($code_value, $code_length);   return &is_valid_alpha_code($code_value, $code_length);
     }      }
   
     return "Entering a single code is not supported (yet): $code_type $code_length $valid";  
 }  }
   
 #   Compare two students by name.  The students are in the form  #   Compare two students by name.  The students are in the form
Line 1329  ENDPART Line 1362  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 $single_code = $helper->{'VARS'}->{'SINGLE_CODE'};
  my $code_option=$helper->{'VARS'}->{'CODE_OPTION'};   my $code_option=$helper->{'VARS'}->{'CODE_OPTION'};
  open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');   open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
  my ($code_type,$code_length)=('letter',6);   my ($code_type,$code_length)=('letter',6);
Line 1351  ENDPART Line 1384  ENDPART
      $code_type=$result{"type\0$old_name"};       $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);
    } elsif ($single_code) {
   
        # If an alpha code have to convert to numbers so it can be
        # converted back to letters again :-)
        #
        if ($code_type ne 'number') {
    $single_code = &letters_to_num($single_code);
    $num_todo    = 1;
        }
        @allcodes = ($single_code);
  } else {   } else {
      my %allcodes;       my %allcodes;
      srand($seed);       srand($seed);
Line 1576  $r->print(<<FINALEND); Line 1619  $r->print(<<FINALEND);
 FINALEND  FINALEND
 }  }
   
 sub num_to_letters {  
     my ($num) = @_;  
     my @nums= split('',$num);  
     my @num_to_let=('A'..'Z');  
     my $word;  
     foreach my $digit (@nums) { $word.=$num_to_let[$digit]; }  
     return $word;  
 }  
   
 sub get_CODE {  sub get_CODE {
     my ($all_codes,$num,$seed,$size,$type)=@_;      my ($all_codes,$num,$seed,$size,$type)=@_;
Line 2161  CHOOSE_STUDENTS1 Line 2196  CHOOSE_STUDENTS1
     <string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5">      <string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5">
        <validator>         <validator>
  if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&   if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
     !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) {      !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                &&
       !\$helper->{'VARS'}{'SINGLE_CODE'}) {
     return "You need to specify the number of assignments to print";      return "You need to specify the number of assignments to print";
  }   }
  return undef;   return undef;
        </validator>         </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td></message>
       <message><b>Value of CODE to print?</b></td><td></message>
       <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">
           <validator>
      if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&
         !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) {
         return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
         \$helper->{'VARS'}{'CODE_OPTION'});
      } else {
          return undef; # Other forces control us.
      }
           </validator>
       </string>
       <message></td></tr><tr><td></message>
     <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" />

Removed from v.1.384  
changed lines
  Added in v.1.386


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