version 1.382, 2005/08/15 21:51:49
|
version 1.384, 2005/08/16 03:34:34
|
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 correct number of digits. |
|
# |
|
# Parameters: |
|
# value - proposed code value. |
|
# num_digits - Number of digits required. |
|
# |
|
sub is_valid_numeric_code { |
|
my ($value, $num_digits) = @_; |
|
# Remove leading/trailing whitespace; |
|
$value =~ s/^\s*//; |
|
$value =~ s/\s*$//; |
|
|
|
# All digits? |
|
if ($value =~ /^[0-9]+$/) { |
|
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 correct digit count. |
|
# Parameters: |
|
# value - Proposed code value. |
|
# num_letters - correct number of letters. |
|
# Note: |
|
# leading and trailing whitespace are ignored. |
|
# |
|
sub is_valid_alpha_code { |
|
my ($value, $num_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]+$/) { |
|
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. |
# 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 108 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 |
Line 2020 CHOOSE_STUDENTS
|
Line 2085 CHOOSE_STUDENTS
|
<message><b>Value of CODE to print?</b></td><td></message> |
<message><b>Value of CODE to print?</b></td><td></message> |
<string variable="SINGLE_CODE" size="10" defaultvalue="zzzz"> |
<string variable="SINGLE_CODE" size="10" defaultvalue="zzzz"> |
<validator> |
<validator> |
# Not sure of exact call context so... |
|
use Apache::lonprintout; |
|
if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && |
if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && |
!\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { |
!\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { |
return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'}, |
return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'}, |