--- loncom/homework/bridgetask.pm	2010/12/31 02:40:14	1.257
+++ loncom/homework/bridgetask.pm	2012/09/12 05:14:09	1.260
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document
 #
-# $Id: bridgetask.pm,v 1.257 2010/12/31 02:40:14 raeburn Exp $
+# $Id: bridgetask.pm,v 1.260 2012/09/12 05:14:09 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -199,6 +199,10 @@ sub get_version {
 
 sub add_previous_version_button {
     my ($status)=@_;
+    my (undef,undef,$udom,$uname)=&Apache::lonnet::whichuser();
+    if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
+        return;
+    }
     my $result;
     if ($Apache::lonhomework::history{'resource.0.version'} eq '') {
 	return '';
@@ -235,7 +239,10 @@ sub add_previous_version_button {
 }
 
 sub add_grading_button {
-    my (undef,$cid)=&Apache::lonnet::whichuser();
+    my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser();
+    if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
+        return;
+    }
     my $cnum=$env{'course.'.$cid.'.num'};
     my $cdom=$env{'course.'.$cid.'.domain'};
     my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
@@ -250,10 +257,14 @@ sub add_grading_button {
 	$sec_select .= "\t<option value=\"$sec\">$sec</option>\n";
     }
     $sec_select .= "\t<option value='none'>none</option>\n</select>\n";
-    
-    my $result="\n\t".'<input type="submit" name="gradeasubmission" value="'.
-	&mt("Get a submission to grade").'" />';
-    $result.="\n\t".'<input type="hidden" name="grade_target" value="webgrade" />';
+
+    my $uri=$env{'request.uri'};
+    if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); }
+    my $result = 
+        '<form name="gradesubmission" method="post" action="'.$uri.'">'.
+        "\n\t".'<input type="submit" name="gradeasubmission" value="'.
+	&mt("Get a submission to grade").'" />'.
+        "\n\t".'<input type="hidden" name="grade_target" value="webgrade" />';
     my $see_all = &Apache::lonnet::allowed('mgq',$env{'request.course.id'});
     my $see_sec = &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.
 					   '/'.$env{'request.course.sec'});
@@ -299,11 +310,46 @@ sub add_grading_button {
 	$result.=&Apache::loncommon::studentbrowser_javascript();
 	$result.= '</p>'."\n";
     }
+    $result .= '</form>'."\n";
+    return $result;
+}
+
+sub add_slotlist_button {
+    my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser();
+    if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
+        return;
+    }
+    my $symb=&Apache::lonnet::symbread();
+    my $result;
+    if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'}) ||
+        &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) {
+        $result = '<form method="post" name="slotrequest" action="/adm/slotrequest">'.
+                  '<input type="hidden" name="symb" value="'.$symb.'" />'.
+                  '<input type="hidden" name="command" value="showslots" />'.
+                  '<input type="submit" name="requestattempt" value="'.
+                  &mt('Show Slot list').'" />'.
+                  '</form>';
+        my $target_id =
+               &Apache::lonstathelpers::make_target_id({symb => $symb,
+                                                             part => '0'});
+        if (!&section_restricted()) {
+            $result.='<form method="post" name="gradingstatus" action="/adm/statistics">'.
+                     '<input type="hidden" name="problemchoice" value="'.$target_id.'" />'.
+                     '<input type="hidden" name="reportSelected" value="grading_analysis" />'.
+                     '<input type="submit" name="grading" value="'.
+                     &mt('Show Grading Status').'" />'.
+                     '</form>';
+        }
+    }
     return $result;
 }
 
 sub add_request_another_attempt_button {
     my ($text)=@_;
+    my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser();
+    if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
+        return;
+    }
     if (!$text) { $text=&mt('Request another attempt'); }
     my $result;
     my $symb=&Apache::lonnet::symbread();
@@ -642,30 +688,11 @@ sub start_Task {
     if ($target eq 'web' && $env{'request.state'} ne 'construct') {
 	if ($Apache::lonhomework::queuegrade
 	    || $Apache::lonhomework::modifygrades) {
-	    $result.='<form name="gradesubmission" method="post" action="';
-	    my $uri=$env{'request.uri'};
-	    if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); }
-	    $result.=$uri.'">'.&add_grading_button()."</form>\n";
+	    $result .= &add_grading_button();
 	    my $symb=&Apache::lonnet::symbread();
 	    if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})
 		|| &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) {
-		$result.='<form method="post" name="slotrequest" action="/adm/slotrequest">'.
-		    '<input type="hidden" name="symb" value="'.$symb.'" />'.
-		    '<input type="hidden" name="command" value="showslots" />'.
-		    '<input type="submit" name="requestattempt" value="'.
-		    &mt('Show Slot list').'" />'.
-		    '</form>';
-		my $target_id = 
-		    &Apache::lonstathelpers::make_target_id({symb => $symb,
-							     part => '0'});
-		if (!&section_restricted()) {
-		    $result.='<form method="post" name="gradingstatus" action="/adm/statistics">'.
-			'<input type="hidden" name="problemchoice" value="'.$target_id.'" />'.
-			'<input type="hidden" name="reportSelected" value="grading_analysis" />'.
-			'<input type="submit" name="grading" value="'.
-			&mt('Show Grading Status').'" />'.
-			'</form>';
-		}
+                $result .= &add_slotlist_button(); 
 	    }
 	}
     }
@@ -692,10 +719,21 @@ sub start_Task {
 					  'slot' => $slot_name});
 	    ($version,$previous)=&get_version();
 	}
-	
-	my $status_id = 
-	    ($previous || $status eq 'SHOW_ANSWER') ? 'LC_task_feedback'
-	                                            : 'LC_task_take';
+        if (($target eq 'web') && ($version ne '') && ($slot_name ne '')) {
+            if (ref($slot) eq 'HASH') {
+                if ($slot->{'endtime'} > time()) {
+                    $result .=
+                        &Apache::lonhtmlcommon::set_due_date($slot->{'endtime'});
+                }
+            }
+	}
+
+	my $status_id = 'LC_task_take';
+        if ($previous && $target eq 'answer') {
+            $status_id = 'LC_task_answer';
+        } elsif ($previous || $status eq 'SHOW_ANSWER') {
+	    $status_id = 'LC_task_feedback';
+        }
 	$result .= '<div class="LC_task" id="'.$status_id.'">'."\n";
 
 	push(@Apache::inputtags::status,$status);
@@ -713,22 +751,22 @@ sub start_Task {
 		}
 		my $msg;
 		if ($status eq 'UNAVAILABLE') {
-		    $msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>';
+		    $msg.='<p class="LC_error">'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</p>';
 		} elsif ($status eq 'NOT_IN_A_SLOT') {
-		    $msg.='<h1>'.&mt('You are not currently signed up to work at this time and/or place.').'</h1>';
+		    $msg.='<p class="LC_warning">'.&mt('You are not currently signed up to work at this time and/or place.').'</p>';
 		    $msg.=&add_request_another_attempt_button("Sign up for time to work");
 		} elsif ($status eq 'NEEDS_CHECKIN') {
-		    $msg.='<h1>'.&mt('You need the Proctor to validate you.').
-			'</h1>'.&proctor_validation_screen($slot);
+		    $msg.='<p class="LC_warning">'.&mt('You need the Proctor to validate you.').
+			'</p>'.&proctor_validation_screen($slot);
 		} elsif ($status eq 'WAITING_FOR_GRADE') {
-		    $msg.='<h1>'.&mt('Your submission is in the grading queue.').'</h1>';
+		    $msg.='<p class="LC_info">'.&mt('Your submission is in the grading queue.').'</p>';
 		} elsif ($env{'form.donescreen'}) {
 		    $result .= &done_screen($version);
 		} elsif ($status eq 'NOT_YET_VIEWED') {
                     my $symb=&Apache::lonnet::symbread();
                     $msg.=&Apache::structuretags::firstaccess_msg($accessmsg,$symb);
 		} else {
-		    $msg.='<h1>'.&mt('Not open to be viewed').'</h1>';
+		    $msg.='<p class="LC_warning">'.&mt('Not open to be viewed').'</p>';
 		}
 		if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') {
 		    $msg.='The problem '.$accessmsg;
@@ -1214,7 +1252,9 @@ DONEBUTTON
 		}
 		$result.="\n</div>\n".
 		    &Apache::loncommon::end_page({'discussion' => 1});
-	    }
+	    } elsif ($target eq 'answer') {
+                $result.="\n</div>\n";
+            }
 	}
 
 	my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
@@ -1225,7 +1265,7 @@ DONEBUTTON
 	} elsif (defined($Apache::lonhomework::history{"resource.$version.0.checkedin.slot"})) {
 	    $queue_data{'slot'} = $Apache::lonhomework::history{"resource.$version.0.checkedin.slot"};
 	}
-	
+
 
 	if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous
 	    && $status eq 'CAN_ANSWER') {