@@ -638,80 +640,128 @@ ENDMOVE
$r->print('
'.&mt('Delete').' | ');
$r->print('
| ');
- } else {
+ } elsif ($output) {
$r->print('
'.$categories{$id.'_name'}.' | ');
}
-# Content
- $r->print('
');
+# Content display and summing up of points
+ my $totalpossible=0;
+ my $totalcorrect=0;
+ my @individual=();
+ if ($output) { $r->print(''); }
foreach my $contentid (split(/\,/,$categories{$id.'_content'})) {
- $r->print('- ');
- $r->print(&Apache::lonnet::gettitle($contentid));
- if ($cangrade) {
- $r->print(' '.&mt('Delete').'');
- }
- $r->print('
');
- }
- $r->print(' ');
- if ($cangrade) {
- $r->print(' '.&Apache::loncommon::selectresource_link('quickform','addcont_'.$id.'_res',&mt('Add Problem or Folder')).' '.
- '");
+ my ($type,$possible,$attempted,$correct)=split(/\:/,$$performance{$contentid});
+ $totalpossible+=$possible;
+ $totalcorrect+=$correct;
+ if ($possible>0) { push(@individual,"$possible:$correct"); }
+ if ($output) {
+ $r->print('- ');
+ $r->print(&Apache::lonnet::gettitle($contentid).' ('.$correct.'/'.$possible.')');
+ if ($cangrade) {
+ $r->print(' '.&mt('Delete').'');
+ }
+ $r->print('
');
+ }
+ }
+ if ($output) {
+ $r->print('');
+ $r->print(''.&mt('Total raw points: [_1]/[_2]',$totalcorrect,$totalpossible).' ');
+ if ($cangrade) {
+ $r->print(' '.&Apache::loncommon::selectresource_link('quickform','addcont_'.$id,&mt('Add Problem or Folder')).' ');
+ }
+ $r->print(' | ');
}
- $r->print(' | ');
-
# Total
+ if ($output) { $r->print('
'); }
if ($cangrade) {
- $r->print(' | '.
+ if ($output) {
+ $r->print(
''.
' | ');
+ '" value="'.&Apache::lonhtmlcommon::entity_encode($categories{$id.'_total'}).'" />');
+ }
} else {
- $r->print('
'.($categories{$id.'_totaltype'} eq 'default'?&mt('default'):$categories{$id.'_total'}).' | ');
+ if ($output) {
+ $r->print('
'.($categories{$id.'_totaltype'} eq 'default'?&mt('default'):$categories{$id.'_total'}));
+ }
+ }
+# Adjust total points
+ if ($categories{$id.'_totaltype'} eq 'typein') {
+ $totalpossible=1.*$categories{$id.'_total'};
+ }
+ if ($output) {
+ $r->print(' '.&mt('Adjusted raw points: [_1]/[_2]',$totalcorrect,$totalpossible).' ');
}
# Calculation
- $r->print(' | ');
+ my $actualtotal=$totalcorrect;
+ if ($output) { $r->print(''); }
foreach my $calcrule (split(/\,/,$categories{$id.'_calculations'})) {
- $r->print('- ');
+ if ($output) { $r->print('
- '); }
my ($code,$value)=split(/\:/,$calcrule);
- $r->print(&pretty_prt_rule($cangrade,$id,$code,$value));
+ if ($output) { $r->print(&pretty_prt_rule($cangrade,$id,$code,$value)); }
if ($cangrade) {
- $r->print(' '.&mt('Delete').'');
+ if ($output) { $r->print(' '.&mt('Delete').''); }
}
- $r->print('
');
+ if ($code eq 'capabove') {
+ if ($totalpossible>0) {
+ if ($actualtotal/$totalpossible>$value/100.) {
+ $actualtotal=$totalpossible*$value/100.;
+ }
+ }
+ } elsif ($code eq 'capbelow') {
+ if ($totalpossible>0) {
+ if ($actualtotal/$totalpossible<$value/100.) {
+ $actualtotal=$totalpossible*$value/100.;
+ }
+ }
+ }
+ if ($output) { $r->print(''); }
+ }
+ if ($output) {
+ $r->print(' ');
+ $r->print(''.&mt('Calculated points: [_1]/[_2]',$actualtotal,$totalpossible).' ');
}
- $r->print('');
+
if ($cangrade) {
- $r->print(' '.&new_calc_rule_form($id));
+ if ($output) { $r->print(' '.&new_calc_rule_form($id)); }
}
- $r->print(' | ');
+ if ($output) { $r->print(' | '); }
# Weight
if ($cangrade) {
- $r->print('
'.
+ if ($output) {
+ $r->print(' | '.
' | ');
+ }
} else {
- $r->print('
'.$categories{$id.'_weight'}.' | ');
+ if ($output) {
+ $r->print('
'.$categories{$id.'_weight'}.' | ');
+ }
}
# Achieved
- $r->print('
');
+ if ($output) { $r->print(' | '); }
if ($cangrade) {
- $r->print(' | ');
+ if ($output) { $r->print(''); }
return ($value,$weight);
}
@@ -759,8 +809,10 @@ sub make_new_category {
sub category_rule_codes {
return &Apache::lonlocal::texthash(
- 'droplow' => 'Drop N lowest grade assignments',
- 'drophigh' => 'Drop N highest grade assignments',
+ 'droplowperc' => 'Drop N lowest grade percentage problems/folders',
+ 'drophighperc' => 'Drop N highest grade percentage problems/folderss',
+ 'droplow' => 'Drop N lowest point problems/folders',
+ 'drophigh' => 'Drop N highest point problems/folders',
'capabove' => 'Cap percentage above N percent',
'capbelow' => 'Cap percentage below N percent');
}
@@ -844,6 +896,7 @@ sub set_category_rules {
sub add_category_content {
my ($id,$cangrade,$newcontent,%categories)=@_;
unless ($cangrade) { return %categories; }
+ &Apache::lonnet::logthis("In here $newcontent");
my %newcontent=($newcontent => 1);
foreach my $current (split(/\,/,$categories{$id.'_content'})) {
$newcontent{$current}=1;