--- loncom/homework/bridgetask.pm	2006/03/28 18:57:49	1.121
+++ loncom/homework/bridgetask.pm	2006/03/29 23:05:00	1.128.2.3
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document
 #
-# $Id: bridgetask.pm,v 1.121 2006/03/28 18:57:49 albertel Exp $
+# $Id: bridgetask.pm,v 1.128.2.3 2006/03/29 23:05:00 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -176,10 +176,10 @@ sub add_grading_button {
     if (scalar(keys(%sections)) < 3) {
 	$size=scalar(keys(%sections))+2;
     }
-    my $sec_select = '<select multiple name="chosensections" size="'.$size.'">'."\n";
+    my $sec_select = '<select multiple="multiple" name="chosensections" size="'.$size.'">'."\n";
     $sec_select .= "<option value='all' selected='selected'>all</option>\n";
     foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) {
-	$sec_select .= "<option name=\"$sec\">$sec</option>\n";
+	$sec_select .= "<option value=\"$sec\">$sec</option>\n";
     }
     $sec_select .= "<option value='none'>none</option></select>\n";
     
@@ -213,6 +213,7 @@ sub add_grading_button {
 						   'gradinguser',
 						   'gradingdomain');
 	$result.=&Apache::loncommon::studentbrowser_javascript();
+	$result.= '</p>';
   }
     return $result;
 }
@@ -258,64 +259,14 @@ sub preserve_grade_info {
 }
 
 sub style {
-    return (<<STYLE);
-<style type="text/css">
-.LC_fail, .LC_pass, .LC_neutral {
-    position: relative;
-    margin : 5px;
-    margin-bottom :10px;
-    padding : 4px;
-    padding-left : 75px;
-	border : thin solid;
-    font-weight : bolder;
-    font-size: smaller;
-    font-family: Arial;
-    background-color : rgb(255,240,225);
-}
-
-.LC_fail h4, .LC_pass h4 {
-	position:absolute;
-	left: -4px;
-	top: -8px;
-	padding:2px;
-	margin:0;
-	background-color : rgb(255,240,225);
-	border : thin solid;
-}
-
-.LC_fail {
-	color: red;
-}
-
-.LC_pass {
-    color : green;
-}
-
-.LC_neutral {
-	color : blue;
-}
-
-.LC_question {
-	border : thin solid black;
-	padding : 4px;
-	margin-bottom : 1em;
-}
-
-.LC_grade {
-	font-size: x-large;
-	font-family: Arial;
-	position:absolute;
-	left: 5px;
-	top: -5px;
-	width: 70px;
-}
-
-div#feedback h1 {
-    color : inherit;
-}
-</style>
+    my ($target) = @_;
+    if ($target eq 'web'
+	|| $target eq 'webgrade') {
+	return (<<STYLE);
+<link rel="stylesheet" type="text/css" href="/res/adm/includes/task.css" />
 STYLE
-
+    }
+    return;
 }
 
 sub show_task {
@@ -428,7 +379,15 @@ sub start_Task {
     my ($result,$head_tag_start,$body_tag_start,$form_tag_start)=
 	&Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
     
+    $head_tag_start .= &style($target);
     $body_tag_start .= '<div class="LC_task">'."\n";
+
+    if ($target eq 'web' || $target eq 'webgrade') {
+	$head_tag_start.='<title>'.
+	    &Apache::structuretags::get_resource_name($parstack,$safeeval).
+	    '</title>';
+    }
+
     if ($target eq 'web' && $env{'request.state'} ne 'construct') {
 	if ($Apache::lonhomework::modifygrades) {
 	    $body_tag_start.='<form name="gradesubmission" method="post" action="';
@@ -496,11 +455,7 @@ sub start_Task {
 		    my $files = '<ul>';
 		    foreach my $file (@files) {
 			my $url="/uploaded/$domain/$user/portfolio$file";
-			if (! &Apache::lonnet::stat_file($url)) {
-			    $file = &mt('<font color="red"> Nonexistant file:</font> <tt>[_1]</tt>',$file);
-			} else {
-			    $file = '<tt>'.$file.'</tt>';
-			}
+			$file = '<tt>'.$file.'</tt>';
 			$files .= '<li>'.$file.'</li>';
 		    }
 		    $files.='</ul>';
@@ -538,9 +493,8 @@ DONESCREEN
 		}
 	    }
 	} elsif ($target eq 'web') {
-	    my $name= &Apache::structuretags::get_resource_name($parstack,$safeeval);
-	    $result.="$head_tag_start<title>$name</title></head>
-              $body_tag_start \n".&style();
+	    $result.="$head_tag_start</head>
+              $body_tag_start \n";
 	    
 	    $result.=&preserve_grade_info();
 	    $result.=&internal_location();
@@ -552,7 +506,11 @@ DONESCREEN
 	      $target eq 'webgrade') {
 	my $webgrade='yes';
 	if ($target eq 'webgrade') {
-	    $result.=$head_tag_start.'</head>'.$body_tag_start;
+	    $result.=$head_tag_start.
+		'</head>'.$body_tag_start.
+		"\n".'<div class="LC_GRADING_task">'."\n".
+		'<script type="text/javascript" 
+                         src="/res/adm/includes/task_grading.js"></script>';
 	    #$result.='<br />Review'.&show_queue('reviewqueue');
 	    #$result.='<br />Grade'.&show_queue('gradingqueue');
 	}
@@ -1012,7 +970,7 @@ DONEBUTTON
 	    &Apache::structuretags::finalize_storage();
 	}
     } elsif ($target eq 'webgrade') {
-	$result.="</div>\n<hr />";
+	$result.="</div>";
 	#$result.='<input type="submit" name="next" value="'.
 	#    &mt('Save &amp; Next').'" /> ';
 	#$result.='<input type="submit" name="end" value="'.
@@ -1021,7 +979,7 @@ DONEBUTTON
 	#    &mt('Throw Away &amp; Stop Grading').'" /> ';
 	#$result.='<input type="submit" name="save" value="'.
 	#    &mt('Save Partial Grade and Continue Grading').'" /> ';
-	$result.='</form>'."\n</div>\n".
+	$result.='</form>'."\n</div>\n</div>\n".
 	    &Apache::loncommon::endbodytag().'</html>';
     } elsif ($target eq 'meta') {
 	$result.=&Apache::response::meta_package_write('Task');
@@ -1701,6 +1659,10 @@ sub get_instance {
 
 {
     my $last_link;
+    sub link {
+	my ($instance,$id) = @_;
+	return 'LC_GRADING_criteria_'.$instance.'_'.$id;
+    }
     sub end_Dimension {
 	my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
 	my $result=&Apache::lonxml::endredirection();
@@ -1795,7 +1757,7 @@ sub get_instance {
 	    @Apache::scripttag::parser_env = @_;
 	    &Apache::scripttag::xmlparse($dimension{$instance.'.text'});
 	    foreach my $id (@{$dimension{$instance.'.criterias'}}) {
-		my $link='LC_GRADING_criteria_'.$instance.'_'.$id;
+		my $link=&link($instance,$id);
 		my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.status"};
 		$result.='<div class="LC_GRADING_criteria" id="'.$link.'">'."\n".
 		    '<a name="'.$link.'" />'."\n".
@@ -1828,8 +1790,9 @@ sub get_instance {
 	    my $ungraded=0;
 	    my $review=0;
 	    foreach my $id (@{$dimension{$instance.'.criterias'}}) {
-		my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.status"}=$env{'form.HWVAL_criteria_'.$instance.'_'.$id};
-		$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.comment"}=$env{'form.HWVAL_comment_criteria_'.$instance.'_'.$id};
+		my $link=&link($instance,$id);
+		my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.status"}=$env{'form.HWVAL_'.$link};
+		$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.comment"}=$env{'form.HWVAL_comment_'.$link};
 		my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N');
 		if ($status eq 'pass') {
 		    if (!$mandatory) { $optional_passed++; }
@@ -1907,7 +1870,10 @@ sub start_IntroParagraph {
 	if ($tagstack->[-2] eq 'Dimension') {
 	    $dimension{'intro'}=&Apache::lonxml::get_all_text('/introparagraph',$parser,$style);
 	
-	} elsif ($target eq 'webgrade') {
+	} elsif ($tagstack->[-2] eq 'Task' && $target eq 'webgrade') {
+	    &Apache::lonxml::startredirection();
+	} else {
+	    &Apache::lonxml::error("Invalid use of <IntroParagraph> inside of <".$tagstack->[-2].">");
 	    &Apache::lonxml::get_all_text('/introparagraph',$parser,$style);
 	}
 	
@@ -1916,6 +1882,10 @@ sub start_IntroParagraph {
 }
 
 sub end_IntroParagraph {
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+    if ($tagstack->[-2] eq 'Task' && $target eq 'webgrade') {
+	my $result = &Apache::lonxml::endredirection();
+    }
 }
 
 sub start_Instance {