--- loncom/homework/bridgetask.pm 2005/10/01 04:52:21 1.64 +++ loncom/homework/bridgetask.pm 2005/10/14 17:27:23 1.71 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.64 2005/10/01 04:52:21 albertel Exp $ +# $Id: bridgetask.pm,v 1.71 2005/10/14 17:27:23 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -317,8 +317,8 @@ sub submission_time_stamp { my $slot_name=$Apache::lonhomework::history{'resource.'.$version.'.checkedin.slot'}; my %slot=&Apache::lonnet::get_slot($slot_name); my $diff = $slot{'endtime'} - $submissiontime; - my ($color,$when)=('red','after'); - if ($diff > 0) { ($color,$when)=('green','before'); } + my ($color,$when)=('#FF6666','after'); + if ($diff > 0) { ($color,$when)=('#336600','before'); } my $info; if ($diff%60) { $info=($diff%60).' seconds'; } $diff=int($diff/60); @@ -335,11 +335,41 @@ sub submission_time_stamp { return $result; } +sub webgrade_standard_info { + my ($version)=&get_version(); + my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser(); + my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; + my $file_list="\n"; + + my %lt=&Apache::lonlocal::texthash('done' => 'Done', + 'stop' => 'Stop', + ); + + my $result=< + + + $file_list + +INFO + return $result; +} + sub start_Task { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my ($status,$accessmsg,$slot); if ($target ne 'webgrade') { + &Apache::structuretags::init_problem_globals('Task'); &Apache::structuretags::initialize_storage(); &Apache::lonhomework::showhash(%Apache::lonhomework::history); } @@ -395,12 +425,12 @@ sub start_Task { $msg.='

'.&mt('Your submission is in the grading queue.').'

'; } elsif ($env{'form.donescreen'}) { my $title=&Apache::lonnet::gettitle(); - my $files=$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}; - $result.= $head_tag_start.''.$body_tag_start; + my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}); + my $files=''; $result.=<$title

Files submitted: $files

-

You are now done with the Bridge Task

+

You are now done with this Bridge Task


Logout

Change to a different course

@@ -511,6 +541,7 @@ DONESCREEN value="'.$sec.'" />'; } } + if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } } } else { # page_start returned a starting result, delete it if we don't need it @@ -618,10 +649,7 @@ sub end_Task { my ($version,$previous)=&get_version(); if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex') { - if ( - (($target eq 'web') && ($env{'request.state'} ne 'construct')) || - ($target eq 'answer') || ($target eq 'tex') - ) { + if ($target eq 'web' || $target eq 'answer' || $target eq 'tex') { if ($target eq 'web') { if (&show_task($status,$previous)) { $result.=&Apache::lonxml::endredirection(); @@ -827,9 +855,14 @@ DONEBUTTON # &mt('Save Partial Grade and Continue Grading').'" /> '; $result.=''.&Apache::loncommon::endbodytag().''; } elsif ($target eq 'meta') { - $result.=''."\n"; - #$result.=&Apache::response::meta_part_order(); - #$result.=&Apache::response::meta_response_order(); + $result.=&Apache::response::meta_package_write('Task'); + $result.=&meta_stores_write('solved','string','Problem Status'); + $result.=&meta_stores_write('tries','int_zeropos', + 'Number of Attempts'); + $result.=&meta_stores_write('awarded','float', + 'Partial Credit Factor'); + $result.=&meta_stores_write('status','string', + 'Bridge Task Status'); } undef($Apache::lonhomework::parsing_a_task); return $result; @@ -1089,6 +1122,8 @@ sub queue_key_locked { sub pick_from_queue_data { my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_; foreach my $key (keys(%$queuedata)) { + if ($key =~ /\0locked$/) { next; } + if ($key =~ /\0timestamp$/) { next; } my ($symb,$uname,$udom)=&decode_queue_key($key); if ($check_section) { my $section=&Apache::lonnet::getsection($uname,$udom); @@ -1403,6 +1438,7 @@ sub get_instance { $dim_info.='

Question : you did not pass this '.$mandatory.' question

'; } my $man_count=0; + my $man_passed=0; my $opt_count=0; my $opt_passed=0; foreach my $id (@{$dimension{$instance.'.criterias'}}) { @@ -1414,12 +1450,15 @@ sub get_instance { } } else { $man_count++; + if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') { + $man_passed++; + } } } - my $opt_req=&Apache::lonxml::get_param('OptionalRequired', - $parstack,$safeeval); + if ($man_passed eq $man_count) { $man_passed='all'; } + my $opt_req=$dimension{$instance.'.optionalrequired'}; if ($opt_req !~ /\S/) { $opt_req='0'; } - $dim_info.="\n

".&mt('You passed all of the mandatory components and [_1] of the [_2] optional components, of which you were required to pass [_3].',$opt_passed,$opt_count,$opt_req)."

\n"; + $dim_info.="\n

".&mt('You passed [_1] of the [_2] mandatory components and [_3] of the [_4] optional components, of which you were required to pass [_5].',$man_passed,$man_count,$opt_passed,$opt_count,$opt_req)."

\n"; my $internal_location=&internal_location($dim); $result=~s/\Q$internal_location\E/$dim_info/; @@ -1482,23 +1521,7 @@ sub get_instance { ''. 'Prev
'. 'Next


'. - ' '. - ' '. ''; - $result.=''; - my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser(); - my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; - foreach my $partial_file (split(',',$Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"})) { - my $file=$file_url.$partial_file; - $file=~s|/+|/|g; - &Apache::lonnet::allowuploaded('/adm/bridgetask',$file); - $result.=' '.$file. - ' '; - } - $result.=''; $last_link=$link; } } elsif ($target eq 'grade' && $env{'form.webgrade'}) { @@ -1539,6 +1562,9 @@ sub get_instance { $Apache::lonhomework::results{"resource.$version.$dim.status"}= 'pass'; } + } else { + # any other targets no output + undef($result); } return $result; }