Diff for /loncom/interface/lonprintout.pm between versions 1.382 and 1.383

version 1.382, 2005/08/15 21:51:49 version 1.383, 2005/08/15 22:39:43
Line 44  use Apache::lonlocal; Line 44  use Apache::lonlocal;
   
 my $resources_printed = '';  my $resources_printed = '';
   
   #  Determine if a code is a valid numeric code.  Valid
   #  numeric codes must be comprised entirely of digits and
   #  have a maximum number of allowable digits.
   #
   #  Parameters:
   #     value      - proposed code value.
   #     max_digits - Maximum digits allowed.
   #
   sub is_valid_numeric_code {
       my ($value, $max_digits) = @_;
       #   Remove leading/trailing whitespace;
       $value =~ s/^\s*//;
       $value =~ s/\s*$//;
       
       #  All digits?
   
       if ($value =~ /^[0-9]+$/) {
    if (length($value) <= $max_digits) {
       return undef;
    } else {
       return "Numeric code $value  has too many digits (max = $max_digits)";
    }
       } else {
    return "Numeric code $value has invalid characters - must only be digits";
       }
   }
   #   Determines if a code is a valid alhpa code.  Alpha codes
   #   are ciphers that map  [A-J,a-j] -> 0..9 0..9.
   #   They also have a maximum digit count.
   # Parameters:
   #     value          - Proposed code value.
   #     max_letters    - Maximum number of letters.
   # Note:
   #    leading and trailing whitespace are ignored.
   #
   sub is_valid_alpha_code {
       my ($value, $max_letters) = @_;
       
        # strip leading and trailing spaces.
   
       $value =~ s/^\s*//g;
       $value =~ s/\s*$//g;
   
       #  All alphas in the right range?
   
       if ($value =~ /^[A-J,a-j]+$/) {
    if (length($value) <= $max_letters) {
       return undef;
    } else {
       return "Letter code $value has too many letters (max = $max_letters)";
    }
       } else {
    return "Invalid letter code $value must only contain A-J";
       }
   }
   
 #   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.
 #   valid depends on the code type and the type of code selected.  #   valid depends on the code type and the type of code selected.
 #   The type of code selected can either be numeric or   #   The type of code selected can either be numeric or 
Line 60  my $resources_printed = ''; Line 116  my $resources_printed = '';
 #  #
 sub is_code_valid {  sub is_code_valid {
     my ($code_value, $code_option) = @_;      my ($code_value, $code_option) = @_;
       my ($code_type, $code_length) = ('letter', 6); # defaults.
       open(FG, $Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
       foreach my $line (<FG>) {
    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 $valid;
       if ($code_type eq 'number') {
    $valid = &is_valid_numeric_code($code_value, $code_length);
       } else {
    $valid = &is_valid_alpha_code($code_value, $code_length);
       }
     
   
     return "Entering a single code is not supported (yet)";      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

Removed from v.1.382  
changed lines
  Added in v.1.383


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