--- loncom/interface/lonprintout.pm 2005/08/15 22:39:43 1.383 +++ loncom/interface/lonprintout.pm 2005/08/16 03:34:34 1.384 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.383 2005/08/15 22:39:43 foxr Exp $ +# $Id: lonprintout.pm,v 1.384 2005/08/16 03:34:34 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,41 +46,37 @@ 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. +# have a correct number of digits. # # Parameters: # value - proposed code value. -# max_digits - Maximum digits allowed. +# num_digits - Number of digits required. # sub is_valid_numeric_code { - my ($value, $max_digits) = @_; + my ($value, $num_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"; } + if (length($value) != $num_digits) { + return "Numeric code $value incorrect number of digits (correct = $num_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. +# They also have a correct digit count. # Parameters: # value - Proposed code value. -# max_letters - Maximum number of letters. +# num_letters - correct number of letters. # Note: # leading and trailing whitespace are ignored. # sub is_valid_alpha_code { - my ($value, $max_letters) = @_; + my ($value, $num_letters) = @_; # strip leading and trailing spaces. @@ -88,16 +84,12 @@ sub is_valid_alpha_code { $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 { + if ($value !~ /^[A-J,a-j]+$/) { return "Invalid letter code $value must only contain A-J"; } + if (length($value) != $num_letters) { + return "Letter code $value has incorrect number of letters (correct = $num_letters)"; + } } # Determine if a code entered by the user in a helper is valid. @@ -133,7 +125,6 @@ sub is_code_valid { } else { $valid = &is_valid_alpha_code($code_value, $code_length); } - return "Entering a single code is not supported (yet): $code_type $code_length $valid"; } @@ -2094,8 +2085,6 @@ CHOOSE_STUDENTS Value of CODE to print? - # Not sure of exact call context so... - use Apache::lonprintout; if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},