version 1.271, 2010/09/05 20:57:42
|
version 1.282, 2011/03/07 19:42:21
|
Line 175 sub start_textfield {
|
Line 175 sub start_textfield {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$Apache::lonxml::evaluate--; |
$Apache::lonxml::evaluate--; |
my $partid=$Apache::inputtags::part; |
my $partid=$Apache::inputtags::part; |
my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$resid.submission"},'<>&"'); |
my ($oldresponse,$newvariation); |
|
if ((($Apache::lonhomework::history{"resource.$partid.type"} eq 'randomizetry') || |
|
($Apache::lonhomework::type eq 'randomizetry')) && |
|
($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) { |
|
if ($env{'form.'.$partid.'.rndseed'} ne |
|
$Apache::lonhomework::history{"resource.$partid.rndseed"}) { |
|
$newvariation = 1; |
|
} |
|
} |
|
unless ($newvariation) { |
|
$oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$resid.submission"},'<>&"'); |
|
} |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval); |
my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval); |
if ( $cols eq '') { $cols = 80; } |
if ( $cols eq '') { $cols = 80; } |
Line 331 sub start_textline {
|
Line 342 sub start_textline {
|
$maxlength = ' maxlength="'.$size.'"'; |
$maxlength = ' maxlength="'.$size.'"'; |
} |
} |
} |
} |
my $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"}; |
my ($oldresponse,$newvariation); |
&Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse)); |
if ((($Apache::lonhomework::history{"resource.$partid.type"} eq 'randomizetry') || |
|
($Apache::lonhomework::type eq 'randomizetry')) && |
if (ref($oldresponse) eq 'ARRAY') { |
($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) { |
$oldresponse = $oldresponse->[$#Apache::inputtags::inputlist]; |
if ($env{'form.'.$partid.'.rndseed'} ne |
} |
$Apache::lonhomework::history{"resource.$partid.rndseed"}) { |
$oldresponse = &HTML::Entities::encode($oldresponse,'<>&"'); |
$newvariation = 1; |
$oldresponse =~ s/^\s+//; |
} |
$oldresponse =~ s/\s+$//; |
} |
$oldresponse =~ s/\s+/ /g; |
unless ($newvariation) { |
|
$oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"}; |
|
&Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse)); |
|
if (ref($oldresponse) eq 'ARRAY') { |
|
$oldresponse = $oldresponse->[$#Apache::inputtags::inputlist]; |
|
} |
|
$oldresponse = &HTML::Entities::encode($oldresponse,'<>&"'); |
|
$oldresponse =~ s/^\s+//; |
|
$oldresponse =~ s/\s+$//; |
|
$oldresponse =~ s/\s+/ /g; |
|
} |
if ($Apache::lonhomework::type ne 'exam') { |
if ($Apache::lonhomework::type ne 'exam') { |
my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval); |
my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval); |
$result=''; |
$result=''; |
Line 574 sub current_file_submissions {
|
Line 595 sub current_file_submissions {
|
} |
} |
} |
} |
} |
} |
|
my $num = 0; |
foreach my $name (sort(keys(%okfiles))) { |
foreach my $name (sort(keys(%okfiles))) { |
if (ref($okfiles{$name}) eq 'ARRAY') { |
if (ref($okfiles{$name}) eq 'ARRAY') { |
foreach my $url (@{$okfiles{$name}}) { |
foreach my $url (@{$okfiles{$name}}) { |
Line 592 sub current_file_submissions {
|
Line 614 sub current_file_submissions {
|
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
$result .= |
$result .= |
'<td valign="bottom"><input type="checkbox" name="HWFILE'.$jspart.'_'.$id.'_delete"'. |
'<td valign="bottom"><input type="checkbox" name="HWFILE'.$jspart.'_'.$id.'_delete"'. |
' value="'.$portfile.'" /></td>'."\n"; |
' value="'.$portfile.'" id="HWFILE'.$jspart.'_'.$id.'_'.$num.'_delete" /></td>'."\n"; |
|
$num ++; |
} |
} |
my $showname = $rows{$url}{path}.$name; |
my $showname = $rows{$url}{path}.$name; |
if ($legacy{$url}) { |
if ($legacy{$url}) { |
Line 600 sub current_file_submissions {
|
Line 623 sub current_file_submissions {
|
} |
} |
$result .= |
$result .= |
'<td><a href="'.$link.'"><img src="'.$icon. |
'<td><a href="'.$link.'"><img src="'.$icon. |
'" border="0" />'.$showname.'</a></td>'."\n". |
'" border="0" alt="" />'.$showname.'</a></td>'."\n". |
'<td align="right" valign="bottom">'.$rows{$url}{size}.'</td>'."\n". |
'<td align="right" valign="bottom">'.$rows{$url}{size}.'</td>'."\n". |
'<td align="right" valign="bottom">'.$rows{$url}{lastmodified}.'</td>'."\n". |
'<td align="right" valign="bottom">'.$rows{$url}{lastmodified}.'</td>'."\n". |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
Line 610 sub current_file_submissions {
|
Line 633 sub current_file_submissions {
|
} |
} |
} |
} |
if ($header_shown) { |
if ($header_shown) { |
$result .= &Apache::loncommon::end_data_table(); |
$result .= &Apache::loncommon::end_data_table(). |
|
'<br /><span class="LC_warning">'. |
|
&mt('Exclude existing file(s) from grading by checking the "Delete?" checkbox(es) and clicking "Submit Answer"').'</span>'; |
} |
} |
if (@bad_file_list) { |
if (@bad_file_list) { |
my $bad_files = '<span class="LC_filename">'. |
my $bad_files = '<span class="LC_filename">'. |
Line 659 sub valid_award {
|
Line 684 sub valid_award {
|
'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', |
'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', |
'UNIT_FAIL', 'NO_UNIT', |
'UNIT_FAIL', 'NO_UNIT', |
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', |
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', |
'BAD_FORMULA', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', |
'BAD_FORMULA', 'NOT_FUNCTION', 'WRONG_FORMAT', |
|
'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', |
'MISORDERED_RANK', 'INVALID_FILETYPE', |
'MISORDERED_RANK', 'INVALID_FILETYPE', |
'EXCESS_FILESIZE', 'FILENAME_INUSE', |
'EXCESS_FILESIZE', 'FILENAME_INUSE', |
'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT', |
'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT', |
Line 676 sub valid_award {
|
Line 702 sub valid_award {
|
'TOO_LONG', |
'TOO_LONG', |
'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT', |
'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT', |
'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', |
'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', |
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'INTERNAL_ERROR', |
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'NOT_FUNCTION', |
|
'WRONG_FORMAT', 'INTERNAL_ERROR', |
'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', |
'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', |
'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE', |
'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE', |
'DRAFT', 'SUBMITTED', |
'DRAFT', 'SUBMITTED', |
Line 774 sub finalizeawards {
|
Line 801 sub finalizeawards {
|
} |
} |
|
|
sub decideoutput { |
sub decideoutput { |
my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_; |
my ($award,$awarded,$awardmsg,$solved,$previous,$target,$nocorrect)=@_; |
|
|
my $message=''; |
my $message=''; |
my $button=0; |
my $button=0; |
Line 792 sub decideoutput {
|
Line 819 sub decideoutput {
|
my $part = $Apache::inputtags::part; |
my $part = $Apache::inputtags::part; |
my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade"); |
my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade"); |
my $handgrade = ('yes' eq lc($tohandgrade)); |
my $handgrade = ('yes' eq lc($tohandgrade)); |
|
# |
|
# Should "Computer's Answer" be displayed? |
|
# Should not be displayed if still answerable, |
|
# if the problem is handgraded, |
|
# or if the problem does not give a correct answer |
|
# |
|
|
my $computer = ($handgrade)? '' |
my $computer = ($handgrade || $nocorrect)? '' |
: " ".&mt("Computer's answer now shown above."); |
: " ".&mt("Computer's answer now shown above."); |
&Apache::lonxml::debug("handgrade has :$handgrade:"); |
&Apache::lonxml::debug("handgrade has :$handgrade:"); |
|
|
Line 963 sub decideoutput {
|
Line 996 sub decideoutput {
|
if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Formula_Answers')}; |
if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Formula_Answers')}; |
$css_class=$possible_class{'not_charged_try'}; |
$css_class=$possible_class{'not_charged_try'}; |
$button=1; |
$button=1; |
} elsif ($award eq 'INTERNAL_ERROR') { |
} elsif ($award eq 'NOT_FUNCTION') { |
|
$message = &mt("Not a function").'.'; |
|
$css_class=$possible_class{'not_charged_try'}; |
|
$button=1; |
|
} elsif ($award eq 'WRONG_FORMAT') { |
|
$message = &mt("Wrong format").'.'; |
|
$css_class=$possible_class{'not_charged_try'}; |
|
$button=1; |
|
} elsif ($award eq 'INTERNAL_ERROR') { |
$message = &mt("An internal error occurred while processing your answer. Please try again later."); |
$message = &mt("An internal error occurred while processing your answer. Please try again later."); |
$css_class=$possible_class{'not_charged_try'}; |
$css_class=$possible_class{'not_charged_try'}; |
$button=1; |
$button=1; |
Line 1240 sub setgradedata {
|
Line 1281 sub setgradedata {
|
&Apache::response::add_to_gradingqueue(); |
&Apache::response::add_to_gradingqueue(); |
} |
} |
if (($Apache::lonhomework::type eq 'anonsurvey') || |
if (($Apache::lonhomework::type eq 'anonsurvey') || |
($Apache::lonhomework::type eq 'anonsurveycred')) { |
($Apache::lonhomework::type eq 'anonsurveycred') || |
|
($Apache::lonhomework::type eq 'randomizetry')) { |
$Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type; |
$Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type; |
} |
} |
|
if ($Apache::lonhomework::type eq 'randomizetry') { |
|
$Apache::lonhomework::results{"resource.$id.rndseed"} = $env{'form.'.$id.'.rndseed'}; |
|
} |
} |
} |
|
|
sub find_which_previous { |
sub find_which_previous { |
Line 1322 sub grade {
|
Line 1367 sub grade {
|
} |
} |
|
|
sub get_grade_messages { |
sub get_grade_messages { |
my ($id,$prefix,$target,$status) = @_; |
my ($id,$prefix,$target,$status,$nocorrect) = @_; |
|
# nocorrect suppresses "Computer's answer now shown above" |
my ($message,$latemessage,$trystr,$previousmsg); |
my ($message,$latemessage,$trystr,$previousmsg); |
my $showbutton = 1; |
my $showbutton = 1; |
|
|
Line 1337 sub get_grade_messages {
|
Line 1382 sub get_grade_messages {
|
&Apache::lonxml::debug('Getting message'); |
&Apache::lonxml::debug('Getting message'); |
($showbutton,my $css_class,$message,$previousmsg) = |
($showbutton,my $css_class,$message,$previousmsg) = |
&decideoutput($award,$awarded,$awardmsg,$solved,$previous, |
&decideoutput($award,$awarded,$awardmsg,$solved,$previous, |
$target); |
$target,(($status eq 'CAN_ANSWER') || $nocorrect)); |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$message='\vskip 2 mm '.$message.' '; |
$message='\vskip 2 mm '.$message.' '; |
} else { |
} else { |
Line 1370 sub get_grade_messages {
|
Line 1415 sub get_grade_messages {
|
$trystr = '<td><span class="LC_nobreak">'.&mt($tries_text)." $tries"; |
$trystr = '<td><span class="LC_nobreak">'.&mt($tries_text)." $tries"; |
if ($Apache::lonhomework::parsing_a_task) { |
if ($Apache::lonhomework::parsing_a_task) { |
} elsif($env{'request.state'} ne 'construct') { |
} elsif($env{'request.state'} ne 'construct') { |
$trystr.="/$maxtries"; |
$trystr.="/".&Apache::lonhtmlcommon::direct_parm_link($maxtries,$env{'request.symb'},'maxtries',$id,$target); |
} else { |
} else { |
if (defined($Apache::inputtags::params{'maxtries'})) { |
if (defined($Apache::inputtags::params{'maxtries'})) { |
$trystr.="/".$Apache::inputtags::params{'maxtries'}; |
$trystr.="/".$Apache::inputtags::params{'maxtries'}; |
Line 1451 sub previous_tries {
|
Line 1496 sub previous_tries {
|
|
|
my $count; |
my $count; |
my %count_lookup; |
my %count_lookup; |
|
my $lastrndseed; |
|
|
foreach my $i (1..$Apache::lonhomework::history{'version'}) { |
foreach my $i (1..$Apache::lonhomework::history{'version'}) { |
my $prefix = $i.":resource.$id"; |
my $prefix = $i.":resource.$id"; |
Line 1464 sub previous_tries {
|
Line 1510 sub previous_tries {
|
next if (!exists($Apache::lonhomework::history{"$prefix.award"})); |
next if (!exists($Apache::lonhomework::history{"$prefix.award"})); |
$count++; |
$count++; |
$count_lookup{$i} = $count; |
$count_lookup{$i} = $count; |
|
my $curr_rndseed = $Apache::lonhomework::history{"$prefix.rndseed"}; |
my ($previousmsg,$latemessage,$message,$trystr); |
my ($previousmsg,$latemessage,$message,$trystr); |
|
|
($previousmsg,$latemessage,$message,$trystr) = |
($previousmsg,$latemessage,$message,$trystr) = |
Line 1482 sub previous_tries {
|
Line 1528 sub previous_tries {
|
) { |
) { |
|
|
my $txt_correct = &mt('Correct'); |
my $txt_correct = &mt('Correct'); |
|
my $awarded = $Apache::lonhomework::history{"$prefix.awarded"}; |
|
if ($awarded < 1 && $awarded > 0) { |
|
$txt_correct=&mt('Partially Correct'); |
|
} elsif ($awarded < 1) { |
|
if ($awarded eq '') { |
|
$txt_correct=''; |
|
} else { |
|
$txt_correct=&mt('Incorrect'); |
|
} |
|
} |
$message =~ s{(<td.*?>)(.*?)(</td>)} |
$message =~ s{(<td.*?>)(.*?)(</td>)} |
{$1 <strong>$txt_correct</strong>. $3}s; |
{$1 <strong>$txt_correct</strong>. $3}s; |
} |
} |
my $trystr = "(".&mt('Try [_1]',$Apache::lonhomework::history{"$prefix.tries"}).")"; |
my $trystr = "(".&mt('Try [_1]',$Apache::lonhomework::history{"$prefix.tries"}).")"; |
|
if ($curr_rndseed || $lastrndseed) { |
|
if ($curr_rndseed ne $lastrndseed) { |
|
$trystr .= '<br /><span style="color: green; white-space: nowrap; font-style: italic; font-weight: bold; font-size: 80%;">'.&mt('New problem variation this try.').'</span>'; |
|
} |
|
} |
$message =~ s{(</td>)}{ $trystr $1}; |
$message =~ s{(</td>)}{ $trystr $1}; |
} |
} |
my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #" |
my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #" |
Line 1515 sub previous_tries {
|
Line 1576 sub previous_tries {
|
} |
} |
} |
} |
$output.=&Apache::loncommon::end_data_table_row()."\n"; |
$output.=&Apache::loncommon::end_data_table_row()."\n"; |
|
$lastrndseed = $curr_rndseed; |
} |
} |
return if ($output eq ''); |
return if ($output eq ''); |
my $headers = |
my $headers = |