\n";
- my $question = ('sub' x $dimension{$dim}{'depth'}).'question';
- $question =~ s/^(.)/uc($1)/e;
+ my $dim_info=
+ "\n
\n\t";
+ my $ucquestion =
+ my $question =
+ ('sub' x $dimension{$dim}{'depth'}).'question';
+ $ucquestion =~ s/^(.)/uc($1)/e;
if ($dim_status eq 'pass') {
- $dim_info.='
'.$question.' : you passed this '.$mandatory.' question ';
+ $dim_info.='
'.$ucquestion.' : you passed the above '.$mandatory.' '.$question.' ';
}
if ($dim_status eq 'fail') {
- $dim_info.='
'.$question.' : you did not pass this '.$mandatory.' question ';
+ $dim_info.='
'.$ucquestion.' : you did not pass the above '.$mandatory.' '.$question.' ';
}
my %counts = &get_counts($dim,$instance,$parstack,
$safeeval);
- $dim_info.="\n
"
+ $dim_info.="\n\t
"
.&question_status_message(\%counts,
$dimension{$dim}{'depth'})
- ."
\n
";
+ ."\n
\n";
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}},
@{$dimension{$dim}{'criterias'}}) {
my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
if ($type eq 'dimension') {
- $result.=$dimension{$id}{'result'};
- next;
+ if (defined($dimension{$id}{'result'})) {
+ $result.=$dimension{$id}{'result'};
+ next;
+ } else {
+ $dim_info .=
+ &nested_parse(\$dimension{$dim}{'criteria.'.$id},
+ [@_],{'set_dim_id' => $id});
+ }
+ } else {
+ my $criteria =
+ &nested_parse(\$dimension{$dim}{'criteria.'.$id},
+ [@_]);
+ $dim_info .= &layout_web_Criteria($dim,$id,$criteria);
}
- my $criteria =
- &nested_parse(\$dimension{$dim}{'criteria.'.$id},
- [@_]);
- $dim_info .= &layout_web_Criteria($dim,$id,$criteria);
}
+ # puts the results at the end of the dimension
+ $result .= $dim_info;
- my $internal_location=&internal_location($dim);
- $result=~s/\Q$internal_location\E/$dim_info/;
+ # puts the results at the beginning of the dimension
+ # my $internal_location=&internal_location($dim);
+ # $result=~s/\Q$internal_location\E/$dim_info/;
+ }
+ }
+ if ($result !~ /^\s*$/s) {
+ # FIXME? this maybe unneccssary in the future, (CSE101 BT
+ # from Fall 2006 geenrate a div that attempts to hide some
+ # of the output in an odd way, this is a workaround so
+ # those old ones will continue to work. # It puts the
+ # LC_question div to come after any starting closie div
+ # that the dimension produces
+ if ($result =~ m{^\s*}) {
+ $result =~ s{^(\s*)}
+ {$1\n};
+ } else {
+ $result = "\n".'
'.
+ "\n".$result;
}
+ $result .= "\n
\n";
}
} elsif ($target eq 'webgrade') {
# in case of any side effects that we need
@@ -2266,7 +2346,11 @@ sub end_Dimension {
[@_]);
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria);
my $internal_location=&internal_location($id);
- $result=~s/\Q$internal_location\E/$criteria/;
+ if ($result =~ m/\Q$internal_location\E/) {
+ $result =~ s/\Q$internal_location\E/$criteria/;
+ } else {
+ $result.=$criteria ;
+ }
}
}
if (&nest()) {
@@ -2360,7 +2444,7 @@ sub question_status_message {
foreach my $type ('cri','dim') {
if ($counts->{$req.'_'.$type}) {
push(@sections,
- $counts->{$req.'_'.$type.'_passed'}.' of '.
+ $counts->{$req.'_'.$type.'_passed'}.' of the '.
$counts->{$req.'_'.$type}.' '.
$req{$req}.' '.$type{$type});
}
@@ -2499,11 +2583,12 @@ sub grading_history {
$entry.=' comment: "'.$Apache::lonhomework::history{"$t:$scope.comment"}.'"';
}
if ($entry) {
- $result.= "
$grader : $entry ";
+ $result.= "\n\t\t
\n\t\t\t$grader :\n\t\t\t $entry \n\t\t ";
}
}
if ($result) {
- return '
';
+ return "\n\t".'
'."\n";
}
return '';
}
@@ -2574,12 +2659,12 @@ sub start_Criteria {
my $dim = &get_dim_id();
my $id=&get_id($parstack,$safeeval);
if ($target eq 'web' || $target eq 'webgrade') {
- if ($target eq 'webgrade' && $dim ne 'top') {
+ if ($target eq 'webgrade') {
&Apache::lonxml::debug(" for $dim $id stashing results into $dim ");
$dimension{$dim}{'result'} .= &internal_location($id);
} else {
&Apache::lonxml::debug(" not stashing $dim $id");
- $result .= &internal_location($id);
+ #$result .= &internal_location($id);
}
}
&Apache::lonxml::debug("Criteria $id with $dim");
@@ -2616,15 +2701,21 @@ sub layout_web_Criteria {
my $status_display=$status;
$status_display=~s/^([a-z])/uc($1)/e;
my $criteria_info.=
- '
'
- .$mandatory.' Criteria ';
+ '
'."\n\t".'
'
+ .$mandatory.' Criteria '."\n\t".'
'
+ ."\n";
+ $criteria =~ s/^\s*//s;
+ $criteria =~ s/\s*$//s;
$criteria_info.= $criteria;
- $criteria_info.='
'.$status_display.'
';
+ $criteria_info.="\n\t".''.
+ "\n\t".'
'.$status_display.'
';
if ($comment =~ /\w/) {
- $criteria_info.='';
+ $criteria_info.=
+ "\n\t".
+ '';
}
- $criteria_info.='
';
+ $criteria_info.="\n".'
'."\n";
+
return $criteria_info;
}
@@ -2633,34 +2724,46 @@ sub layout_webgrade_Criteria {
my $link=&link($id);
my $version = &get_version();
my $status = &get_criteria('status',$version,$dim,$id);
- my $result =
- '
'."\n".
- &grading_history($version,$dim,$id);
+ my %lt = ( 'ungraded' => 'Ungraded',
+ 'fail' => 'Fail',
+ 'pass' => 'Pass',
+ 'review' => 'Review',
+ 'comment' => 'Additional Comment for Student',
+ );
+ %lt = &Apache::lonlocal::texthash(%lt);
+ my $comment = &get_criteria('comment',$version,$dim,$id);
+ $comment = &HTML::Entities::encode($comment,'<>"&');
+ my %checked;
+ foreach my $which ('ungraded','fail','pass','review') {
+ if ($status eq $which) { $checked{$which} = 'checked="checked"'; }
+ }
+ if (!%checked) { $checked{'ungraded'} = 'checked="checked"'; }
+ my $buttons;
+ foreach my $which ('ungraded','fail','pass','review') {
+ $buttons .= <
+
+ $lt{$which}
+
+END_BUTTON
+ }
+ $criteria =~ s/^\s*//s;
+ $criteria =~ s/\s*$//s;
+ my $result = <
+
+ $criteria
+
+
+$buttons
+
+
+
+END_CRITERIA
+ $result .= &grading_history($version,$dim,$id);
return $result;
}