--- loncom/homework/bridgetask.pm	2009/05/02 22:18:24	1.248
+++ loncom/homework/bridgetask.pm	2010/08/23 03:24:01	1.252
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document
 #
-# $Id: bridgetask.pm,v 1.248 2009/05/02 22:18:24 foxr Exp $
+# $Id: bridgetask.pm,v 1.252 2010/08/23 03:24:01 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1085,14 +1085,21 @@ sub end_Task {
 		}
 		if ($status eq 'CAN_ANSWER' && !$previous && 
 		    !$env{'form.donescreen'}) {
-		    $result.="\n".'<table border="1">'.
+                    my ($portheader,$porttext);
+                    if ($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}) {
+                        $portheader = &mt('Submit Additional Portfolio Files for Grading');
+                        $porttext = &mt('Indicate which additional files from your portfolio are to be evaluated in grading this task.');
+                    } else {
+                        $portheader = &mt('Submit Portfolio Files for Grading');
+                        $porttext = &mt('Indicate the files from your portfolio to be evaluated in grading this task.');
+                    }
+		    $result.="\n".'<p>'.&Apache::lonhtmlcommon::start_pick_box().
 			&Apache::inputtags::file_selector("$version.0",
 							  "bridgetask","*",
 							  'portfolioonly',
-							  '
-<h2>'.&mt('Submit Portfolio Files for Grading').'</h2>
-<p>'.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').'</p>').
-							  "</table>";
+                                                          '<h3>'.$portheader.'</h3><br />'.
+                                                          $porttext.'<br />').
+			&Apache::lonhtmlcommon::end_pick_box().'</p>';
 		}
 		if (!$previous && $status ne 'SHOW_ANSWER' &&
 		    &show_task($status,$previous)) {
@@ -1191,8 +1198,11 @@ DONEBUTTON
 	if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous
 	    && $status eq 'CAN_ANSWER') {
 	    my $award='SUBMITTED';
+            my $uploadedflag=0;
+            my $totalsize=0;
+            my @deletions = &Apache::loncommon::get_env_multiple('form.HWFILE'.$version.'_0_bridgetask_delete');
 	    &Apache::essayresponse::file_submission("$version.0",'bridgetask',
-						    'portfiles',\$award);
+						    \$award,\$uploadedflag,\$totalsize,\@deletions);
 	    if ($award eq 'SUBMITTED' &&
 		$Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}) {
 		$Apache::lonhomework::results{"resource.0.tries"}=
@@ -1205,7 +1215,9 @@ DONEBUTTON
 		$Apache::lonhomework::results{"resource.0.submission"}=
 		    $Apache::lonhomework::results{"resource.$version.0.submission"}='';
 	    } else {
-		delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});
+                unless($uploadedflag) {
+                    delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});
+                }
 		$award = '';
 	    }
 	    &Apache::lonhomework::showhash(%Apache::lonhomework::results);
@@ -1308,8 +1320,25 @@ DONEBUTTON
 		    $Apache::lonhomework::results{"resource.$version.0.solved"};
 	    }
 	    &minimize_storage();
-	    &Apache::structuretags::finalize_storage();
-	    
+            my $canstore;
+            if ($env{'form.gradingkey'}) {
+                my ($symb,$courseid,$domain,$name) =
+                    &Apache::lonnet::whichuser();
+                my $todo=&unescape($env{'form.gradingkey'});
+                my ($keysymb,$uname,$udom)=&decode_queue_key($todo);
+                if ($symb eq $keysymb) {
+                    if (($domain eq $udom) && ($name eq $uname)) {
+                        $canstore = 1;           
+                    }
+                }
+            }
+            if ($canstore) {
+	        &Apache::structuretags::finalize_storage();
+            } else {
+                $result .= '<br /><div class="LC_error">'.
+                           &mt('Information extracted from the current gradingkey was for a different BT or user from those for which grading data are to be stored.').' '.&mt('No grading changes stored.').'</div><br />';  
+            }
+
 	    # data stored, now handle queue
 	    if ($review) {
 		if ($env{'form.queue'} eq 'reviewqueue') {
@@ -1395,6 +1424,13 @@ DONEBUTTON
     }
     &Apache::structuretags::reset_problem_globals('Task');
     undef($Apache::lonhomework::parsing_a_task);
+    if ( ($target eq 'grade' && $env{'form.webgrade'}) ||
+          $target eq 'webgrade') {
+        delete($env{'form.grade_symb'});
+        delete($env{'form.grade_domain'});
+        delete($env{'form.grade_username'});
+        delete($env{'form.grade_courseid'});
+    }
     return $result;
 }
 
@@ -3007,14 +3043,14 @@ sub layout_webgrade_Criteria {
     $comment = &HTML::Entities::encode($comment,'<>"&');
     my %checked;
     foreach my $which ('ungraded','fail','pass','review') {
-	if ($status eq $which) { $checked{$which} = 'checked="checked"'; }
+	if ($status eq $which) { $checked{$which} = ' checked="checked"'; }
     }
-    if (!%checked) { $checked{'ungraded'} = 'checked="checked"'; }
+    if (!%checked) { $checked{'ungraded'} = ' checked="checked"'; }
     my $buttons;
     foreach my $which  ('ungraded','fail','pass','review') {
 	$buttons .= <<END_BUTTON;
 		<label class="LC_GRADING_$which">
-			<input type="radio" name="HWVAL_$link" value="$which" $checked{$which} />
+			<input type="radio" name="HWVAL_$link" value="$which"$checked{$which} />
 			$lt{$which}
 		</label>
 END_BUTTON
@@ -3157,7 +3193,7 @@ sub proctor_validation_screen {
                             'vali'  => 'Validate',
                             'stui'  => "Student who should be logged in is:",
                             'name'  => "Name:",
-                            'sid'   => "Student/Employee ID:",
+                            'sid'   => "Student/Employee ID",
                             'unam'  => "Username:",
                            );
     my $result= (<<ENDCHECKOUT);