--- loncom/homework/inputtags.pm 2007/03/15 02:54:28 1.220 +++ loncom/homework/inputtags.pm 2007/04/16 22:50:41 1.221 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.220 2007/03/15 02:54:28 albertel Exp $ +# $Id: inputtags.pm,v 1.221 2007/04/16 22:50:41 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -586,14 +586,14 @@ sub decideoutput { my $message=''; my $button=0; my $previousmsg; - my $bgcolor='orange'; + my $css_class='orange'; my $added_computer_text=0; - my %possiblecolors = - ( 'correct' => '#aaffaa', - 'charged_try' => '#ffaaaa', - 'not_charged_try' => '#ffffaa', - 'no_grade' => '#ffffaa', - 'no_message' => '#ffffff', + my %possible_class = + ( 'correct' => 'LC_answer_correct', + 'charged_try' => 'LC_answer_charged_try', + 'not_charged_try' => 'LC_answer_not_charged_try', + 'no_grade' => 'LC_answer_no_grade', + 'no_message' => 'LC_no_message', ); my $part = $Apache::inputtags::part; @@ -607,14 +607,14 @@ sub decideoutput { if ($previous) { $previousmsg=&mt('You have entered that answer before'); } if ($solved =~ /^correct/) { - $bgcolor=$possiblecolors{'correct'}; + $css_class=$possible_class{'correct'}; $message=&mt('You are correct.'); if ($awarded < 1 && $awarded > 0) { $message=&mt('You are partially correct.'); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; } elsif ($awarded < 1) { $message=&mt('Incorrect.'); - $bgcolor=$possiblecolors{'charged_try'}; + $css_class=$possible_class{'charged_try'}; } if ($env{'request.filename'} =~ m|/res/lib/templates/examupload.problem$|) { @@ -646,13 +646,13 @@ sub decideoutput { } else { $message = "".&mt('You are excused from the problem.').""; } - $bgcolor=$possiblecolors{'charged_try'}; + $css_class=$possible_class{'charged_try'}; $button=0; $previousmsg=''; } elsif ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) { if ($solved =~ /^incorrect/ || $solved eq '') { $message = &mt("Incorrect")."."; - $bgcolor=$possiblecolors{'charged_try'}; + $css_class=$possible_class{'charged_try'}; $button=1; } else { if ($target eq 'tex') { @@ -669,105 +669,105 @@ sub decideoutput { 'Your receipt is '.&Apache::lonnet::receipt($Apache::inputtags::part). (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):''); } - $bgcolor=$possiblecolors{'correct'}; + $css_class=$possible_class{'correct'}; $button=0; $previousmsg=''; } } elsif ($award eq 'NO_RESPONSE') { $message = ''; - $bgcolor=$possiblecolors{'no_feedback'}; + $css_class=$possible_class{'no_feedback'}; $button=1; } elsif ($award eq 'EXTRA_ANSWER') { $message = &mt('Some extra items were submitted.'); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button = 1; } elsif ($award eq 'MISSING_ANSWER') { $message = &mt('Some items were not submitted.'); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button = 1; } elsif ($award eq 'ERROR') { $message = &mt('An error occured while grading your answer.'); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button = 1; } elsif ($award eq 'TOO_LONG') { $message = &mt("The submitted answer was too long."); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'WANTED_NUMERIC') { $message = &mt("This question expects a numeric answer."); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'MISORDERED_RANK') { $message = &mt('You have provided an invalid ranking'); if ($target ne 'tex') { $message.=', '.&mt('please refer to').' '.&Apache::loncommon::help_open_topic('Ranking_Problems','help on ranking problems'); } - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'INVALID_FILETYPE') { $message = &mt('Submission won\'t be graded. The type of file submitted is not allowed.'); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'SIG_FAIL') { my ($used,$min,$max)=split(':',$awardmsg); my $word = ($used < $min) ? 'more' : 'fewer'; $message = &mt("Submission not graded. Use $word digits.",$used); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_INVALID_INSTRUCTOR') { $message = &mt('Error in instructor specifed unit. This error has been reported to the instructor.', $awardmsg); if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_INVALID_STUDENT') { $message = &mt('Unable to interpret units. Computer reads units as "[_1]".',&markup_unit($awardmsg,$target)); if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_FAIL' || $award eq 'UNIT_IRRECONCIBLE') { $message = &mt('Incompatible units. No conversion found between "[_1]" and the required units.',&markup_unit($awardmsg,$target)); if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_NOTNEEDED') { $message = &mt('Only a number required. Computer reads units of "[_1]".',&markup_unit($awardmsg,$target)); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'NO_UNIT') { $message = &mt("Units required").'.'; if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units')}; - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'COMMA_FAIL') { $message = &mt("Proper comma separation is required").'.'; - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'BAD_FORMULA') { $message = &mt("Unable to understand formula"); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'INCORRECT') { $message = &mt("Incorrect").'.'; - $bgcolor=$possiblecolors{'charged_try'}; + $css_class=$possible_class{'charged_try'}; $button=1; } elsif ($award eq 'SUBMITTED') { $message = &mt("Your submission has been recorded."); - $bgcolor=$possiblecolors{'no_grade'}; + $css_class=$possible_class{'no_grade'}; $button=1; } elsif ($award eq 'DRAFT') { $message = &mt("A draft copy has been saved."); - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; $button=1; } elsif ($award eq 'ASSIGNED_SCORE') { $message = &mt("A score has been assigned."); - $bgcolor=$possiblecolors{'correct'}; + $css_class=$possible_class{'correct'}; $button=0; } elsif ($award eq '') { if ($handgrade && $Apache::inputtags::status[-1] eq 'SHOW_ANSWER') { $message = &mt("Nothing submitted."); - $bgcolor=$possiblecolors{'charged_try'}; + $css_class=$possible_class{'charged_try'}; } else { - $bgcolor=$possiblecolors{'not_charged_try'}; + $css_class=$possible_class{'not_charged_try'}; } $button=1; } else { @@ -791,7 +791,7 @@ sub decideoutput { if (lc($Apache::lonhomework::problemstatus) eq 'no' && $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') { $message = &mt("Answer Submitted: Your final submission will be graded after the due date."); - $bgcolor=$possiblecolors{'no_grade'}; + $css_class=$possible_class{'no_grade'}; $button=1; } if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' && @@ -799,7 +799,7 @@ sub decideoutput { $message.= $computer; $added_computer_text=1; } - return ($button,$bgcolor,$message,$previousmsg); + return ($button,$css_class,$message,$previousmsg); } sub markup_unit { @@ -1045,15 +1045,15 @@ sub get_grade_messages { &Apache::lonxml::debug("Found Award |$award|$solved|$awardmsg"); if ( $award ne '' || $solved ne '' || $status eq 'SHOW_ANSWER') { &Apache::lonxml::debug('Getting message'); - ($showbutton,my $bgcolor,$message,$previousmsg) = + ($showbutton,my $css_class,$message,$previousmsg) = &decideoutput($award,$awarded,$awardmsg,$solved,$previous, $target); if ($target eq 'tex') { $message='\vskip 2 mm '.$message.' '; } else { - $message="$message"; + $message="$message"; if ($previousmsg) { - $previousmsg="$previousmsg"; + $previousmsg="$previousmsg"; } } } @@ -1094,11 +1094,12 @@ sub get_grade_messages { $trystr.=""; } } + if ($Apache::lonhomework::history{"$prefix.afterduedate"}) { #last submissions was after due date $latemessage=&mt(' The last submission was after the Due Date ');; if ($target eq 'web') { - $latemessage=''.$latemessage.''; + $latemessage=''.$latemessage.''; } } return ($previousmsg,$latemessage,$message,$trystr,$showbutton); @@ -1168,23 +1169,27 @@ sub previous_tries { ($previousmsg,$latemessage,$message,$trystr) = &get_grade_messages($id,"$prefix",$target,$status); - if (!exists($Apache::lonhomework::history{"$prefix.tries"})) { - undef($trystr); - } if ($previousmsg ne '') { my ($match,$which) = &find_which_previous($i); $message=$previousmsg; my $previous = $count_lookup{$which}; - $message =~ s{()}{ as submission $previous $1}; - - } elsif ($trystr ne '') { - ($trystr) = ($trystr =~ m{(\d+)/\d+}); - $message =~ s{()}{$1 $trystr }; + $message =~ s{()}{ as submission # $previous $1}; + } elsif ($Apache::lonhomework::history{"$prefix.tries"}) { + if ( $Apache::lonhomework::history{"$prefix.solved"} =~ + /^correct/) { + $message =~ s{()(.*?)()} + {$1 Correct. $3}; + } + my $trystr = "(Try ". + $Apache::lonhomework::history{"$prefix.tries"}.')'; + $message =~ s{()}{ $trystr $1}; } + my ($class) = ($message =~ m{)}{}; + - - $output.=''; + $output.=''; $output.=''.$count.''; $output.=$message; @@ -1202,11 +1207,11 @@ sub previous_tries { $output.=''; } } - $output.=''."\n"; + $output.=&Apache::loncommon::end_data_table_row()."\n"; } return if ($output eq ''); my $headers = - ''.''.&mt('Submission #').''.&mt('Try'). + ''.''.&mt('Submission #').''.&mt(' '). ''. &mt('Submitted Answer').''; $output =''.$headers.$output.'
';