version 1.187, 2006/10/31 21:22:33
|
version 1.197, 2006/11/09 17:50:51
|
Line 47 BEGIN {
|
Line 47 BEGIN {
|
} |
} |
|
|
my %dimension; |
my %dimension; |
|
my $top = 'top'; |
|
|
sub initialize_bridgetask { |
sub initialize_bridgetask { |
# id of current Dimension, 0 means that no dimension is current |
# id of current Dimension, 0 means that no dimension is current |
# (inside <Task> only) |
# (inside <Task> only) |
@Apache::bridgetask::dimension=(); |
@Apache::bridgetask::dimension=(); |
# list of all Dimension ids seen |
|
%Apache::bridgetask::top_dimensionlist=(); |
|
# list of all current Instance ids |
# list of all current Instance ids |
%Apache::bridgetask::instance=(); |
%Apache::bridgetask::instance=(); |
# list of all Instance ids seen in this problem |
# list of all Instance ids seen in this problem |
Line 326 sub style {
|
Line 326 sub style {
|
my ($target) = @_; |
my ($target) = @_; |
if ($target eq 'web' |
if ($target eq 'web' |
|| $target eq 'webgrade') { |
|| $target eq 'webgrade') { |
return (<<STYLE); |
my $style = (<<STYLE); |
<link rel="stylesheet" type="text/css" href="/res/adm/includes/task.css" /> |
<link rel="stylesheet" type="text/css" href="/res/adm/includes/task.css" /> |
STYLE |
STYLE |
|
if ($env{'browser.type'} eq 'explorer' |
|
&& $env{'browser.os'} eq 'win' ) { |
|
if ($env{'browser.version'} < 7) { |
|
$style .= (<<STYLE); |
|
<link rel="stylesheet" type="text/css" href="/res/adm/includes/task_ie.css" /> |
|
STYLE |
|
} else { |
|
$style .= (<<STYLE); |
|
<link rel="stylesheet" type="text/css" href="/res/adm/includes/task_ie7.css" /> |
|
STYLE |
|
} |
|
} |
|
return $style; |
} |
} |
return; |
return; |
} |
} |
Line 669 sub start_Task {
|
Line 682 sub start_Task {
|
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
|
|
$result.=&preserve_grade_info(); |
$result.=&preserve_grade_info(); |
$result.=&internal_location(); |
$result.=&internal_location(); |
$result.=$form_tag_start. |
$result.=$form_tag_start. |
'<input type="hidden" name="submitted" value="yes" />'; |
'<input type="hidden" name="submitted" value="yes" />'; |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
Line 684 sub start_Task {
|
Line 697 sub start_Task {
|
#$result.='<br />Review'.&show_queue('reviewqueue'); |
#$result.='<br />Review'.&show_queue('reviewqueue'); |
#$result.='<br />Grade'.&show_queue('gradingqueue'); |
#$result.='<br />Grade'.&show_queue('gradingqueue'); |
} |
} |
# FIXME Blast! still need to reorg this, need to reshow the |
|
# queue being reviewed once done with the grade pass... |
|
# Hrrm, vaildation pass should perhaps say 'not_locked' |
|
# perhaps do a search if there is a key that is mine and if |
|
# there isn't reshow the queue.... |
|
my ($todo,$status_code,$msg)=&get_key_todo($target); |
my ($todo,$status_code,$msg)=&get_key_todo($target); |
|
|
if ($todo) { |
if ($todo) { |
Line 773 sub start_Task {
|
Line 782 sub start_Task {
|
} |
} |
if ($target eq 'webgrade') { |
if ($target eq 'webgrade') { |
$result.="\n".'<div id="LC_GRADING_criterialist">'; |
$result.="\n".'<div id="LC_GRADING_criterialist">'; |
|
&Apache::lonxml::startredirection(); |
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=$form_tag_start. |
$result.=$form_tag_start. |
Line 1040 DONEBUTTON
|
Line 1050 DONEBUTTON
|
$status.=&add_request_another_attempt_button(); |
$status.=&add_request_another_attempt_button(); |
} |
} |
} |
} |
my $man_count=0; |
$status.='</div>'; |
my $opt_count=0; |
my $dim = $top; |
my $opt_passed=0; |
my %counts = &get_counts($dim,undef,$parstack, |
foreach my $dim (keys(%Apache::bridgetask::top_dimensionlist)) { |
$safeeval); |
if ($Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'} |
$status.="\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'><p>". |
eq 'N') { |
&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you passed [_4].', |
$opt_count++; |
$counts{'man'},$counts{'opt_req'}, |
if ($Apache::lonhomework::history{"resource.$version.0.$dim.status"} eq 'pass') { |
$counts{'opt'},$counts{'opt_passed'}). |
$opt_passed++; |
"</p></div>\n"; |
} |
|
} else { |
|
$man_count++; |
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
|
if ($type eq 'dimension') { |
|
$result.=$dimension{$id}{'result'}; |
|
next; |
} |
} |
|
my $criteria = |
|
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_]); |
|
$status .= &layout_web_Criteria($dim,$id,$criteria); |
} |
} |
|
|
my $opt_req=&Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($opt_req !~ /\S/) { $opt_req='0'; } |
|
$status.="\n<p>".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you passed [_4].',$man_count,$opt_req,$opt_count,$opt_passed)."</p></div>\n"; |
|
|
|
my $internal_location=&internal_location(); |
my $internal_location=&internal_location(); |
$result=~s/\Q$internal_location\E/$status/; |
$result=~s/\Q$internal_location\E/$status/; |
Line 1117 DONEBUTTON
|
Line 1130 DONEBUTTON
|
my $ungraded=0; |
my $ungraded=0; |
my $review=0; |
my $review=0; |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
foreach my $dim (keys(%Apache::bridgetask::top_dimensionlist)) { |
my $dim = $top; |
|
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
|
my $link=&link($id); |
|
|
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
|
|
|
if ($type eq 'criteria') { |
|
# dimensional 'criteria' don't get assigned grades |
|
$Apache::lonhomework::results{"resource.$version.0.$id.status"}=$env{'form.HWVAL_'.$link}; |
|
$Apache::lonhomework::results{"resource.$version.0.$id.comment"}=$env{'form.HWVAL_comment_'.$link}; |
|
} |
my $status= |
my $status= |
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}; |
$Apache::lonhomework::results{"resource.$version.0.$id.status"}; |
my $mandatory= |
my $mandatory=($dimension{$dim}{'criteria.'.$id.'.mandatory'} ne 'N'); |
($Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'} ne 'N'); |
|
if ($status eq 'pass') { |
if ($status eq 'pass') { |
if (!$mandatory) { $optional_passed++; } |
if (!$mandatory) { $optional_passed++; } |
} elsif ($status eq 'fail') { |
} elsif ($status eq 'fail') { |
if ($mandatory) { $mandatory_failed++; } |
if ($mandatory) { $mandatory_failed++; } |
} elsif ($status eq 'ungraded') { |
|
$ungraded++; |
|
} elsif ($status eq 'review') { |
} elsif ($status eq 'review') { |
$review++; |
$review++; |
|
} elsif ($status eq 'ungraded') { |
|
$ungraded++; |
} else { |
} else { |
$ungraded++; |
$ungraded++; |
} |
} |
Line 1137 DONEBUTTON
|
Line 1160 DONEBUTTON
|
if ($optional_passed < $optional_required) { |
if ($optional_passed < $optional_required) { |
$mandatory_failed++; |
$mandatory_failed++; |
} |
} |
&Apache::lonxml::debug("all dim ".join(':',keys(%Apache::bridgetask::top_dimensionlist))."results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); |
&Apache::lonxml::debug(" task results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); |
$Apache::lonhomework::results{'resource.0.regrader'}= |
$Apache::lonhomework::results{'resource.0.regrader'}= |
$env{'user.name'}.':'.$env{'user.domain'}; |
$env{'user.name'}.':'.$env{'user.domain'}; |
if ($review) { |
if ($review) { |
$Apache::lonhomework::results{"resource.$version.0.status"}='review'; |
$Apache::lonhomework::results{"resource.$version.0.status"}='review'; |
if ($env{'form.queue'} eq 'reviewqueue') { |
|
&check_queue_unlock($env{'form.queue'}); |
|
&Apache::lonxml::debug(" still needs review not changing status."); |
|
} else { |
|
if ($env{'form.queue'} ne 'none') { |
|
&move_between_queues($env{'form.queue'},'reviewqueue'); |
|
} else { |
|
&add_to_queue('reviewqueue',\%queue_data); |
|
} |
|
} |
|
} elsif ($ungraded) { |
} elsif ($ungraded) { |
$Apache::lonhomework::results{"resource.$version.0.status"}='ungraded'; |
$Apache::lonhomework::results{"resource.$version.0.status"}='ungraded'; |
if ($env{'form.queue'} eq 'reviewqueue') { |
|
&Apache::lonxml::debug("moving back."); |
|
&move_between_queues($env{'form.queue'}, |
|
'gradingqueue'); |
|
} elsif ($env{'form.queue'} eq 'none' ) { |
|
&add_to_queue('gradingqueue',\%queue_data); |
|
} else { |
|
&check_queue_unlock($env{'form.queue'}); |
|
} |
|
} elsif ($mandatory_failed) { |
} elsif ($mandatory_failed) { |
$Apache::lonhomework::results{"resource.$version.0.status"}='fail'; |
$Apache::lonhomework::results{"resource.$version.0.status"}='fail'; |
$Apache::lonhomework::results{"resource.$version.0.solved"}='incorrect_by_override'; |
$Apache::lonhomework::results{"resource.$version.0.solved"}='incorrect_by_override'; |
$Apache::lonhomework::results{"resource.$version.0.award"}='INCORRECT'; |
$Apache::lonhomework::results{"resource.$version.0.award"}='INCORRECT'; |
$Apache::lonhomework::results{"resource.$version.0.awarded"}='0'; |
$Apache::lonhomework::results{"resource.$version.0.awarded"}='0'; |
&remove_from_queue($env{'form.queue'}); |
|
|
|
my ($symb,$courseid,$udom,$uname)=&Apache::lonnet::whichuser(); |
my ($symb,$courseid,$udom,$uname)=&Apache::lonnet::whichuser(); |
|
|
if ($env{'form.regrade'} ne 'yes') { |
if ($env{'form.regrade'} ne 'yes') { |
Line 1186 DONEBUTTON
|
Line 1188 DONEBUTTON
|
$Apache::lonhomework::results{"resource.$version.0.solved"}='correct_by_override'; |
$Apache::lonhomework::results{"resource.$version.0.solved"}='correct_by_override'; |
$Apache::lonhomework::results{"resource.$version.0.award"}='EXACT_ANS'; |
$Apache::lonhomework::results{"resource.$version.0.award"}='EXACT_ANS'; |
$Apache::lonhomework::results{"resource.$version.0.awarded"}='1'; |
$Apache::lonhomework::results{"resource.$version.0.awarded"}='1'; |
&remove_from_queue($env{'form.queue'}); |
|
|
|
my ($symb,$courseid,$udom,$uname)=&Apache::lonnet::whichuser(); |
my ($symb,$courseid,$udom,$uname)=&Apache::lonnet::whichuser(); |
if ($env{'form.regrade'} ne 'yes') { |
if ($env{'form.regrade'} ne 'yes') { |
$Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}= |
$Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}= |
Line 1211 DONEBUTTON
|
Line 1211 DONEBUTTON
|
} |
} |
&minimize_storage(); |
&minimize_storage(); |
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
|
|
|
# data stored, now handle queue |
|
if ($review) { |
|
if ($env{'form.queue'} eq 'reviewqueue') { |
|
&check_queue_unlock($env{'form.queue'}); |
|
&Apache::lonxml::debug(" still needs review not changing status."); |
|
} else { |
|
if ($env{'form.queue'} ne 'none') { |
|
&move_between_queues($env{'form.queue'},'reviewqueue'); |
|
} else { |
|
&add_to_queue('reviewqueue',\%queue_data); |
|
} |
|
} |
|
} elsif ($ungraded) { |
|
if ($env{'form.queue'} eq 'reviewqueue') { |
|
&Apache::lonxml::debug("moving back."); |
|
&move_between_queues($env{'form.queue'}, |
|
'gradingqueue'); |
|
} elsif ($env{'form.queue'} eq 'none' ) { |
|
&add_to_queue('gradingqueue',\%queue_data); |
|
} else { |
|
&check_queue_unlock($env{'form.queue'}); |
|
} |
|
} elsif ($mandatory_failed) { |
|
&remove_from_queue($env{'form.queue'}); |
|
} else { |
|
&remove_from_queue($env{'form.queue'}); |
|
} |
} |
} |
if (exists($Apache::lonhomework::results{'INTERNAL_store'})) { |
if (exists($Apache::lonhomework::results{'INTERNAL_store'})) { |
# instance generation occured and hasn't yet been stored |
# instance generation occured and hasn't yet been stored |
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
} |
} |
} elsif ($target eq 'webgrade') { |
} elsif ($target eq 'webgrade') { |
$result.="</div>"; |
$result.=&Apache::lonxml::endredirection(); |
|
my $dim = $top; |
|
foreach my $id (@{$dimension{$dim}{'criterias'}} ) { |
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
|
if ($type eq 'dimension') { |
|
# dimensional 'criteria' don't get assigned grades |
|
next; |
|
} else { |
|
my $criteria =&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_]); |
|
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria); |
|
my $internal_location=&internal_location($id); |
|
$result=~s/\Q$internal_location\E/$criteria/; |
|
} |
|
} |
|
$result.="</div>"; |
#$result.='<input type="submit" name="next" value="'. |
#$result.='<input type="submit" name="next" value="'. |
# &mt('Save & Next').'" /> '; |
# &mt('Save & Next').'" /> '; |
#$result.='<input type="submit" name="end" value="'. |
#$result.='<input type="submit" name="end" value="'. |
Line 1563 sub get_queue_counts {
|
Line 1606 sub get_queue_counts {
|
foreach my $key (sort(keys(%queue))) { |
foreach my $key (sort(keys(%queue))) { |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
if (!defined($classlist->{$uname.':'.$udom})) { next; } |
if (!defined($classlist->{$uname.':'.$udom})) { next; } |
|
|
if ($key=~/locked$/) { |
if ($key=~/locked$/) { |
$locks++; |
$locks++; |
} elsif ($key=~/timestamp$/) { |
} elsif ($key=~/timestamp$/) { |
Line 1975 sub end_ClosingParagraph {
|
Line 2017 sub end_ClosingParagraph {
|
} |
} |
|
|
sub get_dim_id { |
sub get_dim_id { |
return $Apache::bridgetask::dimension[-1]; |
if (@Apache::bridgetask::dimension) { |
|
return $Apache::bridgetask::dimension[-1]; |
|
} else { |
|
return $top; |
|
} |
} |
} |
|
|
sub get_id { |
sub get_id { |
Line 2034 sub start_Dimension {
|
Line 2080 sub start_Dimension {
|
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); |
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); |
push(@{$dimension{$previous_dim}{'criterias'}},$dim); |
push(@{$dimension{$previous_dim}{'criterias'}},$dim); |
$dimension{$dim}{'nested'}=$previous_dim; |
$dimension{$dim}{'nested'}=$previous_dim; |
|
$dimension{$dim}{'depth'} = 1 + $dimension{$previous_dim}{'depth'}; |
|
|
&Apache::lonxml::debug("adding $dim as criteria to $previous_dim"); |
&Apache::lonxml::debug("adding $dim as criteria to $previous_dim"); |
} else { |
} else { |
$Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'}= |
$dimension{$top}{'depth'}=0; |
|
$dimension{$top}{'criteria.'.$dim.'.type'}='dimension'; |
|
$dimension{$top}{'criteria.'.$dim.'.mandatory'}= |
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); |
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); |
|
push(@{$dimension{$top}{'criterias'}},$dim); |
} |
} |
push(@Apache::bridgetask::dimension,$dim); |
push(@Apache::bridgetask::dimension,$dim); |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
Line 2103 sub get_instance {
|
Line 2154 sub get_instance {
|
sub get_criteria { |
sub get_criteria { |
my ($what,$version,$dim,$id) = @_; |
my ($what,$version,$dim,$id) = @_; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $prefix = ($type eq 'criteria') ? "$dim.$id" |
my $prefix = ($type eq 'criteria' && $dim ne $top) ? "$dim.$id" |
: "$id"; |
: "$id"; |
my $entry = "resource.$version.0.$prefix.$what"; |
my $entry = "resource.$version.0.$prefix.$what"; |
if (exists($Apache::lonhomework::results{$entry})) { |
if (exists($Apache::lonhomework::results{$entry})) { |
return $Apache::lonhomework::results{$entry}; |
return $Apache::lonhomework::results{$entry}; |
Line 2112 sub get_criteria {
|
Line 2163 sub get_criteria {
|
return $Apache::lonhomework::history{$entry}; |
return $Apache::lonhomework::history{$entry}; |
} |
} |
|
|
{ |
sub link { |
my $last_link; |
my ($id) = @_; |
sub link { |
$id =~ s/\./_/g; |
my ($id) = @_; |
return 'LC_GRADING_criteria_'.$id; |
$id =~ s/\./_/g; |
} |
return 'LC_GRADING_criteria_'.$id; |
sub end_Question { return &end_Dimension(@_); } |
|
sub end_Dimension { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my $result=&Apache::lonxml::endredirection(); |
|
my $dim=&get_id($parstack,$safeeval); |
|
if (&skip_dimension_parsing($dim)) { |
|
&disable_dimension_parsing($dim); |
|
pop(@Apache::bridgetask::dimension); |
|
return; |
} |
} |
sub end_Question { return &end_Dimension(@_); } |
my $instance=&get_instance($dim); |
sub end_Dimension { |
my $version=&get_version(); |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web') { |
my $result=&Apache::lonxml::endredirection(); |
$result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); |
my $dim=&get_id($parstack,$safeeval); |
my @instances = $instance; |
if (&skip_dimension_parsing($dim)) { |
if (&Apache::response::showallfoils()) { |
&disable_dimension_parsing($dim); |
@instances = @{$dimension{$dim}{'instances'}}; |
pop(@Apache::bridgetask::dimension); |
|
return; |
|
} |
} |
my $instance=&get_instance($dim); |
my $shown_question_text; |
my $version=&get_version(); |
foreach my $instance (@instances) { |
if ($target eq 'web') { |
$result .= &nested_parse(\$dimension{$dim}{$instance.'.text'}, |
$result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); |
[@_]); |
my @instances = $instance; |
$result .= &nested_parse(\$dimension{$dim}{'questiontext'}, |
if (&Apache::response::showallfoils()) { |
[@_],{'set_dim_id' => undef}); |
@instances = @{$dimension{$dim}{'instances'}}; |
my $task_status = |
} |
$Apache::lonhomework::history{"resource.$version.0.status"}; |
my $shown_question_text; |
if ($task_status ne 'pass' && $task_status ne 'fail') { |
foreach my $instance (@instances) { |
|
$result .= &nested_parse(\$dimension{$dim}{$instance.'.text'}, |
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
[@_]); |
@{$dimension{$dim}{'criterias'}}) { |
$result .= &nested_parse(\$dimension{$dim}{'questiontext'}, |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
[@_],{'set_dim_id' => undef}); |
&Apache::lonxml::debug("$id is $type"); |
my $task_status = |
if ($type eq 'dimension') { |
$Apache::lonhomework::history{"resource.$version.0.status"}; |
|
if ($task_status ne 'pass' && $task_status ne 'fail') { |
|
|
|
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}}) { |
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
|
&Apache::lonxml::debug("$id is $type"); |
|
if ($type eq 'dimension') { |
|
$result.= |
|
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_],{'set_dim_id' => $id}); |
|
} |
|
} |
|
} else { |
|
my $dim_status=$Apache::lonhomework::history{"resource.$version.0.$dim.status"}; |
|
my $mandatory='Mandatory'; |
|
if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') { |
|
$mandatory='Optional'; |
|
} |
|
my $dim_info="<div class='LC_$dim_status LC_question_grade'>\n"; |
|
if ($dim_status eq 'pass') { |
|
$dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>'; |
|
} |
|
if ($dim_status eq 'fail') { |
|
$dim_info.='<h3>Question : you did not pass this '.$mandatory.' question</h3>'; |
|
} |
|
my $man_count=0; |
|
my $man_passed=0; |
|
my $opt_count=0; |
|
my $opt_passed=0; |
|
foreach my $id ( @{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}} ) { |
|
my $status = &get_criteria('status',$version,$dim,$id); |
|
if ($dimension{$dim}{'criteria.'.$id.'.mandatory'} |
|
eq 'N') { |
|
$opt_count++; |
|
if ($status eq 'pass') { $opt_passed++; } |
|
} else { |
|
$man_count++; |
|
if ($status eq 'pass') { $man_passed++; } |
|
} |
|
} |
|
if ($man_passed eq $man_count) { $man_passed='all'; } |
|
|
|
my $opt_req=$dimension{$dim}{$instance.'.optionalrequired'}; |
|
if ($opt_req !~ /\S/) { |
|
$opt_req= |
|
&Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($opt_req !~ /\S/) { $opt_req = 0; } |
|
} |
|
$dim_info.="\n<p>".&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)."</p>\n</div>"; |
|
|
|
my $internal_location=&internal_location($dim); |
|
$result=~s/\Q$internal_location\E/$dim_info/; |
|
|
|
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; |
|
} |
|
my $status= &get_criteria('status', $version,$dim,$id); |
|
my $comment=&get_criteria('comment',$version,$dim,$id); |
|
my $mandatory=($dimension{$dim}{'criteria.'.$id.'.mandatory'} ne 'N'); |
|
if ($mandatory) { |
|
$mandatory='Mandatory'; |
|
} else { |
|
$mandatory='Optional'; |
|
} |
|
if ($status eq 'fail') { |
|
} elsif ($status eq 'pass') { |
|
} else { |
|
&Apache::lonxml::error("Student viewing a graded bridgetask was shown a status of $status"); |
|
} |
|
my $status_display=$status; |
|
$status_display=~s/^([a-z])/uc($1)/e; |
|
$result.= |
|
'<div class="LC_'.$status.' LC_criteria"><h4>' |
|
.$mandatory.' Criteria</h4><p>'; |
|
$result.= |
$result.= |
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
[@_],{'set_dim_id' => $id}); |
[@_],{'set_dim_id' => $id}); |
$result.='</p><p class="LC_grade">'.$status_display.'</p>'; |
|
if ($comment) { |
|
$result.='<p class="LC_comment">'. |
|
&mt('Comment: [_1]',$comment).'</p>'; |
|
} |
|
$result.='</div>'; |
|
} |
} |
} |
} |
} |
} else { |
} elsif ($target eq 'webgrade') { |
my $dim_status=$Apache::lonhomework::history{"resource.$version.0.$dim.status"}; |
# in case of any side effects that we need |
my $mandatory='Mandatory'; |
&nested_parse(\$dimension{$dim}{'intro'},[@_]); |
if (&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval) eq 'N') { |
&nested_parse(\$dimension{$dim}{$instance.'.text'},[@_]); |
$mandatory='Optional'; |
$result.= |
} |
&nested_parse(\$dimension{$dim}{'questiontext'},[@_], |
my $dim_info="<div class='LC_$dim_status LC_question_grade'>\n"; |
{'set_dim_id' => undef, |
my $question = ('sub' x $dimension{$dim}{'depth'}).'question'; |
'delayed_dim_results' => 1}); |
$question =~ s/^(.)/uc($1)/e; |
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
if ($dim_status eq 'pass') { |
@{$dimension{$dim}{'criterias'}} ) { |
$dim_info.='<h3>'.$question.' : you passed this '.$mandatory.' question</h3>'; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
} |
if ($type eq 'dimension') { |
if ($dim_status eq 'fail') { |
# dimensional 'criteria' don't get assigned grades |
$dim_info.='<h3>'.$question.' : you did not pass this '.$mandatory.' question</h3>'; |
$result.= |
} |
|
my %counts = &get_counts($dim,$instance,$parstack, |
|
$safeeval); |
|
|
|
$dim_info.="\n<p>" |
|
.&question_status_message(\%counts, |
|
$dimension{$dim}{'depth'}) |
|
."</p>\n</div>"; |
|
|
|
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; |
|
} |
|
my $criteria = |
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
[@_],{'set_dim_id' => $id}); |
[@_]); |
next; |
$dim_info .= &layout_web_Criteria($dim,$id,$criteria); |
} |
} |
|
|
my $link=&link($id); |
my $internal_location=&internal_location($dim); |
my $status= &get_criteria('status',$version,$dim,$id); |
$result=~s/\Q$internal_location\E/$dim_info/; |
$result.='<div class="LC_GRADING_criteria" id="'.$link.'">'."\n". |
} |
'<div class="LC_GRADING_criteriatext" id="next_'.$last_link.'">'."\n"; |
} |
|
} elsif ($target eq 'webgrade') { |
|
# in case of any side effects that we need |
|
&nested_parse(\$dimension{$dim}{'intro'},[@_]); |
|
&nested_parse(\$dimension{$dim}{$instance.'.text'},[@_]); |
|
$result.= |
|
&nested_parse(\$dimension{$dim}{'questiontext'},[@_], |
|
{'set_dim_id' => undef, |
|
'delayed_dim_results' => 1}); |
|
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}} ) { |
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
|
if ($type eq 'dimension') { |
|
# dimensional 'criteria' don't get assigned grades |
$result.= |
$result.= |
&nested_parse(\$dimension{$dim}{'criteria.'.$id},[@_]); |
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_],{'set_dim_id' => $id}); |
$result.='</div>'."\n". |
next; |
'<div class="LC_GRADING_grade">'."\n". |
} else { |
'<label class="LC_GRADING_ungraded"><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label>'."\n". |
my $criteria =&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
'<label class="LC_GRADING_fail"><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label>'."\n". |
[@_]); |
'<label class="LC_GRADING_pass"><input type="radio" name="HWVAL_'.$link.'" value="pass" '.($status eq 'pass' ? 'checked="checked"':'').' />'.&mt('Pass').'</label>'."\n". |
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria); |
'<label class="LC_GRADING_review"><input type="radio" name="HWVAL_'.$link.'" value="review" '.($status eq 'review' ? 'checked="checked"':'').' />'.&mt('Review').'</label>'."\n". |
my $internal_location=&internal_location($id); |
'</div>'."\n". |
$result=~s/\Q$internal_location\E/$criteria/; |
'<label class="LC_GRADING_comment">'.&mt('Additional Comment for Student')."\n". |
|
'<textarea class="LC_GRADING_comment_area" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode(&get_criteria('comment',$version,$dim,$id),'<>"&').'</textarea>'."\n". |
|
'</label>'."\n". |
|
'<ul class="LC_GRADING_navbuttons">'."\n". |
|
'<li><a href="#'.$last_link.'">Prev</a></li>'."\n". |
|
'<li><a href="#next_'.$link.'">Next</a></li>'."\n". |
|
'</ul>'."\n". |
|
'</div>'."\n"; |
|
$result.=&grading_history($version,$dim,$id); |
|
$last_link=$link; |
|
} |
|
if (&nest()) { |
|
&Apache::lonxml::debug(" for $dim stashing results into ".$dimension{$dim}{'nested'}); |
|
$dimension{$dimension{$dim}{'nested'}}{'result'}.=$result; |
|
undef($result); |
|
} |
} |
} elsif ($target eq 'grade' && $env{'form.webgrade'}) { |
} |
my $optional_passed=0; |
if (&nest()) { |
my $mandatory_failed=0; |
&Apache::lonxml::debug(" for $dim stashing results into ".$dimension{$dim}{'nested'}); |
my $ungraded=0; |
$dimension{$dimension{$dim}{'nested'}}{'result'}.=$result; |
my $review=0; |
undef($result); |
|
} |
$result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); |
} elsif ($target eq 'grade' && $env{'form.webgrade'}) { |
$result .= &nested_parse(\$dimension{$dim}{$instance.'.text'}, |
my $optional_passed=0; |
[@_]); |
my $mandatory_failed=0; |
$result .= &nested_parse(\$dimension{$dim}{'questiontext'}, |
my $ungraded=0; |
[@_],{'set_dim_id' => undef}); |
my $review=0; |
|
|
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
$result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); |
@{$dimension{$dim}{'criterias'}}) { |
$result .= &nested_parse(\$dimension{$dim}{$instance.'.text'}, |
my $link=&link($id); |
[@_]); |
|
$result .= &nested_parse(\$dimension{$dim}{'questiontext'}, |
|
[@_],{'set_dim_id' => undef}); |
|
|
|
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}}) { |
|
my $link=&link($id); |
|
|
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
|
if ($type eq 'criteria') { |
|
# dimensional 'criteria' don't get assigned grades |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.$id.status"}=$env{'form.HWVAL_'.$link}; |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.$id.comment"}=$env{'form.HWVAL_comment_'.$link}; |
|
} else { |
|
$result .= |
|
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_],{'set_dim_id' => $id}); |
|
} |
|
my $status= &get_criteria('status',$version,$dim,$id); |
|
|
|
my $mandatory=($dimension{$dim}{'criteria.'.$id.'.mandatory'} ne 'N'); |
|
if ($status eq 'pass') { |
|
if (!$mandatory) { $optional_passed++; } |
|
} elsif ($status eq 'fail') { |
|
if ($mandatory) { $mandatory_failed++; } |
|
} elsif ($status eq 'review') { |
|
$review++; |
|
} elsif ($status eq 'ungraded') { |
|
$ungraded++; |
|
} else { |
|
$ungraded++; |
|
} |
|
} |
|
|
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $opt_req=$dimension{$dim}{$instance.'.optionalrequired'}; |
if ($type eq 'criteria') { |
if ($opt_req !~ /\S/) { |
# dimensional 'criteria' don't get assigned grades |
$opt_req= |
$Apache::lonhomework::results{"resource.$version.0.$dim.$id.status"}=$env{'form.HWVAL_'.$link}; |
&Apache::lonxml::get_param('OptionalRequired', |
$Apache::lonhomework::results{"resource.$version.0.$dim.$id.comment"}=$env{'form.HWVAL_comment_'.$link}; |
$parstack,$safeeval); |
} else { |
if ($opt_req !~ /\S/) { $opt_req = 0; } |
$result .= |
} |
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
if ($optional_passed < $opt_req) { |
[@_],{'set_dim_id' => $id}); |
$mandatory_failed++; |
} |
} |
my $status= &get_criteria('status',$version,$dim,$id); |
&Apache::lonxml::debug("all instance ".join(':',@{$dimension{$dim}{$instance.'.criterias'}})." results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); |
|
if ($review) { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'review'; |
|
} elsif ($ungraded) { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'ungraded'; |
|
} elsif ($mandatory_failed) { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'fail'; |
|
} else { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'pass'; |
|
} |
|
} else { |
|
# any other targets no output |
|
undef($result); |
|
} |
|
&disable_dimension_parsing(); |
|
pop(@Apache::bridgetask::dimension); |
|
return $result; |
|
} |
|
|
my $mandatory=($dimension{$dim}{'criteria.'.$id.'.mandatory'} ne 'N'); |
sub status_message { |
if ($status eq 'pass') { |
my ($counts,$depth) = @_; |
if (!$mandatory) { $optional_passed++; } |
my %req = ('man' => 'mandatory', |
} elsif ($status eq 'fail') { |
'opt' => 'optional',); |
if ($mandatory) { $mandatory_failed++; } |
my %type = ('cri' => 'criteria', |
} elsif ($status eq 'review') { |
'dim' => ('sub'x($depth+1)).'questions',); |
$review++; |
my @sections; |
} elsif ($status eq 'ungraded') { |
foreach my $req ('man','opt') { |
$ungraded++; |
foreach my $type ('cri','dim') { |
} else { |
if ($counts->{$req.'_'.$type}) { |
$ungraded++; |
push(@sections, |
} |
$counts->{$req.'_'.$type.'_passed'}.' of '. |
} |
$counts->{$req.'_'.$type}.' '. |
# FIXME optional required can apply to only <instance> right now... |
$req{$req}.' '.$type{$type}); |
my $opt_req=$dimension{$dim}{$instance.'.optionalrequired'}; |
|
if ($opt_req !~ /\S/) { |
|
$opt_req= |
|
&Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($opt_req !~ /\S/) { $opt_req = 0; } |
|
} |
|
if ($optional_passed < $opt_req) { |
|
$mandatory_failed++; |
|
} |
|
&Apache::lonxml::debug("all instance ".join(':',@{$dimension{$dim}{$instance.'.criterias'}})." results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); |
|
if ($review) { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'review'; |
|
} elsif ($ungraded) { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'ungraded'; |
|
} elsif ($mandatory_failed) { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'fail'; |
|
} else { |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.status"}= |
|
'pass'; |
|
} |
} |
|
} |
|
} |
|
|
|
my $status = 'You passed '; |
|
if (@sections == -1) { |
|
} elsif (@sections == 1) { |
|
$status .= $sections[0]; |
|
} elsif (@sections == 2) { |
|
$status .= $sections[0].' and '.$sections[1]; |
|
} else { |
|
my $last = pop(@sections); |
|
$status .= join(', ',@sections).', and '.$last; |
|
} |
|
$status .= '.'; |
|
if ($counts->{'opt'}) { |
|
$status .= ' You were required to pass '.$counts->{'opt_req'}. |
|
' optional component'.($counts->{'opt_req'} == 1?'':'s'); |
|
} |
|
return $status; |
|
} |
|
|
|
sub get_counts { |
|
my ($dim,$instance,$parstack,$safeeval) = @_; |
|
my %counts; |
|
my @possible = ('man_cri','man_dim', |
|
'opt_cri','opt_dim', |
|
'man_cri_passed', 'man_dim_passed', |
|
'opt_cri_passed', 'opt_dim_passed', |
|
'man_passed', |
|
'opt_passed', |
|
'opt_req'); |
|
foreach my $which (@possible) { $counts{$which} = 0; } |
|
|
|
my $version = &get_version(); |
|
|
|
foreach my $id ( @{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}} ) { |
|
my $status = &get_criteria('status',$version,$dim,$id); |
|
my $which; |
|
if ($dimension{$dim}{'criteria.'.$id.'.mandatory'} |
|
eq 'N') { |
|
$which = 'opt'; |
} else { |
} else { |
# any other targets no output |
$which = 'man'; |
undef($result); |
|
} |
} |
&disable_dimension_parsing(); |
$counts{$which}++; |
pop(@Apache::bridgetask::dimension); |
if ($status eq 'pass') { $counts{$which.'_passed'}++; } |
return $result; |
if ($dimension{$dim}{'criteria.'.$id.'.type'} |
|
eq 'dimension') { |
|
$which .= '_dim'; |
|
} else { |
|
$which .= '_cri'; |
|
} |
|
$counts{$which}++; |
|
if ($status eq 'pass') { $counts{$which.'_passed'}++; } |
|
|
|
|
|
} |
|
if ($counts{'man_dim_passed'} eq $counts{'man_dim'}) { |
|
$counts{'man_dim_passed'}='all'; |
|
} |
|
if ($counts{'man_cri_passed'} eq $counts{'man_cri'}) { |
|
$counts{'man_cri_passed'}='all'; |
} |
} |
|
|
|
$counts{'opt_req'}=$dimension{$dim}{$instance.'.optionalrequired'}; |
|
if ($counts{'opt_req'} !~ /\S/) { |
|
$counts{'opt_req'}= &Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($counts{'opt_req'} !~ /\S/) { $counts{'opt_req'} = 0; } |
|
} |
|
return %counts; |
|
} |
|
|
sub end_Setup { |
sub end_Setup { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result=&Apache::lonxml::endredirection(); |
my $result=&Apache::lonxml::endredirection(); |
my $dim=&get_id($parstack,$safeeval); |
my $dim=&get_id($parstack,$safeeval); |
my $instance=&get_instance($dim); |
my $instance=&get_instance($dim); |
my $version=&get_version(); |
my $version=&get_version(); |
if ($target eq 'web') { |
if ($target eq 'web') { |
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
$result.=&Apache::scripttag::xmlparse($dimension{$dim}{'intro'}); |
$result.=&Apache::scripttag::xmlparse($dimension{$dim}{'intro'}); |
my @instances = $instance; |
my @instances = $instance; |
if (&Apache::response::showallfoils()) { |
if (&Apache::response::showallfoils()) { |
@instances = @{$dimension{$dim}{'instances'}}; |
@instances = @{$dimension{$dim}{'instances'}}; |
} |
} |
foreach my $instance (@instances) { |
foreach my $instance (@instances) { |
@Apache::scripttag::parser_env = @_; |
|
$result.=&Apache::scripttag::xmlparse($dimension{$dim}{$instance.'.text'}); |
|
@Apache::scripttag::parser_env = @_; |
|
$result.=&Apache::scripttag::xmlparse($dimension{$dim}{'questiontext'}); |
|
} |
|
} elsif ($target eq 'webgrade' |
|
|| $target eq 'grade' && $env{'form.webgrade'}) { |
|
# in case of any side effects that we need |
|
@Apache::scripttag::parser_env = @_; |
|
&Apache::scripttag::xmlparse($dimension{$dim}{'intro'}); |
|
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
&Apache::scripttag::xmlparse($dimension{$dim}{$instance.'.text'}); |
$result.=&Apache::scripttag::xmlparse($dimension{$dim}{$instance.'.text'}); |
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
&Apache::scripttag::xmlparse($dimension{$dim}{'questiontext'}); |
$result.=&Apache::scripttag::xmlparse($dimension{$dim}{'questiontext'}); |
} else { |
|
# any other targets no output |
|
undef($result); |
|
} |
} |
pop(@Apache::bridgetask::dimension); |
} elsif ($target eq 'webgrade' |
return $result; |
|| $target eq 'grade' && $env{'form.webgrade'}) { |
|
# in case of any side effects that we need |
|
@Apache::scripttag::parser_env = @_; |
|
&Apache::scripttag::xmlparse($dimension{$dim}{'intro'}); |
|
@Apache::scripttag::parser_env = @_; |
|
&Apache::scripttag::xmlparse($dimension{$dim}{$instance.'.text'}); |
|
@Apache::scripttag::parser_env = @_; |
|
&Apache::scripttag::xmlparse($dimension{$dim}{'questiontext'}); |
|
} else { |
|
# any other targets no output |
|
undef($result); |
} |
} |
|
pop(@Apache::bridgetask::dimension); |
|
return $result; |
} |
} |
|
|
sub grading_history { |
sub grading_history { |
Line 2404 sub grading_history {
|
Line 2482 sub grading_history {
|
return ''; |
return ''; |
} |
} |
my ($result,$grader); |
my ($result,$grader); |
my $scope="resource.$version.0.$dim.$id"; |
my $scope="resource.$version.0."; |
|
$scope .= ($dim ne $top) ? "$dim.$id" |
|
: "$id"; |
foreach my $t (1..$Apache::lonhomework::history{'version'}) { |
foreach my $t (1..$Apache::lonhomework::history{'version'}) { |
if (exists($Apache::lonhomework::history{$t.':resource.0.regrader'})) { |
if (exists($Apache::lonhomework::history{$t.':resource.0.regrader'})) { |
my ($gname,$gdom) = |
my ($gname,$gdom) = |
Line 2491 sub end_InstanceText {
|
Line 2571 sub end_InstanceText {
|
sub start_Criteria { |
sub start_Criteria { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $criteria=&Apache::lonxml::get_all_text('/criteria',$parser,$style); |
my $criteria=&Apache::lonxml::get_all_text('/criteria',$parser,$style); |
|
my $result = ''; |
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'grade') { |
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'grade') { |
my $dim = &get_dim_id(); |
my $dim = &get_dim_id(); |
my $id=&get_id($parstack,$safeeval); |
my $id=&get_id($parstack,$safeeval); |
|
if ($target eq 'web' || $target eq 'webgrade') { |
|
if ($target eq 'webgrade' && $dim ne 'top') { |
|
&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); |
|
} |
|
} |
&Apache::lonxml::debug("Criteria $id with $dim"); |
&Apache::lonxml::debug("Criteria $id with $dim"); |
if (&Apache::londefdef::is_inside_of($tagstack,'Instance')) { |
if (&Apache::londefdef::is_inside_of($tagstack,'Instance')) { |
my $instance_id=$Apache::bridgetask::instance{$dim}[-1]; |
my $instance_id=$Apache::bridgetask::instance{$dim}[-1]; |
Line 2510 sub start_Criteria {
|
Line 2600 sub start_Criteria {
|
push(@{$dimension{$dim}{'criterias'}},$id); |
push(@{$dimension{$dim}{'criterias'}},$id); |
} |
} |
} |
} |
return ''; |
return $result; |
|
} |
|
|
|
sub layout_web_Criteria { |
|
my ($dim,$id,$criteria) = @_; |
|
|
|
my $version = &get_version(); |
|
my $status= &get_criteria('status', $version,$dim,$id); |
|
my $comment=&get_criteria('comment',$version,$dim,$id); |
|
my $mandatory=($dimension{$dim}{'criteria.'.$id.'.mandatory'} ne 'N'); |
|
if ($mandatory) { |
|
$mandatory='Mandatory'; |
|
} else { |
|
$mandatory='Optional'; |
|
} |
|
my $status_display=$status; |
|
$status_display=~s/^([a-z])/uc($1)/e; |
|
my $criteria_info.= |
|
'<div class="LC_'.$status.' LC_criteria"><h4>' |
|
.$mandatory.' Criteria</h4><p>'; |
|
$criteria_info.= $criteria; |
|
$criteria_info.='</p><p class="LC_grade">'.$status_display.'</p>'; |
|
if ($comment =~ /\w/) { |
|
$criteria_info.='<p class="LC_comment">'. |
|
&mt('Comment: [_1]',$comment).'</p>'; |
|
} |
|
$criteria_info.='</div>'; |
|
return $criteria_info; |
|
} |
|
|
|
sub layout_webgrade_Criteria { |
|
my ($dim,$id,$criteria) = @_; |
|
my $link=&link($id); |
|
my $version = &get_version(); |
|
my $status = &get_criteria('status',$version,$dim,$id); |
|
my $result = |
|
'<div class="LC_GRADING_criteria">'."\n". |
|
'<div class="LC_GRADING_criteriatext">'."\n". |
|
$criteria. |
|
'</div>'."\n". |
|
'<div class="LC_GRADING_grade">'."\n". |
|
'<label class="LC_GRADING_ungraded"> |
|
<input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'. |
|
&mt('Ungraded'). |
|
'</label>'."\n". |
|
'<label class="LC_GRADING_fail"> |
|
<input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'. |
|
&mt('Fail'). |
|
'</label>'."\n". |
|
'<label class="LC_GRADING_pass"> |
|
<input type="radio" name="HWVAL_'.$link.'" value="pass" '.($status eq 'pass' ? 'checked="checked"':'').' />'. |
|
&mt('Pass'). |
|
'</label>'."\n". |
|
'<label class="LC_GRADING_review"> |
|
<input type="radio" name="HWVAL_'.$link.'" value="review" '.($status eq 'review' ? 'checked="checked"':'').' />'. |
|
&mt('Review'). |
|
'</label>'."\n". |
|
'</div>'."\n". |
|
'<label class="LC_GRADING_comment">'.&mt('Additional Comment for Student')."\n". |
|
'<textarea class="LC_GRADING_comment_area" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode(&get_criteria('comment',$version,$dim,$id),'<>"&').'</textarea>'."\n". |
|
'</label>'."\n". |
|
'</div>'."\n". |
|
&grading_history($version,$dim,$id); |
|
return $result; |
} |
} |
|
|
sub end_Criteria { |
sub end_Criteria { |