--- loncom/homework/inputtags.pm 2010/12/19 02:58:16 1.274 +++ loncom/homework/inputtags.pm 2011/03/07 22:11:50 1.284 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.274 2010/12/19 02:58:16 raeburn Exp $ +# $Id: inputtags.pm,v 1.284 2011/03/07 22:11:50 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -595,9 +595,9 @@ sub current_file_submissions { } } } + my $num = 0; foreach my $name (sort(keys(%okfiles))) { if (ref($okfiles{$name}) eq 'ARRAY') { - my $num = 0; foreach my $url (@{$okfiles{$name}}) { if (ref($rows{$url}) eq 'HASH') { my $link = $rows{$url}{link}; @@ -623,7 +623,7 @@ sub current_file_submissions { } $result .= ''.$showname.''."\n". + '" border="0" alt="" />'.$showname.''."\n". ''.$rows{$url}{size}.''."\n". ''.$rows{$url}{lastmodified}.''."\n". &Apache::loncommon::end_data_table_row(); @@ -635,7 +635,7 @@ sub current_file_submissions { if ($header_shown) { $result .= &Apache::loncommon::end_data_table(). '
'. - &mt('Items checked for deletion will not be included amongst the files evaluated when your submission is graded.').''; + &mt('Exclude existing file(s) from grading by checking the "Delete?" checkbox(es) and clicking "Submit Answer"').''; } if (@bad_file_list) { my $bad_files = ''. @@ -801,7 +801,7 @@ sub finalizeawards { } sub decideoutput { - my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_; + my ($award,$awarded,$awardmsg,$solved,$previous,$target,$nocorrect)=@_; my $message=''; my $button=0; @@ -819,8 +819,14 @@ sub decideoutput { my $part = $Apache::inputtags::part; my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade"); 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."); &Apache::lonxml::debug("handgrade has :$handgrade:"); @@ -1088,7 +1094,6 @@ sub decideoutput { } $message.=&mt('Submissions to practice problems are not permanently recorded.'); } - return ($button,$css_class,$message,$previousmsg); } @@ -1141,8 +1146,7 @@ sub setgradedata { $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') { $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award; return ''; - } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~ - /^correct/ + } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} < 1 || $Apache::lonhomework::scantronmode || &Apache::lonhomework::hide_problem_status() ) { # the student doesn't already have it correct, @@ -1263,8 +1267,7 @@ sub setgradedata { $Apache::lonhomework::results{"resource.$id.previous"} = '0'; } } - } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~ - /^correct/ ) { + } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} == 1 ) { #delete all data as they student already has it correct &removealldata($id); #and since they didn't do anything we were never here @@ -1279,6 +1282,9 @@ sub setgradedata { ($Apache::lonhomework::type eq 'randomizetry')) { $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 { @@ -1358,8 +1364,8 @@ sub grade { } 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 $showbutton = 1; @@ -1373,7 +1379,7 @@ sub get_grade_messages { &Apache::lonxml::debug('Getting message'); ($showbutton,my $css_class,$message,$previousmsg) = &decideoutput($award,$awarded,$awardmsg,$solved,$previous, - $target); + $target,(($status eq 'CAN_ANSWER') || $nocorrect)); if ($target eq 'tex') { $message='\vskip 2 mm '.$message.' '; } else { @@ -1406,7 +1412,7 @@ sub get_grade_messages { $trystr = ''.&mt($tries_text)." $tries"; if ($Apache::lonhomework::parsing_a_task) { } elsif($env{'request.state'} ne 'construct') { - $trystr.="/$maxtries"; + $trystr.="/".&Apache::lonhtmlcommon::direct_parm_link($maxtries,$env{'request.symb'},'maxtries',$id,$target); } else { if (defined($Apache::inputtags::params{'maxtries'})) { $trystr.="/".$Apache::inputtags::params{'maxtries'}; @@ -1519,6 +1525,16 @@ sub previous_tries { ) { 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{()(.*?)()} {$1 $txt_correct. $3}s; }